From a9b99963c3a644de6d37abefd9068e9546ed9cd9 Mon Sep 17 00:00:00 2001 From: "George.Gayno" Date: Mon, 23 Oct 2023 20:23:12 +0000 Subject: [PATCH] Add ver-1.11.0 directory. Fixes #862. --- ver-1.11.0/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/chgres_cube/annotated.html | 111 + ver-1.11.0/chgres_cube/annotated_dup.js | 4 + .../chgres_cube/atm__input__data_8F90.html | 219 + .../chgres_cube/atm__input__data_8F90.js | 32 + .../atm__input__data_8F90_source.html | 162 + ver-1.11.0/chgres_cube/atmosphere_8F90.html | 246 + ver-1.11.0/chgres_cube/atmosphere_8F90.js | 41 + .../chgres_cube/atmosphere_8F90_source.html | 200 + .../atmosphere__target__data_8F90.html | 183 + .../atmosphere__target__data_8F90.js | 20 + .../atmosphere__target__data_8F90_source.html | 125 + ver-1.11.0/chgres_cube/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/chgres_cube/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/chgres_cube/chgres_8F90.html | 154 + ver-1.11.0/chgres_cube/chgres_8F90.js | 4 + .../chgres_cube/chgres_8F90_source.html | 119 + .../chgres_cube/chgres__cube_8md_source.html | 105 + ver-1.11.0/chgres_cube/classes.html | 113 + ver-1.11.0/chgres_cube/closed.png | Bin 0 -> 132 bytes .../dir_17310f848ad51b2f72dd722d66ff1321.html | 160 + .../dir_17310f848ad51b2f72dd722d66ff1321.js | 20 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/chgres_cube/doc.png | Bin 0 -> 746 bytes ver-1.11.0/chgres_cube/doxygen.css | 1596 ++++++ ver-1.11.0/chgres_cube/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/chgres_cube/dynsections.js | 127 + ver-1.11.0/chgres_cube/files.html | 127 + ver-1.11.0/chgres_cube/files_dup.js | 4 + ver-1.11.0/chgres_cube/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/chgres_cube/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/chgres_cube/functions.html | 106 + ver-1.11.0/chgres_cube/functions_vars.html | 106 + ver-1.11.0/chgres_cube/globals.html | 111 + ver-1.11.0/chgres_cube/globals_func.html | 111 + ver-1.11.0/chgres_cube/grib2__util_8F90.html | 140 + ver-1.11.0/chgres_cube/grib2__util_8F90.js | 7 + .../chgres_cube/grib2__util_8F90_source.html | 113 + ver-1.11.0/chgres_cube/index.html | 109 + ver-1.11.0/chgres_cube/jquery.js | 115 + ver-1.11.0/chgres_cube/man/man3/DINT2P.3 | 1 + ver-1.11.0/chgres_cube/man/man3/FRH2O.3 | 1 + .../man/man3/READ_FV3_GRID_DATA_NETCDF.3 | 1 + ver-1.11.0/chgres_cube/man/man3/RSEARCH.3 | 1 + ver-1.11.0/chgres_cube/man/man3/TERP3.3 | 1 + ver-1.11.0/chgres_cube/man/man3/VINTG.3 | 1 + .../man/man3/VINTG_THOMP_MP_CLIMO.3 | 1 + ver-1.11.0/chgres_cube/man/man3/VINTG_WAM.3 | 1 + .../chgres_cube/man/man3/adjust_soil_levels.3 | 1 + .../man/man3/adjust_soilt_for_terrain.3 | 1 + .../chgres_cube/man/man3/alnsf_target_grid.3 | 1 + .../chgres_cube/man/man3/alnwf_target_grid.3 | 1 + .../chgres_cube/man/man3/alvsf_target_grid.3 | 1 + .../chgres_cube/man/man3/alvwf_target_grid.3 | 1 + .../man/man3/atm_core_files_input_grid.3 | 1 + .../man/man3/atm_files_input_grid.3 | 1 + .../chgres_cube/man/man3/atm_input_data.3 | 619 +++ .../chgres_cube/man/man3/atm_input_data.F90.3 | 158 + .../man/man3/atm_tracer_files_input_grid.3 | 1 + .../chgres_cube/man/man3/atm_weight_file.3 | 1 + ver-1.11.0/chgres_cube/man/man3/atmosphere.3 | 869 ++++ .../chgres_cube/man/man3/atmosphere.F90.3 | 194 + .../chgres_cube/man/man3/atmosphere_driver.3 | 1 + .../man/man3/atmosphere_target_data.3 | 249 + .../man/man3/atmosphere_target_data.F90.3 | 110 + ver-1.11.0/chgres_cube/man/man3/bb_target.3 | 1 + ver-1.11.0/chgres_cube/man/man3/blim.3 | 1 + .../chgres_cube/man/man3/c_0_input_grid.3 | 1 + .../chgres_cube/man/man3/c_0_target_grid.3 | 1 + .../chgres_cube/man/man3/c_d_input_grid.3 | 1 + .../chgres_cube/man/man3/c_d_target_grid.3 | 1 + .../man/man3/calc_liq_soil_moisture.3 | 1 + .../chgres_cube/man/man3/calc_soil_params.3 | 1 + .../man/man3/calc_soil_params_driver.3 | 1 + .../man/man3/calcalpha_rotlatlon.3 | 1 + .../man/man3/canopy_mc_input_grid.3 | 1 + .../man/man3/canopy_mc_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/check_cnwat.3 | 1 + ver-1.11.0/chgres_cube/man/man3/check_soilt.3 | 1 + ver-1.11.0/chgres_cube/man/man3/chgres.3 | 1 + ver-1.11.0/chgres_cube/man/man3/chgres.F90.3 | 65 + .../chgres_cube/man/man3/chgres_var_names.3 | 1 + .../man/man3/cleanup_all_target_atm_data.3 | 1 + .../man/man3/cleanup_all_target_sfc_data.3 | 1 + .../man/man3/cleanup_atmosphere_target_data.3 | 1 + .../man/man3/cleanup_input_atm_data.3 | 1 + .../man/man3/cleanup_input_nst_data.3 | 1 + .../man/man3/cleanup_input_sfc_data.3 | 1 + .../man/man3/cleanup_input_target_grid_data.3 | 1 + .../man/man3/cleanup_static_fields.3 | 1 + .../man/man3/cleanup_target_atm_b4adj_data.3 | 1 + .../man/man3/cleanup_target_nst_data.3 | 1 + .../man/man3/cleanup_target_sfc_data.3 | 1 + .../man3/cleanup_thomp_mp_climo_input_data.3 | 1 + ver-1.11.0/chgres_cube/man/man3/compute_zh.3 | 1 + ver-1.11.0/chgres_cube/man/man3/convert_atm.3 | 1 + ver-1.11.0/chgres_cube/man/man3/convert_nst.3 | 1 + .../chgres_cube/man/man3/convert_omega.3 | 1 + ver-1.11.0/chgres_cube/man/man3/convert_sfc.3 | 1 + .../man/man3/convert_winds_to_uv.3 | 1 + .../man/man3/convert_winds_to_xyz.3 | 1 + .../man/man3/create_atm_b4adj_esmf_fields.3 | 1 + .../man/man3/create_atm_esmf_fields.3 | 1 + .../man/man3/create_nst_esmf_fields.3 | 1 + .../man/man3/create_static_fields.3 | 1 + .../man/man3/create_surface_esmf_fields.3 | 1 + .../chgres_cube/man/man3/cres_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/cycle_day.3 | 1 + ver-1.11.0/chgres_cube/man/man3/cycle_hour.3 | 1 + ver-1.11.0/chgres_cube/man/man3/cycle_mon.3 | 1 + ver-1.11.0/chgres_cube/man/man3/cycle_year.3 | 1 + .../chgres_cube/man/man3/d_conv_input_grid.3 | 1 + .../chgres_cube/man/man3/d_conv_target_grid.3 | 1 + .../man/man3/data_dir_input_grid.3 | 1 + .../chgres_cube/man/man3/define_input_grid.3 | 1 + .../man/man3/define_input_grid_gaussian.3 | 1 + .../man/man3/define_input_grid_grib2.3 | 1 + .../man/man3/define_input_grid_mosaic.3 | 1 + .../chgres_cube/man/man3/define_target_grid.3 | 1 + .../chgres_cube/man/man3/delp_target_grid.3 | 1 + .../chgres_cube/man/man3/dpres_input_grid.3 | 1 + .../chgres_cube/man/man3/drysmc_input.3 | 1 + .../chgres_cube/man/man3/drysmc_target.3 | 1 + .../chgres_cube/man/man3/dt_cool_input_grid.3 | 1 + .../man/man3/dt_cool_target_grid.3 | 1 + .../man/man3/dzdt_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/dzdt_input_grid.3 | 1 + .../chgres_cube/man/man3/dzdt_target_grid.3 | 1 + .../chgres_cube/man/man3/error_handler.3 | 1 + .../chgres_cube/man/man3/external_model.3 | 1 + .../chgres_cube/man/man3/f10m_input_grid.3 | 1 + .../chgres_cube/man/man3/f10m_target_grid.3 | 1 + .../chgres_cube/man/man3/facsf_target_grid.3 | 1 + .../chgres_cube/man/man3/facwf_target_grid.3 | 1 + .../chgres_cube/man/man3/ffmm_input_grid.3 | 1 + .../chgres_cube/man/man3/ffmm_target_grid.3 | 1 + .../chgres_cube/man/man3/field_var_names.3 | 1 + .../man/man3/fix_dir_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/fpvsnew.3 | 1 + ver-1.11.0/chgres_cube/man/man3/frz_h2o.3 | 1 + ver-1.11.0/chgres_cube/man/man3/frz_ice.3 | 1 + ver-1.11.0/chgres_cube/man/man3/gdt_to_gds.3 | 1 + .../man/man3/geogrid_file_input_grid.3 | 1 + .../chgres_cube/man/man3/get_model_latlons.3 | 1 + .../man/man3/get_model_mask_terrain.3 | 1 + .../chgres_cube/man/man3/get_static_fields.3 | 1 + .../chgres_cube/man/man3/get_var_cond.3 | 1 + ver-1.11.0/chgres_cube/man/man3/gettemp.3 | 1 + ver-1.11.0/chgres_cube/man/man3/ghp8.3 | 1 + ver-1.11.0/chgres_cube/man/man3/grav.3 | 1 + .../man/man3/grib2_file_input_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/grib2_util.3 | 162 + .../chgres_cube/man/man3/grib2_util.F90.3 | 54 + ver-1.11.0/chgres_cube/man/man3/gridrot.3 | 1 + ver-1.11.0/chgres_cube/man/man3/halo_blend.3 | 1 + ver-1.11.0/chgres_cube/man/man3/halo_bndy.3 | 1 + .../chgres_cube/man/man3/handle_grib_error.3 | 1 + ver-1.11.0/chgres_cube/man/man3/hlice.3 | 1 + .../man/man3/horiz_interp_thomp_mp_climo.3 | 1 + ver-1.11.0/chgres_cube/man/man3/i_input.3 | 1 + ver-1.11.0/chgres_cube/man/man3/i_target.3 | 1 + .../chgres_cube/man/man3/i_thomp_mp_climo.3 | 1 + .../chgres_cube/man/man3/icet_default.3 | 1 + .../chgres_cube/man/man3/ifd_input_grid.3 | 1 + .../chgres_cube/man/man3/ifd_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/ij_to_i_j.3 | 1 + .../man/man3/init_atm_esmf_fields.3 | 1 + .../man/man3/init_sfc_esmf_fields.3 | 1 + ver-1.11.0/chgres_cube/man/man3/input_grid.3 | 1 + .../chgres_cube/man/man3/input_grid_type.3 | 1 + ver-1.11.0/chgres_cube/man/man3/input_type.3 | 1 + ver-1.11.0/chgres_cube/man/man3/interp.3 | 1 + ver-1.11.0/chgres_cube/man/man3/ip1_input.3 | 1 + ver-1.11.0/chgres_cube/man/man3/ip1_target.3 | 1 + ver-1.11.0/chgres_cube/man/man3/j_input.3 | 1 + ver-1.11.0/chgres_cube/man/man3/j_target.3 | 1 + .../chgres_cube/man/man3/j_thomp_mp_climo.3 | 1 + ver-1.11.0/chgres_cube/man/man3/jp1_input.3 | 1 + ver-1.11.0/chgres_cube/man/man3/jp1_target.3 | 1 + .../chgres_cube/man/man3/lai_from_climo.3 | 1 + .../chgres_cube/man/man3/lai_input_grid.3 | 1 + .../chgres_cube/man/man3/lai_target_grid.3 | 1 + .../man/man3/landmask_target_grid.3 | 1 + .../man/man3/landsea_mask_input_grid.3 | 1 + .../man/man3/latitude_input_grid.3 | 1 + .../man/man3/latitude_s_input_grid.3 | 1 + .../man/man3/latitude_s_target_grid.3 | 1 + .../man/man3/latitude_target_grid.3 | 1 + .../man/man3/latitude_w_input_grid.3 | 1 + .../man/man3/latitude_w_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/lev_input.3 | 1 + ver-1.11.0/chgres_cube/man/man3/lev_target.3 | 1 + .../chgres_cube/man/man3/lev_thomp_mp_climo.3 | 1 + ver-1.11.0/chgres_cube/man/man3/levp1_input.3 | 1 + .../chgres_cube/man/man3/levp1_target.3 | 1 + .../man/man3/longitude_input_grid.3 | 1 + .../man/man3/longitude_s_input_grid.3 | 1 + .../man/man3/longitude_s_target_grid.3 | 1 + .../man/man3/longitude_target_grid.3 | 1 + .../man/man3/longitude_w_input_grid.3 | 1 + .../man/man3/longitude_w_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/lsoil_input.3 | 1 + .../chgres_cube/man/man3/lsoil_target.3 | 1 + ver-1.11.0/chgres_cube/man/man3/max_tracers.3 | 1 + .../man/man3/max_veg_greenness_input_grid.3 | 1 + .../man/man3/max_veg_greenness_target_grid.3 | 1 + .../chgres_cube/man/man3/maxsmc_input.3 | 1 + .../chgres_cube/man/man3/maxsmc_target.3 | 1 + .../man/man3/min_veg_greenness_input_grid.3 | 1 + .../man/man3/min_veg_greenness_target_grid.3 | 1 + .../man/man3/minmax_vgfrc_from_climo.3 | 1 + .../man/man3/missing_var_methods.3 | 1 + .../chgres_cube/man/man3/missing_var_values.3 | 1 + ver-1.11.0/chgres_cube/man/man3/model_grid.3 | 684 +++ .../chgres_cube/man/man3/model_grid.F90.3 | 198 + .../man/man3/mosaic_file_input_grid.3 | 1 + .../man/man3/mosaic_file_target_grid.3 | 1 + .../man/man3/mxsno_albedo_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/netcdf_err.3 | 1 + ver-1.11.0/chgres_cube/man/man3/newpr1.3 | 1 + ver-1.11.0/chgres_cube/man/man3/newps.3 | 1 + ver-1.11.0/chgres_cube/man/man3/nsoill_out.3 | 1 + .../man/man3/nst_files_input_grid.3 | 1 + .../chgres_cube/man/man3/nst_input_data.F90.3 | 312 ++ .../chgres_cube/man/man3/nst_land_fill.3 | 1 + .../man/man3/num_tiles_input_grid.3 | 1 + .../man/man3/num_tiles_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/num_tracers.3 | 1 + .../chgres_cube/man/man3/num_tracers_input.3 | 1 + .../chgres_cube/man/man3/nvcoord_target.3 | 1 + .../man/man3/orog_dir_input_grid.3 | 1 + .../man/man3/orog_dir_target_grid.3 | 1 + .../man/man3/orog_files_input_grid.3 | 1 + .../man/man3/orog_files_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/p.3 | 1 + .../man/man3/pres_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/pres_input_grid.3 | 1 + .../chgres_cube/man/man3/pres_target_grid.3 | 1 + .../chgres_cube/man/man3/program_setup.3 | 989 ++++ .../chgres_cube/man/man3/program_setup.F90.3 | 310 ++ .../man/man3/ps_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/ps_input_grid.3 | 1 + .../chgres_cube/man/man3/ps_target_grid.3 | 1 + .../chgres_cube/man/man3/q2m_input_grid.3 | 1 + .../chgres_cube/man/man3/q2m_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/qc_check.3 | 1 + .../man/man3/qnifa_climo_b4adj_target_grid.3 | 1 + .../man/man3/qnifa_climo_input_grid.3 | 1 + .../man/man3/qnifa_climo_target_grid.3 | 1 + .../man/man3/qnwfa_climo_b4adj_target_grid.3 | 1 + .../man/man3/qnwfa_climo_input_grid.3 | 1 + .../man/man3/qnwfa_climo_target_grid.3 | 1 + .../chgres_cube/man/man3/qrain_input_grid.3 | 1 + .../chgres_cube/man/man3/qrain_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/quicksort.3 | 1 + .../chgres_cube/man/man3/read_from_input.3 | 1 + .../chgres_cube/man/man3/read_grib_soil.3 | 1 + .../man/man3/read_input_atm_data.3 | 1 + .../read_input_atm_gaussian_nemsio_file.3 | 1 + .../read_input_atm_gaussian_netcdf_file.3 | 1 + .../read_input_atm_gfs_gaussian_nemsio_file.3 | 1 + .../man/man3/read_input_atm_gfs_sigio_file.3 | 1 + .../man/man3/read_input_atm_grib2_file.3 | 1 + .../man/man3/read_input_atm_restart_file.3 | 1 + .../man3/read_input_atm_tiled_history_file.3 | 1 + .../man/man3/read_input_nst_data.3 | 1 + .../man/man3/read_input_nst_nemsio_file.3 | 1 + .../man/man3/read_input_nst_netcdf_file.3 | 1 + .../man/man3/read_input_sfc_data.3 | 1 + .../read_input_sfc_gaussian_nemsio_file.3 | 1 + .../read_input_sfc_gfs_gaussian_nemsio_file.3 | 1 + .../man/man3/read_input_sfc_gfs_sfcio_file.3 | 1 + .../man/man3/read_input_sfc_grib2_file.3 | 1 + .../man/man3/read_input_sfc_netcdf_file.3 | 1 + .../man/man3/read_input_sfc_restart_file.3 | 1 + .../man/man3/read_setup_namelist.3 | 1 + .../chgres_cube/man/man3/read_static_file.3 | 1 + .../man/man3/read_thomp_mp_climo_data.3 | 1 + ver-1.11.0/chgres_cube/man/man3/read_varmap.3 | 1 + .../chgres_cube/man/man3/read_vcoord_info.3 | 1 + ver-1.11.0/chgres_cube/man/man3/read_winds.3 | 1 + .../chgres_cube/man/man3/refsmc_input.3 | 1 + .../chgres_cube/man/man3/refsmc_target.3 | 1 + ver-1.11.0/chgres_cube/man/man3/regional.3 | 1 + ver-1.11.0/chgres_cube/man/man3/regrid_many.3 | 1 + .../man/man3/rescale_soil_moisture.3 | 1 + ver-1.11.0/chgres_cube/man/man3/rh2spfh.3 | 1 + ver-1.11.0/chgres_cube/man/man3/rh2spfh_gfs.3 | 1 + ver-1.11.0/chgres_cube/man/man3/roughness.3 | 1 + .../chgres_cube/man/man3/satpsi_target.3 | 1 + .../man/man3/seaice_depth_input_grid.3 | 1 + .../man/man3/seaice_depth_target_grid.3 | 1 + .../man/man3/seaice_fract_input_grid.3 | 1 + .../man/man3/seaice_fract_target_grid.3 | 1 + .../man/man3/seaice_skin_temp_input_grid.3 | 1 + .../man/man3/seaice_skin_temp_target_grid.3 | 1 + .../man/man3/seamask_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/search.3 | 1 + ver-1.11.0/chgres_cube/man/man3/search_many.3 | 1 + ver-1.11.0/chgres_cube/man/man3/search_util.3 | 106 + .../chgres_cube/man/man3/search_util.F90.3 | 46 + .../man/man3/sfc_files_input_grid.3 | 1 + .../chgres_cube/man/man3/sfc_input_data.F90.3 | 602 +++ .../man/man3/skin_temp_input_grid.3 | 1 + .../man/man3/skin_temp_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/slevs.3 | 1 + .../man/man3/slope_type_target_grid.3 | 1 + .../man/man3/snow_depth_input_grid.3 | 1 + .../man/man3/snow_depth_target_grid.3 | 1 + .../man/man3/snow_liq_equiv_input_grid.3 | 1 + .../man/man3/snow_liq_equiv_target_grid.3 | 1 + .../man/man3/soil_temp_input_grid.3 | 1 + .../man/man3/soil_temp_target_grid.3 | 1 + .../man/man3/soil_type_from_input_grid.3 | 1 + .../man/man3/soil_type_input_grid.3 | 1 + .../man/man3/soil_type_target_grid.3 | 1 + .../man/man3/soilm_liq_input_grid.3 | 1 + .../man/man3/soilm_liq_target_grid.3 | 1 + .../man/man3/soilm_tot_input_grid.3 | 1 + .../man/man3/soilm_tot_target_grid.3 | 1 + .../chgres_cube/man/man3/sotyp_from_climo.3 | 1 + .../chgres_cube/man/man3/srflag_input_grid.3 | 1 + .../chgres_cube/man/man3/srflag_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/sst_guess.3 | 1 + ver-1.11.0/chgres_cube/man/man3/static_data.3 | 311 ++ .../chgres_cube/man/man3/static_data.F90.3 | 114 + .../man/man3/substrate_temp_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/surface.3 | 580 +++ ver-1.11.0/chgres_cube/man/man3/surface.F90.3 | 152 + .../chgres_cube/man/man3/surface_driver.3 | 1 + .../chgres_cube/man/man3/surface_realptr_2d.3 | 31 + .../chgres_cube/man/man3/surface_realptr_3d.3 | 31 + .../man/man3/surface_target_data.3 | 522 ++ .../man/man3/surface_target_data.F90.3 | 198 + .../chgres_cube/man/man3/t2m_input_grid.3 | 1 + .../chgres_cube/man/man3/t2m_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/target_grid.3 | 1 + .../man/man3/temp_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/temp_input_grid.3 | 1 + .../chgres_cube/man/man3/temp_target_grid.3 | 1 + .../man/man3/terrain_from_input_grid.3 | 1 + .../man/man3/terrain_from_input_grid_land.3 | 1 + .../chgres_cube/man/man3/terrain_input_grid.3 | 1 + .../man/man3/terrain_interp_to_target_grid.3 | 1 + .../man/man3/terrain_target_grid.3 | 1 + .../chgres_cube/man/man3/tg3_from_soil.3 | 1 + .../man/man3/thomp_mp_climo_file.3 | 1 + .../man/man3/thomp_mp_climo_grid.3 | 1 + .../man3/thomp_pres_climo_b4adj_target_grid.3 | 1 + .../man/man3/thomp_pres_climo_input_grid.3 | 1 + .../man/man3/thompson_mp_climo_data.3 | 162 + .../man/man3/thompson_mp_climo_data.F90.3 | 78 + .../chgres_cube/man/man3/tiles_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/to_lower.3 | 1 + ver-1.11.0/chgres_cube/man/man3/to_upper.3 | 1 + .../chgres_cube/man/man3/tprcp_input_grid.3 | 1 + .../chgres_cube/man/man3/tprcp_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/tracers.3 | 1 + .../man/man3/tracers_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/tracers_input.3 | 1 + .../chgres_cube/man/man3/tracers_input_grid.3 | 1 + .../man/man3/tracers_target_grid.3 | 1 + .../chgres_cube/man/man3/tref_input_grid.3 | 1 + .../chgres_cube/man/man3/tref_target_grid.3 | 1 + .../chgres_cube/man/man3/u_input_grid.3 | 1 + .../chgres_cube/man/man3/u_s_target_grid.3 | 1 + .../chgres_cube/man/man3/u_w_target_grid.3 | 1 + .../chgres_cube/man/man3/use_thomp_mp_climo.3 | 1 + .../chgres_cube/man/man3/ustar_input_grid.3 | 1 + .../chgres_cube/man/man3/ustar_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/utils.F90.3 | 287 + .../chgres_cube/man/man3/v_input_grid.3 | 1 + .../chgres_cube/man/man3/v_s_target_grid.3 | 1 + .../chgres_cube/man/man3/v_w_target_grid.3 | 1 + ver-1.11.0/chgres_cube/man/man3/varmap_file.3 | 1 + .../man/man3/vcoord_file_target_grid.3 | 1 + .../chgres_cube/man/man3/vcoord_target.3 | 1 + .../man/man3/veg_greenness_input_grid.3 | 1 + .../man/man3/veg_greenness_target_grid.3 | 1 + .../man/man3/veg_type_input_grid.3 | 1 + .../man/man3/veg_type_landice_input.3 | 1 + .../man/man3/veg_type_landice_target.3 | 1 + .../man/man3/veg_type_target_grid.3 | 1 + .../chgres_cube/man/man3/vgfrc_from_climo.3 | 1 + .../chgres_cube/man/man3/vgtyp_from_climo.3 | 1 + .../chgres_cube/man/man3/w_0_input_grid.3 | 1 + .../chgres_cube/man/man3/w_0_target_grid.3 | 1 + .../chgres_cube/man/man3/w_d_input_grid.3 | 1 + .../chgres_cube/man/man3/w_d_target_grid.3 | 1 + .../chgres_cube/man/man3/wam_climo_data.f90.3 | 120 + .../chgres_cube/man/man3/wam_cold_start.3 | 1 + .../chgres_cube/man/man3/wam_parm_file.3 | 1 + .../chgres_cube/man/man3/wltsmc_input.3 | 1 + .../chgres_cube/man/man3/wltsmc_target.3 | 1 + .../chgres_cube/man/man3/write_data.F90.3 | 128 + .../man/man3/write_fv3_atm_bndy_data_netcdf.3 | 1 + .../man/man3/write_fv3_atm_data_netcdf.3 | 1 + .../man/man3/write_fv3_atm_header_netcdf.3 | 1 + .../man/man3/write_fv3_sfc_data_netcdf.3 | 1 + .../chgres_cube/man/man3/xs_input_grid.3 | 1 + .../chgres_cube/man/man3/xs_target_grid.3 | 1 + .../chgres_cube/man/man3/xt_input_grid.3 | 1 + .../chgres_cube/man/man3/xt_target_grid.3 | 1 + .../chgres_cube/man/man3/xtts_input_grid.3 | 1 + .../chgres_cube/man/man3/xtts_target_grid.3 | 1 + .../chgres_cube/man/man3/xu_input_grid.3 | 1 + .../chgres_cube/man/man3/xu_target_grid.3 | 1 + .../chgres_cube/man/man3/xv_input_grid.3 | 1 + .../chgres_cube/man/man3/xv_target_grid.3 | 1 + .../man/man3/xwind_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/xwind_input_grid.3 | 1 + .../man/man3/xwind_s_target_grid.3 | 1 + .../chgres_cube/man/man3/xwind_target_grid.3 | 1 + .../man/man3/xwind_w_target_grid.3 | 1 + .../chgres_cube/man/man3/xz_input_grid.3 | 1 + .../chgres_cube/man/man3/xz_target_grid.3 | 1 + .../chgres_cube/man/man3/xzts_input_grid.3 | 1 + .../chgres_cube/man/man3/xzts_target_grid.3 | 1 + .../man/man3/ywind_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/ywind_input_grid.3 | 1 + .../man/man3/ywind_s_target_grid.3 | 1 + .../chgres_cube/man/man3/ywind_target_grid.3 | 1 + .../man/man3/ywind_w_target_grid.3 | 1 + .../chgres_cube/man/man3/z0_input_grid.3 | 1 + .../chgres_cube/man/man3/z0_target_grid.3 | 1 + .../chgres_cube/man/man3/z_c_input_grid.3 | 1 + .../chgres_cube/man/man3/z_c_target_grid.3 | 1 + .../chgres_cube/man/man3/zh_target_grid.3 | 1 + .../chgres_cube/man/man3/zm_input_grid.3 | 1 + .../chgres_cube/man/man3/zm_target_grid.3 | 1 + .../man/man3/zwind_b4adj_target_grid.3 | 1 + .../chgres_cube/man/man3/zwind_input_grid.3 | 1 + .../man/man3/zwind_s_target_grid.3 | 1 + .../chgres_cube/man/man3/zwind_target_grid.3 | 1 + .../man/man3/zwind_w_target_grid.3 | 1 + ver-1.11.0/chgres_cube/menu.js | 50 + ver-1.11.0/chgres_cube/menudata.js | 104 + ver-1.11.0/chgres_cube/model__grid_8F90.html | 249 + ver-1.11.0/chgres_cube/model__grid_8F90.js | 42 + .../chgres_cube/model__grid_8F90_source.html | 160 + .../namespaceatm__input__data.html | 1137 ++++ .../chgres_cube/namespaceatmosphere.html | 1722 ++++++ .../namespaceatmosphere__target__data.html | 520 ++ .../chgres_cube/namespacegrib2__util.html | 344 ++ ver-1.11.0/chgres_cube/namespacemembers.html | 137 + .../chgres_cube/namespacemembers_b.html | 110 + .../chgres_cube/namespacemembers_c.html | 209 + .../chgres_cube/namespacemembers_d.html | 149 + .../chgres_cube/namespacemembers_dup.js | 28 + .../chgres_cube/namespacemembers_e.html | 107 + .../chgres_cube/namespacemembers_f.html | 134 + .../chgres_cube/namespacemembers_func.html | 377 ++ .../chgres_cube/namespacemembers_g.html | 131 + .../chgres_cube/namespacemembers_h.html | 116 + .../chgres_cube/namespacemembers_i.html | 140 + .../chgres_cube/namespacemembers_j.html | 119 + .../chgres_cube/namespacemembers_l.html | 167 + .../chgres_cube/namespacemembers_m.html | 137 + .../chgres_cube/namespacemembers_n.html | 134 + .../chgres_cube/namespacemembers_o.html | 116 + .../chgres_cube/namespacemembers_p.html | 122 + .../chgres_cube/namespacemembers_q.html | 131 + .../chgres_cube/namespacemembers_r.html | 176 + .../chgres_cube/namespacemembers_s.html | 173 + .../chgres_cube/namespacemembers_t.html | 176 + .../chgres_cube/namespacemembers_u.html | 119 + .../chgres_cube/namespacemembers_v.html | 146 + .../chgres_cube/namespacemembers_vars.html | 128 + .../chgres_cube/namespacemembers_vars.js | 28 + .../chgres_cube/namespacemembers_vars_b.html | 110 + .../chgres_cube/namespacemembers_vars_c.html | 140 + .../chgres_cube/namespacemembers_vars_d.html | 134 + .../chgres_cube/namespacemembers_vars_e.html | 107 + .../chgres_cube/namespacemembers_vars_f.html | 128 + .../chgres_cube/namespacemembers_vars_g.html | 113 + .../chgres_cube/namespacemembers_vars_h.html | 113 + .../chgres_cube/namespacemembers_vars_i.html | 131 + .../chgres_cube/namespacemembers_vars_j.html | 119 + .../chgres_cube/namespacemembers_vars_l.html | 167 + .../chgres_cube/namespacemembers_vars_m.html | 137 + .../chgres_cube/namespacemembers_vars_n.html | 125 + .../chgres_cube/namespacemembers_vars_o.html | 116 + .../chgres_cube/namespacemembers_vars_p.html | 122 + .../chgres_cube/namespacemembers_vars_q.html | 128 + .../chgres_cube/namespacemembers_vars_r.html | 116 + .../chgres_cube/namespacemembers_vars_s.html | 161 + .../chgres_cube/namespacemembers_vars_t.html | 173 + .../chgres_cube/namespacemembers_vars_u.html | 119 + .../chgres_cube/namespacemembers_vars_v.html | 137 + .../chgres_cube/namespacemembers_vars_w.html | 122 + .../chgres_cube/namespacemembers_vars_x.html | 140 + .../chgres_cube/namespacemembers_vars_y.html | 119 + .../chgres_cube/namespacemembers_vars_z.html | 131 + .../chgres_cube/namespacemembers_w.html | 122 + .../chgres_cube/namespacemembers_x.html | 140 + .../chgres_cube/namespacemembers_y.html | 119 + .../chgres_cube/namespacemembers_z.html | 131 + .../chgres_cube/namespacemodel__grid.html | 1349 +++++ .../chgres_cube/namespaceprogram__setup.html | 1892 +++++++ ver-1.11.0/chgres_cube/namespaces.html | 119 + ver-1.11.0/chgres_cube/namespaces_dup.js | 14 + .../chgres_cube/namespacesearch__util.html | 266 + .../chgres_cube/namespacestatic__data.html | 623 +++ ver-1.11.0/chgres_cube/namespacesurface.html | 1109 ++++ ver-1.11.0/chgres_cube/namespacesurface.js | 5 + .../namespacesurface__target__data.html | 1033 ++++ .../namespacethompson__mp__climo__data.html | 366 ++ ver-1.11.0/chgres_cube/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/chgres_cube/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/chgres_cube/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/chgres_cube/navtree.css | 146 + ver-1.11.0/chgres_cube/navtree.js | 540 ++ ver-1.11.0/chgres_cube/navtreedata.js | 60 + ver-1.11.0/chgres_cube/navtreeindex0.js | 253 + ver-1.11.0/chgres_cube/navtreeindex1.js | 232 + .../chgres_cube/nst__input__data_8F90.html | 634 +++ .../chgres_cube/nst__input__data_8F90.js | 25 + .../nst__input__data_8F90_source.html | 117 + ver-1.11.0/chgres_cube/open.png | Bin 0 -> 123 bytes .../chgres_cube/program__setup_8F90.html | 333 ++ ver-1.11.0/chgres_cube/program__setup_8F90.js | 70 + .../program__setup_8F90_source.html | 173 + ver-1.11.0/chgres_cube/resize.js | 136 + ver-1.11.0/chgres_cube/search/all_0.html | 30 + ver-1.11.0/chgres_cube/search/all_0.js | 20 + ver-1.11.0/chgres_cube/search/all_1.html | 30 + ver-1.11.0/chgres_cube/search/all_1.js | 5 + ver-1.11.0/chgres_cube/search/all_10.html | 30 + ver-1.11.0/chgres_cube/search/all_10.js | 41 + ver-1.11.0/chgres_cube/search/all_11.html | 30 + ver-1.11.0/chgres_cube/search/all_11.js | 46 + ver-1.11.0/chgres_cube/search/all_12.html | 30 + ver-1.11.0/chgres_cube/search/all_12.js | 34 + ver-1.11.0/chgres_cube/search/all_13.html | 30 + ver-1.11.0/chgres_cube/search/all_13.js | 10 + ver-1.11.0/chgres_cube/search/all_14.html | 30 + ver-1.11.0/chgres_cube/search/all_14.js | 20 + ver-1.11.0/chgres_cube/search/all_15.html | 30 + ver-1.11.0/chgres_cube/search/all_15.js | 17 + ver-1.11.0/chgres_cube/search/all_16.html | 30 + ver-1.11.0/chgres_cube/search/all_16.js | 22 + ver-1.11.0/chgres_cube/search/all_17.html | 30 + ver-1.11.0/chgres_cube/search/all_17.js | 8 + ver-1.11.0/chgres_cube/search/all_18.html | 30 + ver-1.11.0/chgres_cube/search/all_18.js | 15 + ver-1.11.0/chgres_cube/search/all_2.html | 30 + ver-1.11.0/chgres_cube/search/all_2.js | 48 + ver-1.11.0/chgres_cube/search/all_3.html | 30 + ver-1.11.0/chgres_cube/search/all_3.js | 21 + ver-1.11.0/chgres_cube/search/all_4.html | 30 + ver-1.11.0/chgres_cube/search/all_4.js | 5 + ver-1.11.0/chgres_cube/search/all_5.html | 30 + ver-1.11.0/chgres_cube/search/all_5.js | 15 + ver-1.11.0/chgres_cube/search/all_6.html | 30 + ver-1.11.0/chgres_cube/search/all_6.js | 16 + ver-1.11.0/chgres_cube/search/all_7.html | 30 + ver-1.11.0/chgres_cube/search/all_7.js | 8 + ver-1.11.0/chgres_cube/search/all_8.html | 30 + ver-1.11.0/chgres_cube/search/all_8.js | 18 + ver-1.11.0/chgres_cube/search/all_9.html | 30 + ver-1.11.0/chgres_cube/search/all_9.js | 8 + ver-1.11.0/chgres_cube/search/all_a.html | 30 + ver-1.11.0/chgres_cube/search/all_a.js | 27 + ver-1.11.0/chgres_cube/search/all_b.html | 30 + ver-1.11.0/chgres_cube/search/all_b.js | 18 + ver-1.11.0/chgres_cube/search/all_c.html | 30 + ver-1.11.0/chgres_cube/search/all_c.js | 15 + ver-1.11.0/chgres_cube/search/all_d.html | 30 + ver-1.11.0/chgres_cube/search/all_d.js | 7 + ver-1.11.0/chgres_cube/search/all_e.html | 30 + ver-1.11.0/chgres_cube/search/all_e.js | 12 + ver-1.11.0/chgres_cube/search/all_f.html | 30 + ver-1.11.0/chgres_cube/search/all_f.js | 15 + ver-1.11.0/chgres_cube/search/classes_0.html | 30 + ver-1.11.0/chgres_cube/search/classes_0.js | 5 + ver-1.11.0/chgres_cube/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/chgres_cube/search/files_0.html | 30 + ver-1.11.0/chgres_cube/search/files_0.js | 6 + ver-1.11.0/chgres_cube/search/files_1.html | 30 + ver-1.11.0/chgres_cube/search/files_1.js | 4 + ver-1.11.0/chgres_cube/search/files_2.html | 30 + ver-1.11.0/chgres_cube/search/files_2.js | 4 + ver-1.11.0/chgres_cube/search/files_3.html | 30 + ver-1.11.0/chgres_cube/search/files_3.js | 4 + ver-1.11.0/chgres_cube/search/files_4.html | 30 + ver-1.11.0/chgres_cube/search/files_4.js | 4 + ver-1.11.0/chgres_cube/search/files_5.html | 30 + ver-1.11.0/chgres_cube/search/files_5.js | 4 + ver-1.11.0/chgres_cube/search/files_6.html | 30 + ver-1.11.0/chgres_cube/search/files_6.js | 8 + ver-1.11.0/chgres_cube/search/files_7.html | 30 + ver-1.11.0/chgres_cube/search/files_7.js | 4 + ver-1.11.0/chgres_cube/search/files_8.html | 30 + ver-1.11.0/chgres_cube/search/files_8.js | 4 + ver-1.11.0/chgres_cube/search/files_9.html | 30 + ver-1.11.0/chgres_cube/search/files_9.js | 5 + .../chgres_cube/search/functions_0.html | 30 + ver-1.11.0/chgres_cube/search/functions_0.js | 6 + .../chgres_cube/search/functions_1.html | 30 + ver-1.11.0/chgres_cube/search/functions_1.js | 31 + .../chgres_cube/search/functions_2.html | 30 + ver-1.11.0/chgres_cube/search/functions_2.js | 9 + .../chgres_cube/search/functions_3.html | 30 + ver-1.11.0/chgres_cube/search/functions_3.js | 4 + .../chgres_cube/search/functions_4.html | 30 + ver-1.11.0/chgres_cube/search/functions_4.js | 5 + .../chgres_cube/search/functions_5.html | 30 + ver-1.11.0/chgres_cube/search/functions_5.js | 11 + .../chgres_cube/search/functions_6.html | 30 + ver-1.11.0/chgres_cube/search/functions_6.js | 5 + .../chgres_cube/search/functions_7.html | 30 + ver-1.11.0/chgres_cube/search/functions_7.js | 7 + .../chgres_cube/search/functions_8.html | 30 + ver-1.11.0/chgres_cube/search/functions_8.js | 7 + .../chgres_cube/search/functions_9.html | 30 + ver-1.11.0/chgres_cube/search/functions_9.js | 5 + .../chgres_cube/search/functions_a.html | 30 + ver-1.11.0/chgres_cube/search/functions_a.js | 35 + .../chgres_cube/search/functions_b.html | 30 + ver-1.11.0/chgres_cube/search/functions_b.js | 7 + .../chgres_cube/search/functions_c.html | 30 + ver-1.11.0/chgres_cube/search/functions_c.js | 6 + .../chgres_cube/search/functions_d.html | 30 + ver-1.11.0/chgres_cube/search/functions_d.js | 6 + .../chgres_cube/search/functions_e.html | 30 + ver-1.11.0/chgres_cube/search/functions_e.js | 7 + ver-1.11.0/chgres_cube/search/mag_sel.png | Bin 0 -> 563 bytes .../chgres_cube/search/namespaces_0.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_0.js | 6 + .../chgres_cube/search/namespaces_1.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_1.js | 4 + .../chgres_cube/search/namespaces_2.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_2.js | 4 + .../chgres_cube/search/namespaces_3.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_3.js | 4 + .../chgres_cube/search/namespaces_4.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_4.js | 7 + .../chgres_cube/search/namespaces_5.html | 30 + ver-1.11.0/chgres_cube/search/namespaces_5.js | 4 + ver-1.11.0/chgres_cube/search/nomatches.html | 12 + ver-1.11.0/chgres_cube/search/pages_0.html | 30 + ver-1.11.0/chgres_cube/search/pages_0.js | 4 + ver-1.11.0/chgres_cube/search/search.css | 271 + ver-1.11.0/chgres_cube/search/search.js | 814 +++ ver-1.11.0/chgres_cube/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/chgres_cube/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/chgres_cube/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/chgres_cube/search/searchdata.js | 33 + .../chgres_cube/search/variables_0.html | 30 + ver-1.11.0/chgres_cube/search/variables_0.js | 11 + .../chgres_cube/search/variables_1.html | 30 + ver-1.11.0/chgres_cube/search/variables_1.js | 5 + .../chgres_cube/search/variables_10.html | 30 + ver-1.11.0/chgres_cube/search/variables_10.js | 7 + .../chgres_cube/search/variables_11.html | 30 + ver-1.11.0/chgres_cube/search/variables_11.js | 33 + .../chgres_cube/search/variables_12.html | 30 + ver-1.11.0/chgres_cube/search/variables_12.js | 29 + .../chgres_cube/search/variables_13.html | 30 + ver-1.11.0/chgres_cube/search/variables_13.js | 9 + .../chgres_cube/search/variables_14.html | 30 + ver-1.11.0/chgres_cube/search/variables_14.js | 17 + .../chgres_cube/search/variables_15.html | 30 + ver-1.11.0/chgres_cube/search/variables_15.js | 11 + .../chgres_cube/search/variables_16.html | 30 + ver-1.11.0/chgres_cube/search/variables_16.js | 22 + .../chgres_cube/search/variables_17.html | 30 + ver-1.11.0/chgres_cube/search/variables_17.js | 8 + .../chgres_cube/search/variables_18.html | 30 + ver-1.11.0/chgres_cube/search/variables_18.js | 15 + .../chgres_cube/search/variables_2.html | 30 + ver-1.11.0/chgres_cube/search/variables_2.js | 18 + .../chgres_cube/search/variables_3.html | 30 + ver-1.11.0/chgres_cube/search/variables_3.js | 15 + .../chgres_cube/search/variables_4.html | 30 + ver-1.11.0/chgres_cube/search/variables_4.js | 4 + .../chgres_cube/search/variables_5.html | 30 + ver-1.11.0/chgres_cube/search/variables_5.js | 13 + .../chgres_cube/search/variables_6.html | 30 + ver-1.11.0/chgres_cube/search/variables_6.js | 6 + .../chgres_cube/search/variables_7.html | 30 + ver-1.11.0/chgres_cube/search/variables_7.js | 6 + .../chgres_cube/search/variables_8.html | 30 + ver-1.11.0/chgres_cube/search/variables_8.js | 14 + .../chgres_cube/search/variables_9.html | 30 + ver-1.11.0/chgres_cube/search/variables_9.js | 8 + .../chgres_cube/search/variables_a.html | 30 + ver-1.11.0/chgres_cube/search/variables_a.js | 27 + .../chgres_cube/search/variables_b.html | 30 + ver-1.11.0/chgres_cube/search/variables_b.js | 16 + .../chgres_cube/search/variables_c.html | 30 + ver-1.11.0/chgres_cube/search/variables_c.js | 10 + .../chgres_cube/search/variables_d.html | 30 + ver-1.11.0/chgres_cube/search/variables_d.js | 7 + .../chgres_cube/search/variables_e.html | 30 + ver-1.11.0/chgres_cube/search/variables_e.js | 10 + .../chgres_cube/search/variables_f.html | 30 + ver-1.11.0/chgres_cube/search/variables_f.js | 13 + ver-1.11.0/chgres_cube/search__util_8F90.html | 134 + ver-1.11.0/chgres_cube/search__util_8F90.js | 5 + .../chgres_cube/search__util_8F90_source.html | 108 + .../chgres_cube/sfc__input__data_8F90.html | 1156 +++++ .../chgres_cube/sfc__input__data_8F90.js | 42 + .../sfc__input__data_8F90_source.html | 134 + ver-1.11.0/chgres_cube/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/chgres_cube/static__data_8F90.html | 186 + ver-1.11.0/chgres_cube/static__data_8F90.js | 21 + .../chgres_cube/static__data_8F90_source.html | 136 + .../structsurface_1_1realptr__2d.html | 148 + .../structsurface_1_1realptr__2d.js | 4 + .../structsurface_1_1realptr__3d.html | 148 + .../structsurface_1_1realptr__3d.js | 4 + ver-1.11.0/chgres_cube/surface_8F90.html | 215 + ver-1.11.0/chgres_cube/surface_8F90.js | 30 + .../chgres_cube/surface_8F90_source.html | 227 + .../surface__target__data_8F90.html | 249 + .../chgres_cube/surface__target__data_8F90.js | 42 + .../surface__target__data_8F90_source.html | 145 + ver-1.11.0/chgres_cube/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/chgres_cube/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/chgres_cube/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/chgres_cube/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/chgres_cube/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/chgres_cube/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/chgres_cube/tabs.css | 1 + .../thompson__mp__climo__data_8F90.html | 159 + .../thompson__mp__climo__data_8F90.js | 12 + ...thompson__mp__climo__data_8F90_source.html | 120 + ver-1.11.0/chgres_cube/utils_8F90.html | 645 +++ ver-1.11.0/chgres_cube/utils_8F90.js | 12 + ver-1.11.0/chgres_cube/utils_8F90_source.html | 105 + .../chgres_cube/wam__climo__data_8f90.html | 334 ++ .../chgres_cube/wam__climo__data_8f90.js | 5 + .../wam__climo__data_8f90_source.html | 107 + ver-1.11.0/chgres_cube/write__data_8F90.html | 261 + ver-1.11.0/chgres_cube/write__data_8F90.js | 7 + .../chgres_cube/write__data_8F90_source.html | 199 + ver-1.11.0/closed.png | Bin 0 -> 132 bytes .../cpld_gridgen/README_8md_source.html | 105 + ver-1.11.0/cpld_gridgen/angles_8F90.html | 223 + ver-1.11.0/cpld_gridgen/angles_8F90.js | 6 + .../cpld_gridgen/angles_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/annotated.html | 110 + ver-1.11.0/cpld_gridgen/annotated_dup.js | 6 + ver-1.11.0/cpld_gridgen/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/cpld_gridgen/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/cpld_gridgen/charstrings_8F90.html | 419 ++ ver-1.11.0/cpld_gridgen/charstrings_8F90.js | 17 + .../cpld_gridgen/charstrings_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/cicegrid_8F90.html | 155 + ver-1.11.0/cpld_gridgen/cicegrid_8F90.js | 4 + .../cpld_gridgen/cicegrid_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/classes.html | 113 + ver-1.11.0/cpld_gridgen/closed.png | Bin 0 -> 132 bytes .../cpld__gridgen_8md_source.html | 105 + ver-1.11.0/cpld_gridgen/debugprint_8F90.html | 198 + ver-1.11.0/cpld_gridgen/debugprint_8F90.js | 6 + .../cpld_gridgen/debugprint_8F90_source.html | 105 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_e7e52723ff2c442e43d7bd8270995a6b.html | 154 + .../dir_e7e52723ff2c442e43d7bd8270995a6b.js | 18 + ver-1.11.0/cpld_gridgen/doc.png | Bin 0 -> 746 bytes ver-1.11.0/cpld_gridgen/doxygen.css | 1596 ++++++ ver-1.11.0/cpld_gridgen/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/cpld_gridgen/dynsections.js | 127 + ver-1.11.0/cpld_gridgen/files.html | 125 + ver-1.11.0/cpld_gridgen/files_dup.js | 4 + ver-1.11.0/cpld_gridgen/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/cpld_gridgen/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/cpld_gridgen/functions.html | 117 + ver-1.11.0/cpld_gridgen/functions_vars.html | 117 + .../cpld_gridgen/gen__fixgrid_8F90.html | 150 + ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.js | 4 + .../gen__fixgrid_8F90_source.html | 106 + .../cpld_gridgen/gengrid__kinds_8F90.html | 270 + .../cpld_gridgen/gengrid__kinds_8F90.js | 10 + .../gengrid__kinds_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/globals.html | 105 + ver-1.11.0/cpld_gridgen/globals_func.html | 105 + ver-1.11.0/cpld_gridgen/grdvars_8F90.html | 1565 ++++++ ver-1.11.0/cpld_gridgen/grdvars_8F90.js | 71 + .../cpld_gridgen/grdvars_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/index.html | 262 + ver-1.11.0/cpld_gridgen/inputnml_8F90.html | 155 + ver-1.11.0/cpld_gridgen/inputnml_8F90.js | 4 + .../cpld_gridgen/inputnml_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/jquery.js | 115 + .../cpld_gridgen/man/man3/add_topoedits.3 | 1 + .../cpld_gridgen/man/man3/allocate_all.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/angle.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/angles.F90.3 | 99 + ver-1.11.0/cpld_gridgen/man/man3/anglet.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/angq.3 | 1 + .../cpld_gridgen/man/man3/apply_topoedits.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/areact.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/atmres.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/cdate.3 | 1 + .../cpld_gridgen/man/man3/charstrings.F90.3 | 179 + ver-1.11.0/cpld_gridgen/man/man3/checkpoint.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/checkseam.3 | 1 + .../cpld_gridgen/man/man3/checkxlatlon.3 | 1 + .../cpld_gridgen/man/man3/cicegrid.F90.3 | 61 + ver-1.11.0/cpld_gridgen/man/man3/cicevars.3 | 1 + .../man/man3/cicevars_typedefine.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/cl.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/cm.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/cs.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dbl_kind.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/debug.3 | 1 + .../cpld_gridgen/man/man3/debugprint.F90.3 | 90 + ver-1.11.0/cpld_gridgen/man/man3/dirout.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dirsrc.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dlatbu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dlatcv.3 | 1 + .../cpld_gridgen/man/man3/do_postwgts.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dp4.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dp8.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dx.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/dy.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/editmask.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/editsfile.3 | 1 + .../cpld_gridgen/man/man3/fill_bottom.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/fill_top.3 | 1 + .../cpld_gridgen/man/man3/fill_vertices.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/find_ang.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/find_angq.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/fixvars.3 | 1 + .../man/man3/fixvars_typedefine.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/fv3dir.3 | 1 + .../cpld_gridgen/man/man3/gen_fixgrid.3 | 1 + .../cpld_gridgen/man/man3/gen_fixgrid.F90.3 | 56 + .../cpld_gridgen/man/man3/gengrid_kinds.F90.3 | 109 + .../cpld_gridgen/man/man3/grdvars.F90.3 | 732 +++ ver-1.11.0/cpld_gridgen/man/man3/history.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/hte.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/htn.3 | 1 + .../cpld_gridgen/man/man3/inputnml.F90.3 | 61 + ver-1.11.0/cpld_gridgen/man/man3/int8_kind.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/int_kind.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ipole.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ivertbu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ivertct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ivertcu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ivertcv.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/jvertbu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/jvertct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/jvertcu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/jvertcv.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latbu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latbu_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latct_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latcu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latcu_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latcv.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/latcv_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/logmsg.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/lonbu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/lonbu_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/lonct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/lonct_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/loncu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/loncu_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/loncv.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/loncv_vert.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/long_name.3 | 1 + .../cpld_gridgen/man/man3/make_frac_land.3 | 1 + .../cpld_gridgen/man/man3/make_postwgts.3 | 1 + .../cpld_gridgen/man/man3/mapped_mask.F90.3 | 63 + ver-1.11.0/cpld_gridgen/man/man3/maskfile.3 | 1 + .../cpld_gridgen/man/man3/masking_depth.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/maskname.3 | 1 + .../cpld_gridgen/man/man3/maximum_depth.3 | 1 + .../cpld_gridgen/man/man3/maximum_lat.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/maxvars.3 | 1 + ...S_UTILS_sorc_cpld_gridgen.fd_docs_README.3 | 8 + .../cpld_gridgen/man/man3/minimum_depth.3 | 1 + .../man/man3/modulo_around_point.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ncoord.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ni.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/nj.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/npx.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/nv.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/nvars.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/nverts.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/nx.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ny.3 | 1 + .../cpld_gridgen/man/man3/postwgts.F90.3 | 56 + .../cpld_gridgen/man/man3/read_inputnml.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/real_kind.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/res.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/roottask.3 | 1 + .../cpld_gridgen/man/man3/scripgrid.F90.3 | 65 + ver-1.11.0/cpld_gridgen/man/man3/scripvars.3 | 1 + .../man/man3/scripvars_typedefine.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/sg_maxlat.3 | 1 + .../cpld_gridgen/man/man3/staggerlocs.3 | 1 + .../cpld_gridgen/man/man3/topoedits.F90.3 | 85 + ver-1.11.0/cpld_gridgen/man/man3/topofile.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/toponame.3 | 1 + .../cpld_gridgen/man/man3/tripolegrid.F90.3 | 61 + ver-1.11.0/cpld_gridgen/man/man3/ulat.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ulon.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/unit_name.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/var_name.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/var_type.3 | 1 + .../cpld_gridgen/man/man3/vartypedefs.F90.3 | 143 + .../man/man3/vartypedefs_vardefs.3 | 71 + ver-1.11.0/cpld_gridgen/man/man3/vertices.3 | 1 + .../cpld_gridgen/man/man3/vertices.F90.3 | 145 + ver-1.11.0/cpld_gridgen/man/man3/wet4.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/wet8.3 | 1 + .../cpld_gridgen/man/man3/write_cicegrid.3 | 1 + .../cpld_gridgen/man/man3/write_scripgrid.3 | 1 + .../cpld_gridgen/man/man3/write_tripolegrid.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/x.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/xlatct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/xlatcu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/xlonct.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/xloncu.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/xsgp1.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/y.3 | 1 + ver-1.11.0/cpld_gridgen/man/man3/ysgp1.3 | 1 + .../cpld_gridgen/mapped__mask_8F90.html | 166 + ver-1.11.0/cpld_gridgen/mapped__mask_8F90.js | 4 + .../mapped__mask_8F90_source.html | 105 + ...ILS_sorc_cpld_gridgen_8fd_docs_README.html | 106 + ver-1.11.0/cpld_gridgen/menu.js | 50 + ver-1.11.0/cpld_gridgen/menudata.js | 36 + ver-1.11.0/cpld_gridgen/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/cpld_gridgen/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/cpld_gridgen/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/cpld_gridgen/navtree.css | 146 + ver-1.11.0/cpld_gridgen/navtree.js | 540 ++ ver-1.11.0/cpld_gridgen/navtreedata.js | 63 + ver-1.11.0/cpld_gridgen/navtreeindex0.js | 174 + ver-1.11.0/cpld_gridgen/open.png | Bin 0 -> 123 bytes ver-1.11.0/cpld_gridgen/pages.html | 109 + ver-1.11.0/cpld_gridgen/postwgts_8F90.html | 149 + ver-1.11.0/cpld_gridgen/postwgts_8F90.js | 4 + .../cpld_gridgen/postwgts_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/resize.js | 136 + ver-1.11.0/cpld_gridgen/scripgrid_8F90.html | 173 + ver-1.11.0/cpld_gridgen/scripgrid_8F90.js | 4 + .../cpld_gridgen/scripgrid_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/search/all_0.html | 30 + ver-1.11.0/cpld_gridgen/search/all_0.js | 12 + ver-1.11.0/cpld_gridgen/search/all_1.html | 30 + ver-1.11.0/cpld_gridgen/search/all_1.js | 15 + ver-1.11.0/cpld_gridgen/search/all_10.html | 30 + ver-1.11.0/cpld_gridgen/search/all_10.js | 6 + ver-1.11.0/cpld_gridgen/search/all_11.html | 30 + ver-1.11.0/cpld_gridgen/search/all_11.js | 9 + ver-1.11.0/cpld_gridgen/search/all_12.html | 30 + ver-1.11.0/cpld_gridgen/search/all_12.js | 8 + ver-1.11.0/cpld_gridgen/search/all_13.html | 30 + ver-1.11.0/cpld_gridgen/search/all_13.js | 9 + ver-1.11.0/cpld_gridgen/search/all_14.html | 30 + ver-1.11.0/cpld_gridgen/search/all_14.js | 5 + ver-1.11.0/cpld_gridgen/search/all_2.html | 30 + ver-1.11.0/cpld_gridgen/search/all_2.js | 15 + ver-1.11.0/cpld_gridgen/search/all_3.html | 30 + ver-1.11.0/cpld_gridgen/search/all_3.js | 5 + ver-1.11.0/cpld_gridgen/search/all_4.html | 30 + ver-1.11.0/cpld_gridgen/search/all_4.js | 11 + ver-1.11.0/cpld_gridgen/search/all_5.html | 30 + ver-1.11.0/cpld_gridgen/search/all_5.js | 7 + ver-1.11.0/cpld_gridgen/search/all_6.html | 30 + ver-1.11.0/cpld_gridgen/search/all_6.js | 6 + ver-1.11.0/cpld_gridgen/search/all_7.html | 30 + ver-1.11.0/cpld_gridgen/search/all_7.js | 11 + ver-1.11.0/cpld_gridgen/search/all_8.html | 30 + ver-1.11.0/cpld_gridgen/search/all_8.js | 7 + ver-1.11.0/cpld_gridgen/search/all_9.html | 30 + ver-1.11.0/cpld_gridgen/search/all_9.js | 21 + ver-1.11.0/cpld_gridgen/search/all_a.html | 30 + ver-1.11.0/cpld_gridgen/search/all_a.js | 14 + ver-1.11.0/cpld_gridgen/search/all_b.html | 30 + ver-1.11.0/cpld_gridgen/search/all_b.js | 12 + ver-1.11.0/cpld_gridgen/search/all_c.html | 30 + ver-1.11.0/cpld_gridgen/search/all_c.js | 4 + ver-1.11.0/cpld_gridgen/search/all_d.html | 30 + ver-1.11.0/cpld_gridgen/search/all_d.js | 8 + ver-1.11.0/cpld_gridgen/search/all_e.html | 30 + ver-1.11.0/cpld_gridgen/search/all_e.js | 8 + ver-1.11.0/cpld_gridgen/search/all_f.html | 30 + ver-1.11.0/cpld_gridgen/search/all_f.js | 7 + ver-1.11.0/cpld_gridgen/search/classes_0.html | 30 + ver-1.11.0/cpld_gridgen/search/classes_0.js | 4 + ver-1.11.0/cpld_gridgen/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/cpld_gridgen/search/files_0.html | 30 + ver-1.11.0/cpld_gridgen/search/files_0.js | 4 + ver-1.11.0/cpld_gridgen/search/files_1.html | 30 + ver-1.11.0/cpld_gridgen/search/files_1.js | 5 + ver-1.11.0/cpld_gridgen/search/files_2.html | 30 + ver-1.11.0/cpld_gridgen/search/files_2.js | 4 + ver-1.11.0/cpld_gridgen/search/files_3.html | 30 + ver-1.11.0/cpld_gridgen/search/files_3.js | 6 + ver-1.11.0/cpld_gridgen/search/files_4.html | 30 + ver-1.11.0/cpld_gridgen/search/files_4.js | 4 + ver-1.11.0/cpld_gridgen/search/files_5.html | 30 + ver-1.11.0/cpld_gridgen/search/files_5.js | 4 + ver-1.11.0/cpld_gridgen/search/files_6.html | 30 + ver-1.11.0/cpld_gridgen/search/files_6.js | 4 + ver-1.11.0/cpld_gridgen/search/files_7.html | 30 + ver-1.11.0/cpld_gridgen/search/files_7.js | 4 + ver-1.11.0/cpld_gridgen/search/files_8.html | 30 + ver-1.11.0/cpld_gridgen/search/files_8.js | 5 + ver-1.11.0/cpld_gridgen/search/files_9.html | 30 + ver-1.11.0/cpld_gridgen/search/files_9.js | 5 + .../cpld_gridgen/search/functions_0.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_0.js | 6 + .../cpld_gridgen/search/functions_1.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_1.js | 7 + .../cpld_gridgen/search/functions_2.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_2.js | 9 + .../cpld_gridgen/search/functions_3.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_3.js | 4 + .../cpld_gridgen/search/functions_4.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_4.js | 6 + .../cpld_gridgen/search/functions_5.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_5.js | 4 + .../cpld_gridgen/search/functions_6.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_6.js | 4 + .../cpld_gridgen/search/functions_7.html | 30 + ver-1.11.0/cpld_gridgen/search/functions_7.js | 6 + ver-1.11.0/cpld_gridgen/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/cpld_gridgen/search/nomatches.html | 12 + ver-1.11.0/cpld_gridgen/search/pages_0.html | 30 + ver-1.11.0/cpld_gridgen/search/pages_0.js | 4 + ver-1.11.0/cpld_gridgen/search/pages_1.html | 30 + ver-1.11.0/cpld_gridgen/search/pages_1.js | 4 + ver-1.11.0/cpld_gridgen/search/search.css | 271 + ver-1.11.0/cpld_gridgen/search/search.js | 814 +++ ver-1.11.0/cpld_gridgen/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/cpld_gridgen/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/cpld_gridgen/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/cpld_gridgen/search/searchdata.js | 30 + .../cpld_gridgen/search/variables_0.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_0.js | 8 + .../cpld_gridgen/search/variables_1.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_1.js | 8 + .../cpld_gridgen/search/variables_10.html | 30 + .../cpld_gridgen/search/variables_10.js | 5 + .../cpld_gridgen/search/variables_11.html | 30 + .../cpld_gridgen/search/variables_11.js | 9 + .../cpld_gridgen/search/variables_12.html | 30 + .../cpld_gridgen/search/variables_12.js | 5 + .../cpld_gridgen/search/variables_2.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_2.js | 14 + .../cpld_gridgen/search/variables_3.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_3.js | 5 + .../cpld_gridgen/search/variables_4.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_4.js | 5 + .../cpld_gridgen/search/variables_5.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_5.js | 6 + .../cpld_gridgen/search/variables_6.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_6.js | 10 + .../cpld_gridgen/search/variables_7.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_7.js | 7 + .../cpld_gridgen/search/variables_8.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_8.js | 21 + .../cpld_gridgen/search/variables_9.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_9.js | 10 + .../cpld_gridgen/search/variables_a.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_a.js | 12 + .../cpld_gridgen/search/variables_b.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_b.js | 6 + .../cpld_gridgen/search/variables_c.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_c.js | 6 + .../cpld_gridgen/search/variables_d.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_d.js | 5 + .../cpld_gridgen/search/variables_e.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_e.js | 6 + .../cpld_gridgen/search/variables_f.html | 30 + ver-1.11.0/cpld_gridgen/search/variables_f.js | 6 + ver-1.11.0/cpld_gridgen/splitbar.png | Bin 0 -> 314 bytes .../structvartypedefs_1_1vardefs.html | 223 + .../structvartypedefs_1_1vardefs.js | 8 + ver-1.11.0/cpld_gridgen/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/cpld_gridgen/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/cpld_gridgen/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/cpld_gridgen/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/cpld_gridgen/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/cpld_gridgen/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/cpld_gridgen/tabs.css | 1 + ver-1.11.0/cpld_gridgen/topoedits_8F90.html | 201 + ver-1.11.0/cpld_gridgen/topoedits_8F90.js | 5 + .../cpld_gridgen/topoedits_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/tripolegrid_8F90.html | 155 + ver-1.11.0/cpld_gridgen/tripolegrid_8F90.js | 4 + .../cpld_gridgen/tripolegrid_8F90_source.html | 105 + ver-1.11.0/cpld_gridgen/vartypedefs_8F90.html | 293 ++ ver-1.11.0/cpld_gridgen/vartypedefs_8F90.js | 11 + .../cpld_gridgen/vartypedefs_8F90_source.html | 106 + ver-1.11.0/cpld_gridgen/vertices_8F90.html | 371 ++ ver-1.11.0/cpld_gridgen/vertices_8F90.js | 6 + .../cpld_gridgen/vertices_8F90_source.html | 105 + ver-1.11.0/doc.png | Bin 0 -> 746 bytes ver-1.11.0/doxygen.css | 1596 ++++++ ver-1.11.0/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/dynsections.js | 127 + .../emcsfc_ice_blend/README_8md_source.html | 105 + ver-1.11.0/emcsfc_ice_blend/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/emcsfc_ice_blend/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/emcsfc_ice_blend/closed.png | Bin 0 -> 132 bytes .../dir_b0d2d728ad531c7471cc0482a04e8fc2.html | 112 + .../dir_b0d2d728ad531c7471cc0482a04e8fc2.js | 4 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/emcsfc_ice_blend/doc.png | Bin 0 -> 746 bytes ver-1.11.0/emcsfc_ice_blend/doxygen.css | 1596 ++++++ ver-1.11.0/emcsfc_ice_blend/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/emcsfc_ice_blend/dynsections.js | 127 + .../emc__ice__blend_8md_source.html | 105 + .../emcsfc__ice__blend_8f90.html | 195 + .../emcsfc__ice__blend_8f90.js | 4 + .../emcsfc__ice__blend_8f90_source.html | 106 + ver-1.11.0/emcsfc_ice_blend/files.html | 111 + ver-1.11.0/emcsfc_ice_blend/files_dup.js | 4 + ver-1.11.0/emcsfc_ice_blend/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/emcsfc_ice_blend/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/emcsfc_ice_blend/globals.html | 105 + ver-1.11.0/emcsfc_ice_blend/globals_func.html | 105 + ver-1.11.0/emcsfc_ice_blend/index.html | 109 + ver-1.11.0/emcsfc_ice_blend/jquery.js | 115 + .../man/man3/emcsfc_ice_blend.3 | 1 + .../man/man3/emcsfc_ice_blend.f90.3 | 144 + ...ILS_sorc_emcsfc_ice_blend.fd_docs_README.3 | 8 + ...sorc_emcsfc_ice_blend_8fd_docs_README.html | 106 + ver-1.11.0/emcsfc_ice_blend/menu.js | 50 + ver-1.11.0/emcsfc_ice_blend/menudata.js | 31 + ver-1.11.0/emcsfc_ice_blend/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/emcsfc_ice_blend/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/emcsfc_ice_blend/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/emcsfc_ice_blend/navtree.css | 146 + ver-1.11.0/emcsfc_ice_blend/navtree.js | 540 ++ ver-1.11.0/emcsfc_ice_blend/navtreedata.js | 45 + ver-1.11.0/emcsfc_ice_blend/navtreeindex0.js | 15 + ver-1.11.0/emcsfc_ice_blend/open.png | Bin 0 -> 123 bytes ver-1.11.0/emcsfc_ice_blend/pages.html | 109 + ver-1.11.0/emcsfc_ice_blend/resize.js | 136 + ver-1.11.0/emcsfc_ice_blend/search/all_0.html | 30 + ver-1.11.0/emcsfc_ice_blend/search/all_0.js | 6 + ver-1.11.0/emcsfc_ice_blend/search/all_1.html | 30 + ver-1.11.0/emcsfc_ice_blend/search/all_1.js | 4 + ver-1.11.0/emcsfc_ice_blend/search/close.png | Bin 0 -> 273 bytes .../emcsfc_ice_blend/search/files_0.html | 30 + ver-1.11.0/emcsfc_ice_blend/search/files_0.js | 4 + .../emcsfc_ice_blend/search/functions_0.html | 30 + .../emcsfc_ice_blend/search/functions_0.js | 4 + .../emcsfc_ice_blend/search/mag_sel.png | Bin 0 -> 563 bytes .../emcsfc_ice_blend/search/nomatches.html | 12 + .../emcsfc_ice_blend/search/pages_0.html | 30 + ver-1.11.0/emcsfc_ice_blend/search/pages_0.js | 4 + .../emcsfc_ice_blend/search/pages_1.html | 30 + ver-1.11.0/emcsfc_ice_blend/search/pages_1.js | 4 + ver-1.11.0/emcsfc_ice_blend/search/search.css | 271 + ver-1.11.0/emcsfc_ice_blend/search/search.js | 814 +++ .../emcsfc_ice_blend/search/search_l.png | Bin 0 -> 604 bytes .../emcsfc_ice_blend/search/search_m.png | Bin 0 -> 158 bytes .../emcsfc_ice_blend/search/search_r.png | Bin 0 -> 612 bytes .../emcsfc_ice_blend/search/searchdata.js | 24 + ver-1.11.0/emcsfc_ice_blend/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/emcsfc_ice_blend/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/emcsfc_ice_blend/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/emcsfc_ice_blend/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/emcsfc_ice_blend/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/emcsfc_ice_blend/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/emcsfc_ice_blend/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/emcsfc_ice_blend/tabs.css | 1 + .../emcsfc_snow2mdl/README_8md_source.html | 105 + ver-1.11.0/emcsfc_snow2mdl/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/emcsfc_snow2mdl/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/emcsfc_snow2mdl/closed.png | Bin 0 -> 132 bytes .../dir_6c04cce1e346d12dee28b3a41c48082b.html | 127 + .../dir_6c04cce1e346d12dee28b3a41c48082b.js | 9 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/emcsfc_snow2mdl/doc.png | Bin 0 -> 746 bytes ver-1.11.0/emcsfc_snow2mdl/doxygen.css | 1596 ++++++ ver-1.11.0/emcsfc_snow2mdl/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/emcsfc_snow2mdl/driver_8F90.html | 235 + ver-1.11.0/emcsfc_snow2mdl/driver_8F90.js | 4 + .../emcsfc_snow2mdl/driver_8F90_source.html | 117 + ver-1.11.0/emcsfc_snow2mdl/dynsections.js | 127 + .../emcsfc__snow2mdl_8md_source.html | 105 + ver-1.11.0/emcsfc_snow2mdl/files.html | 116 + ver-1.11.0/emcsfc_snow2mdl/files_dup.js | 4 + ver-1.11.0/emcsfc_snow2mdl/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/emcsfc_snow2mdl/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/emcsfc_snow2mdl/globals.html | 126 + ver-1.11.0/emcsfc_snow2mdl/globals_func.html | 126 + .../emcsfc_snow2mdl/grib__utils_8F90.html | 629 +++ .../emcsfc_snow2mdl/grib__utils_8F90.js | 10 + .../grib__utils_8F90_source.html | 111 + ver-1.11.0/emcsfc_snow2mdl/index.html | 109 + ver-1.11.0/emcsfc_snow2mdl/jquery.js | 115 + ver-1.11.0/emcsfc_snow2mdl/man/man3/SKGB2.3 | 1 + .../emcsfc_snow2mdl/man/man3/afwa_check.3 | 1 + .../man/man3/afwa_lsmask_nh_file.3 | 1 + .../man/man3/afwa_lsmask_sh_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/afwa_res.3 | 1 + .../man/man3/afwa_snow_global_file.3 | 1 + .../man/man3/afwa_snow_nh_file.3 | 1 + .../man/man3/afwa_snow_sh_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/autosnow_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/autosnow_res.3 | 1 + .../man/man3/bad_afwa_global.3 | 1 + .../emcsfc_snow2mdl/man/man3/bad_afwa_nh.3 | 1 + .../emcsfc_snow2mdl/man/man3/bad_afwa_sh.3 | 1 + .../emcsfc_snow2mdl/man/man3/bad_nesdis.3 | 1 + .../man/man3/bitmap_afwa_global.3 | 1 + .../emcsfc_snow2mdl/man/man3/bitmap_afwa_nh.3 | 1 + .../emcsfc_snow2mdl/man/man3/bitmap_afwa_sh.3 | 1 + .../man/man3/bitmap_autosnow.3 | 1 + .../emcsfc_snow2mdl/man/man3/bitmap_nesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/climo_qc_file.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/driver.3 | 1 + .../emcsfc_snow2mdl/man/man3/driver.F90.3 | 222 + .../emcsfc_snow2mdl/man/man3/gdt_to_gds.3 | 1 + .../emcsfc_snow2mdl/man/man3/gfs_lpl_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib2_check.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib2_free.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib2_null.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_century.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_check.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_day.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_hour.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_month.3 | 1 + .../emcsfc_snow2mdl/man/man3/grib_utils.F90.3 | 326 ++ .../emcsfc_snow2mdl/man/man3/grib_year.3 | 1 + .../emcsfc_snow2mdl/man/man3/grid_id_mdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/iafwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/iautosnow.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/ijmdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/imdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/inesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/init_grib2.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/interp.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/intlon.3 | 1 + .../emcsfc_snow2mdl/man/man3/ipts_mdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/jafwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/jautosnow.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/jmdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/jnesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/jpts_mdl.3 | 1 + .../man/man3/kgds_afwa_global.3 | 1 + .../emcsfc_snow2mdl/man/man3/kgds_afwa_nh.3 | 1 + .../man/man3/kgds_afwa_nh_8th.3 | 1 + .../emcsfc_snow2mdl/man/man3/kgds_afwa_sh.3 | 1 + .../man/man3/kgds_afwa_sh_8th.3 | 1 + .../emcsfc_snow2mdl/man/man3/kgds_autosnow.3 | 1 + .../emcsfc_snow2mdl/man/man3/kgds_mdl.3 | 1 + .../emcsfc_snow2mdl/man/man3/kgds_nesdis.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/lat11.3 | 1 + .../emcsfc_snow2mdl/man/man3/lat_threshold.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/latlast.3 | 1 + .../emcsfc_snow2mdl/man/man3/lats_mdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/lon11.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/lonlast.3 | 1 + .../emcsfc_snow2mdl/man/man3/lons_mdl.3 | 1 + .../emcsfc_snow2mdl/man/man3/lonsperlat_mdl.3 | 1 + .../emcsfc_snow2mdl/man/man3/lsmask_mdl.3 | 1 + .../emcsfc_snow2mdl/man/man3/lsmask_mdl_sav.3 | 1 + ...TILS_sorc_emcsfc_snow2mdl.fd_docs_README.3 | 8 + .../emcsfc_snow2mdl/man/man3/mesh_nesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/min_snow_depth.3 | 1 + .../emcsfc_snow2mdl/man/man3/model_grid.3 | 332 ++ .../emcsfc_snow2mdl/man/man3/model_grid.F90.3 | 127 + .../man/man3/model_grid_cleanup.3 | 1 + .../emcsfc_snow2mdl/man/man3/model_lat_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/model_lon_file.3 | 1 + .../man/man3/model_lsmask_file.3 | 1 + .../man/man3/model_snow_file.3 | 1 + .../man/man3/nesdis_lsmask_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/nesdis_res.3 | 1 + .../man/man3/nesdis_snow_file.3 | 1 + .../emcsfc_snow2mdl/man/man3/nh_climo_check.3 | 1 + .../emcsfc_snow2mdl/man/man3/output_grib2.3 | 1 + .../emcsfc_snow2mdl/man/man3/program_setup.3 | 369 ++ .../man/man3/program_setup.F90.3 | 143 + .../man/man3/read_afwa_binary.3 | 1 + .../emcsfc_snow2mdl/man/man3/read_afwa_mask.3 | 1 + .../man/man3/read_config_nml.3 | 1 + .../man/man3/read_mdl_grid_info.3 | 1 + .../emcsfc_snow2mdl/man/man3/readafwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/readautosnow.3 | 1 + .../emcsfc_snow2mdl/man/man3/readnesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/resol_mdl.3 | 1 + .../emcsfc_snow2mdl/man/man3/sea_ice_nesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/snow2mdl.3 | 296 ++ .../emcsfc_snow2mdl/man/man3/snow2mdl.F90.3 | 75 + .../man/man3/snow_cvr_autosnow.3 | 1 + .../emcsfc_snow2mdl/man/man3/snow_cvr_mdl.3 | 1 + .../man/man3/snow_cvr_nesdis.3 | 1 + .../man/man3/snow_cvr_threshold.3 | 1 + .../man/man3/snow_dep_afwa_global.3 | 1 + .../man/man3/snow_dep_afwa_nh.3 | 1 + .../man/man3/snow_dep_afwa_sh.3 | 1 + .../emcsfc_snow2mdl/man/man3/snow_dep_mdl.3 | 1 + ver-1.11.0/emcsfc_snow2mdl/man/man3/snowdat.3 | 790 +++ .../emcsfc_snow2mdl/man/man3/snowdat.F90.3 | 223 + ver-1.11.0/emcsfc_snow2mdl/man/man3/thinned.3 | 1 + .../emcsfc_snow2mdl/man/man3/uninterpred.3 | 1 + .../emcsfc_snow2mdl/man/man3/use_autosnow.3 | 1 + .../man/man3/use_global_afwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/use_nesdis.3 | 1 + .../emcsfc_snow2mdl/man/man3/use_nh_afwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/use_sh_afwa.3 | 1 + .../emcsfc_snow2mdl/man/man3/write_grib1.3 | 1 + .../emcsfc_snow2mdl/man/man3/write_grib2.3 | 1 + ..._sorc_emcsfc_snow2mdl_8fd_docs_README.html | 106 + ver-1.11.0/emcsfc_snow2mdl/menu.js | 50 + ver-1.11.0/emcsfc_snow2mdl/menudata.js | 68 + .../emcsfc_snow2mdl/model__grid_8F90.html | 193 + .../emcsfc_snow2mdl/model__grid_8F90.js | 23 + .../model__grid_8F90_source.html | 135 + .../emcsfc_snow2mdl/namespacemembers.html | 449 ++ .../namespacemembers_func.html | 147 + .../namespacemembers_vars.html | 400 ++ .../emcsfc_snow2mdl/namespacemodel__grid.html | 615 +++ .../namespaceprogram__setup.html | 702 +++ ver-1.11.0/emcsfc_snow2mdl/namespaces.html | 112 + ver-1.11.0/emcsfc_snow2mdl/namespaces_dup.js | 7 + .../emcsfc_snow2mdl/namespacesnow2mdl.html | 509 ++ .../emcsfc_snow2mdl/namespacesnowdat.html | 1328 +++++ ver-1.11.0/emcsfc_snow2mdl/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/emcsfc_snow2mdl/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/emcsfc_snow2mdl/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/emcsfc_snow2mdl/navtree.css | 146 + ver-1.11.0/emcsfc_snow2mdl/navtree.js | 540 ++ ver-1.11.0/emcsfc_snow2mdl/navtreedata.js | 53 + ver-1.11.0/emcsfc_snow2mdl/navtreeindex0.js | 135 + ver-1.11.0/emcsfc_snow2mdl/open.png | Bin 0 -> 123 bytes ver-1.11.0/emcsfc_snow2mdl/pages.html | 109 + .../emcsfc_snow2mdl/program__setup_8F90.html | 205 + .../emcsfc_snow2mdl/program__setup_8F90.js | 27 + .../program__setup_8F90_source.html | 130 + ver-1.11.0/emcsfc_snow2mdl/resize.js | 136 + ver-1.11.0/emcsfc_snow2mdl/search/all_0.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_0.js | 12 + ver-1.11.0/emcsfc_snow2mdl/search/all_1.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_1.js | 12 + ver-1.11.0/emcsfc_snow2mdl/search/all_10.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_10.js | 4 + ver-1.11.0/emcsfc_snow2mdl/search/all_11.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_11.js | 9 + ver-1.11.0/emcsfc_snow2mdl/search/all_12.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_12.js | 5 + ver-1.11.0/emcsfc_snow2mdl/search/all_2.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_2.js | 4 + ver-1.11.0/emcsfc_snow2mdl/search/all_3.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_3.js | 5 + ver-1.11.0/emcsfc_snow2mdl/search/all_4.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_4.js | 4 + ver-1.11.0/emcsfc_snow2mdl/search/all_5.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_5.js | 16 + ver-1.11.0/emcsfc_snow2mdl/search/all_6.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_6.js | 12 + ver-1.11.0/emcsfc_snow2mdl/search/all_7.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_7.js | 8 + ver-1.11.0/emcsfc_snow2mdl/search/all_8.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_8.js | 11 + ver-1.11.0/emcsfc_snow2mdl/search/all_9.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_9.js | 13 + ver-1.11.0/emcsfc_snow2mdl/search/all_a.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_a.js | 12 + ver-1.11.0/emcsfc_snow2mdl/search/all_b.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_b.js | 7 + ver-1.11.0/emcsfc_snow2mdl/search/all_c.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_c.js | 4 + ver-1.11.0/emcsfc_snow2mdl/search/all_d.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_d.js | 5 + ver-1.11.0/emcsfc_snow2mdl/search/all_e.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_e.js | 12 + ver-1.11.0/emcsfc_snow2mdl/search/all_f.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/all_f.js | 17 + ver-1.11.0/emcsfc_snow2mdl/search/close.png | Bin 0 -> 273 bytes .../emcsfc_snow2mdl/search/files_0.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/files_0.js | 4 + .../emcsfc_snow2mdl/search/files_1.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/files_1.js | 4 + .../emcsfc_snow2mdl/search/files_2.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/files_2.js | 4 + .../emcsfc_snow2mdl/search/files_3.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/files_3.js | 4 + .../emcsfc_snow2mdl/search/files_4.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/files_4.js | 5 + .../emcsfc_snow2mdl/search/functions_0.html | 30 + .../emcsfc_snow2mdl/search/functions_0.js | 4 + .../emcsfc_snow2mdl/search/functions_1.html | 30 + .../emcsfc_snow2mdl/search/functions_1.js | 4 + .../emcsfc_snow2mdl/search/functions_2.html | 30 + .../emcsfc_snow2mdl/search/functions_2.js | 8 + .../emcsfc_snow2mdl/search/functions_3.html | 30 + .../emcsfc_snow2mdl/search/functions_3.js | 6 + .../emcsfc_snow2mdl/search/functions_4.html | 30 + .../emcsfc_snow2mdl/search/functions_4.js | 4 + .../emcsfc_snow2mdl/search/functions_5.html | 30 + .../emcsfc_snow2mdl/search/functions_5.js | 4 + .../emcsfc_snow2mdl/search/functions_6.html | 30 + .../emcsfc_snow2mdl/search/functions_6.js | 10 + .../emcsfc_snow2mdl/search/functions_7.html | 30 + .../emcsfc_snow2mdl/search/functions_7.js | 4 + .../emcsfc_snow2mdl/search/functions_8.html | 30 + .../emcsfc_snow2mdl/search/functions_8.js | 4 + .../emcsfc_snow2mdl/search/functions_9.html | 30 + .../emcsfc_snow2mdl/search/functions_9.js | 5 + ver-1.11.0/emcsfc_snow2mdl/search/mag_sel.png | Bin 0 -> 563 bytes .../emcsfc_snow2mdl/search/namespaces_0.html | 30 + .../emcsfc_snow2mdl/search/namespaces_0.js | 4 + .../emcsfc_snow2mdl/search/namespaces_1.html | 30 + .../emcsfc_snow2mdl/search/namespaces_1.js | 4 + .../emcsfc_snow2mdl/search/namespaces_2.html | 30 + .../emcsfc_snow2mdl/search/namespaces_2.js | 5 + .../emcsfc_snow2mdl/search/nomatches.html | 12 + .../emcsfc_snow2mdl/search/pages_0.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/pages_0.js | 4 + .../emcsfc_snow2mdl/search/pages_1.html | 30 + ver-1.11.0/emcsfc_snow2mdl/search/pages_1.js | 4 + ver-1.11.0/emcsfc_snow2mdl/search/search.css | 271 + ver-1.11.0/emcsfc_snow2mdl/search/search.js | 814 +++ .../emcsfc_snow2mdl/search/search_l.png | Bin 0 -> 604 bytes .../emcsfc_snow2mdl/search/search_m.png | Bin 0 -> 158 bytes .../emcsfc_snow2mdl/search/search_r.png | Bin 0 -> 612 bytes .../emcsfc_snow2mdl/search/searchdata.js | 30 + .../emcsfc_snow2mdl/search/variables_0.html | 30 + .../emcsfc_snow2mdl/search/variables_0.js | 11 + .../emcsfc_snow2mdl/search/variables_1.html | 30 + .../emcsfc_snow2mdl/search/variables_1.js | 12 + .../emcsfc_snow2mdl/search/variables_2.html | 30 + .../emcsfc_snow2mdl/search/variables_2.js | 4 + .../emcsfc_snow2mdl/search/variables_3.html | 30 + .../emcsfc_snow2mdl/search/variables_3.js | 10 + .../emcsfc_snow2mdl/search/variables_4.html | 30 + .../emcsfc_snow2mdl/search/variables_4.js | 9 + .../emcsfc_snow2mdl/search/variables_5.html | 30 + .../emcsfc_snow2mdl/search/variables_5.js | 8 + .../emcsfc_snow2mdl/search/variables_6.html | 30 + .../emcsfc_snow2mdl/search/variables_6.js | 11 + .../emcsfc_snow2mdl/search/variables_7.html | 30 + .../emcsfc_snow2mdl/search/variables_7.js | 13 + .../emcsfc_snow2mdl/search/variables_8.html | 30 + .../emcsfc_snow2mdl/search/variables_8.js | 9 + .../emcsfc_snow2mdl/search/variables_9.html | 30 + .../emcsfc_snow2mdl/search/variables_9.js | 6 + .../emcsfc_snow2mdl/search/variables_a.html | 30 + .../emcsfc_snow2mdl/search/variables_a.js | 4 + .../emcsfc_snow2mdl/search/variables_b.html | 30 + .../emcsfc_snow2mdl/search/variables_b.js | 4 + .../emcsfc_snow2mdl/search/variables_c.html | 30 + .../emcsfc_snow2mdl/search/variables_c.js | 12 + .../emcsfc_snow2mdl/search/variables_d.html | 30 + .../emcsfc_snow2mdl/search/variables_d.js | 4 + .../emcsfc_snow2mdl/search/variables_e.html | 30 + .../emcsfc_snow2mdl/search/variables_e.js | 8 + ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.html | 154 + ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.js | 10 + .../emcsfc_snow2mdl/snow2mdl_8F90_source.html | 179 + ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.html | 265 + ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.js | 47 + .../emcsfc_snow2mdl/snowdat_8F90_source.html | 171 + ver-1.11.0/emcsfc_snow2mdl/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/emcsfc_snow2mdl/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/emcsfc_snow2mdl/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/emcsfc_snow2mdl/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/emcsfc_snow2mdl/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/emcsfc_snow2mdl/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/emcsfc_snow2mdl/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/emcsfc_snow2mdl/tabs.css | 1 + ver-1.11.0/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/fvcom_tools/README_8md_source.html | 105 + ver-1.11.0/fvcom_tools/annotated.html | 112 + ver-1.11.0/fvcom_tools/annotated_dup.js | 5 + ver-1.11.0/fvcom_tools/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/fvcom_tools/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/fvcom_tools/classes.html | 114 + ver-1.11.0/fvcom_tools/closed.png | Bin 0 -> 132 bytes .../dir_d799b4cbfed66b2aa5b5975cc885ce14.html | 121 + .../dir_d799b4cbfed66b2aa5b5975cc885ce14.js | 7 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/fvcom_tools/doc.png | Bin 0 -> 746 bytes ver-1.11.0/fvcom_tools/doxygen.css | 1596 ++++++ ver-1.11.0/fvcom_tools/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/fvcom_tools/dynsections.js | 127 + ver-1.11.0/fvcom_tools/files.html | 114 + ver-1.11.0/fvcom_tools/files_dup.js | 4 + ver-1.11.0/fvcom_tools/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/fvcom_tools/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/fvcom_tools/functions.html | 461 ++ ver-1.11.0/fvcom_tools/functions_func.html | 298 ++ ver-1.11.0/fvcom_tools/functions_vars.html | 275 + .../fvcom_tools/fvcom__tools_8md_source.html | 105 + ver-1.11.0/fvcom_tools/globals.html | 105 + ver-1.11.0/fvcom_tools/globals_func.html | 105 + ver-1.11.0/fvcom_tools/index.html | 127 + ver-1.11.0/fvcom_tools/jquery.js | 115 + ver-1.11.0/fvcom_tools/kinds_8f90.html | 155 + ver-1.11.0/fvcom_tools/kinds_8f90.js | 12 + ver-1.11.0/fvcom_tools/kinds_8f90_source.html | 115 + ver-1.11.0/fvcom_tools/man/man3/add_new_var.3 | 1 + .../fvcom_tools/man/man3/add_new_var_2d.3 | 1 + .../fvcom_tools/man/man3/add_new_var_3d.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/close.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/close_nc.3 | 1 + .../man/man3/convert_theta2t_2dgrid.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/datatype.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/datelen.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/debug_level.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/dimname.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/dimnamedate.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/dimnameew.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/dimnamens.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/dimnametime.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/drmissing.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/ends.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/filename.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/finish.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/finish_nwp.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/get_att.3 | 1 + .../fvcom_tools/man/man3/get_att_nc_int.3 | 1 + .../fvcom_tools/man/man3/get_att_nc_real.3 | 1 + .../fvcom_tools/man/man3/get_att_nc_string.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/get_dim.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/get_dim_nc.3 | 1 + .../fvcom_tools/man/man3/get_time_ind.3 | 1 + .../fvcom_tools/man/man3/get_time_ind_nwp.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/get_var.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_char.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_char_1d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_char_2d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_char_3d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_double.3 | 1 + .../man/man3/get_var_nc_double_1d.3 | 1 + .../man/man3/get_var_nc_double_2d.3 | 1 + .../man/man3/get_var_nc_double_3d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_int.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_int_1d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_int_2d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_int_3d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_real.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_real_1d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_real_2d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_real_3d.3 | 1 + .../fvcom_tools/man/man3/get_var_nc_short.3 | 1 + .../man/man3/get_var_nc_short_1d.3 | 1 + .../man/man3/get_var_nc_short_2d.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/handle_err.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_byte.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_hice.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_ice.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_icet.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_kind.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_mask.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_sfct.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_sfctl.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_short.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_sst.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/i_zorl.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/imissing.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/initial.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/initial_nwp.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/kinds.3 | 126 + ver-1.11.0/fvcom_tools/man/man3/kinds.f90.3 | 74 + ver-1.11.0/fvcom_tools/man/man3/latname.3 | 1 + .../fvcom_tools/man/man3/len_sta_name.3 | 1 + .../fvcom_tools/man/man3/list_initial.3 | 1 + .../fvcom_tools/man/man3/list_initial_nwp.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/lonname.3 | 1 + ...FS_UTILS_sorc_fvcom_tools.fd_docs_README.3 | 8 + ver-1.11.0/fvcom_tools/man/man3/module_ncio.3 | 1637 ++++++ .../fvcom_tools/man/man3/module_ncio.f90.3 | 230 + .../fvcom_tools/man/man3/module_ncio_ncio.3 | 948 ++++ ver-1.11.0/fvcom_tools/man/man3/module_nwp.3 | 224 + .../fvcom_tools/man/man3/module_nwp.f90.3 | 78 + .../man/man3/module_nwp_fcst_nwp.3 | 482 ++ ver-1.11.0/fvcom_tools/man/man3/ncdata.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/ncid.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/ndims.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/numvar.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_hice_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_hice_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_ice_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_ice_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_icet_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_icet_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_mask_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_mask_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_sfctl_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_sst_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_sst_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_c.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_w.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/open.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/open_nc.3 | 1 + .../fvcom_tools/man/man3/process_FVCOM.3 | 1 + .../fvcom_tools/man/man3/process_FVCOM.f90.3 | 63 + ver-1.11.0/fvcom_tools/man/man3/r_kind.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/r_single.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/read_n.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/read_nwp.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/replace_var.3 | 1 + .../man/man3/replace_var_nc_char.3 | 1 + .../man/man3/replace_var_nc_char_1d.3 | 1 + .../man/man3/replace_var_nc_char_2d.3 | 1 + .../man/man3/replace_var_nc_char_3d.3 | 1 + .../man/man3/replace_var_nc_double.3 | 1 + .../man/man3/replace_var_nc_double_1d.3 | 1 + .../man/man3/replace_var_nc_double_2d.3 | 1 + .../man/man3/replace_var_nc_double_3d.3 | 1 + .../fvcom_tools/man/man3/replace_var_nc_int.3 | 1 + .../man/man3/replace_var_nc_int_1d.3 | 1 + .../man/man3/replace_var_nc_int_2d.3 | 1 + .../man/man3/replace_var_nc_int_3d.3 | 1 + .../man/man3/replace_var_nc_real.3 | 1 + .../man/man3/replace_var_nc_real_1d.3 | 1 + .../man/man3/replace_var_nc_real_2d.3 | 1 + .../man/man3/replace_var_nc_real_3d.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/rmissing.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/status.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/times.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/varnames.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/xlat.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/xlon.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/xtime.3 | 1 + ver-1.11.0/fvcom_tools/man/man3/xtype.3 | 1 + ...TILS_sorc_fvcom_tools_8fd_docs_README.html | 106 + ver-1.11.0/fvcom_tools/menu.js | 50 + ver-1.11.0/fvcom_tools/menudata.js | 98 + ver-1.11.0/fvcom_tools/module__ncio_8f90.html | 270 + ver-1.11.0/fvcom_tools/module__ncio_8f90.js | 49 + .../fvcom_tools/module__ncio_8f90_source.html | 152 + ver-1.11.0/fvcom_tools/module__nwp_8f90.html | 157 + ver-1.11.0/fvcom_tools/module__nwp_8f90.js | 10 + .../fvcom_tools/module__nwp_8f90_source.html | 120 + ver-1.11.0/fvcom_tools/namespacekinds.html | 314 ++ ver-1.11.0/fvcom_tools/namespacemembers.html | 324 ++ .../fvcom_tools/namespacemembers_func.html | 286 + .../fvcom_tools/namespacemembers_vars.html | 132 + .../fvcom_tools/namespacemodule__ncio.html | 3033 +++++++++++ .../fvcom_tools/namespacemodule__ncio.js | 4 + .../fvcom_tools/namespacemodule__nwp.html | 552 ++ .../fvcom_tools/namespacemodule__nwp.js | 4 + ver-1.11.0/fvcom_tools/namespaces.html | 111 + ver-1.11.0/fvcom_tools/namespaces_dup.js | 6 + ver-1.11.0/fvcom_tools/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/fvcom_tools/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/fvcom_tools/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/fvcom_tools/navtree.css | 146 + ver-1.11.0/fvcom_tools/navtree.js | 540 ++ ver-1.11.0/fvcom_tools/navtreedata.js | 66 + ver-1.11.0/fvcom_tools/navtreeindex0.js | 199 + ver-1.11.0/fvcom_tools/open.png | Bin 0 -> 123 bytes ver-1.11.0/fvcom_tools/pages.html | 109 + .../fvcom_tools/process__FVCOM_8f90.html | 156 + ver-1.11.0/fvcom_tools/process__FVCOM_8f90.js | 4 + .../process__FVCOM_8f90_source.html | 113 + ver-1.11.0/fvcom_tools/resize.js | 136 + ver-1.11.0/fvcom_tools/search/all_0.html | 30 + ver-1.11.0/fvcom_tools/search/all_0.js | 6 + ver-1.11.0/fvcom_tools/search/all_1.html | 30 + ver-1.11.0/fvcom_tools/search/all_1.js | 6 + ver-1.11.0/fvcom_tools/search/all_10.html | 30 + ver-1.11.0/fvcom_tools/search/all_10.js | 4 + ver-1.11.0/fvcom_tools/search/all_11.html | 30 + ver-1.11.0/fvcom_tools/search/all_11.js | 4 + ver-1.11.0/fvcom_tools/search/all_12.html | 30 + ver-1.11.0/fvcom_tools/search/all_12.js | 7 + ver-1.11.0/fvcom_tools/search/all_2.html | 30 + ver-1.11.0/fvcom_tools/search/all_2.js | 12 + ver-1.11.0/fvcom_tools/search/all_3.html | 30 + ver-1.11.0/fvcom_tools/search/all_3.js | 4 + ver-1.11.0/fvcom_tools/search/all_4.html | 30 + ver-1.11.0/fvcom_tools/search/all_4.js | 8 + ver-1.11.0/fvcom_tools/search/all_5.html | 30 + ver-1.11.0/fvcom_tools/search/all_5.js | 31 + ver-1.11.0/fvcom_tools/search/all_6.html | 30 + ver-1.11.0/fvcom_tools/search/all_6.js | 4 + ver-1.11.0/fvcom_tools/search/all_7.html | 30 + ver-1.11.0/fvcom_tools/search/all_7.js | 17 + ver-1.11.0/fvcom_tools/search/all_8.html | 30 + ver-1.11.0/fvcom_tools/search/all_8.js | 5 + ver-1.11.0/fvcom_tools/search/all_9.html | 30 + ver-1.11.0/fvcom_tools/search/all_9.js | 8 + ver-1.11.0/fvcom_tools/search/all_a.html | 30 + ver-1.11.0/fvcom_tools/search/all_a.js | 7 + ver-1.11.0/fvcom_tools/search/all_b.html | 30 + ver-1.11.0/fvcom_tools/search/all_b.js | 23 + ver-1.11.0/fvcom_tools/search/all_c.html | 30 + ver-1.11.0/fvcom_tools/search/all_c.js | 5 + ver-1.11.0/fvcom_tools/search/all_d.html | 30 + ver-1.11.0/fvcom_tools/search/all_d.js | 5 + ver-1.11.0/fvcom_tools/search/all_e.html | 30 + ver-1.11.0/fvcom_tools/search/all_e.js | 26 + ver-1.11.0/fvcom_tools/search/all_f.html | 30 + ver-1.11.0/fvcom_tools/search/all_f.js | 4 + ver-1.11.0/fvcom_tools/search/classes_0.html | 30 + ver-1.11.0/fvcom_tools/search/classes_0.js | 4 + ver-1.11.0/fvcom_tools/search/classes_1.html | 30 + ver-1.11.0/fvcom_tools/search/classes_1.js | 4 + ver-1.11.0/fvcom_tools/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/fvcom_tools/search/files_0.html | 30 + ver-1.11.0/fvcom_tools/search/files_0.js | 4 + ver-1.11.0/fvcom_tools/search/files_1.html | 30 + ver-1.11.0/fvcom_tools/search/files_1.js | 5 + ver-1.11.0/fvcom_tools/search/files_2.html | 30 + ver-1.11.0/fvcom_tools/search/files_2.js | 4 + .../fvcom_tools/search/functions_0.html | 30 + ver-1.11.0/fvcom_tools/search/functions_0.js | 6 + .../fvcom_tools/search/functions_1.html | 30 + ver-1.11.0/fvcom_tools/search/functions_1.js | 6 + .../fvcom_tools/search/functions_2.html | 30 + ver-1.11.0/fvcom_tools/search/functions_2.js | 5 + .../fvcom_tools/search/functions_3.html | 30 + ver-1.11.0/fvcom_tools/search/functions_3.js | 31 + .../fvcom_tools/search/functions_4.html | 30 + ver-1.11.0/fvcom_tools/search/functions_4.js | 4 + .../fvcom_tools/search/functions_5.html | 30 + ver-1.11.0/fvcom_tools/search/functions_5.js | 5 + .../fvcom_tools/search/functions_6.html | 30 + ver-1.11.0/fvcom_tools/search/functions_6.js | 5 + .../fvcom_tools/search/functions_7.html | 30 + ver-1.11.0/fvcom_tools/search/functions_7.js | 5 + .../fvcom_tools/search/functions_8.html | 30 + ver-1.11.0/fvcom_tools/search/functions_8.js | 4 + .../fvcom_tools/search/functions_9.html | 30 + ver-1.11.0/fvcom_tools/search/functions_9.js | 22 + ver-1.11.0/fvcom_tools/search/mag_sel.png | Bin 0 -> 563 bytes .../fvcom_tools/search/namespaces_0.html | 30 + ver-1.11.0/fvcom_tools/search/namespaces_0.js | 4 + .../fvcom_tools/search/namespaces_1.html | 30 + ver-1.11.0/fvcom_tools/search/namespaces_1.js | 5 + ver-1.11.0/fvcom_tools/search/nomatches.html | 12 + ver-1.11.0/fvcom_tools/search/pages_0.html | 30 + ver-1.11.0/fvcom_tools/search/pages_0.js | 4 + ver-1.11.0/fvcom_tools/search/pages_1.html | 30 + ver-1.11.0/fvcom_tools/search/pages_1.js | 4 + ver-1.11.0/fvcom_tools/search/search.css | 271 + ver-1.11.0/fvcom_tools/search/search.js | 814 +++ ver-1.11.0/fvcom_tools/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/fvcom_tools/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/fvcom_tools/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/fvcom_tools/search/searchdata.js | 33 + .../fvcom_tools/search/variables_0.html | 30 + ver-1.11.0/fvcom_tools/search/variables_0.js | 12 + .../fvcom_tools/search/variables_1.html | 30 + ver-1.11.0/fvcom_tools/search/variables_1.js | 4 + .../fvcom_tools/search/variables_2.html | 30 + ver-1.11.0/fvcom_tools/search/variables_2.js | 4 + .../fvcom_tools/search/variables_3.html | 30 + ver-1.11.0/fvcom_tools/search/variables_3.js | 15 + .../fvcom_tools/search/variables_4.html | 30 + ver-1.11.0/fvcom_tools/search/variables_4.js | 6 + .../fvcom_tools/search/variables_5.html | 30 + ver-1.11.0/fvcom_tools/search/variables_5.js | 22 + .../fvcom_tools/search/variables_6.html | 30 + ver-1.11.0/fvcom_tools/search/variables_6.js | 6 + .../fvcom_tools/search/variables_7.html | 30 + ver-1.11.0/fvcom_tools/search/variables_7.js | 4 + .../fvcom_tools/search/variables_8.html | 30 + ver-1.11.0/fvcom_tools/search/variables_8.js | 4 + .../fvcom_tools/search/variables_9.html | 30 + ver-1.11.0/fvcom_tools/search/variables_9.js | 4 + .../fvcom_tools/search/variables_a.html | 30 + ver-1.11.0/fvcom_tools/search/variables_a.js | 7 + ver-1.11.0/fvcom_tools/splitbar.png | Bin 0 -> 314 bytes .../structmodule__ncio_1_1ncio.html | 1980 +++++++ .../fvcom_tools/structmodule__ncio_1_1ncio.js | 60 + .../structmodule__nwp_1_1fcst__nwp.html | 1361 +++++ .../structmodule__nwp_1_1fcst__nwp.js | 45 + ver-1.11.0/fvcom_tools/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/fvcom_tools/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/fvcom_tools/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/fvcom_tools/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/fvcom_tools/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/fvcom_tools/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/fvcom_tools/tabs.css | 1 + ver-1.11.0/gblevents/README_8md_source.html | 105 + ver-1.11.0/gblevents/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/gblevents/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/gblevents/closed.png | Bin 0 -> 132 bytes .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_dbd17571b8f1a13a49b28a78dd30db8d.html | 112 + .../dir_dbd17571b8f1a13a49b28a78dd30db8d.js | 4 + ver-1.11.0/gblevents/doc.png | Bin 0 -> 746 bytes ver-1.11.0/gblevents/doxygen.css | 1596 ++++++ ver-1.11.0/gblevents/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/gblevents/dynsections.js | 127 + ver-1.11.0/gblevents/files.html | 111 + ver-1.11.0/gblevents/files_dup.js | 4 + ver-1.11.0/gblevents/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/gblevents/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/gblevents/gblevents_8f.html | 977 ++++ ver-1.11.0/gblevents/gblevents_8f.js | 38 + ver-1.11.0/gblevents/gblevents_8f_source.html | 108 + .../gblevents/gblevents_8md_source.html | 105 + ver-1.11.0/gblevents/globals.html | 144 + ver-1.11.0/gblevents/globals_func.html | 144 + ver-1.11.0/gblevents/index.html | 109 + ver-1.11.0/gblevents/jquery.js | 115 + ver-1.11.0/gblevents/man/man3/GBLEVENTS.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN01.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN02.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN03.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN04.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN06.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN08.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN10.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN12.3 | 1 + ver-1.11.0/gblevents/man/man3/GBLEVN13.3 | 1 + ver-1.11.0/gblevents/man/man3/OEFG01.3 | 1 + ver-1.11.0/gblevents/man/man3/dlat.3 | 1 + ver-1.11.0/gblevents/man/man3/dlon.3 | 1 + ver-1.11.0/gblevents/man/man3/gblevents.f.3 | 556 ++ ver-1.11.0/gblevents/man/man3/gblevn11.3 | 1 + ver-1.11.0/gblevents/man/man3/gblevn11d.3 | 1 + ver-1.11.0/gblevents/man/man3/getlats.3 | 1 + ver-1.11.0/gblevents/man/man3/iar12z.3 | 1 + ver-1.11.0/gblevents/man/man3/iar13p.3 | 1 + ver-1.11.0/gblevents/man/man3/iar14t.3 | 1 + ver-1.11.0/gblevents/man/man3/iar15u.3 | 1 + ver-1.11.0/gblevents/man/man3/iar16v.3 | 1 + ver-1.11.0/gblevents/man/man3/iar17q.3 | 1 + ver-1.11.0/gblevents/man/man3/iarpsd.3 | 1 + ver-1.11.0/gblevents/man/man3/iarpsi.3 | 1 + ver-1.11.0/gblevents/man/man3/iarpsl.3 | 1 + ver-1.11.0/gblevents/man/man3/idsl.3 | 1 + ver-1.11.0/gblevents/man/man3/idvc.3 | 1 + ver-1.11.0/gblevents/man/man3/imax.3 | 1 + ver-1.11.0/gblevents/man/man3/jmax.3 | 1 + ver-1.11.0/gblevents/man/man3/kmax.3 | 1 + ver-1.11.0/gblevents/man/man3/kmaxs.3 | 1 + ..._UFS_UTILS_sorc_gblevents.fd_docs_README.3 | 8 + ver-1.11.0/gblevents/man/man3/nvcoord.3 | 1 + ver-1.11.0/gblevents/man/man3/sfcpress_id.3 | 1 + ver-1.11.0/gblevents/man/man3/thermodyn_id.3 | 1 + ver-1.11.0/gblevents/man/man3/vcoord.3 | 1 + ..._UTILS_sorc_gblevents_8fd_docs_README.html | 106 + ver-1.11.0/gblevents/menu.js | 50 + ver-1.11.0/gblevents/menudata.js | 31 + ver-1.11.0/gblevents/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/gblevents/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/gblevents/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/gblevents/navtree.css | 146 + ver-1.11.0/gblevents/navtree.js | 540 ++ ver-1.11.0/gblevents/navtreedata.js | 45 + ver-1.11.0/gblevents/navtreeindex0.js | 49 + ver-1.11.0/gblevents/open.png | Bin 0 -> 123 bytes ver-1.11.0/gblevents/pages.html | 109 + ver-1.11.0/gblevents/resize.js | 136 + ver-1.11.0/gblevents/search/all_0.html | 30 + ver-1.11.0/gblevents/search/all_0.js | 18 + ver-1.11.0/gblevents/search/all_1.html | 30 + ver-1.11.0/gblevents/search/all_1.js | 4 + ver-1.11.0/gblevents/search/all_2.html | 30 + ver-1.11.0/gblevents/search/all_2.js | 4 + ver-1.11.0/gblevents/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/gblevents/search/files_0.html | 30 + ver-1.11.0/gblevents/search/files_0.js | 4 + ver-1.11.0/gblevents/search/functions_0.html | 30 + ver-1.11.0/gblevents/search/functions_0.js | 16 + ver-1.11.0/gblevents/search/functions_1.html | 30 + ver-1.11.0/gblevents/search/functions_1.js | 4 + ver-1.11.0/gblevents/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/gblevents/search/nomatches.html | 12 + ver-1.11.0/gblevents/search/pages_0.html | 30 + ver-1.11.0/gblevents/search/pages_0.js | 4 + ver-1.11.0/gblevents/search/pages_1.html | 30 + ver-1.11.0/gblevents/search/pages_1.js | 4 + ver-1.11.0/gblevents/search/search.css | 271 + ver-1.11.0/gblevents/search/search.js | 814 +++ ver-1.11.0/gblevents/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/gblevents/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/gblevents/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/gblevents/search/searchdata.js | 24 + ver-1.11.0/gblevents/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/gblevents/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/gblevents/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/gblevents/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/gblevents/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/gblevents/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/gblevents/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/gblevents/tabs.css | 1 + .../global_cycle/README_8md_source.html | 105 + ver-1.11.0/global_cycle/annotated.html | 110 + ver-1.11.0/global_cycle/annotated_dup.js | 4 + ver-1.11.0/global_cycle/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/global_cycle/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/global_cycle/classes.html | 113 + ver-1.11.0/global_cycle/closed.png | Bin 0 -> 132 bytes ver-1.11.0/global_cycle/cycle_8f90.html | 1552 ++++++ ver-1.11.0/global_cycle/cycle_8f90.js | 17 + .../global_cycle/cycle_8f90_source.html | 116 + .../dir_2639f2b978b79eb67637490d5ddd2bd6.html | 127 + .../dir_2639f2b978b79eb67637490d5ddd2bd6.js | 9 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/global_cycle/doc.png | Bin 0 -> 746 bytes ver-1.11.0/global_cycle/doxygen.css | 1596 ++++++ ver-1.11.0/global_cycle/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/global_cycle/dynsections.js | 127 + ver-1.11.0/global_cycle/files.html | 116 + ver-1.11.0/global_cycle/files_dup.js | 4 + ver-1.11.0/global_cycle/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/global_cycle/folderopen.png | Bin 0 -> 597 bytes .../global__cycle_8md_source.html | 105 + ver-1.11.0/global_cycle/globals.html | 147 + ver-1.11.0/global_cycle/globals_func.html | 147 + ver-1.11.0/global_cycle/index.html | 109 + ver-1.11.0/global_cycle/jquery.js | 115 + .../global_cycle/land__increments_8f90.html | 704 +++ .../global_cycle/land__increments_8f90.js | 12 + .../land__increments_8f90_source.html | 106 + ver-1.11.0/global_cycle/machine_8f90.html | 140 + ver-1.11.0/global_cycle/machine_8f90.js | 7 + .../global_cycle/machine_8f90_source.html | 105 + .../global_cycle/man/man3/ADJUST_NSST.3 | 1 + .../global_cycle/man/man3/CLIMO_TREND.3 | 1 + ver-1.11.0/global_cycle/man/man3/DTZM_POINT.3 | 1 + ver-1.11.0/global_cycle/man/man3/MACHINE.3 | 70 + ver-1.11.0/global_cycle/man/man3/NETCDF_ERR.3 | 1 + ver-1.11.0/global_cycle/man/man3/READ_DATA.3 | 1 + .../global_cycle/man/man3/READ_GSI_DATA.3 | 1 + .../global_cycle/man/man3/READ_LAT_LON_OROG.3 | 1 + .../global_cycle/man/man3/READ_WRITE_DATA.3 | 646 +++ ver-1.11.0/global_cycle/man/man3/REMAP_COEF.3 | 1 + ver-1.11.0/global_cycle/man/man3/SFCDRV.3 | 1 + ver-1.11.0/global_cycle/man/man3/SFC_DRV.3 | 1 + .../man/man3/add_increment_snow.3 | 1 + .../man/man3/add_increment_soil.3 | 1 + .../man/man3/apply_land_da_adjustments_snd.3 | 1 + .../man/man3/apply_land_da_adjustments_soil.3 | 1 + ver-1.11.0/global_cycle/man/man3/c_0.3 | 1 + ver-1.11.0/global_cycle/man/man3/c_d.3 | 1 + .../man/man3/calculate_landinc_mask.3 | 1 + ver-1.11.0/global_cycle/man/man3/cycle.f90.3 | 765 +++ ver-1.11.0/global_cycle/man/man3/d_conv.3 | 1 + ver-1.11.0/global_cycle/man/man3/dt_cool.3 | 1 + ver-1.11.0/global_cycle/man/man3/dtref_gaus.3 | 1 + ver-1.11.0/global_cycle/man/man3/get_dim_nc.3 | 1 + .../global_cycle/man/man3/get_sal_clm.3 | 1 + .../global_cycle/man/man3/get_sal_clm_ta.3 | 1 + ver-1.11.0/global_cycle/man/man3/get_tf_clm.3 | 1 + .../global_cycle/man/man3/get_tf_clm_dim.3 | 1 + .../global_cycle/man/man3/get_tf_clm_ta.3 | 1 + .../global_cycle/man/man3/get_tim_wei.3 | 1 + ver-1.11.0/global_cycle/man/man3/idim_gaus.3 | 1 + ver-1.11.0/global_cycle/man/man3/ifd.3 | 1 + ver-1.11.0/global_cycle/man/man3/intp_tile.3 | 1 + ver-1.11.0/global_cycle/man/man3/jdim_gaus.3 | 1 + .../global_cycle/man/man3/kind_dbl_prec.3 | 1 + ver-1.11.0/global_cycle/man/man3/kind_io4.3 | 1 + ver-1.11.0/global_cycle/man/man3/kind_io8.3 | 1 + .../global_cycle/man/man3/kind_sngl_prec.3 | 1 + .../man/man3/land_increments.f90.3 | 299 ++ ver-1.11.0/global_cycle/man/man3/lsm_noah.3 | 1 + ver-1.11.0/global_cycle/man/man3/lsm_noahmp.3 | 1 + ver-1.11.0/global_cycle/man/man3/lsoil_incr.3 | 1 + .../global_cycle/man/man3/machine.f90.3 | 54 + ...S_UTILS_sorc_global_cycle.fd_docs_README.3 | 8 + ver-1.11.0/global_cycle/man/man3/nc_check.3 | 1 + .../global_cycle/man/man3/nsst_water_reset.3 | 1 + .../global_cycle/man/man3/num_parthds.3 | 1 + .../global_cycle/man/man3/num_parthds.f90.3 | 56 + ver-1.11.0/global_cycle/man/man3/qrain.3 | 1 + .../man/man3/read_salclm_gfs_nc.3 | 1 + .../global_cycle/man/man3/read_tf_clim_grb.3 | 1 + .../man/man3/read_write_data.f90.3 | 188 + .../global_cycle/man/man3/remove_checksum.3 | 1 + .../global_cycle/man/man3/slc_inc_gaus.3 | 1 + ver-1.11.0/global_cycle/man/man3/slmsk_gaus.3 | 1 + .../global_cycle/man/man3/soilsnow_gaus.3 | 1 + .../global_cycle/man/man3/stc_inc_gaus.3 | 1 + .../global_cycle/man/man3/tf_thaw_set.3 | 1 + ver-1.11.0/global_cycle/man/man3/tfinc.3 | 1 + ver-1.11.0/global_cycle/man/man3/tfreez.3 | 1 + ver-1.11.0/global_cycle/man/man3/tref.3 | 1 + ver-1.11.0/global_cycle/man/man3/utils.3 | 76 + ver-1.11.0/global_cycle/man/man3/utils.F90.3 | 42 + ver-1.11.0/global_cycle/man/man3/w_0.3 | 1 + ver-1.11.0/global_cycle/man/man3/w_d.3 | 1 + ver-1.11.0/global_cycle/man/man3/write_data.3 | 1 + ver-1.11.0/global_cycle/man/man3/xs.3 | 1 + ver-1.11.0/global_cycle/man/man3/xt.3 | 1 + ver-1.11.0/global_cycle/man/man3/xtts.3 | 1 + ver-1.11.0/global_cycle/man/man3/xu.3 | 1 + ver-1.11.0/global_cycle/man/man3/xv.3 | 1 + ver-1.11.0/global_cycle/man/man3/xz.3 | 1 + ver-1.11.0/global_cycle/man/man3/xzts.3 | 1 + ver-1.11.0/global_cycle/man/man3/z_c.3 | 1 + ver-1.11.0/global_cycle/man/man3/zm.3 | 1 + ...ILS_sorc_global_cycle_8fd_docs_README.html | 106 + ver-1.11.0/global_cycle/menu.js | 50 + ver-1.11.0/global_cycle/menudata.js | 39 + ver-1.11.0/global_cycle/namespaceMACHINE.html | 202 + .../namespaceREAD__WRITE__DATA.html | 1528 ++++++ .../namespaceREAD__WRITE__DATA.js | 4 + ...ructREAD__WRITE__DATA_1_1NSST__DATA_dup.js | 22 + ver-1.11.0/global_cycle/namespacemembers.html | 171 + .../global_cycle/namespacemembers_func.html | 138 + .../global_cycle/namespacemembers_vars.html | 135 + ver-1.11.0/global_cycle/namespaces.html | 111 + ver-1.11.0/global_cycle/namespaces_dup.js | 6 + ver-1.11.0/global_cycle/namespaceutils.html | 239 + ver-1.11.0/global_cycle/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/global_cycle/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/global_cycle/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/global_cycle/navtree.css | 146 + ver-1.11.0/global_cycle/navtree.js | 540 ++ ver-1.11.0/global_cycle/navtreedata.js | 56 + ver-1.11.0/global_cycle/navtreeindex0.js | 100 + .../global_cycle/num__parthds_8f90.html | 150 + ver-1.11.0/global_cycle/num__parthds_8f90.js | 4 + .../num__parthds_8f90_source.html | 106 + ver-1.11.0/global_cycle/open.png | Bin 0 -> 123 bytes ver-1.11.0/global_cycle/pages.html | 109 + .../global_cycle/read__write__data_8f90.html | 326 ++ .../global_cycle/read__write__data_8f90.js | 42 + .../read__write__data_8f90_source.html | 105 + ver-1.11.0/global_cycle/resize.js | 136 + ver-1.11.0/global_cycle/search/all_0.html | 30 + ver-1.11.0/global_cycle/search/all_0.js | 8 + ver-1.11.0/global_cycle/search/all_1.html | 30 + ver-1.11.0/global_cycle/search/all_1.js | 6 + ver-1.11.0/global_cycle/search/all_2.html | 30 + ver-1.11.0/global_cycle/search/all_2.js | 5 + ver-1.11.0/global_cycle/search/all_3.html | 30 + ver-1.11.0/global_cycle/search/all_3.js | 11 + ver-1.11.0/global_cycle/search/all_4.html | 30 + ver-1.11.0/global_cycle/search/all_4.js | 5 + ver-1.11.0/global_cycle/search/all_5.html | 30 + ver-1.11.0/global_cycle/search/all_5.js | 4 + ver-1.11.0/global_cycle/search/all_6.html | 30 + ver-1.11.0/global_cycle/search/all_6.js | 7 + ver-1.11.0/global_cycle/search/all_7.html | 30 + ver-1.11.0/global_cycle/search/all_7.js | 7 + ver-1.11.0/global_cycle/search/all_8.html | 30 + ver-1.11.0/global_cycle/search/all_8.js | 5 + ver-1.11.0/global_cycle/search/all_9.html | 30 + ver-1.11.0/global_cycle/search/all_9.js | 9 + ver-1.11.0/global_cycle/search/all_a.html | 30 + ver-1.11.0/global_cycle/search/all_a.js | 13 + ver-1.11.0/global_cycle/search/all_b.html | 30 + ver-1.11.0/global_cycle/search/all_b.js | 9 + ver-1.11.0/global_cycle/search/all_c.html | 30 + ver-1.11.0/global_cycle/search/all_c.js | 5 + ver-1.11.0/global_cycle/search/all_d.html | 30 + ver-1.11.0/global_cycle/search/all_d.js | 5 + ver-1.11.0/global_cycle/search/all_e.html | 30 + ver-1.11.0/global_cycle/search/all_e.js | 4 + ver-1.11.0/global_cycle/search/classes_0.html | 30 + ver-1.11.0/global_cycle/search/classes_0.js | 4 + ver-1.11.0/global_cycle/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/global_cycle/search/files_0.html | 30 + ver-1.11.0/global_cycle/search/files_0.js | 4 + ver-1.11.0/global_cycle/search/files_1.html | 30 + ver-1.11.0/global_cycle/search/files_1.js | 4 + ver-1.11.0/global_cycle/search/files_2.html | 30 + ver-1.11.0/global_cycle/search/files_2.js | 4 + ver-1.11.0/global_cycle/search/files_3.html | 30 + ver-1.11.0/global_cycle/search/files_3.js | 4 + ver-1.11.0/global_cycle/search/files_4.html | 30 + ver-1.11.0/global_cycle/search/files_4.js | 4 + ver-1.11.0/global_cycle/search/files_5.html | 30 + ver-1.11.0/global_cycle/search/files_5.js | 4 + .../global_cycle/search/functions_0.html | 30 + ver-1.11.0/global_cycle/search/functions_0.js | 8 + .../global_cycle/search/functions_1.html | 30 + ver-1.11.0/global_cycle/search/functions_1.js | 5 + .../global_cycle/search/functions_2.html | 30 + ver-1.11.0/global_cycle/search/functions_2.js | 4 + .../global_cycle/search/functions_3.html | 30 + ver-1.11.0/global_cycle/search/functions_3.js | 10 + .../global_cycle/search/functions_4.html | 30 + ver-1.11.0/global_cycle/search/functions_4.js | 4 + .../global_cycle/search/functions_5.html | 30 + ver-1.11.0/global_cycle/search/functions_5.js | 7 + .../global_cycle/search/functions_6.html | 30 + ver-1.11.0/global_cycle/search/functions_6.js | 10 + .../global_cycle/search/functions_7.html | 30 + ver-1.11.0/global_cycle/search/functions_7.js | 5 + .../global_cycle/search/functions_8.html | 30 + ver-1.11.0/global_cycle/search/functions_8.js | 5 + .../global_cycle/search/functions_9.html | 30 + ver-1.11.0/global_cycle/search/functions_9.js | 4 + ver-1.11.0/global_cycle/search/mag_sel.png | Bin 0 -> 563 bytes .../global_cycle/search/namespaces_0.html | 30 + .../global_cycle/search/namespaces_0.js | 4 + .../global_cycle/search/namespaces_1.html | 30 + .../global_cycle/search/namespaces_1.js | 4 + .../global_cycle/search/namespaces_2.html | 30 + .../global_cycle/search/namespaces_2.js | 4 + ver-1.11.0/global_cycle/search/nomatches.html | 12 + ver-1.11.0/global_cycle/search/pages_0.html | 30 + ver-1.11.0/global_cycle/search/pages_0.js | 4 + ver-1.11.0/global_cycle/search/pages_1.html | 30 + ver-1.11.0/global_cycle/search/pages_1.js | 4 + ver-1.11.0/global_cycle/search/search.css | 271 + ver-1.11.0/global_cycle/search/search.js | 814 +++ ver-1.11.0/global_cycle/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/global_cycle/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/global_cycle/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/global_cycle/search/searchdata.js | 33 + .../global_cycle/search/variables_0.html | 30 + ver-1.11.0/global_cycle/search/variables_0.js | 4 + .../global_cycle/search/variables_1.html | 30 + ver-1.11.0/global_cycle/search/variables_1.js | 4 + .../global_cycle/search/variables_2.html | 30 + ver-1.11.0/global_cycle/search/variables_2.js | 4 + .../global_cycle/search/variables_3.html | 30 + ver-1.11.0/global_cycle/search/variables_3.js | 7 + .../global_cycle/search/variables_4.html | 30 + ver-1.11.0/global_cycle/search/variables_4.js | 6 + .../global_cycle/search/variables_5.html | 30 + ver-1.11.0/global_cycle/search/variables_5.js | 7 + .../global_cycle/search/variables_6.html | 30 + ver-1.11.0/global_cycle/search/variables_6.js | 4 + ver-1.11.0/global_cycle/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/global_cycle/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/global_cycle/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/global_cycle/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/global_cycle/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/global_cycle/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/global_cycle/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/global_cycle/tabs.css | 1 + ver-1.11.0/global_cycle/utils_8F90.html | 131 + ver-1.11.0/global_cycle/utils_8F90.js | 4 + .../global_cycle/utils_8F90_source.html | 106 + ver-1.11.0/grid_tools/README_8md_source.html | 105 + ver-1.11.0/grid_tools/annotated.html | 253 + ver-1.11.0/grid_tools/annotated_dup.js | 19 + ver-1.11.0/grid_tools/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/grid_tools/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/grid_tools/classes.html | 169 + ver-1.11.0/grid_tools/closed.png | Bin 0 -> 132 bytes .../dir_6b68644a683d9303e9d79781b0bd2270.html | 112 + .../dir_6b68644a683d9303e9d79781b0bd2270.js | 4 + .../dir_9657eff0956b3eb388856752841d1579.html | 142 + .../dir_9657eff0956b3eb388856752841d1579.js | 14 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 105 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_dfdd762fc4b7c970f916d4807862bec3.html | 112 + .../dir_dfdd762fc4b7c970f916d4807862bec3.js | 4 + .../dir_ee03633112c8d9ea7602f8750e16b75d.html | 109 + .../dir_ee03633112c8d9ea7602f8750e16b75d.js | 7 + .../dir_f246156297d017f275be68d41d9d31ad.html | 115 + .../dir_f246156297d017f275be68d41d9d31ad.js | 5 + ver-1.11.0/grid_tools/doc.png | Bin 0 -> 746 bytes ver-1.11.0/grid_tools/doxygen.css | 1596 ++++++ ver-1.11.0/grid_tools/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/grid_tools/dynsections.js | 127 + ver-1.11.0/grid_tools/files.html | 129 + ver-1.11.0/grid_tools/files_dup.js | 4 + ver-1.11.0/grid_tools/filter__topo_8F90.html | 2105 ++++++++ ver-1.11.0/grid_tools/filter__topo_8F90.js | 27 + .../grid_tools/filter__topo_8F90_source.html | 133 + ver-1.11.0/grid_tools/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/grid_tools/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/grid_tools/functions.html | 149 + ver-1.11.0/grid_tools/functions_b.html | 110 + ver-1.11.0/grid_tools/functions_c.html | 173 + ver-1.11.0/grid_tools/functions_d.html | 278 + ver-1.11.0/grid_tools/functions_dup.js | 25 + ver-1.11.0/grid_tools/functions_e.html | 131 + ver-1.11.0/grid_tools/functions_f.html | 107 + ver-1.11.0/grid_tools/functions_func.html | 149 + ver-1.11.0/grid_tools/functions_func.js | 25 + ver-1.11.0/grid_tools/functions_func_b.html | 110 + ver-1.11.0/grid_tools/functions_func_c.html | 173 + ver-1.11.0/grid_tools/functions_func_d.html | 278 + ver-1.11.0/grid_tools/functions_func_e.html | 131 + ver-1.11.0/grid_tools/functions_func_f.html | 107 + ver-1.11.0/grid_tools/functions_func_g.html | 176 + ver-1.11.0/grid_tools/functions_func_h.html | 148 + ver-1.11.0/grid_tools/functions_func_i.html | 122 + ver-1.11.0/grid_tools/functions_func_l.html | 128 + ver-1.11.0/grid_tools/functions_func_m.html | 107 + ver-1.11.0/grid_tools/functions_func_n.html | 116 + ver-1.11.0/grid_tools/functions_func_o.html | 119 + ver-1.11.0/grid_tools/functions_func_p.html | 122 + ver-1.11.0/grid_tools/functions_func_q.html | 113 + ver-1.11.0/grid_tools/functions_func_r.html | 116 + ver-1.11.0/grid_tools/functions_func_s.html | 251 + ver-1.11.0/grid_tools/functions_func_t.html | 134 + ver-1.11.0/grid_tools/functions_func_u.html | 143 + ver-1.11.0/grid_tools/functions_func_w.html | 107 + ver-1.11.0/grid_tools/functions_func_x.html | 155 + ver-1.11.0/grid_tools/functions_func_z.html | 134 + ver-1.11.0/grid_tools/functions_g.html | 176 + ver-1.11.0/grid_tools/functions_h.html | 148 + ver-1.11.0/grid_tools/functions_i.html | 122 + ver-1.11.0/grid_tools/functions_l.html | 128 + ver-1.11.0/grid_tools/functions_m.html | 107 + ver-1.11.0/grid_tools/functions_n.html | 116 + ver-1.11.0/grid_tools/functions_o.html | 119 + ver-1.11.0/grid_tools/functions_p.html | 122 + ver-1.11.0/grid_tools/functions_q.html | 113 + ver-1.11.0/grid_tools/functions_r.html | 116 + ver-1.11.0/grid_tools/functions_s.html | 251 + ver-1.11.0/grid_tools/functions_t.html | 134 + ver-1.11.0/grid_tools/functions_u.html | 143 + ver-1.11.0/grid_tools/functions_w.html | 107 + ver-1.11.0/grid_tools/functions_x.html | 155 + ver-1.11.0/grid_tools/functions_z.html | 134 + .../grid_tools/global__equiv__resol_8f90.html | 189 + .../grid_tools/global__equiv__resol_8f90.js | 5 + .../global__equiv__resol_8f90_source.html | 107 + ver-1.11.0/grid_tools/globals.html | 227 + ver-1.11.0/grid_tools/globals_func.html | 227 + .../grid_tools/grid__tools_8md_source.html | 105 + ver-1.11.0/grid_tools/index.html | 114 + .../interfacepesg_1_1bestesg__geo.html | 221 + .../interfacepesg_1_1bestesg__geo.js | 4 + .../interfacepesg_1_1bestesg__map.html | 221 + .../interfacepesg_1_1bestesg__map.js | 4 + .../grid_tools/interfacepesg_1_1gaulegh.html | 177 + .../grid_tools/interfacepesg_1_1gaulegh.js | 4 + .../interfacepesg_1_1get__edges.html | 183 + .../grid_tools/interfacepesg_1_1get__edges.js | 4 + .../interfacepesg_1_1get__meanq.html | 349 ++ .../grid_tools/interfacepesg_1_1get__meanq.js | 5 + .../interfacepesg_1_1get__qofv.html | 379 ++ .../grid_tools/interfacepesg_1_1get__qofv.js | 6 + .../grid_tools/interfacepesg_1_1get__qx.html | 300 ++ .../grid_tools/interfacepesg_1_1get__qx.js | 5 + .../interfacepesg_1_1gtoxm__ak__dd.html | 332 ++ .../interfacepesg_1_1gtoxm__ak__dd.js | 5 + .../interfacepesg_1_1gtoxm__ak__rr.html | 334 ++ .../interfacepesg_1_1gtoxm__ak__rr.js | 5 + .../interfacepesg_1_1guessak__geo.html | 176 + .../interfacepesg_1_1guessak__geo.js | 4 + .../interfacepesg_1_1guessak__map.html | 176 + .../interfacepesg_1_1guessak__map.js | 4 + .../interfacepesg_1_1hgrid__ak.html | 447 ++ .../grid_tools/interfacepesg_1_1hgrid__ak.js | 5 + .../interfacepesg_1_1hgrid__ak__dc.html | 261 + .../interfacepesg_1_1hgrid__ak__dc.js | 4 + .../interfacepesg_1_1hgrid__ak__dd.html | 432 ++ .../interfacepesg_1_1hgrid__ak__dd.js | 5 + .../interfacepesg_1_1hgrid__ak__rc.html | 262 + .../interfacepesg_1_1hgrid__ak__rc.js | 4 + .../interfacepesg_1_1hgrid__ak__rr.html | 436 ++ .../interfacepesg_1_1hgrid__ak__rr.js | 5 + .../interfacepesg_1_1xctoxm__ak.html | 191 + .../grid_tools/interfacepesg_1_1xctoxm__ak.js | 4 + .../grid_tools/interfacepesg_1_1xctoxs.html | 170 + .../grid_tools/interfacepesg_1_1xctoxs.js | 4 + .../interfacepesg_1_1xmtog__ak__dd.html | 332 ++ .../interfacepesg_1_1xmtog__ak__dd.js | 5 + .../interfacepesg_1_1xmtog__ak__rr.html | 334 ++ .../interfacepesg_1_1xmtog__ak__rr.js | 5 + .../interfacepesg_1_1xmtoxc__ak.html | 357 ++ .../grid_tools/interfacepesg_1_1xmtoxc__ak.js | 6 + .../grid_tools/interfacepesg_1_1xmtoxt.html | 277 + .../grid_tools/interfacepesg_1_1xmtoxt.js | 5 + .../grid_tools/interfacepesg_1_1xstoxc.html | 244 + .../grid_tools/interfacepesg_1_1xstoxc.js | 5 + .../grid_tools/interfacepesg_1_1xstoxt.html | 183 + .../grid_tools/interfacepesg_1_1xstoxt.js | 4 + .../grid_tools/interfacepesg_1_1xttoxm.html | 185 + .../grid_tools/interfacepesg_1_1xttoxm.js | 4 + .../grid_tools/interfacepesg_1_1xttoxs.html | 284 + .../grid_tools/interfacepesg_1_1xttoxs.js | 5 + .../grid_tools/interfacepesg_1_1zmtozt.html | 277 + .../grid_tools/interfacepesg_1_1zmtozt.js | 5 + .../grid_tools/interfacepesg_1_1zttozm.html | 183 + .../grid_tools/interfacepesg_1_1zttozm.js | 4 + .../grid_tools/interfacepfun_1_1ahav.html | 200 + .../grid_tools/interfacepfun_1_1ahav.js | 5 + .../grid_tools/interfacepfun_1_1ahavh.html | 201 + .../grid_tools/interfacepfun_1_1ahavh.js | 5 + .../grid_tools/interfacepfun_1_1atanh.html | 201 + .../grid_tools/interfacepfun_1_1atanh.js | 5 + .../grid_tools/interfacepfun_1_1gd.html | 200 + ver-1.11.0/grid_tools/interfacepfun_1_1gd.js | 5 + .../grid_tools/interfacepfun_1_1gdi.html | 200 + ver-1.11.0/grid_tools/interfacepfun_1_1gdi.js | 5 + .../grid_tools/interfacepfun_1_1hav.html | 200 + ver-1.11.0/grid_tools/interfacepfun_1_1hav.js | 5 + .../grid_tools/interfacepfun_1_1havh.html | 201 + .../grid_tools/interfacepfun_1_1havh.js | 5 + .../grid_tools/interfacepfun_1_1sech.html | 200 + .../grid_tools/interfacepfun_1_1sech.js | 5 + .../grid_tools/interfacepfun_1_1sechs.html | 200 + .../grid_tools/interfacepfun_1_1sechs.js | 5 + .../grid_tools/interfacepfun_1_1sinhox.html | 159 + .../grid_tools/interfacepfun_1_1sinhox.js | 4 + .../grid_tools/interfacepfun_1_1sinhoxm.html | 160 + .../grid_tools/interfacepfun_1_1sinhoxm.js | 4 + .../grid_tools/interfacepfun_1_1sinox.html | 159 + .../grid_tools/interfacepfun_1_1sinox.js | 4 + .../grid_tools/interfacepfun_1_1sinoxm.html | 159 + .../grid_tools/interfacepfun_1_1sinoxm.js | 4 + .../grid_tools/interfacepmat2_1_1avco.html | 358 ++ .../grid_tools/interfacepmat2_1_1avco.js | 6 + .../grid_tools/interfacepmat2_1_1cad1b.html | 191 + .../grid_tools/interfacepmat2_1_1cad1b.js | 4 + .../grid_tools/interfacepmat2_1_1cad2b.html | 198 + .../grid_tools/interfacepmat2_1_1cad2b.js | 4 + .../grid_tools/interfacepmat2_1_1clipb.html | 267 + .../grid_tools/interfacepmat2_1_1clipb.js | 6 + .../grid_tools/interfacepmat2_1_1csb1b.html | 191 + .../grid_tools/interfacepmat2_1_1csb1b.js | 4 + .../grid_tools/interfacepmat2_1_1csb2b.html | 198 + .../grid_tools/interfacepmat2_1_1csb2b.js | 4 + .../grid_tools/interfacepmat2_1_1dfco.html | 358 ++ .../grid_tools/interfacepmat2_1_1dfco.js | 6 + .../grid_tools/interfacepmat2_1_1dfco2.html | 358 ++ .../grid_tools/interfacepmat2_1_1dfco2.js | 6 + .../grid_tools/interfacepmat2_1_1l1ubb.html | 292 ++ .../grid_tools/interfacepmat2_1_1l1ubb.js | 5 + .../grid_tools/interfacepmat2_1_1l1ueb.html | 293 ++ .../grid_tools/interfacepmat2_1_1l1ueb.js | 5 + .../grid_tools/interfacepmat2_1_1ldltb.html | 237 + .../grid_tools/interfacepmat2_1_1ldltb.js | 5 + .../grid_tools/interfacepmat2_1_1ldub.html | 250 + .../grid_tools/interfacepmat2_1_1ldub.js | 5 + .../grid_tools/interfacepmat2_1_1linbv.html | 191 + .../grid_tools/interfacepmat2_1_1linbv.js | 4 + .../grid_tools/interfacepmat2_1_1ltdlbv.html | 251 + .../grid_tools/interfacepmat2_1_1ltdlbv.js | 5 + .../grid_tools/interfacepmat2_1_1u1lbv.html | 191 + .../grid_tools/interfacepmat2_1_1u1lbv.js | 4 + .../grid_tools/interfacepmat2_1_1u1lbx.html | 198 + .../grid_tools/interfacepmat2_1_1u1lbx.js | 4 + .../grid_tools/interfacepmat2_1_1u1lby.html | 198 + .../grid_tools/interfacepmat2_1_1u1lby.js | 4 + .../grid_tools/interfacepmat2_1_1u1lvb.html | 191 + .../grid_tools/interfacepmat2_1_1u1lvb.js | 4 + .../grid_tools/interfacepmat2_1_1u1lxb.html | 198 + .../grid_tools/interfacepmat2_1_1u1lxb.js | 4 + .../grid_tools/interfacepmat2_1_1u1lyb.html | 198 + .../grid_tools/interfacepmat2_1_1u1lyb.js | 4 + .../grid_tools/interfacepmat2_1_1udlb.html | 250 + .../grid_tools/interfacepmat2_1_1udlb.js | 5 + .../grid_tools/interfacepmat2_1_1udlbv.html | 266 + .../grid_tools/interfacepmat2_1_1udlbv.js | 5 + .../grid_tools/interfacepmat2_1_1udlbx.html | 198 + .../grid_tools/interfacepmat2_1_1udlbx.js | 4 + .../grid_tools/interfacepmat2_1_1udlby.html | 198 + .../grid_tools/interfacepmat2_1_1udlby.js | 4 + .../grid_tools/interfacepmat2_1_1udlvb.html | 191 + .../grid_tools/interfacepmat2_1_1udlvb.js | 4 + .../grid_tools/interfacepmat2_1_1udlxb.html | 198 + .../grid_tools/interfacepmat2_1_1udlxb.js | 4 + .../grid_tools/interfacepmat2_1_1udlyb.html | 198 + .../grid_tools/interfacepmat2_1_1udlyb.js | 4 + .../grid_tools/interfacepmat2_1_1wrtb.html | 191 + .../grid_tools/interfacepmat2_1_1wrtb.js | 4 + .../grid_tools/interfacepmat4_1_1absv.html | 200 + .../grid_tools/interfacepmat4_1_1absv.js | 5 + .../grid_tools/interfacepmat4_1_1axial.html | 282 + .../grid_tools/interfacepmat4_1_1axial.js | 7 + .../grid_tools/interfacepmat4_1_1axtoq.html | 169 + .../grid_tools/interfacepmat4_1_1axtoq.js | 4 + .../grid_tools/interfacepmat4_1_1axtorot.html | 170 + .../grid_tools/interfacepmat4_1_1axtorot.js | 4 + .../grid_tools/interfacepmat4_1_1corral.html | 205 + .../grid_tools/interfacepmat4_1_1corral.js | 4 + .../interfacepmat4_1_1cross__product.html | 340 ++ .../interfacepmat4_1_1cross__product.js | 7 + .../grid_tools/interfacepmat4_1_1ctoz.html | 182 + .../grid_tools/interfacepmat4_1_1ctoz.js | 4 + .../grid_tools/interfacepmat4_1_1det.html | 282 + .../grid_tools/interfacepmat4_1_1det.js | 7 + .../grid_tools/interfacepmat4_1_1diag.html | 370 ++ .../grid_tools/interfacepmat4_1_1diag.js | 9 + .../grid_tools/interfacepmat4_1_1dlltoxy.html | 250 + .../grid_tools/interfacepmat4_1_1dlltoxy.js | 5 + .../grid_tools/interfacepmat4_1_1expmat.html | 357 ++ .../grid_tools/interfacepmat4_1_1expmat.js | 6 + .../grid_tools/interfacepmat4_1_1gram.html | 514 ++ .../grid_tools/interfacepmat4_1_1gram.js | 9 + .../grid_tools/interfacepmat4_1_1hav.html | 200 + .../grid_tools/interfacepmat4_1_1hav.js | 5 + .../grid_tools/interfacepmat4_1_1huarea.html | 224 + .../grid_tools/interfacepmat4_1_1huarea.js | 5 + .../interfacepmat4_1_1identity.html | 193 + .../grid_tools/interfacepmat4_1_1identity.js | 5 + .../grid_tools/interfacepmat4_1_1mobius.html | 291 ++ .../grid_tools/interfacepmat4_1_1mobius.js | 5 + .../grid_tools/interfacepmat4_1_1mobiusi.html | 211 + .../grid_tools/interfacepmat4_1_1mobiusi.js | 4 + .../grid_tools/interfacepmat4_1_1mulqq.html | 170 + .../grid_tools/interfacepmat4_1_1mulqq.js | 4 + .../interfacepmat4_1_1normalize.html | 198 + .../grid_tools/interfacepmat4_1_1normalize.js | 5 + .../interfacepmat4_1_1normalized.html | 200 + .../interfacepmat4_1_1normalized.js | 5 + .../interfacepmat4_1_1orthogonalized.html | 222 + .../interfacepmat4_1_1orthogonalized.js | 5 + .../interfacepmat4_1_1outer__product.html | 274 + .../interfacepmat4_1_1outer__product.js | 6 + .../grid_tools/interfacepmat4_1_1qtoax.html | 169 + .../grid_tools/interfacepmat4_1_1qtoax.js | 4 + .../grid_tools/interfacepmat4_1_1qtorot.html | 169 + .../grid_tools/interfacepmat4_1_1qtorot.js | 4 + .../grid_tools/interfacepmat4_1_1qtospin.html | 169 + .../grid_tools/interfacepmat4_1_1qtospin.js | 4 + .../grid_tools/interfacepmat4_1_1rottoax.html | 170 + .../grid_tools/interfacepmat4_1_1rottoax.js | 4 + .../grid_tools/interfacepmat4_1_1rottoq.html | 169 + .../grid_tools/interfacepmat4_1_1rottoq.js | 4 + .../grid_tools/interfacepmat4_1_1rowops.html | 197 + .../grid_tools/interfacepmat4_1_1rowops.js | 4 + .../grid_tools/interfacepmat4_1_1sarea.html | 560 ++ .../grid_tools/interfacepmat4_1_1sarea.js | 9 + .../grid_tools/interfacepmat4_1_1setem.html | 190 + .../grid_tools/interfacepmat4_1_1setem.js | 4 + .../interfacepmat4_1_1setmobius.html | 313 ++ .../grid_tools/interfacepmat4_1_1setmobius.js | 5 + .../grid_tools/interfacepmat4_1_1spintoq.html | 169 + .../grid_tools/interfacepmat4_1_1spintoq.js | 4 + .../grid_tools/interfacepmat4_1_1trace.html | 241 + .../grid_tools/interfacepmat4_1_1trace.js | 6 + .../interfacepmat4_1_1triple__product.html | 236 + .../interfacepmat4_1_1triple__product.js | 5 + .../grid_tools/interfacepmat4_1_1znfun.html | 197 + .../grid_tools/interfacepmat4_1_1znfun.js | 4 + .../grid_tools/interfacepmat4_1_1zntay.html | 176 + .../grid_tools/interfacepmat4_1_1zntay.js | 4 + .../grid_tools/interfacepmat4_1_1ztoc.html | 244 + .../grid_tools/interfacepmat4_1_1ztoc.js | 5 + .../interfacepmat5_1_1ctoc__schm.html | 508 ++ .../interfacepmat5_1_1ctoc__schm.js | 9 + .../grid_tools/interfacepmat5_1_1ctog.html | 237 + .../grid_tools/interfacepmat5_1_1ctog.js | 5 + .../grid_tools/interfacepmat5_1_1ctogr.html | 236 + .../grid_tools/interfacepmat5_1_1ctogr.js | 5 + .../interfacepmat5_1_1frametwist.html | 293 ++ .../interfacepmat5_1_1frametwist.js | 5 + .../grid_tools/interfacepmat5_1_1grtoc.html | 570 ++ .../grid_tools/interfacepmat5_1_1grtoc.js | 9 + .../grid_tools/interfacepmat5_1_1gtoc.html | 571 ++ .../grid_tools/interfacepmat5_1_1gtoc.js | 9 + .../interfacepmat5_1_1gtoframe.html | 382 ++ .../grid_tools/interfacepmat5_1_1gtoframe.js | 7 + .../grid_tools/interfacepmat5_1_1ininmap.html | 237 + .../grid_tools/interfacepmat5_1_1ininmap.js | 5 + .../grid_tools/interfacepmat5_1_1inivmap.html | 237 + .../grid_tools/interfacepmat5_1_1inivmap.js | 5 + .../interfacepmat5_1_1paraframe.html | 279 + .../grid_tools/interfacepmat5_1_1paraframe.js | 5 + .../grid_tools/interfacepmat5_1_1plctoc.html | 190 + .../grid_tools/interfacepmat5_1_1plctoc.js | 4 + .../grid_tools/interfacepmat5_1_1plrot.html | 263 + .../grid_tools/interfacepmat5_1_1plrot.js | 5 + .../grid_tools/interfacepmat5_1_1plroti.html | 263 + .../grid_tools/interfacepmat5_1_1plroti.js | 5 + .../grid_tools/interfacepmat_1_1inv.html | 1106 ++++ ver-1.11.0/grid_tools/interfacepmat_1_1inv.js | 22 + .../grid_tools/interfacepmat_1_1invl.html | 304 ++ .../grid_tools/interfacepmat_1_1invl.js | 7 + .../grid_tools/interfacepmat_1_1invu.html | 304 ++ .../grid_tools/interfacepmat_1_1invu.js | 7 + .../grid_tools/interfacepmat_1_1l1lm.html | 129 + .../grid_tools/interfacepmat_1_1l1lm.js | 7 + .../grid_tools/interfacepmat_1_1ldlm.html | 129 + .../grid_tools/interfacepmat_1_1ldlm.js | 7 + .../grid_tools/interfacepmat_1_1ldum.html | 493 ++ .../grid_tools/interfacepmat_1_1ldum.js | 9 + .../grid_tools/interfacepmat_1_1swpvv.html | 271 + .../grid_tools/interfacepmat_1_1swpvv.js | 6 + .../grid_tools/interfacepmat_1_1udlmm.html | 466 ++ .../grid_tools/interfacepmat_1_1udlmm.js | 9 + .../grid_tools/interfacepsym2_1_1chol2.html | 176 + .../grid_tools/interfacepsym2_1_1chol2.js | 4 + .../interfacepsym2_1_1eigensym2.html | 257 + .../grid_tools/interfacepsym2_1_1eigensym2.js | 5 + .../grid_tools/interfacepsym2_1_1expsym2.html | 228 + .../grid_tools/interfacepsym2_1_1expsym2.js | 5 + .../interfacepsym2_1_1expsym2d__e.html | 176 + .../interfacepsym2_1_1expsym2d__e.js | 4 + .../interfacepsym2_1_1expsym2d__t.html | 177 + .../interfacepsym2_1_1expsym2d__t.js | 4 + .../grid_tools/interfacepsym2_1_1id2222.html | 158 + .../grid_tools/interfacepsym2_1_1id2222.js | 4 + .../grid_tools/interfacepsym2_1_1invsym2.html | 228 + .../grid_tools/interfacepsym2_1_1invsym2.js | 5 + .../grid_tools/interfacepsym2_1_1logsym2.html | 228 + .../grid_tools/interfacepsym2_1_1logsym2.js | 5 + .../interfacepsym2_1_1sqrtsym2.html | 229 + .../grid_tools/interfacepsym2_1_1sqrtsym2.js | 5 + .../interfacepsym2_1_1sqrtsym2d__e.html | 176 + .../interfacepsym2_1_1sqrtsym2d__e.js | 4 + .../interfacepsym2_1_1sqrtsym2d__t.html | 177 + .../interfacepsym2_1_1sqrtsym2d__t.js | 4 + ver-1.11.0/grid_tools/jquery.js | 115 + ver-1.11.0/grid_tools/man/man3/AVCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/CAD1B.3 | 1 + ver-1.11.0/grid_tools/man/man3/CAD2B.3 | 1 + ver-1.11.0/grid_tools/man/man3/CLIB.3 | 1 + ver-1.11.0/grid_tools/man/man3/CSB1B.3 | 1 + ver-1.11.0/grid_tools/man/man3/CSB2B.3 | 1 + ver-1.11.0/grid_tools/man/man3/DAVCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/DDFCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/DDFCO2.3 | 1 + ver-1.11.0/grid_tools/man/man3/DFCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/DFCO2.3 | 1 + ver-1.11.0/grid_tools/man/man3/DL1UBB.3 | 1 + ver-1.11.0/grid_tools/man/man3/DL1UEB.3 | 1 + ver-1.11.0/grid_tools/man/man3/DLDLTB.3 | 1 + ver-1.11.0/grid_tools/man/man3/DLDUB.3 | 1 + ver-1.11.0/grid_tools/man/man3/DUDLB.3 | 1 + .../grid_tools/man/man3/FV3_zs_filter.3 | 1 + ver-1.11.0/grid_tools/man/man3/L1UBB.3 | 1 + ver-1.11.0/grid_tools/man/man3/L1UEB.3 | 1 + ver-1.11.0/grid_tools/man/man3/LDLTB.3 | 1 + ver-1.11.0/grid_tools/man/man3/LDUB.3 | 1 + ver-1.11.0/grid_tools/man/man3/LINBV.3 | 1 + ver-1.11.0/grid_tools/man/man3/TAVCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/TDFCO.3 | 1 + ver-1.11.0/grid_tools/man/man3/TDFCO2.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LBV.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LBX.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LBY.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LVB.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LXB.3 | 1 + ver-1.11.0/grid_tools/man/man3/U1LYB.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLB.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLBV.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLBX.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLBY.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLVB.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLXB.3 | 1 + ver-1.11.0/grid_tools/man/man3/UDLYB.3 | 1 + ver-1.11.0/grid_tools/man/man3/WRTB.3 | 1 + ver-1.11.0/grid_tools/man/man3/absv_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/absv_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/ahav_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/ahav_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/ahavh_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/ahavh_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/atanh_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/atanh_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/axial33_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/axial33_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/axial3_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/axial3_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/axtoq.3 | 1 + ver-1.11.0/grid_tools/man/man3/axtorot.3 | 1 + ver-1.11.0/grid_tools/man/man3/bestesg_geo.3 | 1 + ver-1.11.0/grid_tools/man/man3/bestesg_map.3 | 1 + ver-1.11.0/grid_tools/man/man3/c0.3 | 1 + ver-1.11.0/grid_tools/man/man3/c1.3 | 1 + .../grid_tools/man/man3/cart_to_latlon.3 | 1 + ver-1.11.0/grid_tools/man/man3/cell_center2.3 | 1 + ver-1.11.0/grid_tools/man/man3/check.3 | 1 + ver-1.11.0/grid_tools/man/man3/chol2.3 | 1 + ver-1.11.0/grid_tools/man/man3/ci.3 | 1 + ver-1.11.0/grid_tools/man/man3/cinvmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/cinvmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/cipi.3 | 1 + ver-1.11.0/grid_tools/man/man3/cldum.3 | 1 + ver-1.11.0/grid_tools/man/man3/cldumf.3 | 1 + ver-1.11.0/grid_tools/man/man3/clib.3 | 1 + ver-1.11.0/grid_tools/man/man3/clib_c.3 | 1 + ver-1.11.0/grid_tools/man/man3/clib_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/clinmmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/clinmmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/clinmvt.3 | 1 + ver-1.11.0/grid_tools/man/man3/clinmvtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/cmobius.3 | 1 + .../man/man3/compute_filter_constants.3 | 1 + ver-1.11.0/grid_tools/man/man3/corral.3 | 1 + ver-1.11.0/grid_tools/man/man3/cos_angle.3 | 1 + .../grid_tools/man/man3/cross_product_d.3 | 1 + .../grid_tools/man/man3/cross_product_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/cstgeo.3 | 60 + ver-1.11.0/grid_tools/man/man3/cswpvv.3 | 1 + ver-1.11.0/grid_tools/man/man3/ctoz.3 | 1 + ver-1.11.0/grid_tools/man/man3/cudlmm.3 | 1 + ver-1.11.0/grid_tools/man/man3/cudlmv.3 | 1 + ver-1.11.0/grid_tools/man/man3/cyclic.3 | 1 + ver-1.11.0/grid_tools/man/man3/dL1Lm.3 | 1 + ver-1.11.0/grid_tools/man/man3/dL1Lmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dLdLm.3 | 1 + ver-1.11.0/grid_tools/man/man3/dLdLmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dcstgeo.3 | 60 + ver-1.11.0/grid_tools/man/man3/dctoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/dctocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/dctocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/dctog.3 | 1 + ver-1.11.0/grid_tools/man/man3/dctogr.3 | 1 + .../grid_tools/man/man3/del2_cubed_sphere.3 | 1 + .../grid_tools/man/man3/del4_cubed_sphere.3 | 1 + ver-1.11.0/grid_tools/man/man3/det_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/det_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/det_id.3 | 1 + ver-1.11.0/grid_tools/man/man3/det_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgrtoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgrtocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgrtocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgtoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgtocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/dgtocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagn_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagn_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagn_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagnn_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagnn_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/diagnn_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/dininmap.3 | 1 + ver-1.11.0/grid_tools/man/man3/dinivmap.3 | 1 + ver-1.11.0/grid_tools/man/man3/dinvl.3 | 1 + ver-1.11.0/grid_tools/man/man3/dinvmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/dinvmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dinvu.3 | 1 + ver-1.11.0/grid_tools/man/man3/dl1lm.3 | 1 + ver-1.11.0/grid_tools/man/man3/dl1lmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dldlm.3 | 1 + ver-1.11.0/grid_tools/man/man3/dldlmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dldum.3 | 1 + ver-1.11.0/grid_tools/man/man3/dldumf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinlv.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinmmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinmmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinmvt.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinmvtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlinuv.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlltoxy_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/dlltoxy_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/dltdlbv.3 | 1 + ver-1.11.0/grid_tools/man/man3/dp.3 | 1 + ver-1.11.0/grid_tools/man/man3/dpc.3 | 1 + ver-1.11.0/grid_tools/man/man3/dpi.3 | 1 + ver-1.11.0/grid_tools/man/man3/dplrot.3 | 1 + ver-1.11.0/grid_tools/man/man3/dplroti.3 | 1 + ver-1.11.0/grid_tools/man/man3/dqarea_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/dqarea_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/dswpvv.3 | 1 + ver-1.11.0/grid_tools/man/man3/dtarea_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/dtarea_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/dtor.3 | 1 + ver-1.11.0/grid_tools/man/man3/dudlbv.3 | 1 + ver-1.11.0/grid_tools/man/man3/dudlmm.3 | 1 + ver-1.11.0/grid_tools/man/man3/dudlmv.3 | 1 + ver-1.11.0/grid_tools/man/man3/eigensym2.3 | 1 + ver-1.11.0/grid_tools/man/man3/eigensym2d.3 | 1 + ver-1.11.0/grid_tools/man/man3/euler.3 | 1 + ver-1.11.0/grid_tools/man/man3/expmat.3 | 1 + ver-1.11.0/grid_tools/man/man3/expmatd.3 | 1 + ver-1.11.0/grid_tools/man/man3/expmatdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/expsym2.3 | 1 + ver-1.11.0/grid_tools/man/man3/expsym2d.3 | 1 + ver-1.11.0/grid_tools/man/man3/expsym2d_e.3 | 1 + ver-1.11.0/grid_tools/man/man3/expsym2d_t.3 | 1 + ver-1.11.0/grid_tools/man/man3/f.3 | 1 + .../man/man3/fill_AGRID_scalar_corners.3 | 1 + .../man/man3/fill_AGRID_xy_corners.3 | 1 + .../man/man3/fill_BGRID_scalar_corners.3 | 1 + .../man/man3/fill_DGRID_xy_corners.3 | 1 + .../man/man3/fill_cubic_grid_halo.3 | 1 + .../grid_tools/man/man3/fill_regional_halo.3 | 1 + ver-1.11.0/grid_tools/man/man3/filter_topo.3 | 1 + .../grid_tools/man/man3/filter_topo.F90.3 | 960 ++++ ver-1.11.0/grid_tools/man/man3/frametwist.3 | 1 + ver-1.11.0/grid_tools/man/man3/gaulegh.3 | 1 + ver-1.11.0/grid_tools/man/man3/gd_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/gd_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/gdi_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/gdi_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_area.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_edges.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_meanqd.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_meanqs.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_qofv.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_qofvd.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_qsofvs.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_qx.3 | 1 + ver-1.11.0/grid_tools/man/man3/get_qxd.3 | 1 + .../grid_tools/man/man3/global_equiv_resol.3 | 1 + .../man/man3/global_equiv_resol.f90.3 | 87 + ver-1.11.0/grid_tools/man/man3/gram_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/gram_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/graml_d.3 | 1 + .../grid_tools/man/man3/great_circle_dist.3 | 1 + ver-1.11.0/grid_tools/man/man3/grid_file.3 | 1 + ver-1.11.0/grid_tools/man/man3/grid_type.3 | 1 + ver-1.11.0/grid_tools/man/man3/gtoframem.3 | 1 + ver-1.11.0/grid_tools/man/man3/gtoframev.3 | 1 + .../grid_tools/man/man3/gtoxm_ak_dd_g.3 | 1 + .../grid_tools/man/man3/gtoxm_ak_dd_m.3 | 1 + .../grid_tools/man/man3/gtoxm_ak_rr_g.3 | 1 + .../grid_tools/man/man3/gtoxm_ak_rr_m.3 | 1 + ver-1.11.0/grid_tools/man/man3/guessak_geo.3 | 1 + ver-1.11.0/grid_tools/man/man3/guessak_map.3 | 1 + ver-1.11.0/grid_tools/man/man3/handle_err.3 | 1 + ver-1.11.0/grid_tools/man/man3/hav_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/hav_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/havh_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/havh_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak_c.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak_dc.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak_dd.3 | 1 + .../grid_tools/man/man3/hgrid_ak_dd_c.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak_rc.3 | 1 + ver-1.11.0/grid_tools/man/man3/hgrid_ak_rr.3 | 1 + .../grid_tools/man/man3/hgrid_ak_rr_c.3 | 1 + ver-1.11.0/grid_tools/man/man3/huarea_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/huarea_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/id.3 | 1 + ver-1.11.0/grid_tools/man/man3/id2222.3 | 1 + ver-1.11.0/grid_tools/man/man3/identity3_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/identity_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/iinvf.3 | 1 + ver-1.11.0/grid_tools/man/man3/invsym2.3 | 1 + ver-1.11.0/grid_tools/man/man3/invsym2d.3 | 1 + ver-1.11.0/grid_tools/man/man3/latlon2xyz.3 | 1 + ver-1.11.0/grid_tools/man/man3/logsym2.3 | 1 + ver-1.11.0/grid_tools/man/man3/logsym2d.3 | 1 + ver-1.11.0/grid_tools/man/man3/ltdlbv.3 | 1 + ver-1.11.0/grid_tools/man/man3/mask_field.3 | 1 + ver-1.11.0/grid_tools/man/man3/mc1.3 | 1 + ver-1.11.0/grid_tools/man/man3/mci.3 | 1 + ...UFS_UTILS_sorc_grid_tools.fd_docs_README.3 | 8 + ver-1.11.0/grid_tools/man/man3/mid_pt3_cart.3 | 1 + .../grid_tools/man/man3/mid_pt_sphere.3 | 1 + ver-1.11.0/grid_tools/man/man3/mo2.3 | 1 + ver-1.11.0/grid_tools/man/man3/mo3.3 | 1 + ver-1.11.0/grid_tools/man/man3/mo4.3 | 1 + ver-1.11.0/grid_tools/man/man3/mo5.3 | 1 + ver-1.11.0/grid_tools/man/man3/mo6.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms10.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms11.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms13.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms15.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms18.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms20.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms22.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms26.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms30.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms34.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms36.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms39.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms40.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms45.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms50.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms51.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms54.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms56.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms60.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms64.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms68.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms70.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms72.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms75.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms77.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms79.3 | 1 + ver-1.11.0/grid_tools/man/man3/ms80.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu1.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu2.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu3.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu4.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu5.3 | 1 + ver-1.11.0/grid_tools/man/man3/mu6.3 | 1 + ver-1.11.0/grid_tools/man/man3/mulqq.3 | 1 + ver-1.11.0/grid_tools/man/man3/nested.3 | 1 + ver-1.11.0/grid_tools/man/man3/normalize_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/normalize_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/normalized_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/normalized_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/o2.3 | 1 + ver-1.11.0/grid_tools/man/man3/o3.3 | 1 + ver-1.11.0/grid_tools/man/man3/o4.3 | 1 + ver-1.11.0/grid_tools/man/man3/o5.3 | 1 + ver-1.11.0/grid_tools/man/man3/o6.3 | 1 + ver-1.11.0/grid_tools/man/man3/or2.3 | 1 + ver-1.11.0/grid_tools/man/man3/or3.3 | 1 + ver-1.11.0/grid_tools/man/man3/or5.3 | 1 + .../grid_tools/man/man3/orthogonalized_d.3 | 1 + .../grid_tools/man/man3/orthogonalized_s.3 | 1 + .../grid_tools/man/man3/outer_product_d.3 | 1 + .../grid_tools/man/man3/outer_product_i.3 | 1 + .../grid_tools/man/man3/outer_product_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/paraframe.3 | 1 + ver-1.11.0/grid_tools/man/man3/pesg.3 | 1902 +++++++ ver-1.11.0/grid_tools/man/man3/pesg.f90.3 | 311 ++ .../grid_tools/man/man3/pesg_bestesg_geo.3 | 63 + .../grid_tools/man/man3/pesg_bestesg_map.3 | 63 + ver-1.11.0/grid_tools/man/man3/pesg_gaulegh.3 | 47 + .../grid_tools/man/man3/pesg_get_edges.3 | 49 + .../grid_tools/man/man3/pesg_get_meanq.3 | 109 + .../grid_tools/man/man3/pesg_get_qofv.3 | 125 + ver-1.11.0/grid_tools/man/man3/pesg_get_qx.3 | 93 + .../grid_tools/man/man3/pesg_gtoxm_ak_dd.3 | 101 + .../grid_tools/man/man3/pesg_gtoxm_ak_rr.3 | 101 + .../grid_tools/man/man3/pesg_guessak_geo.3 | 47 + .../grid_tools/man/man3/pesg_guessak_map.3 | 47 + .../grid_tools/man/man3/pesg_hgrid_ak.3 | 135 + .../grid_tools/man/man3/pesg_hgrid_ak_dc.3 | 71 + .../grid_tools/man/man3/pesg_hgrid_ak_dd.3 | 131 + .../grid_tools/man/man3/pesg_hgrid_ak_rc.3 | 73 + .../grid_tools/man/man3/pesg_hgrid_ak_rr.3 | 137 + .../grid_tools/man/man3/pesg_xctoxm_ak.3 | 51 + ver-1.11.0/grid_tools/man/man3/pesg_xctoxs.3 | 45 + .../grid_tools/man/man3/pesg_xmtog_ak_dd.3 | 101 + .../grid_tools/man/man3/pesg_xmtog_ak_rr.3 | 101 + .../grid_tools/man/man3/pesg_xmtoxc_ak.3 | 119 + ver-1.11.0/grid_tools/man/man3/pesg_xmtoxt.3 | 87 + ver-1.11.0/grid_tools/man/man3/pesg_xstoxc.3 | 77 + ver-1.11.0/grid_tools/man/man3/pesg_xstoxt.3 | 49 + ver-1.11.0/grid_tools/man/man3/pesg_xttoxm.3 | 51 + ver-1.11.0/grid_tools/man/man3/pesg_xttoxs.3 | 89 + ver-1.11.0/grid_tools/man/man3/pesg_zmtozt.3 | 87 + ver-1.11.0/grid_tools/man/man3/pesg_zttozm.3 | 49 + ver-1.11.0/grid_tools/man/man3/pfun.3 | 709 +++ ver-1.11.0/grid_tools/man/man3/pfun.f90.3 | 169 + ver-1.11.0/grid_tools/man/man3/pfun_ahav.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_ahavh.3 | 80 + ver-1.11.0/grid_tools/man/man3/pfun_atanh.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_gd.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_gdi.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_hav.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_havh.3 | 80 + ver-1.11.0/grid_tools/man/man3/pfun_sech.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_sechs.3 | 75 + ver-1.11.0/grid_tools/man/man3/pfun_sinhox.3 | 48 + ver-1.11.0/grid_tools/man/man3/pfun_sinhoxm.3 | 48 + ver-1.11.0/grid_tools/man/man3/pfun_sinox.3 | 48 + ver-1.11.0/grid_tools/man/man3/pfun_sinoxm.3 | 48 + ver-1.11.0/grid_tools/man/man3/phi.3 | 1 + ver-1.11.0/grid_tools/man/man3/pi.3 | 1 + ver-1.11.0/grid_tools/man/man3/pi2.3 | 1 + ver-1.11.0/grid_tools/man/man3/pietc.3 | 2191 ++++++++ ver-1.11.0/grid_tools/man/man3/pietc.f90.3 | 887 ++++ ver-1.11.0/grid_tools/man/man3/pietc_s.f90.3 | 2147 ++++++++ ver-1.11.0/grid_tools/man/man3/pih.3 | 1 + ver-1.11.0/grid_tools/man/man3/pkind.3 | 96 + ver-1.11.0/grid_tools/man/man3/pkind.f90.3 | 62 + ver-1.11.0/grid_tools/man/man3/plaingram_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/plaingram_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/plctoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/plrot.3 | 1 + ver-1.11.0/grid_tools/man/man3/plroti.3 | 1 + ver-1.11.0/grid_tools/man/man3/pmat.f90.3 | 1332 +++++ ver-1.11.0/grid_tools/man/man3/pmat2.3 | 1717 ++++++ ver-1.11.0/grid_tools/man/man3/pmat2.f90.3 | 311 ++ ver-1.11.0/grid_tools/man/man3/pmat2_avco.3 | 132 + ver-1.11.0/grid_tools/man/man3/pmat2_cad1b.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_cad2b.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_clipb.3 | 94 + ver-1.11.0/grid_tools/man/man3/pmat2_csb1b.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_csb2b.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_dfco.3 | 132 + ver-1.11.0/grid_tools/man/man3/pmat2_dfco2.3 | 132 + ver-1.11.0/grid_tools/man/man3/pmat2_l1ubb.3 | 99 + ver-1.11.0/grid_tools/man/man3/pmat2_l1ueb.3 | 99 + ver-1.11.0/grid_tools/man/man3/pmat2_ldltb.3 | 83 + ver-1.11.0/grid_tools/man/man3/pmat2_ldub.3 | 87 + ver-1.11.0/grid_tools/man/man3/pmat2_linbv.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_ltdlbv.3 | 89 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lbv.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lbx.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lby.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lvb.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lxb.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_u1lyb.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_udlb.3 | 87 + ver-1.11.0/grid_tools/man/man3/pmat2_udlbv.3 | 91 + ver-1.11.0/grid_tools/man/man3/pmat2_udlbx.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_udlby.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_udlvb.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat2_udlxb.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_udlyb.3 | 58 + ver-1.11.0/grid_tools/man/man3/pmat2_wrtb.3 | 56 + ver-1.11.0/grid_tools/man/man3/pmat4.3 | 2524 +++++++++ ver-1.11.0/grid_tools/man/man3/pmat4.f90.3 | 542 ++ ver-1.11.0/grid_tools/man/man3/pmat4_absv.3 | 75 + ver-1.11.0/grid_tools/man/man3/pmat4_axial.3 | 129 + ver-1.11.0/grid_tools/man/man3/pmat4_axtoq.3 | 45 + .../grid_tools/man/man3/pmat4_axtorot.3 | 45 + ver-1.11.0/grid_tools/man/man3/pmat4_corral.3 | 55 + .../grid_tools/man/man3/pmat4_cross_product.3 | 141 + ver-1.11.0/grid_tools/man/man3/pmat4_ctoz.3 | 59 + ver-1.11.0/grid_tools/man/man3/pmat4_det.3 | 129 + ver-1.11.0/grid_tools/man/man3/pmat4_diag.3 | 183 + .../grid_tools/man/man3/pmat4_dlltoxy.3 | 77 + ver-1.11.0/grid_tools/man/man3/pmat4_expmat.3 | 119 + ver-1.11.0/grid_tools/man/man3/pmat4_gram.3 | 189 + ver-1.11.0/grid_tools/man/man3/pmat4_hav.3 | 75 + ver-1.11.0/grid_tools/man/man3/pmat4_huarea.3 | 79 + .../grid_tools/man/man3/pmat4_identity.3 | 70 + ver-1.11.0/grid_tools/man/man3/pmat4_mobius.3 | 89 + .../grid_tools/man/man3/pmat4_mobiusi.3 | 57 + ver-1.11.0/grid_tools/man/man3/pmat4_mulqq.3 | 50 + .../grid_tools/man/man3/pmat4_normalize.3 | 65 + .../grid_tools/man/man3/pmat4_normalized.3 | 75 + .../man/man3/pmat4_orthogonalized.3 | 79 + .../grid_tools/man/man3/pmat4_outer_product.3 | 108 + ver-1.11.0/grid_tools/man/man3/pmat4_qtoax.3 | 45 + ver-1.11.0/grid_tools/man/man3/pmat4_qtorot.3 | 45 + .../grid_tools/man/man3/pmat4_qtospin.3 | 45 + .../grid_tools/man/man3/pmat4_rottoax.3 | 45 + ver-1.11.0/grid_tools/man/man3/pmat4_rottoq.3 | 45 + ver-1.11.0/grid_tools/man/man3/pmat4_rowops.3 | 53 + ver-1.11.0/grid_tools/man/man3/pmat4_sarea.3 | 231 + ver-1.11.0/grid_tools/man/man3/pmat4_setem.3 | 51 + .../grid_tools/man/man3/pmat4_setmobius.3 | 97 + .../grid_tools/man/man3/pmat4_spintoq.3 | 45 + ver-1.11.0/grid_tools/man/man3/pmat4_trace.3 | 102 + .../man/man3/pmat4_triple_product.3 | 83 + ver-1.11.0/grid_tools/man/man3/pmat4_znfun.3 | 53 + ver-1.11.0/grid_tools/man/man3/pmat4_zntay.3 | 47 + ver-1.11.0/grid_tools/man/man3/pmat4_ztoc.3 | 82 + ver-1.11.0/grid_tools/man/man3/pmat5.3 | 1285 +++++ ver-1.11.0/grid_tools/man/man3/pmat5.f90.3 | 278 + .../grid_tools/man/man3/pmat5_ctoc_schm.3 | 189 + ver-1.11.0/grid_tools/man/man3/pmat5_ctog.3 | 78 + ver-1.11.0/grid_tools/man/man3/pmat5_ctogr.3 | 73 + .../grid_tools/man/man3/pmat5_frametwist.3 | 91 + ver-1.11.0/grid_tools/man/man3/pmat5_grtoc.3 | 205 + ver-1.11.0/grid_tools/man/man3/pmat5_gtoc.3 | 210 + .../grid_tools/man/man3/pmat5_gtoframe.3 | 133 + .../grid_tools/man/man3/pmat5_ininmap.3 | 78 + .../grid_tools/man/man3/pmat5_inivmap.3 | 78 + .../grid_tools/man/man3/pmat5_paraframe.3 | 87 + ver-1.11.0/grid_tools/man/man3/pmat5_plctoc.3 | 51 + ver-1.11.0/grid_tools/man/man3/pmat5_plrot.3 | 83 + ver-1.11.0/grid_tools/man/man3/pmat5_plroti.3 | 83 + ver-1.11.0/grid_tools/man/man3/pmat_inv.3 | 483 ++ ver-1.11.0/grid_tools/man/man3/pmat_invl.3 | 113 + ver-1.11.0/grid_tools/man/man3/pmat_invu.3 | 113 + ver-1.11.0/grid_tools/man/man3/pmat_l1lm.3 | 31 + ver-1.11.0/grid_tools/man/man3/pmat_ldlm.3 | 31 + ver-1.11.0/grid_tools/man/man3/pmat_ldum.3 | 183 + ver-1.11.0/grid_tools/man/man3/pmat_swpvv.3 | 93 + ver-1.11.0/grid_tools/man/man3/pmat_udlmm.3 | 177 + ver-1.11.0/grid_tools/man/man3/psym2.3 | 530 ++ ver-1.11.0/grid_tools/man/man3/psym2.f90.3 | 152 + ver-1.11.0/grid_tools/man/man3/psym2_chol2.3 | 47 + .../grid_tools/man/man3/psym2_eigensym2.3 | 81 + .../grid_tools/man/man3/psym2_expsym2.3 | 73 + .../grid_tools/man/man3/psym2_expsym2d_e.3 | 47 + .../grid_tools/man/man3/psym2_expsym2d_t.3 | 47 + ver-1.11.0/grid_tools/man/man3/psym2_id2222.3 | 43 + .../grid_tools/man/man3/psym2_invsym2.3 | 78 + .../grid_tools/man/man3/psym2_logsym2.3 | 73 + .../grid_tools/man/man3/psym2_sqrtsym2.3 | 73 + .../grid_tools/man/man3/psym2_sqrtsym2d_e.3 | 47 + .../grid_tools/man/man3/psym2_sqrtsym2d_t.3 | 53 + ver-1.11.0/grid_tools/man/man3/qtoax.3 | 1 + ver-1.11.0/grid_tools/man/man3/qtorot.3 | 1 + ver-1.11.0/grid_tools/man/man3/qtospin.3 | 1 + ver-1.11.0/grid_tools/man/man3/r2.3 | 1 + ver-1.11.0/grid_tools/man/man3/r3.3 | 1 + ver-1.11.0/grid_tools/man/man3/r5.3 | 1 + .../grid_tools/man/man3/read_grid_file.3 | 1 + .../grid_tools/man/man3/read_namelist.3 | 1 + .../grid_tools/man/man3/read_topo_file.3 | 1 + ver-1.11.0/grid_tools/man/man3/regional.3 | 1 + .../man/man3/regional_esg_grid.f90.3 | 94 + .../grid_tools/man/man3/regional_grid.3 | 1 + ver-1.11.0/grid_tools/man/man3/res.3 | 1 + ver-1.11.0/grid_tools/man/man3/rotm.3 | 1 + ver-1.11.0/grid_tools/man/man3/rottoax.3 | 1 + ver-1.11.0/grid_tools/man/man3/rottoq.3 | 1 + ver-1.11.0/grid_tools/man/man3/rowgram.3 | 1 + ver-1.11.0/grid_tools/man/man3/rowops.3 | 1 + ver-1.11.0/grid_tools/man/man3/rpi.3 | 1 + ver-1.11.0/grid_tools/man/man3/rtod.3 | 1 + ver-1.11.0/grid_tools/man/man3/s10.3 | 1 + ver-1.11.0/grid_tools/man/man3/s11.3 | 1 + ver-1.11.0/grid_tools/man/man3/s13.3 | 1 + ver-1.11.0/grid_tools/man/man3/s15.3 | 1 + ver-1.11.0/grid_tools/man/man3/s18.3 | 1 + ver-1.11.0/grid_tools/man/man3/s20.3 | 1 + ver-1.11.0/grid_tools/man/man3/s22.3 | 1 + ver-1.11.0/grid_tools/man/man3/s26.3 | 1 + ver-1.11.0/grid_tools/man/man3/s30.3 | 1 + ver-1.11.0/grid_tools/man/man3/s34.3 | 1 + ver-1.11.0/grid_tools/man/man3/s36.3 | 1 + ver-1.11.0/grid_tools/man/man3/s39.3 | 1 + ver-1.11.0/grid_tools/man/man3/s40.3 | 1 + ver-1.11.0/grid_tools/man/man3/s45.3 | 1 + ver-1.11.0/grid_tools/man/man3/s50.3 | 1 + ver-1.11.0/grid_tools/man/man3/s51.3 | 1 + ver-1.11.0/grid_tools/man/man3/s54.3 | 1 + ver-1.11.0/grid_tools/man/man3/s56.3 | 1 + ver-1.11.0/grid_tools/man/man3/s60.3 | 1 + ver-1.11.0/grid_tools/man/man3/s64.3 | 1 + ver-1.11.0/grid_tools/man/man3/s68.3 | 1 + ver-1.11.0/grid_tools/man/man3/s70.3 | 1 + ver-1.11.0/grid_tools/man/man3/s72.3 | 1 + ver-1.11.0/grid_tools/man/man3/s75.3 | 1 + ver-1.11.0/grid_tools/man/man3/s77.3 | 1 + ver-1.11.0/grid_tools/man/man3/s79.3 | 1 + ver-1.11.0/grid_tools/man/man3/s80.3 | 1 + ver-1.11.0/grid_tools/man/man3/sL1Lm.3 | 1 + ver-1.11.0/grid_tools/man/man3/sL1Lmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/sLdLm.3 | 1 + ver-1.11.0/grid_tools/man/man3/sLdLmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/sarea_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sarea_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/sc.3 | 1 + ver-1.11.0/grid_tools/man/man3/sci.3 | 1 + ver-1.11.0/grid_tools/man/man3/sctoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/sctocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sctocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sctog.3 | 1 + ver-1.11.0/grid_tools/man/man3/sctogr.3 | 1 + ver-1.11.0/grid_tools/man/man3/sech_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sech_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/sechs_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sechs_s.3 | 1 + ver-1.11.0/grid_tools/man/man3/setem.3 | 1 + ver-1.11.0/grid_tools/man/man3/setmobius.3 | 1 + ver-1.11.0/grid_tools/man/man3/sframetwist.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgrtoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgrtocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgrtocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgtoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgtocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgtocdd.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgtoframem.3 | 1 + ver-1.11.0/grid_tools/man/man3/sgtoframev.3 | 1 + ver-1.11.0/grid_tools/man/man3/shave_nc.3 | 1 + ver-1.11.0/grid_tools/man/man3/shave_nc.F90.3 | 78 + ver-1.11.0/grid_tools/man/man3/sinhox_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinhoxm_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sininmap.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinivmap.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinox_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinoxm_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinvl.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinvmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinvmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/sinvu.3 | 1 + ver-1.11.0/grid_tools/man/man3/sl1lm.3 | 1 + ver-1.11.0/grid_tools/man/man3/sl1lmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/sldlm.3 | 1 + ver-1.11.0/grid_tools/man/man3/sldlmf.3 | 1 + ver-1.11.0/grid_tools/man/man3/sldum.3 | 1 + ver-1.11.0/grid_tools/man/man3/sldumf.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinlv.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinmmt.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinmmtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinmvt.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinmvtf.3 | 1 + ver-1.11.0/grid_tools/man/man3/slinuv.3 | 1 + ver-1.11.0/grid_tools/man/man3/sp.3 | 1 + ver-1.11.0/grid_tools/man/man3/sparaframe.3 | 1 + ver-1.11.0/grid_tools/man/man3/spc.3 | 1 + .../grid_tools/man/man3/spherical_angle.3 | 1 + ver-1.11.0/grid_tools/man/man3/spi.3 | 1 + ver-1.11.0/grid_tools/man/man3/spintoq.3 | 1 + ver-1.11.0/grid_tools/man/man3/sqrtsym2.3 | 1 + ver-1.11.0/grid_tools/man/man3/sqrtsym2d.3 | 1 + ver-1.11.0/grid_tools/man/man3/sqrtsym2d_e.3 | 1 + ver-1.11.0/grid_tools/man/man3/sqrtsym2d_t.3 | 1 + ver-1.11.0/grid_tools/man/man3/sswpvv.3 | 1 + ver-1.11.0/grid_tools/man/man3/stretch_fac.3 | 1 + ver-1.11.0/grid_tools/man/man3/sudlmm.3 | 1 + ver-1.11.0/grid_tools/man/man3/sudlmv.3 | 1 + ver-1.11.0/grid_tools/man/man3/t.3 | 1 + ver-1.11.0/grid_tools/man/man3/topo_field.3 | 1 + ver-1.11.0/grid_tools/man/man3/topo_file.3 | 1 + ver-1.11.0/grid_tools/man/man3/trace_d.3 | 1 + ver-1.11.0/grid_tools/man/man3/trace_i.3 | 1 + ver-1.11.0/grid_tools/man/man3/trace_s.3 | 1 + .../man/man3/triple_cross_product_d.3 | 1 + .../man/man3/triple_cross_product_s.3 | 1 + .../grid_tools/man/man3/triple_product_d.3 | 1 + .../grid_tools/man/man3/triple_product_s.3 | 1 + .../grid_tools/man/man3/two_delta_filter.3 | 1 + ver-1.11.0/grid_tools/man/man3/u0.3 | 1 + ver-1.11.0/grid_tools/man/man3/u1.3 | 1 + ver-1.11.0/grid_tools/man/man3/u2.3 | 1 + ver-1.11.0/grid_tools/man/man3/u3.3 | 1 + ver-1.11.0/grid_tools/man/man3/u4.3 | 1 + ver-1.11.0/grid_tools/man/man3/u5.3 | 1 + ver-1.11.0/grid_tools/man/man3/u6.3 | 1 + ver-1.11.0/grid_tools/man/man3/utils.3 | 229 + ver-1.11.0/grid_tools/man/man3/utils.F90.3 | 97 + .../grid_tools/man/man3/write_topo_file.3 | 1 + ver-1.11.0/grid_tools/man/man3/xctoxm_ak.3 | 1 + ver-1.11.0/grid_tools/man/man3/xctoxs.3 | 1 + .../grid_tools/man/man3/xmtog_ak_dd_g.3 | 1 + .../grid_tools/man/man3/xmtog_ak_dd_m.3 | 1 + .../grid_tools/man/man3/xmtog_ak_rr_g.3 | 1 + .../grid_tools/man/man3/xmtog_ak_rr_m.3 | 1 + ver-1.11.0/grid_tools/man/man3/xmtoxc_ak.3 | 1 + ver-1.11.0/grid_tools/man/man3/xmtoxc_vak.3 | 1 + ver-1.11.0/grid_tools/man/man3/xmtoxc_vak1.3 | 1 + ver-1.11.0/grid_tools/man/man3/xmtoxt.3 | 1 + ver-1.11.0/grid_tools/man/man3/xmtoxt1.3 | 1 + ver-1.11.0/grid_tools/man/man3/xstoxc.3 | 1 + ver-1.11.0/grid_tools/man/man3/xstoxc1.3 | 1 + ver-1.11.0/grid_tools/man/man3/xstoxt.3 | 1 + ver-1.11.0/grid_tools/man/man3/xttoxm.3 | 1 + ver-1.11.0/grid_tools/man/man3/xttoxs.3 | 1 + ver-1.11.0/grid_tools/man/man3/xttoxs1.3 | 1 + ver-1.11.0/grid_tools/man/man3/z000.3 | 1 + ver-1.11.0/grid_tools/man/man3/z010.3 | 1 + ver-1.11.0/grid_tools/man/man3/z011.3 | 1 + ver-1.11.0/grid_tools/man/man3/z013.3 | 1 + ver-1.11.0/grid_tools/man/man3/z015.3 | 1 + ver-1.11.0/grid_tools/man/man3/z018.3 | 1 + ver-1.11.0/grid_tools/man/man3/z020.3 | 1 + ver-1.11.0/grid_tools/man/man3/z022.3 | 1 + ver-1.11.0/grid_tools/man/man3/z026.3 | 1 + ver-1.11.0/grid_tools/man/man3/z030.3 | 1 + ver-1.11.0/grid_tools/man/man3/z034.3 | 1 + ver-1.11.0/grid_tools/man/man3/z036.3 | 1 + ver-1.11.0/grid_tools/man/man3/z039.3 | 1 + ver-1.11.0/grid_tools/man/man3/z040.3 | 1 + ver-1.11.0/grid_tools/man/man3/z045.3 | 1 + ver-1.11.0/grid_tools/man/man3/z050.3 | 1 + ver-1.11.0/grid_tools/man/man3/z051.3 | 1 + ver-1.11.0/grid_tools/man/man3/z054.3 | 1 + ver-1.11.0/grid_tools/man/man3/z056.3 | 1 + ver-1.11.0/grid_tools/man/man3/z060.3 | 1 + ver-1.11.0/grid_tools/man/man3/z064.3 | 1 + ver-1.11.0/grid_tools/man/man3/z068.3 | 1 + ver-1.11.0/grid_tools/man/man3/z070.3 | 1 + ver-1.11.0/grid_tools/man/man3/z072.3 | 1 + ver-1.11.0/grid_tools/man/man3/z075.3 | 1 + ver-1.11.0/grid_tools/man/man3/z077.3 | 1 + ver-1.11.0/grid_tools/man/man3/z079.3 | 1 + ver-1.11.0/grid_tools/man/man3/z080.3 | 1 + ver-1.11.0/grid_tools/man/man3/z090.3 | 1 + ver-1.11.0/grid_tools/man/man3/z100.3 | 1 + ver-1.11.0/grid_tools/man/man3/z101.3 | 1 + ver-1.11.0/grid_tools/man/man3/z103.3 | 1 + ver-1.11.0/grid_tools/man/man3/z105.3 | 1 + ver-1.11.0/grid_tools/man/man3/z108.3 | 1 + ver-1.11.0/grid_tools/man/man3/z110.3 | 1 + ver-1.11.0/grid_tools/man/man3/z112.3 | 1 + ver-1.11.0/grid_tools/man/man3/z116.3 | 1 + ver-1.11.0/grid_tools/man/man3/z120.3 | 1 + ver-1.11.0/grid_tools/man/man3/z124.3 | 1 + ver-1.11.0/grid_tools/man/man3/z126.3 | 1 + ver-1.11.0/grid_tools/man/man3/z129.3 | 1 + ver-1.11.0/grid_tools/man/man3/z130.3 | 1 + ver-1.11.0/grid_tools/man/man3/z135.3 | 1 + ver-1.11.0/grid_tools/man/man3/z140.3 | 1 + ver-1.11.0/grid_tools/man/man3/z141.3 | 1 + ver-1.11.0/grid_tools/man/man3/z144.3 | 1 + ver-1.11.0/grid_tools/man/man3/z146.3 | 1 + ver-1.11.0/grid_tools/man/man3/z150.3 | 1 + ver-1.11.0/grid_tools/man/man3/z154.3 | 1 + ver-1.11.0/grid_tools/man/man3/z158.3 | 1 + ver-1.11.0/grid_tools/man/man3/z160.3 | 1 + ver-1.11.0/grid_tools/man/man3/z162.3 | 1 + ver-1.11.0/grid_tools/man/man3/z165.3 | 1 + ver-1.11.0/grid_tools/man/man3/z167.3 | 1 + ver-1.11.0/grid_tools/man/man3/z169.3 | 1 + ver-1.11.0/grid_tools/man/man3/z170.3 | 1 + ver-1.11.0/grid_tools/man/man3/z180.3 | 1 + ver-1.11.0/grid_tools/man/man3/z190.3 | 1 + ver-1.11.0/grid_tools/man/man3/z191.3 | 1 + ver-1.11.0/grid_tools/man/man3/z193.3 | 1 + ver-1.11.0/grid_tools/man/man3/z195.3 | 1 + ver-1.11.0/grid_tools/man/man3/z198.3 | 1 + ver-1.11.0/grid_tools/man/man3/z200.3 | 1 + ver-1.11.0/grid_tools/man/man3/z202.3 | 1 + ver-1.11.0/grid_tools/man/man3/z206.3 | 1 + ver-1.11.0/grid_tools/man/man3/z210.3 | 1 + ver-1.11.0/grid_tools/man/man3/z214.3 | 1 + ver-1.11.0/grid_tools/man/man3/z216.3 | 1 + ver-1.11.0/grid_tools/man/man3/z219.3 | 1 + ver-1.11.0/grid_tools/man/man3/z220.3 | 1 + ver-1.11.0/grid_tools/man/man3/z225.3 | 1 + ver-1.11.0/grid_tools/man/man3/z230.3 | 1 + ver-1.11.0/grid_tools/man/man3/z231.3 | 1 + ver-1.11.0/grid_tools/man/man3/z234.3 | 1 + ver-1.11.0/grid_tools/man/man3/z236.3 | 1 + ver-1.11.0/grid_tools/man/man3/z240.3 | 1 + ver-1.11.0/grid_tools/man/man3/z244.3 | 1 + ver-1.11.0/grid_tools/man/man3/z248.3 | 1 + ver-1.11.0/grid_tools/man/man3/z250.3 | 1 + ver-1.11.0/grid_tools/man/man3/z252.3 | 1 + ver-1.11.0/grid_tools/man/man3/z255.3 | 1 + ver-1.11.0/grid_tools/man/man3/z257.3 | 1 + ver-1.11.0/grid_tools/man/man3/z259.3 | 1 + ver-1.11.0/grid_tools/man/man3/z260.3 | 1 + ver-1.11.0/grid_tools/man/man3/z270.3 | 1 + ver-1.11.0/grid_tools/man/man3/z280.3 | 1 + ver-1.11.0/grid_tools/man/man3/z281.3 | 1 + ver-1.11.0/grid_tools/man/man3/z283.3 | 1 + ver-1.11.0/grid_tools/man/man3/z285.3 | 1 + ver-1.11.0/grid_tools/man/man3/z288.3 | 1 + ver-1.11.0/grid_tools/man/man3/z290.3 | 1 + ver-1.11.0/grid_tools/man/man3/z292.3 | 1 + ver-1.11.0/grid_tools/man/man3/z296.3 | 1 + ver-1.11.0/grid_tools/man/man3/z300.3 | 1 + ver-1.11.0/grid_tools/man/man3/z304.3 | 1 + ver-1.11.0/grid_tools/man/man3/z306.3 | 1 + ver-1.11.0/grid_tools/man/man3/z309.3 | 1 + ver-1.11.0/grid_tools/man/man3/z310.3 | 1 + ver-1.11.0/grid_tools/man/man3/z315.3 | 1 + ver-1.11.0/grid_tools/man/man3/z320.3 | 1 + ver-1.11.0/grid_tools/man/man3/z321.3 | 1 + ver-1.11.0/grid_tools/man/man3/z324.3 | 1 + ver-1.11.0/grid_tools/man/man3/z326.3 | 1 + ver-1.11.0/grid_tools/man/man3/z330.3 | 1 + ver-1.11.0/grid_tools/man/man3/z334.3 | 1 + ver-1.11.0/grid_tools/man/man3/z338.3 | 1 + ver-1.11.0/grid_tools/man/man3/z340.3 | 1 + ver-1.11.0/grid_tools/man/man3/z342.3 | 1 + ver-1.11.0/grid_tools/man/man3/z345.3 | 1 + ver-1.11.0/grid_tools/man/man3/z347.3 | 1 + ver-1.11.0/grid_tools/man/man3/z349.3 | 1 + ver-1.11.0/grid_tools/man/man3/z350.3 | 1 + ver-1.11.0/grid_tools/man/man3/zero.3 | 1 + ver-1.11.0/grid_tools/man/man3/zero_ocean.3 | 1 + ver-1.11.0/grid_tools/man/man3/zmobius.3 | 1 + ver-1.11.0/grid_tools/man/man3/zmobiusi.3 | 1 + ver-1.11.0/grid_tools/man/man3/zmtozt.3 | 1 + ver-1.11.0/grid_tools/man/man3/zmtozt1.3 | 1 + ver-1.11.0/grid_tools/man/man3/znfun.3 | 1 + ver-1.11.0/grid_tools/man/man3/zntay.3 | 1 + ver-1.11.0/grid_tools/man/man3/zsetmobius.3 | 1 + ver-1.11.0/grid_tools/man/man3/ztoc.3 | 1 + ver-1.11.0/grid_tools/man/man3/ztocd.3 | 1 + ver-1.11.0/grid_tools/man/man3/zttozm.3 | 1 + ...UTILS_sorc_grid_tools_8fd_docs_README.html | 106 + ver-1.11.0/grid_tools/menu.js | 50 + ver-1.11.0/grid_tools/menudata.js | 165 + ver-1.11.0/grid_tools/namespacecstgeo.html | 181 + ver-1.11.0/grid_tools/namespacedcstgeo.html | 181 + ver-1.11.0/grid_tools/namespacemembers.html | 149 + ver-1.11.0/grid_tools/namespacemembers_b.html | 110 + ver-1.11.0/grid_tools/namespacemembers_c.html | 155 + ver-1.11.0/grid_tools/namespacemembers_d.html | 245 + ver-1.11.0/grid_tools/namespacemembers_dup.js | 25 + ver-1.11.0/grid_tools/namespacemembers_e.html | 134 + ver-1.11.0/grid_tools/namespacemembers_f.html | 113 + .../grid_tools/namespacemembers_func.html | 149 + .../grid_tools/namespacemembers_func.js | 25 + .../grid_tools/namespacemembers_func_b.html | 110 + .../grid_tools/namespacemembers_func_c.html | 143 + .../grid_tools/namespacemembers_func_d.html | 233 + .../grid_tools/namespacemembers_func_e.html | 131 + .../grid_tools/namespacemembers_func_f.html | 110 + .../grid_tools/namespacemembers_func_g.html | 176 + .../grid_tools/namespacemembers_func_h.html | 151 + .../grid_tools/namespacemembers_func_i.html | 119 + .../grid_tools/namespacemembers_func_l.html | 128 + .../grid_tools/namespacemembers_func_m.html | 107 + .../grid_tools/namespacemembers_func_n.html | 116 + .../grid_tools/namespacemembers_func_o.html | 119 + .../grid_tools/namespacemembers_func_p.html | 122 + .../grid_tools/namespacemembers_func_q.html | 113 + .../grid_tools/namespacemembers_func_r.html | 119 + .../grid_tools/namespacemembers_func_s.html | 206 + .../grid_tools/namespacemembers_func_t.html | 134 + .../grid_tools/namespacemembers_func_u.html | 143 + .../grid_tools/namespacemembers_func_w.html | 107 + .../grid_tools/namespacemembers_func_x.html | 155 + .../grid_tools/namespacemembers_func_z.html | 134 + ver-1.11.0/grid_tools/namespacemembers_g.html | 182 + ver-1.11.0/grid_tools/namespacemembers_h.html | 151 + ver-1.11.0/grid_tools/namespacemembers_i.html | 122 + ver-1.11.0/grid_tools/namespacemembers_l.html | 128 + ver-1.11.0/grid_tools/namespacemembers_m.html | 230 + ver-1.11.0/grid_tools/namespacemembers_n.html | 119 + ver-1.11.0/grid_tools/namespacemembers_o.html | 143 + ver-1.11.0/grid_tools/namespacemembers_p.html | 134 + ver-1.11.0/grid_tools/namespacemembers_q.html | 113 + ver-1.11.0/grid_tools/namespacemembers_r.html | 144 + ver-1.11.0/grid_tools/namespacemembers_s.html | 307 ++ ver-1.11.0/grid_tools/namespacemembers_t.html | 143 + ver-1.11.0/grid_tools/namespacemembers_u.html | 164 + .../grid_tools/namespacemembers_vars.html | 116 + .../grid_tools/namespacemembers_vars.js | 18 + .../grid_tools/namespacemembers_vars_d.html | 116 + .../grid_tools/namespacemembers_vars_e.html | 107 + .../grid_tools/namespacemembers_vars_f.html | 107 + .../grid_tools/namespacemembers_vars_g.html | 110 + .../grid_tools/namespacemembers_vars_i.html | 107 + .../grid_tools/namespacemembers_vars_m.html | 227 + .../grid_tools/namespacemembers_vars_n.html | 107 + .../grid_tools/namespacemembers_vars_o.html | 128 + .../grid_tools/namespacemembers_vars_p.html | 116 + .../grid_tools/namespacemembers_vars_r.html | 129 + .../grid_tools/namespacemembers_vars_s.html | 205 + .../grid_tools/namespacemembers_vars_t.html | 113 + .../grid_tools/namespacemembers_vars_u.html | 125 + .../grid_tools/namespacemembers_vars_z.html | 446 ++ ver-1.11.0/grid_tools/namespacemembers_w.html | 107 + ver-1.11.0/grid_tools/namespacemembers_x.html | 155 + ver-1.11.0/grid_tools/namespacemembers_z.html | 476 ++ ver-1.11.0/grid_tools/namespacepesg.html | 4494 ++++++++++++++++ ver-1.11.0/grid_tools/namespacepesg.js | 31 + ver-1.11.0/grid_tools/namespacepfun.html | 967 ++++ ver-1.11.0/grid_tools/namespacepfun.js | 16 + ver-1.11.0/grid_tools/namespacepietc.html | 4600 +++++++++++++++++ ver-1.11.0/grid_tools/namespacepkind.html | 250 + ver-1.11.0/grid_tools/namespacepmat2.html | 3198 ++++++++++++ ver-1.11.0/grid_tools/namespacepmat2.js | 31 + ver-1.11.0/grid_tools/namespacepmat4.html | 4441 ++++++++++++++++ ver-1.11.0/grid_tools/namespacepmat4.js | 40 + ver-1.11.0/grid_tools/namespacepmat5.html | 2722 ++++++++++ ver-1.11.0/grid_tools/namespacepmat5.js | 16 + ver-1.11.0/grid_tools/namespacepsym2.html | 1056 ++++ ver-1.11.0/grid_tools/namespacepsym2.js | 14 + ver-1.11.0/grid_tools/namespaces.html | 119 + ver-1.11.0/grid_tools/namespaces_dup.js | 14 + ver-1.11.0/grid_tools/namespaceutils.html | 475 ++ ver-1.11.0/grid_tools/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/grid_tools/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/grid_tools/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/grid_tools/navtree.css | 146 + ver-1.11.0/grid_tools/navtree.js | 540 ++ ver-1.11.0/grid_tools/navtreedata.js | 65 + ver-1.11.0/grid_tools/navtreeindex0.js | 253 + ver-1.11.0/grid_tools/navtreeindex1.js | 253 + ver-1.11.0/grid_tools/navtreeindex2.js | 253 + ver-1.11.0/grid_tools/navtreeindex3.js | 253 + ver-1.11.0/grid_tools/navtreeindex4.js | 253 + ver-1.11.0/grid_tools/navtreeindex5.js | 131 + ver-1.11.0/grid_tools/open.png | Bin 0 -> 123 bytes ver-1.11.0/grid_tools/pages.html | 109 + ver-1.11.0/grid_tools/pesg_8f90.html | 324 ++ ver-1.11.0/grid_tools/pesg_8f90.js | 76 + ver-1.11.0/grid_tools/pesg_8f90_source.html | 198 + ver-1.11.0/grid_tools/pfun_8f90.html | 224 + ver-1.11.0/grid_tools/pfun_8f90.js | 38 + ver-1.11.0/grid_tools/pfun_8f90_source.html | 151 + ver-1.11.0/grid_tools/pietc_8f90.html | 762 +++ ver-1.11.0/grid_tools/pietc_8f90.js | 214 + ver-1.11.0/grid_tools/pietc_8f90_source.html | 320 ++ ver-1.11.0/grid_tools/pietc__s_8f90.html | 4557 ++++++++++++++++ ver-1.11.0/grid_tools/pietc__s_8f90.js | 214 + .../grid_tools/pietc__s_8f90_source.html | 118 + ver-1.11.0/grid_tools/pkind_8f90.html | 146 + ver-1.11.0/grid_tools/pkind_8f90.js | 9 + ver-1.11.0/grid_tools/pkind_8f90_source.html | 112 + ver-1.11.0/grid_tools/pmat2_8f90.html | 325 ++ ver-1.11.0/grid_tools/pmat2_8f90.js | 75 + ver-1.11.0/grid_tools/pmat2_8f90_source.html | 149 + ver-1.11.0/grid_tools/pmat4_8f90.html | 589 +++ ver-1.11.0/grid_tools/pmat4_8f90.js | 121 + ver-1.11.0/grid_tools/pmat4_8f90_source.html | 219 + ver-1.11.0/grid_tools/pmat5_8f90.html | 304 ++ ver-1.11.0/grid_tools/pmat5_8f90.js | 61 + ver-1.11.0/grid_tools/pmat5_8f90_source.html | 175 + ver-1.11.0/grid_tools/pmat_8f90.html | 2734 ++++++++++ ver-1.11.0/grid_tools/pmat_8f90.js | 61 + ver-1.11.0/grid_tools/pmat_8f90_source.html | 126 + ver-1.11.0/grid_tools/psym2_8f90.html | 210 + ver-1.11.0/grid_tools/psym2_8f90.js | 31 + ver-1.11.0/grid_tools/psym2_8f90_source.html | 132 + .../grid_tools/regional__esg__grid_8f90.html | 191 + .../grid_tools/regional__esg__grid_8f90.js | 5 + .../regional__esg__grid_8f90_source.html | 115 + ver-1.11.0/grid_tools/resize.js | 136 + ver-1.11.0/grid_tools/search/all_0.html | 30 + ver-1.11.0/grid_tools/search/all_0.js | 23 + ver-1.11.0/grid_tools/search/all_1.html | 30 + ver-1.11.0/grid_tools/search/all_1.js | 5 + ver-1.11.0/grid_tools/search/all_10.html | 30 + ver-1.11.0/grid_tools/search/all_10.js | 100 + ver-1.11.0/grid_tools/search/all_11.html | 30 + ver-1.11.0/grid_tools/search/all_11.js | 19 + ver-1.11.0/grid_tools/search/all_12.html | 30 + ver-1.11.0/grid_tools/search/all_12.js | 26 + ver-1.11.0/grid_tools/search/all_13.html | 30 + ver-1.11.0/grid_tools/search/all_13.js | 5 + ver-1.11.0/grid_tools/search/all_14.html | 30 + ver-1.11.0/grid_tools/search/all_14.js | 22 + ver-1.11.0/grid_tools/search/all_15.html | 30 + ver-1.11.0/grid_tools/search/all_15.js | 127 + ver-1.11.0/grid_tools/search/all_2.html | 30 + ver-1.11.0/grid_tools/search/all_2.js | 43 + ver-1.11.0/grid_tools/search/all_3.html | 30 + ver-1.11.0/grid_tools/search/all_3.js | 75 + ver-1.11.0/grid_tools/search/all_4.html | 30 + ver-1.11.0/grid_tools/search/all_4.js | 13 + ver-1.11.0/grid_tools/search/all_5.html | 30 + ver-1.11.0/grid_tools/search/all_5.js | 14 + ver-1.11.0/grid_tools/search/all_6.html | 30 + ver-1.11.0/grid_tools/search/all_6.js | 43 + ver-1.11.0/grid_tools/search/all_7.html | 30 + ver-1.11.0/grid_tools/search/all_7.js | 21 + ver-1.11.0/grid_tools/search/all_8.html | 30 + ver-1.11.0/grid_tools/search/all_8.js | 16 + ver-1.11.0/grid_tools/search/all_9.html | 30 + ver-1.11.0/grid_tools/search/all_9.js | 15 + ver-1.11.0/grid_tools/search/all_a.html | 30 + ver-1.11.0/grid_tools/search/all_a.js | 49 + ver-1.11.0/grid_tools/search/all_b.html | 30 + ver-1.11.0/grid_tools/search/all_b.js | 10 + ver-1.11.0/grid_tools/search/all_c.html | 30 + ver-1.11.0/grid_tools/search/all_c.js | 18 + ver-1.11.0/grid_tools/search/all_d.html | 30 + ver-1.11.0/grid_tools/search/all_d.js | 31 + ver-1.11.0/grid_tools/search/all_e.html | 30 + ver-1.11.0/grid_tools/search/all_e.js | 6 + ver-1.11.0/grid_tools/search/all_f.html | 30 + ver-1.11.0/grid_tools/search/all_f.js | 21 + ver-1.11.0/grid_tools/search/classes_0.html | 30 + ver-1.11.0/grid_tools/search/classes_0.js | 11 + ver-1.11.0/grid_tools/search/classes_1.html | 30 + ver-1.11.0/grid_tools/search/classes_1.js | 5 + ver-1.11.0/grid_tools/search/classes_10.html | 30 + ver-1.11.0/grid_tools/search/classes_10.js | 17 + ver-1.11.0/grid_tools/search/classes_11.html | 30 + ver-1.11.0/grid_tools/search/classes_11.js | 5 + ver-1.11.0/grid_tools/search/classes_12.html | 30 + ver-1.11.0/grid_tools/search/classes_12.js | 17 + ver-1.11.0/grid_tools/search/classes_13.html | 30 + ver-1.11.0/grid_tools/search/classes_13.js | 4 + ver-1.11.0/grid_tools/search/classes_14.html | 30 + ver-1.11.0/grid_tools/search/classes_14.js | 13 + ver-1.11.0/grid_tools/search/classes_15.html | 30 + ver-1.11.0/grid_tools/search/classes_15.js | 8 + ver-1.11.0/grid_tools/search/classes_2.html | 30 + ver-1.11.0/grid_tools/search/classes_2.js | 15 + ver-1.11.0/grid_tools/search/classes_3.html | 30 + ver-1.11.0/grid_tools/search/classes_3.js | 8 + ver-1.11.0/grid_tools/search/classes_4.html | 30 + ver-1.11.0/grid_tools/search/classes_4.js | 8 + ver-1.11.0/grid_tools/search/classes_5.html | 30 + ver-1.11.0/grid_tools/search/classes_5.js | 4 + ver-1.11.0/grid_tools/search/classes_6.html | 30 + ver-1.11.0/grid_tools/search/classes_6.js | 18 + ver-1.11.0/grid_tools/search/classes_7.html | 30 + ver-1.11.0/grid_tools/search/classes_7.js | 11 + ver-1.11.0/grid_tools/search/classes_8.html | 30 + ver-1.11.0/grid_tools/search/classes_8.js | 11 + ver-1.11.0/grid_tools/search/classes_9.html | 30 + ver-1.11.0/grid_tools/search/classes_9.js | 13 + ver-1.11.0/grid_tools/search/classes_a.html | 30 + ver-1.11.0/grid_tools/search/classes_a.js | 6 + ver-1.11.0/grid_tools/search/classes_b.html | 30 + ver-1.11.0/grid_tools/search/classes_b.js | 5 + ver-1.11.0/grid_tools/search/classes_c.html | 30 + ver-1.11.0/grid_tools/search/classes_c.js | 5 + ver-1.11.0/grid_tools/search/classes_d.html | 30 + ver-1.11.0/grid_tools/search/classes_d.js | 7 + ver-1.11.0/grid_tools/search/classes_e.html | 30 + ver-1.11.0/grid_tools/search/classes_e.js | 6 + ver-1.11.0/grid_tools/search/classes_f.html | 30 + ver-1.11.0/grid_tools/search/classes_f.js | 6 + ver-1.11.0/grid_tools/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/grid_tools/search/files_0.html | 30 + ver-1.11.0/grid_tools/search/files_0.js | 4 + ver-1.11.0/grid_tools/search/files_1.html | 30 + ver-1.11.0/grid_tools/search/files_1.js | 4 + ver-1.11.0/grid_tools/search/files_2.html | 30 + ver-1.11.0/grid_tools/search/files_2.js | 13 + ver-1.11.0/grid_tools/search/files_3.html | 30 + ver-1.11.0/grid_tools/search/files_3.js | 4 + ver-1.11.0/grid_tools/search/files_4.html | 30 + ver-1.11.0/grid_tools/search/files_4.js | 4 + ver-1.11.0/grid_tools/search/files_5.html | 30 + ver-1.11.0/grid_tools/search/files_5.js | 4 + ver-1.11.0/grid_tools/search/functions_0.html | 30 + ver-1.11.0/grid_tools/search/functions_0.js | 18 + ver-1.11.0/grid_tools/search/functions_1.html | 30 + ver-1.11.0/grid_tools/search/functions_1.js | 5 + .../grid_tools/search/functions_10.html | 30 + ver-1.11.0/grid_tools/search/functions_10.js | 58 + .../grid_tools/search/functions_11.html | 30 + ver-1.11.0/grid_tools/search/functions_11.js | 14 + .../grid_tools/search/functions_12.html | 30 + ver-1.11.0/grid_tools/search/functions_12.js | 16 + .../grid_tools/search/functions_13.html | 30 + ver-1.11.0/grid_tools/search/functions_13.js | 5 + .../grid_tools/search/functions_14.html | 30 + ver-1.11.0/grid_tools/search/functions_14.js | 20 + .../grid_tools/search/functions_15.html | 30 + ver-1.11.0/grid_tools/search/functions_15.js | 13 + ver-1.11.0/grid_tools/search/functions_2.html | 30 + ver-1.11.0/grid_tools/search/functions_2.js | 33 + ver-1.11.0/grid_tools/search/functions_3.html | 30 + ver-1.11.0/grid_tools/search/functions_3.js | 67 + ver-1.11.0/grid_tools/search/functions_4.html | 30 + ver-1.11.0/grid_tools/search/functions_4.js | 12 + ver-1.11.0/grid_tools/search/functions_5.html | 30 + ver-1.11.0/grid_tools/search/functions_5.js | 12 + ver-1.11.0/grid_tools/search/functions_6.html | 30 + ver-1.11.0/grid_tools/search/functions_6.js | 30 + ver-1.11.0/grid_tools/search/functions_7.html | 30 + ver-1.11.0/grid_tools/search/functions_7.js | 18 + ver-1.11.0/grid_tools/search/functions_8.html | 30 + ver-1.11.0/grid_tools/search/functions_8.js | 9 + ver-1.11.0/grid_tools/search/functions_9.html | 30 + ver-1.11.0/grid_tools/search/functions_9.js | 12 + ver-1.11.0/grid_tools/search/functions_a.html | 30 + ver-1.11.0/grid_tools/search/functions_a.js | 6 + ver-1.11.0/grid_tools/search/functions_b.html | 30 + ver-1.11.0/grid_tools/search/functions_b.js | 7 + ver-1.11.0/grid_tools/search/functions_c.html | 30 + ver-1.11.0/grid_tools/search/functions_c.js | 8 + ver-1.11.0/grid_tools/search/functions_d.html | 30 + ver-1.11.0/grid_tools/search/functions_d.js | 9 + ver-1.11.0/grid_tools/search/functions_e.html | 30 + ver-1.11.0/grid_tools/search/functions_e.js | 6 + ver-1.11.0/grid_tools/search/functions_f.html | 30 + ver-1.11.0/grid_tools/search/functions_f.js | 11 + ver-1.11.0/grid_tools/search/mag_sel.png | Bin 0 -> 563 bytes .../grid_tools/search/namespaces_0.html | 30 + ver-1.11.0/grid_tools/search/namespaces_0.js | 4 + .../grid_tools/search/namespaces_1.html | 30 + ver-1.11.0/grid_tools/search/namespaces_1.js | 4 + .../grid_tools/search/namespaces_2.html | 30 + ver-1.11.0/grid_tools/search/namespaces_2.js | 11 + .../grid_tools/search/namespaces_3.html | 30 + ver-1.11.0/grid_tools/search/namespaces_3.js | 4 + ver-1.11.0/grid_tools/search/nomatches.html | 12 + ver-1.11.0/grid_tools/search/pages_0.html | 30 + ver-1.11.0/grid_tools/search/pages_0.js | 4 + ver-1.11.0/grid_tools/search/pages_1.html | 30 + ver-1.11.0/grid_tools/search/pages_1.js | 4 + ver-1.11.0/grid_tools/search/search.css | 271 + ver-1.11.0/grid_tools/search/search.js | 814 +++ ver-1.11.0/grid_tools/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/grid_tools/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/grid_tools/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/grid_tools/search/searchdata.js | 33 + ver-1.11.0/grid_tools/search/variables_0.html | 30 + ver-1.11.0/grid_tools/search/variables_0.js | 7 + ver-1.11.0/grid_tools/search/variables_1.html | 30 + ver-1.11.0/grid_tools/search/variables_1.js | 7 + ver-1.11.0/grid_tools/search/variables_2.html | 30 + ver-1.11.0/grid_tools/search/variables_2.js | 4 + ver-1.11.0/grid_tools/search/variables_3.html | 30 + ver-1.11.0/grid_tools/search/variables_3.js | 4 + ver-1.11.0/grid_tools/search/variables_4.html | 30 + ver-1.11.0/grid_tools/search/variables_4.js | 5 + ver-1.11.0/grid_tools/search/variables_5.html | 30 + ver-1.11.0/grid_tools/search/variables_5.js | 4 + ver-1.11.0/grid_tools/search/variables_6.html | 30 + ver-1.11.0/grid_tools/search/variables_6.js | 44 + ver-1.11.0/grid_tools/search/variables_7.html | 30 + ver-1.11.0/grid_tools/search/variables_7.js | 4 + ver-1.11.0/grid_tools/search/variables_8.html | 30 + ver-1.11.0/grid_tools/search/variables_8.js | 11 + ver-1.11.0/grid_tools/search/variables_9.html | 30 + ver-1.11.0/grid_tools/search/variables_9.js | 7 + ver-1.11.0/grid_tools/search/variables_a.html | 30 + ver-1.11.0/grid_tools/search/variables_a.js | 11 + ver-1.11.0/grid_tools/search/variables_b.html | 30 + ver-1.11.0/grid_tools/search/variables_b.js | 36 + ver-1.11.0/grid_tools/search/variables_c.html | 30 + ver-1.11.0/grid_tools/search/variables_c.js | 6 + ver-1.11.0/grid_tools/search/variables_d.html | 30 + ver-1.11.0/grid_tools/search/variables_d.js | 10 + ver-1.11.0/grid_tools/search/variables_e.html | 30 + ver-1.11.0/grid_tools/search/variables_e.js | 117 + ver-1.11.0/grid_tools/shave__nc_8F90.html | 183 + ver-1.11.0/grid_tools/shave__nc_8F90.js | 5 + .../grid_tools/shave__nc_8F90_source.html | 107 + ver-1.11.0/grid_tools/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/grid_tools/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/grid_tools/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/grid_tools/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/grid_tools/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/grid_tools/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/grid_tools/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/grid_tools/tabs.css | 1 + ver-1.11.0/grid_tools/utils_8F90.html | 172 + ver-1.11.0/grid_tools/utils_8F90.js | 16 + ver-1.11.0/grid_tools/utils_8F90_source.html | 119 + ver-1.11.0/index.html | 126 + ver-1.11.0/jquery.js | 115 + ver-1.11.0/lsm_routines/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/lsm_routines/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/lsm_routines/closed.png | Bin 0 -> 132 bytes ver-1.11.0/lsm_routines/doc.png | Bin 0 -> 746 bytes ver-1.11.0/lsm_routines/doxygen.css | 1596 ++++++ ver-1.11.0/lsm_routines/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/lsm_routines/dynsections.js | 127 + ver-1.11.0/lsm_routines/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/lsm_routines/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/lsm_routines/index.html | 113 + ver-1.11.0/lsm_routines/jquery.js | 115 + .../lsm__routines_8md_source.html | 105 + ver-1.11.0/lsm_routines/menu.js | 50 + ver-1.11.0/lsm_routines/menudata.js | 25 + ver-1.11.0/lsm_routines/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/lsm_routines/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/lsm_routines/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/lsm_routines/navtree.css | 146 + ver-1.11.0/lsm_routines/navtree.js | 540 ++ ver-1.11.0/lsm_routines/navtreedata.js | 37 + ver-1.11.0/lsm_routines/navtreeindex0.js | 6 + ver-1.11.0/lsm_routines/open.png | Bin 0 -> 123 bytes ver-1.11.0/lsm_routines/resize.js | 136 + ver-1.11.0/lsm_routines/search/all_0.html | 30 + ver-1.11.0/lsm_routines/search/all_0.js | 4 + ver-1.11.0/lsm_routines/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/lsm_routines/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/lsm_routines/search/nomatches.html | 12 + ver-1.11.0/lsm_routines/search/pages_0.html | 30 + ver-1.11.0/lsm_routines/search/pages_0.js | 4 + ver-1.11.0/lsm_routines/search/search.css | 271 + ver-1.11.0/lsm_routines/search/search.js | 814 +++ ver-1.11.0/lsm_routines/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/lsm_routines/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/lsm_routines/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/lsm_routines/search/searchdata.js | 18 + ver-1.11.0/lsm_routines/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/lsm_routines/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/lsm_routines/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/lsm_routines/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/lsm_routines/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/lsm_routines/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/lsm_routines/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/lsm_routines/tabs.css | 1 + ver-1.11.0/main_8md_source.html | 105 + ver-1.11.0/menu.js | 50 + ver-1.11.0/menudata.js | 25 + ver-1.11.0/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/navtree.css | 146 + ver-1.11.0/navtree.js | 540 ++ ver-1.11.0/navtreedata.js | 40 + ver-1.11.0/navtreeindex0.js | 8 + ver-1.11.0/noah/README_8md_source.html | 105 + ver-1.11.0/noah/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/noah/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/noah/bulk__snow__module_8f90.html | 192 + ver-1.11.0/noah/bulk__snow__module_8f90.js | 4 + .../noah/bulk__snow__module_8f90_source.html | 105 + ver-1.11.0/noah/closed.png | Bin 0 -> 132 bytes .../dir_868aa969f47363628fe3c8bb946a444e.html | 118 + .../dir_868aa969f47363628fe3c8bb946a444e.js | 6 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 105 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_f8e7bd65e1d9005266a50e97e5b935e9.html | 109 + .../dir_f8e7bd65e1d9005266a50e97e5b935e9.js | 4 + ver-1.11.0/noah/doc.png | Bin 0 -> 746 bytes ver-1.11.0/noah/doxygen.css | 1596 ++++++ ver-1.11.0/noah/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/noah/dynsections.js | 127 + ver-1.11.0/noah/files.html | 114 + ver-1.11.0/noah/files_dup.js | 4 + ver-1.11.0/noah/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/noah/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/noah/index.html | 114 + ver-1.11.0/noah/jquery.js | 115 + .../noah/man/man3/bulk_snow_module.f90.3 | 59 + ver-1.11.0/noah/man/man3/calc_density.3 | 1 + ver-1.11.0/noah/man/man3/frh2o.3 | 1 + ...sorc_lsm_routines.fd_noah.fd_docs_README.3 | 16 + ver-1.11.0/noah/man/man3/set_soilveg.3 | 1 + .../noah/man/man3/set_soilveg_snippet.f90.3 | 42 + .../noah/man/man3/set_soilveg_snippet_mod.3 | 48 + ver-1.11.0/noah/man/man3/sflx_snippet.f90.3 | 61 + ...lsm_routines_8fd_noah_8fd_docs_README.html | 110 + ver-1.11.0/noah/menu.js | 50 + ver-1.11.0/noah/menudata.js | 33 + ver-1.11.0/noah/namespacemembers.html | 105 + ver-1.11.0/noah/namespacemembers_func.html | 105 + ver-1.11.0/noah/namespaces.html | 109 + ver-1.11.0/noah/namespaces_dup.js | 4 + .../namespaceset__soilveg__snippet__mod.html | 187 + ver-1.11.0/noah/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/noah/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/noah/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/noah/navtree.css | 146 + ver-1.11.0/noah/navtree.js | 540 ++ ver-1.11.0/noah/navtreedata.js | 48 + ver-1.11.0/noah/navtreeindex0.js | 24 + ver-1.11.0/noah/noah_8md_source.html | 105 + ver-1.11.0/noah/open.png | Bin 0 -> 123 bytes ver-1.11.0/noah/pages.html | 109 + ver-1.11.0/noah/resize.js | 136 + ver-1.11.0/noah/search/all_0.html | 30 + ver-1.11.0/noah/search/all_0.js | 4 + ver-1.11.0/noah/search/all_1.html | 30 + ver-1.11.0/noah/search/all_1.js | 4 + ver-1.11.0/noah/search/all_2.html | 30 + ver-1.11.0/noah/search/all_2.js | 4 + ver-1.11.0/noah/search/all_3.html | 30 + ver-1.11.0/noah/search/all_3.js | 4 + ver-1.11.0/noah/search/all_4.html | 30 + ver-1.11.0/noah/search/all_4.js | 4 + ver-1.11.0/noah/search/all_5.html | 30 + ver-1.11.0/noah/search/all_5.js | 7 + ver-1.11.0/noah/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/noah/search/files_0.html | 30 + ver-1.11.0/noah/search/files_0.js | 4 + ver-1.11.0/noah/search/files_1.html | 30 + ver-1.11.0/noah/search/files_1.js | 5 + ver-1.11.0/noah/search/functions_0.html | 30 + ver-1.11.0/noah/search/functions_0.js | 4 + ver-1.11.0/noah/search/functions_1.html | 30 + ver-1.11.0/noah/search/functions_1.js | 4 + ver-1.11.0/noah/search/functions_2.html | 30 + ver-1.11.0/noah/search/functions_2.js | 4 + ver-1.11.0/noah/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/noah/search/namespaces_0.html | 30 + ver-1.11.0/noah/search/namespaces_0.js | 4 + ver-1.11.0/noah/search/nomatches.html | 12 + ver-1.11.0/noah/search/pages_0.html | 30 + ver-1.11.0/noah/search/pages_0.js | 4 + ver-1.11.0/noah/search/pages_1.html | 30 + ver-1.11.0/noah/search/pages_1.js | 4 + ver-1.11.0/noah/search/search.css | 271 + ver-1.11.0/noah/search/search.js | 814 +++ ver-1.11.0/noah/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/noah/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/noah/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/noah/search/searchdata.js | 27 + .../noah/set__soilveg__snippet_8f90.html | 131 + ver-1.11.0/noah/set__soilveg__snippet_8f90.js | 4 + .../set__soilveg__snippet_8f90_source.html | 107 + ver-1.11.0/noah/sflx__snippet_8f90.html | 199 + ver-1.11.0/noah/sflx__snippet_8f90.js | 4 + .../noah/sflx__snippet_8f90_source.html | 105 + ver-1.11.0/noah/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/noah/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/noah/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/noah/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/noah/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/noah/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/noah/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/noah/tabs.css | 1 + ver-1.11.0/open.png | Bin 0 -> 123 bytes .../orog_mask_tools/README_8md_source.html | 105 + ver-1.11.0/orog_mask_tools/annotated.html | 111 + ver-1.11.0/orog_mask_tools/annotated_dup.js | 7 + ver-1.11.0/orog_mask_tools/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/orog_mask_tools/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/orog_mask_tools/classes.html | 113 + ver-1.11.0/orog_mask_tools/closed.png | Bin 0 -> 132 bytes .../dir_089396841126cf09d4e60e162318f8dc.html | 115 + .../dir_089396841126cf09d4e60e162318f8dc.js | 5 + .../dir_3785541a64e6aa2cb536d16f6c34a196.html | 109 + .../dir_3785541a64e6aa2cb536d16f6c34a196.js | 7 + .../dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html | 118 + .../dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.js | 6 + .../dir_d061f9da02c149ef8007f44f98b1f0b6.html | 115 + .../dir_d061f9da02c149ef8007f44f98b1f0b6.js | 5 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 105 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html | 118 + .../dir_e81fadbf8a162bfeb0d11ac4a7d047f5.js | 6 + ver-1.11.0/orog_mask_tools/doc.png | Bin 0 -> 746 bytes ver-1.11.0/orog_mask_tools/doxygen.css | 1596 ++++++ ver-1.11.0/orog_mask_tools/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/orog_mask_tools/dynsections.js | 127 + .../orog_mask_tools/enclosure__cnvx_8F90.html | 181 + .../orog_mask_tools/enclosure__cnvx_8F90.js | 4 + .../enclosure__cnvx_8F90_source.html | 106 + ver-1.11.0/orog_mask_tools/files.html | 124 + ver-1.11.0/orog_mask_tools/files_dup.js | 4 + .../orog_mask_tools/find__limit_8F90.html | 246 + .../orog_mask_tools/find__limit_8F90.js | 5 + .../find__limit_8F90_source.html | 107 + ver-1.11.0/orog_mask_tools/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/orog_mask_tools/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/orog_mask_tools/functions.html | 114 + .../orog_mask_tools/functions_vars.html | 114 + ver-1.11.0/orog_mask_tools/globals.html | 321 ++ ver-1.11.0/orog_mask_tools/globals_func.html | 321 ++ .../orog_mask_tools/gsl__oro__data_8f90.html | 158 + .../orog_mask_tools/gsl__oro__data_8f90.js | 4 + .../gsl__oro__data_8f90_source.html | 106 + ver-1.11.0/orog_mask_tools/index.html | 113 + ver-1.11.0/orog_mask_tools/inland_8F90.html | 556 ++ ver-1.11.0/orog_mask_tools/inland_8F90.js | 14 + .../orog_mask_tools/inland_8F90_source.html | 117 + ver-1.11.0/orog_mask_tools/jquery.js | 115 + ver-1.11.0/orog_mask_tools/lakefrac_8F90.html | 566 ++ ver-1.11.0/orog_mask_tools/lakefrac_8F90.js | 12 + .../orog_mask_tools/lakefrac_8F90_source.html | 114 + .../man/man3/HGT_interpolate.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEMT.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEMT2.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEOA.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEOA2.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEOA3.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEPC.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/MAKEPC2.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/REVERS.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/SPFFT1.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/TERSUB.3 | 1 + .../man/man3/__mtnlm7_oclsm.F__.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/bndry.3 | 1 + .../orog_mask_tools/man/man3/bndry_reg.3 | 1 + .../man/man3/cal_lake_frac_depth.3 | 1 + .../man/man3/calc_gsl_oro_data_lg_scale.3 | 1 + .../man/man3/calc_gsl_oro_data_sm_scale.3 | 1 + .../orog_mask_tools/man/man3/calc_mean_HGT.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/cres.3 | 1 + .../man/man3/cs_nb_nb_gp_idx.3 | 46 + .../man/man3/cs_nb_nb_tile_idx.3 | 46 + .../orog_mask_tools/man/man3/dbl_kind.3 | 1 + .../orog_mask_tools/man/man3/dimx_fine.3 | 1 + .../orog_mask_tools/man/man3/dimy_fine.3 | 1 + .../orog_mask_tools/man/man3/enclosure_cnvx.3 | 1 + .../man/man3/enclosure_cnvx.F90.3 | 65 + .../orog_mask_tools/man/man3/find_limit.3 | 1 + .../orog_mask_tools/man/man3/find_limit.F90.3 | 126 + .../orog_mask_tools/man/man3/free_mem.3 | 1 + .../orog_mask_tools/man/man3/get_index.3 | 1 + .../orog_mask_tools/man/man3/get_lat_angle.3 | 1 + .../orog_mask_tools/man/man3/get_lon_angle.3 | 1 + .../man/man3/get_mismatch_index.3 | 1 + .../orog_mask_tools/man/man3/get_xnsum.3 | 1 + .../orog_mask_tools/man/man3/get_xnsum2.3 | 1 + .../orog_mask_tools/man/man3/get_xnsum3.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/gg2rg.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/gp_type.3 | 1 + .../orog_mask_tools/man/man3/gsl_oro_data.3 | 1 + .../man/man3/gsl_oro_data.f90.3 | 74 + .../orog_mask_tools/man/man3/hgt_m_fine.3 | 1 + .../orog_mask_tools/man/man3/hgt_missing.3 | 1 + .../orog_mask_tools/man/man3/idx_init.3 | 1 + .../orog_mask_tools/man/man3/idx_init_reg.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/ijt.3 | 1 + .../orog_mask_tools/man/man3/inland.F90.3 | 315 ++ .../orog_mask_tools/man/man3/inland_mask.3 | 1 + .../man/man3/inside_a_polygon.3 | 1 + .../orog_mask_tools/man/man3/interp_1d.3 | 1 + .../man/man3/interpolate_mismatch.3 | 1 + .../orog_mask_tools/man/man3/lake_frac.3 | 1 + .../orog_mask_tools/man/man3/lakefrac.F90.3 | 278 + .../orog_mask_tools/man/man3/lat1d_fine.3 | 1 + .../orog_mask_tools/man/man3/latlon2xyz.3 | 1 + .../orog_mask_tools/man/man3/lon1d_fine.3 | 1 + .../man/man3/mark_global_inland.3 | 1 + .../man/man3/mark_global_inland_rec_d.3 | 1 + .../man/man3/mark_inland_reg.3 | 1 + .../man/man3/mark_regional_inland_rec_d.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/maxmin.3 | 1 + ...TILS_sorc_orog_mask_tools.fd_docs_README.3 | 8 + ver-1.11.0/orog_mask_tools/man/man3/middle.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/minmaxj.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/minmxj.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/mnmxja.3 | 1 + .../man3/module_gsl_oro_data_lg_scale.f90.3 | 411 ++ .../man3/module_gsl_oro_data_sm_scale.f90.3 | 331 ++ .../orog_mask_tools/man/man3/mtnlm7_oclsm.F.3 | 1441 ++++++ ver-1.11.0/orog_mask_tools/man/man3/nanc.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/nb.F90.3 | 284 + ver-1.11.0/orog_mask_tools/man/man3/nb_tile.3 | 1 + .../orog_mask_tools/man/man3/nb_tile_bndry.3 | 1 + .../orog_mask_tools/man/man3/nb_tile_num.3 | 1 + .../orog_mask_tools/man/man3/nc_opchk.3 | 1 + .../orog_mask_tools/man/man3/nearest_i_east.3 | 1 + .../orog_mask_tools/man/man3/nearest_i_west.3 | 1 + .../man/man3/nearest_j_north.3 | 1 + .../man/man3/nearest_j_south.3 | 1 + .../orog_mask_tools/man/man3/neighbors.3 | 1 + .../orog_mask_tools/man/man3/neighbors_reg.3 | 1 + .../orog_mask_tools/man/man3/netcdf_err.3 | 1 + .../orog_mask_tools/man/man3/netcdf_io.F90.3 | 108 + ver-1.11.0/orog_mask_tools/man/man3/p5.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/pi.3 | 1 + .../man/man3/read_cubed_sphere_grid.3 | 1 + .../man/man3/read_cubed_sphere_reg_grid.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/read_g.3 | 1 + .../orog_mask_tools/man/man3/read_lakedata.3 | 1 + .../orog_mask_tools/man/man3/read_orog.3 | 1 + .../orog_mask_tools/man/man3/read_orog_reg.3 | 1 + .../orog_mask_tools/man/man3/real_kind.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/rg2gg.3 | 1 + .../man/man3/spherical_angle.3 | 1 + .../man/man3/spherical_distance.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/timef.3 | 1 + .../orog_mask_tools/man/man3/write_inland.3 | 1 + .../man/man3/write_inland_reg.3 | 1 + .../man/man3/write_lakedata_to_orodata.3 | 1 + .../orog_mask_tools/man/man3/write_netcdf.3 | 1 + .../man/man3/write_reg_lakedata_to_orodata.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/xres.3 | 1 + ver-1.11.0/orog_mask_tools/man/man3/yres.3 | 1 + ..._sorc_orog_mask_tools_8fd_docs_README.html | 106 + ver-1.11.0/orog_mask_tools/menu.js | 50 + ver-1.11.0/orog_mask_tools/menudata.js | 62 + ...odule__gsl__oro__data__lg__scale_8f90.html | 772 +++ .../module__gsl__oro__data__lg__scale_8f90.js | 22 + ...gsl__oro__data__lg__scale_8f90_source.html | 106 + ...odule__gsl__oro__data__sm__scale_8f90.html | 602 +++ .../module__gsl__oro__data__sm__scale_8f90.js | 18 + ...gsl__oro__data__sm__scale_8f90_source.html | 106 + .../orog_mask_tools/mtnlm7__oclsm_8F.html | 3163 ++++++++++++ .../orog_mask_tools/mtnlm7__oclsm_8F.js | 35 + .../mtnlm7__oclsm_8F_source.html | 128 + ver-1.11.0/orog_mask_tools/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/orog_mask_tools/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/orog_mask_tools/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/orog_mask_tools/navtree.css | 146 + ver-1.11.0/orog_mask_tools/navtree.js | 540 ++ ver-1.11.0/orog_mask_tools/navtreedata.js | 52 + ver-1.11.0/orog_mask_tools/navtreeindex0.js | 148 + ver-1.11.0/orog_mask_tools/nb_8F90.html | 514 ++ ver-1.11.0/orog_mask_tools/nb_8F90.js | 15 + .../orog_mask_tools/nb_8F90_source.html | 107 + .../orog_mask_tools/netcdf__io_8F90.html | 291 ++ ver-1.11.0/orog_mask_tools/netcdf__io_8F90.js | 5 + .../netcdf__io_8F90_source.html | 107 + ver-1.11.0/orog_mask_tools/open.png | Bin 0 -> 123 bytes .../orog__mask__tools_8md_source.html | 105 + ver-1.11.0/orog_mask_tools/pages.html | 109 + ver-1.11.0/orog_mask_tools/resize.js | 136 + ver-1.11.0/orog_mask_tools/search/all_0.html | 30 + ver-1.11.0/orog_mask_tools/search/all_0.js | 4 + ver-1.11.0/orog_mask_tools/search/all_1.html | 30 + ver-1.11.0/orog_mask_tools/search/all_1.js | 5 + ver-1.11.0/orog_mask_tools/search/all_10.html | 30 + ver-1.11.0/orog_mask_tools/search/all_10.js | 5 + ver-1.11.0/orog_mask_tools/search/all_11.html | 30 + ver-1.11.0/orog_mask_tools/search/all_11.js | 8 + ver-1.11.0/orog_mask_tools/search/all_12.html | 30 + ver-1.11.0/orog_mask_tools/search/all_12.js | 4 + ver-1.11.0/orog_mask_tools/search/all_13.html | 30 + ver-1.11.0/orog_mask_tools/search/all_13.js | 4 + ver-1.11.0/orog_mask_tools/search/all_2.html | 30 + ver-1.11.0/orog_mask_tools/search/all_2.js | 8 + ver-1.11.0/orog_mask_tools/search/all_3.html | 30 + ver-1.11.0/orog_mask_tools/search/all_3.js | 6 + ver-1.11.0/orog_mask_tools/search/all_4.html | 30 + ver-1.11.0/orog_mask_tools/search/all_4.js | 5 + ver-1.11.0/orog_mask_tools/search/all_5.html | 30 + ver-1.11.0/orog_mask_tools/search/all_5.js | 6 + ver-1.11.0/orog_mask_tools/search/all_6.html | 30 + ver-1.11.0/orog_mask_tools/search/all_6.js | 14 + ver-1.11.0/orog_mask_tools/search/all_7.html | 30 + ver-1.11.0/orog_mask_tools/search/all_7.js | 6 + ver-1.11.0/orog_mask_tools/search/all_8.html | 30 + ver-1.11.0/orog_mask_tools/search/all_8.js | 11 + ver-1.11.0/orog_mask_tools/search/all_9.html | 30 + ver-1.11.0/orog_mask_tools/search/all_9.js | 8 + ver-1.11.0/orog_mask_tools/search/all_a.html | 30 + ver-1.11.0/orog_mask_tools/search/all_a.js | 22 + ver-1.11.0/orog_mask_tools/search/all_b.html | 30 + ver-1.11.0/orog_mask_tools/search/all_b.js | 19 + ver-1.11.0/orog_mask_tools/search/all_c.html | 30 + ver-1.11.0/orog_mask_tools/search/all_c.js | 4 + ver-1.11.0/orog_mask_tools/search/all_d.html | 30 + ver-1.11.0/orog_mask_tools/search/all_d.js | 5 + ver-1.11.0/orog_mask_tools/search/all_e.html | 30 + ver-1.11.0/orog_mask_tools/search/all_e.js | 13 + ver-1.11.0/orog_mask_tools/search/all_f.html | 30 + ver-1.11.0/orog_mask_tools/search/all_f.js | 6 + .../orog_mask_tools/search/classes_0.html | 30 + .../orog_mask_tools/search/classes_0.js | 5 + ver-1.11.0/orog_mask_tools/search/close.png | Bin 0 -> 273 bytes .../orog_mask_tools/search/files_0.html | 30 + ver-1.11.0/orog_mask_tools/search/files_0.js | 4 + .../orog_mask_tools/search/files_1.html | 30 + ver-1.11.0/orog_mask_tools/search/files_1.js | 4 + .../orog_mask_tools/search/files_2.html | 30 + ver-1.11.0/orog_mask_tools/search/files_2.js | 4 + .../orog_mask_tools/search/files_3.html | 30 + ver-1.11.0/orog_mask_tools/search/files_3.js | 4 + .../orog_mask_tools/search/files_4.html | 30 + ver-1.11.0/orog_mask_tools/search/files_4.js | 4 + .../orog_mask_tools/search/files_5.html | 30 + ver-1.11.0/orog_mask_tools/search/files_5.js | 6 + .../orog_mask_tools/search/files_6.html | 30 + ver-1.11.0/orog_mask_tools/search/files_6.js | 5 + .../orog_mask_tools/search/functions_0.html | 30 + .../orog_mask_tools/search/functions_0.js | 4 + .../orog_mask_tools/search/functions_1.html | 30 + .../orog_mask_tools/search/functions_1.js | 5 + .../orog_mask_tools/search/functions_2.html | 30 + .../orog_mask_tools/search/functions_2.js | 7 + .../orog_mask_tools/search/functions_3.html | 30 + .../orog_mask_tools/search/functions_3.js | 4 + .../orog_mask_tools/search/functions_4.html | 30 + .../orog_mask_tools/search/functions_4.js | 5 + .../orog_mask_tools/search/functions_5.html | 30 + .../orog_mask_tools/search/functions_5.js | 12 + .../orog_mask_tools/search/functions_6.html | 30 + .../orog_mask_tools/search/functions_6.js | 4 + .../orog_mask_tools/search/functions_7.html | 30 + .../orog_mask_tools/search/functions_7.js | 9 + .../orog_mask_tools/search/functions_8.html | 30 + .../orog_mask_tools/search/functions_8.js | 5 + .../orog_mask_tools/search/functions_9.html | 30 + .../orog_mask_tools/search/functions_9.js | 19 + .../orog_mask_tools/search/functions_a.html | 30 + .../orog_mask_tools/search/functions_a.js | 12 + .../orog_mask_tools/search/functions_b.html | 30 + .../orog_mask_tools/search/functions_b.js | 11 + .../orog_mask_tools/search/functions_c.html | 30 + .../orog_mask_tools/search/functions_c.js | 6 + .../orog_mask_tools/search/functions_d.html | 30 + .../orog_mask_tools/search/functions_d.js | 5 + .../orog_mask_tools/search/functions_e.html | 30 + .../orog_mask_tools/search/functions_e.js | 8 + ver-1.11.0/orog_mask_tools/search/mag_sel.png | Bin 0 -> 563 bytes .../orog_mask_tools/search/nomatches.html | 12 + .../orog_mask_tools/search/pages_0.html | 30 + ver-1.11.0/orog_mask_tools/search/pages_0.js | 4 + .../orog_mask_tools/search/pages_1.html | 30 + ver-1.11.0/orog_mask_tools/search/pages_1.js | 4 + ver-1.11.0/orog_mask_tools/search/search.css | 271 + ver-1.11.0/orog_mask_tools/search/search.js | 814 +++ .../orog_mask_tools/search/search_l.png | Bin 0 -> 604 bytes .../orog_mask_tools/search/search_m.png | Bin 0 -> 158 bytes .../orog_mask_tools/search/search_r.png | Bin 0 -> 612 bytes .../orog_mask_tools/search/searchdata.js | 30 + .../orog_mask_tools/search/variables_0.html | 30 + .../orog_mask_tools/search/variables_0.js | 4 + .../orog_mask_tools/search/variables_1.html | 30 + .../orog_mask_tools/search/variables_1.js | 6 + .../orog_mask_tools/search/variables_2.html | 30 + .../orog_mask_tools/search/variables_2.js | 4 + .../orog_mask_tools/search/variables_3.html | 30 + .../orog_mask_tools/search/variables_3.js | 5 + .../orog_mask_tools/search/variables_4.html | 30 + .../orog_mask_tools/search/variables_4.js | 4 + .../orog_mask_tools/search/variables_5.html | 30 + .../orog_mask_tools/search/variables_5.js | 5 + .../orog_mask_tools/search/variables_6.html | 30 + .../orog_mask_tools/search/variables_6.js | 6 + .../orog_mask_tools/search/variables_7.html | 30 + .../orog_mask_tools/search/variables_7.js | 5 + .../orog_mask_tools/search/variables_8.html | 30 + .../orog_mask_tools/search/variables_8.js | 4 + .../orog_mask_tools/search/variables_9.html | 30 + .../orog_mask_tools/search/variables_9.js | 4 + .../orog_mask_tools/search/variables_a.html | 30 + .../orog_mask_tools/search/variables_a.js | 4 + ver-1.11.0/orog_mask_tools/splitbar.png | Bin 0 -> 314 bytes .../structcs__nb_1_1nb__gp__idx.html | 164 + .../structcs__nb_1_1nb__gp__idx.js | 5 + .../structcs__nb_1_1nb__tile__idx.html | 164 + .../structcs__nb_1_1nb__tile__idx.js | 5 + ver-1.11.0/orog_mask_tools/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/orog_mask_tools/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/orog_mask_tools/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/orog_mask_tools/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/orog_mask_tools/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/orog_mask_tools/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/orog_mask_tools/tabs.css | 1 + ver-1.11.0/resize.js | 136 + ver-1.11.0/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/search/nomatches.html | 12 + ver-1.11.0/search/search.css | 271 + ver-1.11.0/search/search.js | 814 +++ ver-1.11.0/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/search/searchdata.js | 12 + .../sfc_climo_gen/README_8md_source.html | 105 + ver-1.11.0/sfc_climo_gen/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/sfc_climo_gen/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/sfc_climo_gen/closed.png | Bin 0 -> 132 bytes .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + .../dir_fb798a7feaa65c5ad0c9ba7a62162d13.html | 142 + .../dir_fb798a7feaa65c5ad0c9ba7a62162d13.js | 14 + ver-1.11.0/sfc_climo_gen/doc.png | Bin 0 -> 746 bytes ver-1.11.0/sfc_climo_gen/doxygen.css | 1596 ++++++ ver-1.11.0/sfc_climo_gen/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/sfc_climo_gen/driver_8F90.html | 153 + ver-1.11.0/sfc_climo_gen/driver_8F90.js | 4 + .../sfc_climo_gen/driver_8F90_source.html | 133 + ver-1.11.0/sfc_climo_gen/dynsections.js | 127 + ver-1.11.0/sfc_climo_gen/files.html | 121 + ver-1.11.0/sfc_climo_gen/files_dup.js | 4 + ver-1.11.0/sfc_climo_gen/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/sfc_climo_gen/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/sfc_climo_gen/globals.html | 123 + ver-1.11.0/sfc_climo_gen/globals_func.html | 123 + ver-1.11.0/sfc_climo_gen/index.html | 109 + ver-1.11.0/sfc_climo_gen/interp_8F90.html | 245 + ver-1.11.0/sfc_climo_gen/interp_8F90.js | 5 + .../sfc_climo_gen/interp_8F90_source.html | 131 + .../interp__frac__cats_8F90.html | 172 + .../sfc_climo_gen/interp__frac__cats_8F90.js | 4 + .../interp__frac__cats_8F90_source.html | 126 + ver-1.11.0/sfc_climo_gen/jquery.js | 115 + .../man/man3/adjust_for_landice.3 | 1 + .../sfc_climo_gen/man/man3/data_field_mdl.3 | 1 + .../sfc_climo_gen/man/man3/day_of_rec.3 | 1 + .../man/man3/define_model_grid.3 | 1 + .../man/man3/define_source_grid.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/driver.3 | 1 + .../sfc_climo_gen/man/man3/driver.F90.3 | 60 + .../sfc_climo_gen/man/man3/error_handler.3 | 1 + .../sfc_climo_gen/man/man3/field_names.3 | 1 + .../man/man3/fract_vegsoil_type.3 | 1 + .../sfc_climo_gen/man/man3/get_model_info.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/grid_mdl.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/grid_src.3 | 1 + .../sfc_climo_gen/man/man3/grid_tiles.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/halo.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/i_mdl.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/i_src.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/ij_mdl.3 | 1 + .../sfc_climo_gen/man/man3/input_facsf_file.3 | 1 + .../man/man3/input_leaf_area_index_file.3 | 1 + .../man/man3/input_maximum_snow_albedo_file.3 | 1 + .../man/man3/input_slope_type_file.3 | 1 + .../man/man3/input_snowfree_albedo_file.3 | 1 + .../man/man3/input_soil_color_file.3 | 1 + .../man/man3/input_soil_type_file.3 | 1 + .../man3/input_substrate_temperature_file.3 | 1 + .../man3/input_vegetation_greenness_file.3 | 1 + .../man/man3/input_vegetation_type_file.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/interp.3 | 1 + .../sfc_climo_gen/man/man3/interp.F90.3 | 104 + .../sfc_climo_gen/man/man3/interp_frac_cats.3 | 1 + .../man/man3/interp_frac_cats.F90.3 | 70 + ver-1.11.0/sfc_climo_gen/man/man3/j_mdl.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/j_src.3 | 1 + .../man/man3/land_frac_field_mdl.3 | 1 + .../man/man3/latitude_field_mdl.3 | 1 + .../man/man3/leaf_area_index_method.3 | 1 + .../man/man3/longitude_field_mdl.3 | 1 + .../sfc_climo_gen/man/man3/mask_field_mdl.3 | 1 + .../man/man3/maximum_snow_albedo_method.3 | 1 + ..._UTILS_sorc_sfc_climo_gen.fd_docs_README.3 | 8 + ver-1.11.0/sfc_climo_gen/man/man3/missing.3 | 1 + .../sfc_climo_gen/man/man3/model_grid.3 | 302 ++ .../sfc_climo_gen/man/man3/model_grid.F90.3 | 111 + .../man/man3/model_grid_cleanup.3 | 1 + .../sfc_climo_gen/man/man3/mosaic_file_mdl.3 | 1 + .../sfc_climo_gen/man/man3/netcdf_err.3 | 1 + .../sfc_climo_gen/man/man3/num_fields.3 | 1 + .../sfc_climo_gen/man/man3/num_records.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/num_tiles.3 | 1 + .../sfc_climo_gen/man/man3/num_time_recs.3 | 1 + .../sfc_climo_gen/man/man3/orog_dir_mdl.3 | 1 + .../sfc_climo_gen/man/man3/orog_files_mdl.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/output.3 | 1 + .../sfc_climo_gen/man/man3/output.f90.3 | 84 + .../sfc_climo_gen/man/man3/output_driver.3 | 1 + .../sfc_climo_gen/man/man3/output_frac_cats.3 | 115 + .../man/man3/output_frac_cats.F90.3 | 51 + .../sfc_climo_gen/man/man3/program_setup.3 | 304 ++ .../man/man3/program_setup.f90.3 | 127 + .../man/man3/read_setup_namelist.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/search.3 | 1 + .../sfc_climo_gen/man/man3/search.f90.3 | 79 + .../sfc_climo_gen/man/man3/search_frac_cats.3 | 1 + .../man/man3/search_frac_cats.f90.3 | 81 + .../man/man3/snowfree_albedo_method.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/source.3 | 1 + .../sfc_climo_gen/man/man3/source_grid.3 | 212 + .../sfc_climo_gen/man/man3/source_grid.F90.3 | 91 + .../man/man3/source_grid_cleanup.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/utils.3 | 97 + ver-1.11.0/sfc_climo_gen/man/man3/utils.f90.3 | 51 + .../man/man3/vegetation_greenness_method.3 | 1 + .../sfc_climo_gen/man/man3/vegt_field_mdl.3 | 1 + ver-1.11.0/sfc_climo_gen/man/man3/writeit.3 | 1 + ...LS_sorc_sfc_climo_gen_8fd_docs_README.html | 106 + ver-1.11.0/sfc_climo_gen/menu.js | 50 + ver-1.11.0/sfc_climo_gen/menudata.js | 64 + .../sfc_climo_gen/model__grid_8F90.html | 181 + ver-1.11.0/sfc_climo_gen/model__grid_8F90.js | 19 + .../model__grid_8F90_source.html | 130 + .../sfc_climo_gen/namespacemembers.html | 313 ++ .../sfc_climo_gen/namespacemembers_func.html | 132 + .../sfc_climo_gen/namespacemembers_vars.html | 271 + .../sfc_climo_gen/namespacemodel__grid.html | 592 +++ .../namespaceoutput__frac__cats.html | 298 ++ .../namespaceprogram__setup.html | 606 +++ ver-1.11.0/sfc_climo_gen/namespaces.html | 113 + ver-1.11.0/sfc_climo_gen/namespaces_dup.js | 8 + .../sfc_climo_gen/namespacesource__grid.html | 420 ++ ver-1.11.0/sfc_climo_gen/namespaceutils.html | 211 + ver-1.11.0/sfc_climo_gen/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/sfc_climo_gen/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/sfc_climo_gen/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/sfc_climo_gen/navtree.css | 146 + ver-1.11.0/sfc_climo_gen/navtree.js | 540 ++ ver-1.11.0/sfc_climo_gen/navtreedata.js | 53 + ver-1.11.0/sfc_climo_gen/navtreeindex0.js | 101 + ver-1.11.0/sfc_climo_gen/open.png | Bin 0 -> 123 bytes ver-1.11.0/sfc_climo_gen/output_8f90.html | 220 + ver-1.11.0/sfc_climo_gen/output_8f90.js | 4 + .../sfc_climo_gen/output_8f90_source.html | 120 + .../output__frac__cats_8F90.html | 135 + .../sfc_climo_gen/output__frac__cats_8F90.js | 5 + .../output__frac__cats_8F90_source.html | 119 + ver-1.11.0/sfc_climo_gen/pages.html | 109 + .../sfc_climo_gen/program__setup_8f90.html | 193 + .../sfc_climo_gen/program__setup_8f90.js | 23 + .../program__setup_8f90_source.html | 126 + ver-1.11.0/sfc_climo_gen/resize.js | 136 + ver-1.11.0/sfc_climo_gen/search/all_0.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_0.js | 4 + ver-1.11.0/sfc_climo_gen/search/all_1.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_1.js | 9 + ver-1.11.0/sfc_climo_gen/search/all_10.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_10.js | 5 + ver-1.11.0/sfc_climo_gen/search/all_11.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_11.js | 4 + ver-1.11.0/sfc_climo_gen/search/all_2.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_2.js | 4 + ver-1.11.0/sfc_climo_gen/search/all_3.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_3.js | 5 + ver-1.11.0/sfc_climo_gen/search/all_4.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_4.js | 7 + ver-1.11.0/sfc_climo_gen/search/all_5.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_5.js | 4 + ver-1.11.0/sfc_climo_gen/search/all_6.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_6.js | 20 + ver-1.11.0/sfc_climo_gen/search/all_7.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_7.js | 5 + ver-1.11.0/sfc_climo_gen/search/all_8.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_8.js | 7 + ver-1.11.0/sfc_climo_gen/search/all_9.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_9.js | 10 + ver-1.11.0/sfc_climo_gen/search/all_a.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_a.js | 8 + ver-1.11.0/sfc_climo_gen/search/all_b.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_b.js | 10 + ver-1.11.0/sfc_climo_gen/search/all_c.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_c.js | 5 + ver-1.11.0/sfc_climo_gen/search/all_d.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_d.js | 5 + ver-1.11.0/sfc_climo_gen/search/all_e.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_e.js | 13 + ver-1.11.0/sfc_climo_gen/search/all_f.html | 30 + ver-1.11.0/sfc_climo_gen/search/all_f.js | 5 + ver-1.11.0/sfc_climo_gen/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/sfc_climo_gen/search/files_0.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_0.js | 4 + ver-1.11.0/sfc_climo_gen/search/files_1.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_1.js | 5 + ver-1.11.0/sfc_climo_gen/search/files_2.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_2.js | 4 + ver-1.11.0/sfc_climo_gen/search/files_3.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_3.js | 5 + ver-1.11.0/sfc_climo_gen/search/files_4.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_4.js | 4 + ver-1.11.0/sfc_climo_gen/search/files_5.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_5.js | 6 + ver-1.11.0/sfc_climo_gen/search/files_6.html | 30 + ver-1.11.0/sfc_climo_gen/search/files_6.js | 4 + .../sfc_climo_gen/search/functions_0.html | 30 + .../sfc_climo_gen/search/functions_0.js | 4 + .../sfc_climo_gen/search/functions_1.html | 30 + .../sfc_climo_gen/search/functions_1.js | 6 + .../sfc_climo_gen/search/functions_2.html | 30 + .../sfc_climo_gen/search/functions_2.js | 4 + .../sfc_climo_gen/search/functions_3.html | 30 + .../sfc_climo_gen/search/functions_3.js | 4 + .../sfc_climo_gen/search/functions_4.html | 30 + .../sfc_climo_gen/search/functions_4.js | 5 + .../sfc_climo_gen/search/functions_5.html | 30 + .../sfc_climo_gen/search/functions_5.js | 4 + .../sfc_climo_gen/search/functions_6.html | 30 + .../sfc_climo_gen/search/functions_6.js | 4 + .../sfc_climo_gen/search/functions_7.html | 30 + .../sfc_climo_gen/search/functions_7.js | 5 + .../sfc_climo_gen/search/functions_8.html | 30 + .../sfc_climo_gen/search/functions_8.js | 4 + .../sfc_climo_gen/search/functions_9.html | 30 + .../sfc_climo_gen/search/functions_9.js | 6 + .../sfc_climo_gen/search/functions_a.html | 30 + .../sfc_climo_gen/search/functions_a.js | 4 + ver-1.11.0/sfc_climo_gen/search/mag_sel.png | Bin 0 -> 563 bytes .../sfc_climo_gen/search/namespaces_0.html | 30 + .../sfc_climo_gen/search/namespaces_0.js | 4 + .../sfc_climo_gen/search/namespaces_1.html | 30 + .../sfc_climo_gen/search/namespaces_1.js | 4 + .../sfc_climo_gen/search/namespaces_2.html | 30 + .../sfc_climo_gen/search/namespaces_2.js | 4 + .../sfc_climo_gen/search/namespaces_3.html | 30 + .../sfc_climo_gen/search/namespaces_3.js | 4 + .../sfc_climo_gen/search/namespaces_4.html | 30 + .../sfc_climo_gen/search/namespaces_4.js | 4 + .../sfc_climo_gen/search/nomatches.html | 12 + ver-1.11.0/sfc_climo_gen/search/pages_0.html | 30 + ver-1.11.0/sfc_climo_gen/search/pages_0.js | 4 + ver-1.11.0/sfc_climo_gen/search/pages_1.html | 30 + ver-1.11.0/sfc_climo_gen/search/pages_1.js | 4 + ver-1.11.0/sfc_climo_gen/search/search.css | 271 + ver-1.11.0/sfc_climo_gen/search/search.js | 814 +++ ver-1.11.0/sfc_climo_gen/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/sfc_climo_gen/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/sfc_climo_gen/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/sfc_climo_gen/search/searchdata.js | 30 + .../sfc_climo_gen/search/variables_0.html | 30 + .../sfc_climo_gen/search/variables_0.js | 5 + .../sfc_climo_gen/search/variables_1.html | 30 + .../sfc_climo_gen/search/variables_1.js | 5 + .../sfc_climo_gen/search/variables_2.html | 30 + .../sfc_climo_gen/search/variables_2.js | 6 + .../sfc_climo_gen/search/variables_3.html | 30 + .../sfc_climo_gen/search/variables_3.js | 4 + .../sfc_climo_gen/search/variables_4.html | 30 + .../sfc_climo_gen/search/variables_4.js | 16 + .../sfc_climo_gen/search/variables_5.html | 30 + .../sfc_climo_gen/search/variables_5.js | 5 + .../sfc_climo_gen/search/variables_6.html | 30 + .../sfc_climo_gen/search/variables_6.js | 7 + .../sfc_climo_gen/search/variables_7.html | 30 + .../sfc_climo_gen/search/variables_7.js | 7 + .../sfc_climo_gen/search/variables_8.html | 30 + .../sfc_climo_gen/search/variables_8.js | 7 + .../sfc_climo_gen/search/variables_9.html | 30 + .../sfc_climo_gen/search/variables_9.js | 5 + .../sfc_climo_gen/search/variables_a.html | 30 + .../sfc_climo_gen/search/variables_a.js | 5 + .../sfc_climo_gen/search/variables_b.html | 30 + .../sfc_climo_gen/search/variables_b.js | 5 + ver-1.11.0/sfc_climo_gen/search_8f90.html | 201 + ver-1.11.0/sfc_climo_gen/search_8f90.js | 4 + .../sfc_climo_gen/search_8f90_source.html | 106 + .../search__frac__cats_8f90.html | 208 + .../sfc_climo_gen/search__frac__cats_8f90.js | 4 + .../search__frac__cats_8f90_source.html | 106 + .../sfc__climo__gen_8md_source.html | 105 + .../sfc_climo_gen/source__grid_8F90.html | 166 + ver-1.11.0/sfc_climo_gen/source__grid_8F90.js | 14 + .../source__grid_8F90_source.html | 120 + ver-1.11.0/sfc_climo_gen/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/sfc_climo_gen/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/sfc_climo_gen/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/sfc_climo_gen/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/sfc_climo_gen/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/sfc_climo_gen/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/sfc_climo_gen/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/sfc_climo_gen/tabs.css | 1 + ver-1.11.0/sfc_climo_gen/utils_8f90.html | 135 + ver-1.11.0/sfc_climo_gen/utils_8f90.js | 5 + .../sfc_climo_gen/utils_8f90_source.html | 108 + ver-1.11.0/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/tabs.css | 1 + ver-1.11.0/vcoord_gen/README_8md_source.html | 105 + ver-1.11.0/vcoord_gen/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/vcoord_gen/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/vcoord_gen/closed.png | Bin 0 -> 132 bytes .../dir_d1522adfe0d0f9b268f9f6ec9cea4139.html | 118 + .../dir_d1522adfe0d0f9b268f9f6ec9cea4139.js | 6 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/vcoord_gen/doc.png | Bin 0 -> 746 bytes ver-1.11.0/vcoord_gen/doxygen.css | 1596 ++++++ ver-1.11.0/vcoord_gen/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/vcoord_gen/driver_8f90.html | 153 + ver-1.11.0/vcoord_gen/driver_8f90.js | 4 + ver-1.11.0/vcoord_gen/driver_8f90_source.html | 107 + ver-1.11.0/vcoord_gen/dynsections.js | 127 + ver-1.11.0/vcoord_gen/files.html | 113 + ver-1.11.0/vcoord_gen/files_dup.js | 4 + ver-1.11.0/vcoord_gen/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/vcoord_gen/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/vcoord_gen/globals.html | 114 + ver-1.11.0/vcoord_gen/globals_func.html | 114 + ver-1.11.0/vcoord_gen/index.html | 109 + ver-1.11.0/vcoord_gen/jquery.js | 115 + ver-1.11.0/vcoord_gen/man/man3/driver.3 | 1 + ver-1.11.0/vcoord_gen/man/man3/driver.f90.3 | 66 + ver-1.11.0/vcoord_gen/man/man3/lubksb.3 | 1 + ver-1.11.0/vcoord_gen/man/man3/ludcmp.3 | 1 + .../vcoord_gen/man/man3/matrix_utils.f90.3 | 129 + ...UFS_UTILS_sorc_vcoord_gen.fd_docs_README.3 | 8 + ver-1.11.0/vcoord_gen/man/man3/vcoord_gen.3 | 1 + .../vcoord_gen/man/man3/vcoord_gen.f90.3 | 174 + ver-1.11.0/vcoord_gen/matrix__utils_8f90.html | 266 + ver-1.11.0/vcoord_gen/matrix__utils_8f90.js | 5 + .../vcoord_gen/matrix__utils_8f90_source.html | 107 + ...UTILS_sorc_vcoord_gen_8fd_docs_README.html | 106 + ver-1.11.0/vcoord_gen/menu.js | 50 + ver-1.11.0/vcoord_gen/menudata.js | 31 + ver-1.11.0/vcoord_gen/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/vcoord_gen/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/vcoord_gen/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/vcoord_gen/navtree.css | 146 + ver-1.11.0/vcoord_gen/navtree.js | 540 ++ ver-1.11.0/vcoord_gen/navtreedata.js | 45 + ver-1.11.0/vcoord_gen/navtreeindex0.js | 22 + ver-1.11.0/vcoord_gen/open.png | Bin 0 -> 123 bytes ver-1.11.0/vcoord_gen/pages.html | 109 + ver-1.11.0/vcoord_gen/resize.js | 136 + ver-1.11.0/vcoord_gen/search/all_0.html | 30 + ver-1.11.0/vcoord_gen/search/all_0.js | 5 + ver-1.11.0/vcoord_gen/search/all_1.html | 30 + ver-1.11.0/vcoord_gen/search/all_1.js | 5 + ver-1.11.0/vcoord_gen/search/all_2.html | 30 + ver-1.11.0/vcoord_gen/search/all_2.js | 4 + ver-1.11.0/vcoord_gen/search/all_3.html | 30 + ver-1.11.0/vcoord_gen/search/all_3.js | 4 + ver-1.11.0/vcoord_gen/search/all_4.html | 30 + ver-1.11.0/vcoord_gen/search/all_4.js | 6 + ver-1.11.0/vcoord_gen/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/vcoord_gen/search/files_0.html | 30 + ver-1.11.0/vcoord_gen/search/files_0.js | 4 + ver-1.11.0/vcoord_gen/search/files_1.html | 30 + ver-1.11.0/vcoord_gen/search/files_1.js | 4 + ver-1.11.0/vcoord_gen/search/files_2.html | 30 + ver-1.11.0/vcoord_gen/search/files_2.js | 4 + ver-1.11.0/vcoord_gen/search/functions_0.html | 30 + ver-1.11.0/vcoord_gen/search/functions_0.js | 4 + ver-1.11.0/vcoord_gen/search/functions_1.html | 30 + ver-1.11.0/vcoord_gen/search/functions_1.js | 5 + ver-1.11.0/vcoord_gen/search/functions_2.html | 30 + ver-1.11.0/vcoord_gen/search/functions_2.js | 4 + ver-1.11.0/vcoord_gen/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/vcoord_gen/search/nomatches.html | 12 + ver-1.11.0/vcoord_gen/search/pages_0.html | 30 + ver-1.11.0/vcoord_gen/search/pages_0.js | 4 + ver-1.11.0/vcoord_gen/search/pages_1.html | 30 + ver-1.11.0/vcoord_gen/search/pages_1.js | 4 + ver-1.11.0/vcoord_gen/search/search.css | 271 + ver-1.11.0/vcoord_gen/search/search.js | 814 +++ ver-1.11.0/vcoord_gen/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/vcoord_gen/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/vcoord_gen/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/vcoord_gen/search/searchdata.js | 24 + ver-1.11.0/vcoord_gen/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/vcoord_gen/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/vcoord_gen/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/vcoord_gen/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/vcoord_gen/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/vcoord_gen/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/vcoord_gen/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/vcoord_gen/tabs.css | 1 + ver-1.11.0/vcoord_gen/vcoord__gen_8f90.html | 310 ++ ver-1.11.0/vcoord_gen/vcoord__gen_8f90.js | 4 + .../vcoord_gen/vcoord__gen_8f90_source.html | 108 + .../vcoord_gen/vcoord__gen_8md_source.html | 105 + ver-1.11.0/weight_gen/bc_s.png | Bin 0 -> 676 bytes ver-1.11.0/weight_gen/bdwn.png | Bin 0 -> 147 bytes ver-1.11.0/weight_gen/closed.png | Bin 0 -> 132 bytes .../dir_8d3ced11db02b59b76a5ffdd933c2db9.html | 112 + .../dir_8d3ced11db02b59b76a5ffdd933c2db9.js | 4 + .../dir_d8b772108138bf796aaa3f7fe4e09294.html | 109 + .../dir_d8b772108138bf796aaa3f7fe4e09294.js | 4 + ver-1.11.0/weight_gen/doc.png | Bin 0 -> 746 bytes ver-1.11.0/weight_gen/doxygen.css | 1596 ++++++ ver-1.11.0/weight_gen/doxygen.png | Bin 0 -> 3779 bytes ver-1.11.0/weight_gen/dynsections.js | 127 + ver-1.11.0/weight_gen/files.html | 111 + ver-1.11.0/weight_gen/files_dup.js | 4 + ver-1.11.0/weight_gen/folderclosed.png | Bin 0 -> 616 bytes ver-1.11.0/weight_gen/folderopen.png | Bin 0 -> 597 bytes ver-1.11.0/weight_gen/globals.html | 105 + ver-1.11.0/weight_gen/globals_func.html | 105 + ver-1.11.0/weight_gen/index.html | 109 + ver-1.11.0/weight_gen/jquery.js | 115 + ver-1.11.0/weight_gen/man/man3/scrip.3 | 1 + ver-1.11.0/weight_gen/man/man3/scrip.F90.3 | 58 + ver-1.11.0/weight_gen/menu.js | 50 + ver-1.11.0/weight_gen/menudata.js | 30 + ver-1.11.0/weight_gen/nav_f.png | Bin 0 -> 153 bytes ver-1.11.0/weight_gen/nav_g.png | Bin 0 -> 95 bytes ver-1.11.0/weight_gen/nav_h.png | Bin 0 -> 98 bytes ver-1.11.0/weight_gen/navtree.css | 146 + ver-1.11.0/weight_gen/navtree.js | 540 ++ ver-1.11.0/weight_gen/navtreedata.js | 44 + ver-1.11.0/weight_gen/navtreeindex0.js | 14 + ver-1.11.0/weight_gen/open.png | Bin 0 -> 123 bytes ver-1.11.0/weight_gen/resize.js | 136 + ver-1.11.0/weight_gen/scrip_8F90.html | 151 + ver-1.11.0/weight_gen/scrip_8F90.js | 4 + ver-1.11.0/weight_gen/scrip_8F90_source.html | 106 + ver-1.11.0/weight_gen/search/all_0.html | 30 + ver-1.11.0/weight_gen/search/all_0.js | 5 + ver-1.11.0/weight_gen/search/all_1.html | 30 + ver-1.11.0/weight_gen/search/all_1.js | 4 + ver-1.11.0/weight_gen/search/close.png | Bin 0 -> 273 bytes ver-1.11.0/weight_gen/search/files_0.html | 30 + ver-1.11.0/weight_gen/search/files_0.js | 4 + ver-1.11.0/weight_gen/search/functions_0.html | 30 + ver-1.11.0/weight_gen/search/functions_0.js | 4 + ver-1.11.0/weight_gen/search/mag_sel.png | Bin 0 -> 563 bytes ver-1.11.0/weight_gen/search/nomatches.html | 12 + ver-1.11.0/weight_gen/search/pages_0.html | 30 + ver-1.11.0/weight_gen/search/pages_0.js | 4 + ver-1.11.0/weight_gen/search/search.css | 271 + ver-1.11.0/weight_gen/search/search.js | 814 +++ ver-1.11.0/weight_gen/search/search_l.png | Bin 0 -> 604 bytes ver-1.11.0/weight_gen/search/search_m.png | Bin 0 -> 158 bytes ver-1.11.0/weight_gen/search/search_r.png | Bin 0 -> 612 bytes ver-1.11.0/weight_gen/search/searchdata.js | 24 + ver-1.11.0/weight_gen/splitbar.png | Bin 0 -> 314 bytes ver-1.11.0/weight_gen/sync_off.png | Bin 0 -> 853 bytes ver-1.11.0/weight_gen/sync_on.png | Bin 0 -> 845 bytes ver-1.11.0/weight_gen/tab_a.png | Bin 0 -> 142 bytes ver-1.11.0/weight_gen/tab_b.png | Bin 0 -> 169 bytes ver-1.11.0/weight_gen/tab_h.png | Bin 0 -> 177 bytes ver-1.11.0/weight_gen/tab_s.png | Bin 0 -> 184 bytes ver-1.11.0/weight_gen/tabs.css | 1 + .../weight_gen/user__guide_8md_source.html | 105 + 4491 files changed, 326528 insertions(+) create mode 100644 ver-1.11.0/bc_s.png create mode 100644 ver-1.11.0/bdwn.png create mode 100644 ver-1.11.0/chgres_cube/annotated.html create mode 100644 ver-1.11.0/chgres_cube/annotated_dup.js create mode 100644 ver-1.11.0/chgres_cube/atm__input__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/atm__input__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/atm__input__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/atmosphere_8F90.html create mode 100644 ver-1.11.0/chgres_cube/atmosphere_8F90.js create mode 100644 ver-1.11.0/chgres_cube/atmosphere_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/atmosphere__target__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/bc_s.png create mode 100644 ver-1.11.0/chgres_cube/bdwn.png create mode 100644 ver-1.11.0/chgres_cube/chgres_8F90.html create mode 100644 ver-1.11.0/chgres_cube/chgres_8F90.js create mode 100644 ver-1.11.0/chgres_cube/chgres_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/chgres__cube_8md_source.html create mode 100644 ver-1.11.0/chgres_cube/classes.html create mode 100644 ver-1.11.0/chgres_cube/closed.png create mode 100644 ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.html create mode 100644 ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.js create mode 100644 ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/chgres_cube/doc.png create mode 100644 ver-1.11.0/chgres_cube/doxygen.css create mode 100644 ver-1.11.0/chgres_cube/doxygen.png create mode 100644 ver-1.11.0/chgres_cube/dynsections.js create mode 100644 ver-1.11.0/chgres_cube/files.html create mode 100644 ver-1.11.0/chgres_cube/files_dup.js create mode 100644 ver-1.11.0/chgres_cube/folderclosed.png create mode 100644 ver-1.11.0/chgres_cube/folderopen.png create mode 100644 ver-1.11.0/chgres_cube/functions.html create mode 100644 ver-1.11.0/chgres_cube/functions_vars.html create mode 100644 ver-1.11.0/chgres_cube/globals.html create mode 100644 ver-1.11.0/chgres_cube/globals_func.html create mode 100644 ver-1.11.0/chgres_cube/grib2__util_8F90.html create mode 100644 ver-1.11.0/chgres_cube/grib2__util_8F90.js create mode 100644 ver-1.11.0/chgres_cube/grib2__util_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/index.html create mode 100644 ver-1.11.0/chgres_cube/jquery.js create mode 100644 ver-1.11.0/chgres_cube/man/man3/DINT2P.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/FRH2O.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/READ_FV3_GRID_DATA_NETCDF.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/RSEARCH.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/TERP3.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/VINTG.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/VINTG_THOMP_MP_CLIMO.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/VINTG_WAM.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/adjust_soil_levels.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/adjust_soilt_for_terrain.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/alnsf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/alnwf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/alvsf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/alvwf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_core_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_input_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_input_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_tracer_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atm_weight_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atmosphere.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atmosphere.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atmosphere_driver.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atmosphere_target_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/atmosphere_target_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/bb_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/blim.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/c_0_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/c_0_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/c_d_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/c_d_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/calc_liq_soil_moisture.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/calc_soil_params.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/calc_soil_params_driver.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/calcalpha_rotlatlon.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/canopy_mc_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/canopy_mc_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/check_cnwat.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/check_soilt.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/chgres.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/chgres.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/chgres_var_names.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_all_target_atm_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_all_target_sfc_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_atmosphere_target_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_input_atm_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_input_nst_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_input_sfc_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_input_target_grid_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_static_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_target_atm_b4adj_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_target_nst_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_target_sfc_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cleanup_thomp_mp_climo_input_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/compute_zh.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_atm.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_nst.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_omega.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_sfc.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_winds_to_uv.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/convert_winds_to_xyz.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/create_atm_b4adj_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/create_atm_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/create_nst_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/create_static_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/create_surface_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cres_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cycle_day.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cycle_hour.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cycle_mon.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/cycle_year.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/d_conv_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/d_conv_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/data_dir_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/define_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/define_input_grid_gaussian.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/define_input_grid_grib2.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/define_input_grid_mosaic.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/define_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/delp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dpres_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/drysmc_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/drysmc_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dt_cool_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dt_cool_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dzdt_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dzdt_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/dzdt_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/error_handler.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/external_model.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/f10m_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/f10m_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/facsf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/facwf_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ffmm_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ffmm_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/field_var_names.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/fix_dir_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/fpvsnew.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/frz_h2o.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/frz_ice.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/gdt_to_gds.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/geogrid_file_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/get_model_latlons.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/get_model_mask_terrain.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/get_static_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/get_var_cond.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/gettemp.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ghp8.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/grav.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/grib2_file_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/grib2_util.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/grib2_util.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/gridrot.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/halo_blend.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/halo_bndy.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/handle_grib_error.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/hlice.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/horiz_interp_thomp_mp_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/i_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/i_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/i_thomp_mp_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/icet_default.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ifd_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ifd_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ij_to_i_j.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/init_atm_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/init_sfc_esmf_fields.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/input_grid_type.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/input_type.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/interp.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ip1_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ip1_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/j_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/j_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/j_thomp_mp_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/jp1_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/jp1_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lai_from_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lai_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lai_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/landmask_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/landsea_mask_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_s_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_w_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/latitude_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lev_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lev_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lev_thomp_mp_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/levp1_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/levp1_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_s_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_w_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/longitude_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lsoil_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/lsoil_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/max_tracers.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/max_veg_greenness_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/max_veg_greenness_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/maxsmc_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/maxsmc_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/min_veg_greenness_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/min_veg_greenness_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/minmax_vgfrc_from_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/missing_var_methods.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/missing_var_values.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/model_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/model_grid.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/mosaic_file_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/mosaic_file_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/mxsno_albedo_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/netcdf_err.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/newpr1.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/newps.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/nsoill_out.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/nst_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/nst_input_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/nst_land_fill.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/num_tiles_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/num_tiles_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/num_tracers.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/num_tracers_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/nvcoord_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/orog_dir_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/orog_dir_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/orog_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/orog_files_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/p.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/pres_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/pres_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/pres_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/program_setup.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/program_setup.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ps_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ps_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ps_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/q2m_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/q2m_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qc_check.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnifa_climo_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnifa_climo_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnifa_climo_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnwfa_climo_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnwfa_climo_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qnwfa_climo_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qrain_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/qrain_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/quicksort.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_from_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_grib_soil.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_gaussian_nemsio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_gaussian_netcdf_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_gfs_gaussian_nemsio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_gfs_sigio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_grib2_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_restart_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_atm_tiled_history_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_nst_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_nst_nemsio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_nst_netcdf_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_gaussian_nemsio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_gfs_gaussian_nemsio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_gfs_sfcio_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_grib2_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_netcdf_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_input_sfc_restart_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_setup_namelist.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_static_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_thomp_mp_climo_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_varmap.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_vcoord_info.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/read_winds.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/refsmc_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/refsmc_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/regional.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/regrid_many.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/rescale_soil_moisture.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/rh2spfh.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/rh2spfh_gfs.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/roughness.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/satpsi_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_depth_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_depth_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_fract_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_fract_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_skin_temp_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seaice_skin_temp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/seamask_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/search.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/search_many.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/search_util.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/search_util.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/sfc_files_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/sfc_input_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/skin_temp_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/skin_temp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/slevs.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/slope_type_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/snow_depth_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/snow_depth_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/snow_liq_equiv_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/snow_liq_equiv_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soil_temp_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soil_temp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soil_type_from_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soil_type_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soil_type_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soilm_liq_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soilm_liq_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soilm_tot_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/soilm_tot_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/sotyp_from_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/srflag_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/srflag_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/sst_guess.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/static_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/static_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/substrate_temp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface_driver.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface_realptr_2d.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface_realptr_3d.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface_target_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/surface_target_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/t2m_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/t2m_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/temp_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/temp_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/temp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/terrain_from_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/terrain_from_input_grid_land.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/terrain_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/terrain_interp_to_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/terrain_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tg3_from_soil.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thomp_mp_climo_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thomp_mp_climo_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thomp_pres_climo_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thomp_pres_climo_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thompson_mp_climo_data.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/thompson_mp_climo_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tiles_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/to_lower.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/to_upper.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tprcp_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tprcp_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tracers.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tracers_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tracers_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tracers_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tracers_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tref_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/tref_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/u_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/u_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/u_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/use_thomp_mp_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ustar_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ustar_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/utils.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/v_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/v_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/v_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/varmap_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/vcoord_file_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/vcoord_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_greenness_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_greenness_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_type_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_type_landice_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_type_landice_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/veg_type_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/vgfrc_from_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/vgtyp_from_climo.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/w_0_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/w_0_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/w_d_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/w_d_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/wam_climo_data.f90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/wam_cold_start.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/wam_parm_file.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/wltsmc_input.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/wltsmc_target.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/write_data.F90.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/write_fv3_atm_bndy_data_netcdf.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/write_fv3_atm_data_netcdf.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/write_fv3_atm_header_netcdf.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/write_fv3_sfc_data_netcdf.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xs_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xs_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xt_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xt_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xtts_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xtts_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xu_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xu_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xv_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xv_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xwind_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xwind_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xwind_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xwind_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xwind_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xz_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xz_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xzts_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/xzts_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ywind_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ywind_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ywind_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ywind_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/ywind_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/z0_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/z0_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/z_c_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/z_c_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zh_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zm_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zm_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zwind_b4adj_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zwind_input_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zwind_s_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zwind_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/man/man3/zwind_w_target_grid.3 create mode 100644 ver-1.11.0/chgres_cube/menu.js create mode 100644 ver-1.11.0/chgres_cube/menudata.js create mode 100644 ver-1.11.0/chgres_cube/model__grid_8F90.html create mode 100644 ver-1.11.0/chgres_cube/model__grid_8F90.js create mode 100644 ver-1.11.0/chgres_cube/model__grid_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/namespaceatm__input__data.html create mode 100644 ver-1.11.0/chgres_cube/namespaceatmosphere.html create mode 100644 ver-1.11.0/chgres_cube/namespaceatmosphere__target__data.html create mode 100644 ver-1.11.0/chgres_cube/namespacegrib2__util.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_b.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_c.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_d.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_dup.js create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_e.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_f.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_func.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_g.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_h.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_i.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_j.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_l.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_m.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_n.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_o.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_p.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_q.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_r.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_s.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_t.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_u.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_v.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars.js create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_b.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_c.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_d.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_e.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_f.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_g.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_h.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_i.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_j.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_l.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_m.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_n.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_o.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_p.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_q.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_r.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_s.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_t.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_u.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_v.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_w.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_x.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_y.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_vars_z.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_w.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_x.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_y.html create mode 100644 ver-1.11.0/chgres_cube/namespacemembers_z.html create mode 100644 ver-1.11.0/chgres_cube/namespacemodel__grid.html create mode 100644 ver-1.11.0/chgres_cube/namespaceprogram__setup.html create mode 100644 ver-1.11.0/chgres_cube/namespaces.html create mode 100644 ver-1.11.0/chgres_cube/namespaces_dup.js create mode 100644 ver-1.11.0/chgres_cube/namespacesearch__util.html create mode 100644 ver-1.11.0/chgres_cube/namespacestatic__data.html create mode 100644 ver-1.11.0/chgres_cube/namespacesurface.html create mode 100644 ver-1.11.0/chgres_cube/namespacesurface.js create mode 100644 ver-1.11.0/chgres_cube/namespacesurface__target__data.html create mode 100644 ver-1.11.0/chgres_cube/namespacethompson__mp__climo__data.html create mode 100644 ver-1.11.0/chgres_cube/nav_f.png create mode 100644 ver-1.11.0/chgres_cube/nav_g.png create mode 100644 ver-1.11.0/chgres_cube/nav_h.png create mode 100644 ver-1.11.0/chgres_cube/navtree.css create mode 100644 ver-1.11.0/chgres_cube/navtree.js create mode 100644 ver-1.11.0/chgres_cube/navtreedata.js create mode 100644 ver-1.11.0/chgres_cube/navtreeindex0.js create mode 100644 ver-1.11.0/chgres_cube/navtreeindex1.js create mode 100644 ver-1.11.0/chgres_cube/nst__input__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/nst__input__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/nst__input__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/open.png create mode 100644 ver-1.11.0/chgres_cube/program__setup_8F90.html create mode 100644 ver-1.11.0/chgres_cube/program__setup_8F90.js create mode 100644 ver-1.11.0/chgres_cube/program__setup_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/resize.js create mode 100644 ver-1.11.0/chgres_cube/search/all_0.html create mode 100644 ver-1.11.0/chgres_cube/search/all_0.js create mode 100644 ver-1.11.0/chgres_cube/search/all_1.html create mode 100644 ver-1.11.0/chgres_cube/search/all_1.js create mode 100644 ver-1.11.0/chgres_cube/search/all_10.html create mode 100644 ver-1.11.0/chgres_cube/search/all_10.js create mode 100644 ver-1.11.0/chgres_cube/search/all_11.html create mode 100644 ver-1.11.0/chgres_cube/search/all_11.js create mode 100644 ver-1.11.0/chgres_cube/search/all_12.html create mode 100644 ver-1.11.0/chgres_cube/search/all_12.js create mode 100644 ver-1.11.0/chgres_cube/search/all_13.html create mode 100644 ver-1.11.0/chgres_cube/search/all_13.js create mode 100644 ver-1.11.0/chgres_cube/search/all_14.html create mode 100644 ver-1.11.0/chgres_cube/search/all_14.js create mode 100644 ver-1.11.0/chgres_cube/search/all_15.html create mode 100644 ver-1.11.0/chgres_cube/search/all_15.js create mode 100644 ver-1.11.0/chgres_cube/search/all_16.html create mode 100644 ver-1.11.0/chgres_cube/search/all_16.js create mode 100644 ver-1.11.0/chgres_cube/search/all_17.html create mode 100644 ver-1.11.0/chgres_cube/search/all_17.js create mode 100644 ver-1.11.0/chgres_cube/search/all_18.html create mode 100644 ver-1.11.0/chgres_cube/search/all_18.js create mode 100644 ver-1.11.0/chgres_cube/search/all_2.html create mode 100644 ver-1.11.0/chgres_cube/search/all_2.js create mode 100644 ver-1.11.0/chgres_cube/search/all_3.html create mode 100644 ver-1.11.0/chgres_cube/search/all_3.js create mode 100644 ver-1.11.0/chgres_cube/search/all_4.html create mode 100644 ver-1.11.0/chgres_cube/search/all_4.js create mode 100644 ver-1.11.0/chgres_cube/search/all_5.html create mode 100644 ver-1.11.0/chgres_cube/search/all_5.js create mode 100644 ver-1.11.0/chgres_cube/search/all_6.html create mode 100644 ver-1.11.0/chgres_cube/search/all_6.js create mode 100644 ver-1.11.0/chgres_cube/search/all_7.html create mode 100644 ver-1.11.0/chgres_cube/search/all_7.js create mode 100644 ver-1.11.0/chgres_cube/search/all_8.html create mode 100644 ver-1.11.0/chgres_cube/search/all_8.js create mode 100644 ver-1.11.0/chgres_cube/search/all_9.html create mode 100644 ver-1.11.0/chgres_cube/search/all_9.js create mode 100644 ver-1.11.0/chgres_cube/search/all_a.html create mode 100644 ver-1.11.0/chgres_cube/search/all_a.js create mode 100644 ver-1.11.0/chgres_cube/search/all_b.html create mode 100644 ver-1.11.0/chgres_cube/search/all_b.js create mode 100644 ver-1.11.0/chgres_cube/search/all_c.html create mode 100644 ver-1.11.0/chgres_cube/search/all_c.js create mode 100644 ver-1.11.0/chgres_cube/search/all_d.html create mode 100644 ver-1.11.0/chgres_cube/search/all_d.js create mode 100644 ver-1.11.0/chgres_cube/search/all_e.html create mode 100644 ver-1.11.0/chgres_cube/search/all_e.js create mode 100644 ver-1.11.0/chgres_cube/search/all_f.html create mode 100644 ver-1.11.0/chgres_cube/search/all_f.js create mode 100644 ver-1.11.0/chgres_cube/search/classes_0.html create mode 100644 ver-1.11.0/chgres_cube/search/classes_0.js create mode 100644 ver-1.11.0/chgres_cube/search/close.png create mode 100644 ver-1.11.0/chgres_cube/search/files_0.html create mode 100644 ver-1.11.0/chgres_cube/search/files_0.js create mode 100644 ver-1.11.0/chgres_cube/search/files_1.html create mode 100644 ver-1.11.0/chgres_cube/search/files_1.js create mode 100644 ver-1.11.0/chgres_cube/search/files_2.html create mode 100644 ver-1.11.0/chgres_cube/search/files_2.js create mode 100644 ver-1.11.0/chgres_cube/search/files_3.html create mode 100644 ver-1.11.0/chgres_cube/search/files_3.js create mode 100644 ver-1.11.0/chgres_cube/search/files_4.html create mode 100644 ver-1.11.0/chgres_cube/search/files_4.js create mode 100644 ver-1.11.0/chgres_cube/search/files_5.html create mode 100644 ver-1.11.0/chgres_cube/search/files_5.js create mode 100644 ver-1.11.0/chgres_cube/search/files_6.html create mode 100644 ver-1.11.0/chgres_cube/search/files_6.js create mode 100644 ver-1.11.0/chgres_cube/search/files_7.html create mode 100644 ver-1.11.0/chgres_cube/search/files_7.js create mode 100644 ver-1.11.0/chgres_cube/search/files_8.html create mode 100644 ver-1.11.0/chgres_cube/search/files_8.js create mode 100644 ver-1.11.0/chgres_cube/search/files_9.html create mode 100644 ver-1.11.0/chgres_cube/search/files_9.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_0.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_0.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_1.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_1.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_2.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_2.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_3.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_3.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_4.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_4.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_5.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_5.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_6.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_6.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_7.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_7.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_8.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_8.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_9.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_9.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_a.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_a.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_b.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_b.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_c.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_c.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_d.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_d.js create mode 100644 ver-1.11.0/chgres_cube/search/functions_e.html create mode 100644 ver-1.11.0/chgres_cube/search/functions_e.js create mode 100644 ver-1.11.0/chgres_cube/search/mag_sel.png create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_0.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_0.js create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_1.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_1.js create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_2.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_2.js create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_3.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_3.js create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_4.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_4.js create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_5.html create mode 100644 ver-1.11.0/chgres_cube/search/namespaces_5.js create mode 100644 ver-1.11.0/chgres_cube/search/nomatches.html create mode 100644 ver-1.11.0/chgres_cube/search/pages_0.html create mode 100644 ver-1.11.0/chgres_cube/search/pages_0.js create mode 100644 ver-1.11.0/chgres_cube/search/search.css create mode 100644 ver-1.11.0/chgres_cube/search/search.js create mode 100644 ver-1.11.0/chgres_cube/search/search_l.png create mode 100644 ver-1.11.0/chgres_cube/search/search_m.png create mode 100644 ver-1.11.0/chgres_cube/search/search_r.png create mode 100644 ver-1.11.0/chgres_cube/search/searchdata.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_0.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_0.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_1.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_1.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_10.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_10.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_11.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_11.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_12.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_12.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_13.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_13.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_14.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_14.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_15.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_15.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_16.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_16.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_17.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_17.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_18.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_18.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_2.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_2.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_3.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_3.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_4.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_4.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_5.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_5.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_6.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_6.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_7.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_7.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_8.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_8.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_9.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_9.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_a.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_a.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_b.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_b.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_c.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_c.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_d.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_d.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_e.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_e.js create mode 100644 ver-1.11.0/chgres_cube/search/variables_f.html create mode 100644 ver-1.11.0/chgres_cube/search/variables_f.js create mode 100644 ver-1.11.0/chgres_cube/search__util_8F90.html create mode 100644 ver-1.11.0/chgres_cube/search__util_8F90.js create mode 100644 ver-1.11.0/chgres_cube/search__util_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/sfc__input__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/sfc__input__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/sfc__input__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/splitbar.png create mode 100644 ver-1.11.0/chgres_cube/static__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/static__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/static__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.html create mode 100644 ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.js create mode 100644 ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.html create mode 100644 ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.js create mode 100644 ver-1.11.0/chgres_cube/surface_8F90.html create mode 100644 ver-1.11.0/chgres_cube/surface_8F90.js create mode 100644 ver-1.11.0/chgres_cube/surface_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/surface__target__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/surface__target__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/surface__target__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/sync_off.png create mode 100644 ver-1.11.0/chgres_cube/sync_on.png create mode 100644 ver-1.11.0/chgres_cube/tab_a.png create mode 100644 ver-1.11.0/chgres_cube/tab_b.png create mode 100644 ver-1.11.0/chgres_cube/tab_h.png create mode 100644 ver-1.11.0/chgres_cube/tab_s.png create mode 100644 ver-1.11.0/chgres_cube/tabs.css create mode 100644 ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/utils_8F90.html create mode 100644 ver-1.11.0/chgres_cube/utils_8F90.js create mode 100644 ver-1.11.0/chgres_cube/utils_8F90_source.html create mode 100644 ver-1.11.0/chgres_cube/wam__climo__data_8f90.html create mode 100644 ver-1.11.0/chgres_cube/wam__climo__data_8f90.js create mode 100644 ver-1.11.0/chgres_cube/wam__climo__data_8f90_source.html create mode 100644 ver-1.11.0/chgres_cube/write__data_8F90.html create mode 100644 ver-1.11.0/chgres_cube/write__data_8F90.js create mode 100644 ver-1.11.0/chgres_cube/write__data_8F90_source.html create mode 100644 ver-1.11.0/closed.png create mode 100644 ver-1.11.0/cpld_gridgen/README_8md_source.html create mode 100644 ver-1.11.0/cpld_gridgen/angles_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/angles_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/angles_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/annotated.html create mode 100644 ver-1.11.0/cpld_gridgen/annotated_dup.js create mode 100644 ver-1.11.0/cpld_gridgen/bc_s.png create mode 100644 ver-1.11.0/cpld_gridgen/bdwn.png create mode 100644 ver-1.11.0/cpld_gridgen/charstrings_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/charstrings_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/charstrings_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/cicegrid_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/cicegrid_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/cicegrid_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/classes.html create mode 100644 ver-1.11.0/cpld_gridgen/closed.png create mode 100644 ver-1.11.0/cpld_gridgen/cpld__gridgen_8md_source.html create mode 100644 ver-1.11.0/cpld_gridgen/debugprint_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/debugprint_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/debugprint_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.html create mode 100644 ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.js create mode 100644 ver-1.11.0/cpld_gridgen/doc.png create mode 100644 ver-1.11.0/cpld_gridgen/doxygen.css create mode 100644 ver-1.11.0/cpld_gridgen/doxygen.png create mode 100644 ver-1.11.0/cpld_gridgen/dynsections.js create mode 100644 ver-1.11.0/cpld_gridgen/files.html create mode 100644 ver-1.11.0/cpld_gridgen/files_dup.js create mode 100644 ver-1.11.0/cpld_gridgen/folderclosed.png create mode 100644 ver-1.11.0/cpld_gridgen/folderopen.png create mode 100644 ver-1.11.0/cpld_gridgen/functions.html create mode 100644 ver-1.11.0/cpld_gridgen/functions_vars.html create mode 100644 ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/globals.html create mode 100644 ver-1.11.0/cpld_gridgen/globals_func.html create mode 100644 ver-1.11.0/cpld_gridgen/grdvars_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/grdvars_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/grdvars_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/index.html create mode 100644 ver-1.11.0/cpld_gridgen/inputnml_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/inputnml_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/inputnml_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/jquery.js create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/add_topoedits.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/allocate_all.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/angle.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/angles.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/anglet.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/angq.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/apply_topoedits.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/areact.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/atmres.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cdate.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/charstrings.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/checkpoint.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/checkseam.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/checkxlatlon.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cicegrid.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cicevars.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cicevars_typedefine.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cl.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cm.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/cs.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dbl_kind.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/debug.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/debugprint.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dirout.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dirsrc.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dlatbu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dlatcv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/do_postwgts.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dp4.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dp8.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dx.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/dy.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/editmask.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/editsfile.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fill_bottom.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fill_top.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fill_vertices.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/find_ang.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/find_angq.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fixvars.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fixvars_typedefine.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/fv3dir.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/gen_fixgrid.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/gen_fixgrid.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/gengrid_kinds.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/grdvars.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/history.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/hte.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/htn.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/inputnml.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/int8_kind.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/int_kind.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ipole.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ivertbu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ivertct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ivertcu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ivertcv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/jvertbu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/jvertct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/jvertcu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/jvertcv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latbu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latbu_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latct_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latcu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latcu_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latcv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/latcv_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/logmsg.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/lonbu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/lonbu_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/lonct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/lonct_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/loncu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/loncu_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/loncv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/loncv_vert.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/long_name.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/make_frac_land.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/make_postwgts.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/mapped_mask.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/maskfile.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/masking_depth.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/maskname.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/maximum_depth.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/maximum_lat.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/maxvars.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_cpld_gridgen.fd_docs_README.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/minimum_depth.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/modulo_around_point.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ncoord.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ni.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/nj.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/npx.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/nv.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/nvars.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/nverts.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/nx.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ny.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/postwgts.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/read_inputnml.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/real_kind.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/res.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/roottask.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/scripgrid.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/scripvars.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/scripvars_typedefine.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/sg_maxlat.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/staggerlocs.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/topoedits.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/topofile.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/toponame.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/tripolegrid.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ulat.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ulon.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/unit_name.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/var_name.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/var_type.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/vartypedefs.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/vartypedefs_vardefs.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/vertices.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/vertices.F90.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/wet4.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/wet8.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/write_cicegrid.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/write_scripgrid.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/write_tripolegrid.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/x.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/xlatct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/xlatcu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/xlonct.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/xloncu.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/xsgp1.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/y.3 create mode 100644 ver-1.11.0/cpld_gridgen/man/man3/ysgp1.3 create mode 100644 ver-1.11.0/cpld_gridgen/mapped__mask_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/mapped__mask_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/mapped__mask_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html create mode 100644 ver-1.11.0/cpld_gridgen/menu.js create mode 100644 ver-1.11.0/cpld_gridgen/menudata.js create mode 100644 ver-1.11.0/cpld_gridgen/nav_f.png create mode 100644 ver-1.11.0/cpld_gridgen/nav_g.png create mode 100644 ver-1.11.0/cpld_gridgen/nav_h.png create mode 100644 ver-1.11.0/cpld_gridgen/navtree.css create mode 100644 ver-1.11.0/cpld_gridgen/navtree.js create mode 100644 ver-1.11.0/cpld_gridgen/navtreedata.js create mode 100644 ver-1.11.0/cpld_gridgen/navtreeindex0.js create mode 100644 ver-1.11.0/cpld_gridgen/open.png create mode 100644 ver-1.11.0/cpld_gridgen/pages.html create mode 100644 ver-1.11.0/cpld_gridgen/postwgts_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/postwgts_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/postwgts_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/resize.js create mode 100644 ver-1.11.0/cpld_gridgen/scripgrid_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/scripgrid_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/scripgrid_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_1.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_1.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_10.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_10.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_11.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_11.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_12.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_12.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_13.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_13.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_14.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_14.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_2.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_2.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_3.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_3.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_4.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_4.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_5.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_5.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_6.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_6.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_7.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_7.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_8.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_8.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_9.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_9.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_a.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_a.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_b.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_b.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_c.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_c.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_d.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_d.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_e.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_e.js create mode 100644 ver-1.11.0/cpld_gridgen/search/all_f.html create mode 100644 ver-1.11.0/cpld_gridgen/search/all_f.js create mode 100644 ver-1.11.0/cpld_gridgen/search/classes_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/classes_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/close.png create mode 100644 ver-1.11.0/cpld_gridgen/search/files_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_1.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_1.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_2.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_2.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_3.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_3.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_4.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_4.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_5.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_5.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_6.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_6.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_7.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_7.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_8.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_8.js create mode 100644 ver-1.11.0/cpld_gridgen/search/files_9.html create mode 100644 ver-1.11.0/cpld_gridgen/search/files_9.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_1.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_1.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_2.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_2.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_3.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_3.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_4.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_4.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_5.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_5.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_6.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_6.js create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_7.html create mode 100644 ver-1.11.0/cpld_gridgen/search/functions_7.js create mode 100644 ver-1.11.0/cpld_gridgen/search/mag_sel.png create mode 100644 ver-1.11.0/cpld_gridgen/search/nomatches.html create mode 100644 ver-1.11.0/cpld_gridgen/search/pages_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/pages_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/pages_1.html create mode 100644 ver-1.11.0/cpld_gridgen/search/pages_1.js create mode 100644 ver-1.11.0/cpld_gridgen/search/search.css create mode 100644 ver-1.11.0/cpld_gridgen/search/search.js create mode 100644 ver-1.11.0/cpld_gridgen/search/search_l.png create mode 100644 ver-1.11.0/cpld_gridgen/search/search_m.png create mode 100644 ver-1.11.0/cpld_gridgen/search/search_r.png create mode 100644 ver-1.11.0/cpld_gridgen/search/searchdata.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_0.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_0.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_1.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_1.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_10.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_10.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_11.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_11.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_12.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_12.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_2.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_2.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_3.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_3.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_4.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_4.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_5.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_5.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_6.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_6.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_7.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_7.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_8.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_8.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_9.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_9.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_a.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_a.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_b.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_b.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_c.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_c.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_d.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_d.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_e.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_e.js create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_f.html create mode 100644 ver-1.11.0/cpld_gridgen/search/variables_f.js create mode 100644 ver-1.11.0/cpld_gridgen/splitbar.png create mode 100644 ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.html create mode 100644 ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.js create mode 100644 ver-1.11.0/cpld_gridgen/sync_off.png create mode 100644 ver-1.11.0/cpld_gridgen/sync_on.png create mode 100644 ver-1.11.0/cpld_gridgen/tab_a.png create mode 100644 ver-1.11.0/cpld_gridgen/tab_b.png create mode 100644 ver-1.11.0/cpld_gridgen/tab_h.png create mode 100644 ver-1.11.0/cpld_gridgen/tab_s.png create mode 100644 ver-1.11.0/cpld_gridgen/tabs.css create mode 100644 ver-1.11.0/cpld_gridgen/topoedits_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/topoedits_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/topoedits_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/tripolegrid_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/tripolegrid_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/tripolegrid_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/vartypedefs_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/vartypedefs_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/vartypedefs_8F90_source.html create mode 100644 ver-1.11.0/cpld_gridgen/vertices_8F90.html create mode 100644 ver-1.11.0/cpld_gridgen/vertices_8F90.js create mode 100644 ver-1.11.0/cpld_gridgen/vertices_8F90_source.html create mode 100644 ver-1.11.0/doc.png create mode 100644 ver-1.11.0/doxygen.css create mode 100644 ver-1.11.0/doxygen.png create mode 100644 ver-1.11.0/dynsections.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/README_8md_source.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/bc_s.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/bdwn.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/closed.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/doc.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/doxygen.css create mode 100644 ver-1.11.0/emcsfc_ice_blend/doxygen.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/dynsections.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/emc__ice__blend_8md_source.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90_source.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/files.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/files_dup.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/folderclosed.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/folderopen.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/globals.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/globals_func.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/index.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/jquery.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/man/man3/emcsfc_ice_blend.3 create mode 100644 ver-1.11.0/emcsfc_ice_blend/man/man3/emcsfc_ice_blend.f90.3 create mode 100644 ver-1.11.0/emcsfc_ice_blend/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_emcsfc_ice_blend.fd_docs_README.3 create mode 100644 ver-1.11.0/emcsfc_ice_blend/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_ice_blend_8fd_docs_README.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/menu.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/menudata.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/nav_f.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/nav_g.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/nav_h.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/navtree.css create mode 100644 ver-1.11.0/emcsfc_ice_blend/navtree.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/navtreedata.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/navtreeindex0.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/open.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/pages.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/resize.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/all_0.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/all_0.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/all_1.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/all_1.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/close.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/files_0.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/files_0.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/functions_0.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/functions_0.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/mag_sel.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/nomatches.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/pages_0.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/pages_0.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/pages_1.html create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/pages_1.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/search.css create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/search.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/search_l.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/search_m.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/search_r.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/search/searchdata.js create mode 100644 ver-1.11.0/emcsfc_ice_blend/splitbar.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/sync_off.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/sync_on.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/tab_a.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/tab_b.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/tab_h.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/tab_s.png create mode 100644 ver-1.11.0/emcsfc_ice_blend/tabs.css create mode 100644 ver-1.11.0/emcsfc_snow2mdl/README_8md_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/bc_s.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/bdwn.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/closed.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/doc.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/doxygen.css create mode 100644 ver-1.11.0/emcsfc_snow2mdl/doxygen.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/driver_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/driver_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/driver_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/dynsections.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/emcsfc__snow2mdl_8md_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/files.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/files_dup.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/folderclosed.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/folderopen.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/globals.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/globals_func.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/index.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/jquery.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/SKGB2.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_check.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_lsmask_nh_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_lsmask_sh_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_res.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_snow_global_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_snow_nh_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/afwa_snow_sh_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/autosnow_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/autosnow_res.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bad_afwa_global.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bad_afwa_nh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bad_afwa_sh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bad_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bitmap_afwa_global.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bitmap_afwa_nh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bitmap_afwa_sh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bitmap_autosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/bitmap_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/climo_qc_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/driver.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/driver.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/gdt_to_gds.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/gfs_lpl_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib2_check.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib2_free.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib2_null.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_century.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_check.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_day.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_hour.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_month.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_utils.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grib_year.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/grid_id_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/iafwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/iautosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/ijmdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/imdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/inesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/init_grib2.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/interp.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/intlon.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/ipts_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/jafwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/jautosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/jmdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/jnesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/jpts_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_afwa_global.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_afwa_nh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_afwa_nh_8th.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_afwa_sh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_afwa_sh_8th.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_autosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/kgds_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lat11.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lat_threshold.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/latlast.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lats_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lon11.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lonlast.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lons_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lonsperlat_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lsmask_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/lsmask_mdl_sav.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_emcsfc_snow2mdl.fd_docs_README.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/mesh_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/min_snow_depth.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_grid.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_grid.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_grid_cleanup.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_lat_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_lon_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_lsmask_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/model_snow_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/nesdis_lsmask_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/nesdis_res.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/nesdis_snow_file.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/nh_climo_check.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/output_grib2.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/program_setup.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/program_setup.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/read_afwa_binary.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/read_afwa_mask.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/read_config_nml.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/read_mdl_grid_info.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/readafwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/readautosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/readnesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/resol_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/sea_ice_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow2mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow2mdl.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_cvr_autosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_cvr_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_cvr_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_cvr_threshold.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_dep_afwa_global.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_dep_afwa_nh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_dep_afwa_sh.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snow_dep_mdl.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snowdat.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/snowdat.F90.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/thinned.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/uninterpred.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/use_autosnow.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/use_global_afwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/use_nesdis.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/use_nh_afwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/use_sh_afwa.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/write_grib1.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/man/man3/write_grib2.3 create mode 100644 ver-1.11.0/emcsfc_snow2mdl/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_snow2mdl_8fd_docs_README.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/menu.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/menudata.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacemembers.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacemembers_func.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacemembers_vars.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacemodel__grid.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespaceprogram__setup.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespaces.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespaces_dup.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacesnow2mdl.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/namespacesnowdat.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/nav_f.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/nav_g.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/nav_h.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/navtree.css create mode 100644 ver-1.11.0/emcsfc_snow2mdl/navtree.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/navtreedata.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/navtreeindex0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/open.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/pages.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/resize.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_10.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_10.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_11.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_11.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_12.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_12.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_2.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_2.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_3.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_3.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_4.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_4.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_5.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_5.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_6.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_6.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_7.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_7.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_8.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_8.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_9.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_9.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_a.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_a.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_b.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_b.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_c.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_c.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_d.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_d.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_e.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_e.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_f.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/all_f.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/close.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_2.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_2.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_3.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_3.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_4.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/files_4.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_2.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_2.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_3.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_3.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_4.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_4.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_5.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_5.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_6.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_6.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_7.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_7.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_8.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_8.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_9.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/functions_9.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/mag_sel.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/nomatches.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/pages_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/pages_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/pages_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/pages_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/search.css create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/search.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/search_l.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/search_m.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/search_r.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/searchdata.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_0.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_0.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_1.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_1.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_2.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_2.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_3.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_3.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_4.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_4.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_5.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_5.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_6.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_6.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_7.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_7.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_8.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_8.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_9.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_9.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_a.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_a.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_b.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_b.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_c.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_c.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_d.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_d.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_e.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/search/variables_e.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.js create mode 100644 ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90_source.html create mode 100644 ver-1.11.0/emcsfc_snow2mdl/splitbar.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/sync_off.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/sync_on.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/tab_a.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/tab_b.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/tab_h.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/tab_s.png create mode 100644 ver-1.11.0/emcsfc_snow2mdl/tabs.css create mode 100644 ver-1.11.0/folderclosed.png create mode 100644 ver-1.11.0/folderopen.png create mode 100644 ver-1.11.0/fvcom_tools/README_8md_source.html create mode 100644 ver-1.11.0/fvcom_tools/annotated.html create mode 100644 ver-1.11.0/fvcom_tools/annotated_dup.js create mode 100644 ver-1.11.0/fvcom_tools/bc_s.png create mode 100644 ver-1.11.0/fvcom_tools/bdwn.png create mode 100644 ver-1.11.0/fvcom_tools/classes.html create mode 100644 ver-1.11.0/fvcom_tools/closed.png create mode 100644 ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.html create mode 100644 ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.js create mode 100644 ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/fvcom_tools/doc.png create mode 100644 ver-1.11.0/fvcom_tools/doxygen.css create mode 100644 ver-1.11.0/fvcom_tools/doxygen.png create mode 100644 ver-1.11.0/fvcom_tools/dynsections.js create mode 100644 ver-1.11.0/fvcom_tools/files.html create mode 100644 ver-1.11.0/fvcom_tools/files_dup.js create mode 100644 ver-1.11.0/fvcom_tools/folderclosed.png create mode 100644 ver-1.11.0/fvcom_tools/folderopen.png create mode 100644 ver-1.11.0/fvcom_tools/functions.html create mode 100644 ver-1.11.0/fvcom_tools/functions_func.html create mode 100644 ver-1.11.0/fvcom_tools/functions_vars.html create mode 100644 ver-1.11.0/fvcom_tools/fvcom__tools_8md_source.html create mode 100644 ver-1.11.0/fvcom_tools/globals.html create mode 100644 ver-1.11.0/fvcom_tools/globals_func.html create mode 100644 ver-1.11.0/fvcom_tools/index.html create mode 100644 ver-1.11.0/fvcom_tools/jquery.js create mode 100644 ver-1.11.0/fvcom_tools/kinds_8f90.html create mode 100644 ver-1.11.0/fvcom_tools/kinds_8f90.js create mode 100644 ver-1.11.0/fvcom_tools/kinds_8f90_source.html create mode 100644 ver-1.11.0/fvcom_tools/man/man3/add_new_var.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/add_new_var_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/add_new_var_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/close.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/close_nc.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/convert_theta2t_2dgrid.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/datatype.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/datelen.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/debug_level.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/dimname.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/dimnamedate.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/dimnameew.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/dimnamens.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/dimnametime.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/drmissing.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/ends.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/filename.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/finish.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/finish_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_att.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_att_nc_int.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_att_nc_real.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_att_nc_string.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_dim.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_dim_nc.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_time_ind.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_time_ind_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/handle_err.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_byte.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_hice.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_ice.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_icet.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_kind.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_mask.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_sfct.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_sfctl.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_short.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_sst.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/i_zorl.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/imissing.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/initial.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/initial_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/kinds.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/kinds.f90.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/latname.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/len_sta_name.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/list_initial.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/list_initial_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/lonname.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_ncio.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_ncio.f90.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_ncio_ncio.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_nwp.f90.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/module_nwp_fcst_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/ncdata.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/ncid.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/ndims.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/numvar.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_hice_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_hice_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_ice_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_ice_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_icet_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_icet_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_mask_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_mask_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_sfctl_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_sst_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_sst_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_c.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_w.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/open.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/open_nc.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.f90.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/r_kind.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/r_single.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/read_n.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/read_nwp.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_1d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_2d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_3d.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/rmissing.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/status.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/times.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/varnames.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/xlat.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/xlon.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/xtime.3 create mode 100644 ver-1.11.0/fvcom_tools/man/man3/xtype.3 create mode 100644 ver-1.11.0/fvcom_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html create mode 100644 ver-1.11.0/fvcom_tools/menu.js create mode 100644 ver-1.11.0/fvcom_tools/menudata.js create mode 100644 ver-1.11.0/fvcom_tools/module__ncio_8f90.html create mode 100644 ver-1.11.0/fvcom_tools/module__ncio_8f90.js create mode 100644 ver-1.11.0/fvcom_tools/module__ncio_8f90_source.html create mode 100644 ver-1.11.0/fvcom_tools/module__nwp_8f90.html create mode 100644 ver-1.11.0/fvcom_tools/module__nwp_8f90.js create mode 100644 ver-1.11.0/fvcom_tools/module__nwp_8f90_source.html create mode 100644 ver-1.11.0/fvcom_tools/namespacekinds.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemembers.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemembers_func.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemembers_vars.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemodule__ncio.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemodule__ncio.js create mode 100644 ver-1.11.0/fvcom_tools/namespacemodule__nwp.html create mode 100644 ver-1.11.0/fvcom_tools/namespacemodule__nwp.js create mode 100644 ver-1.11.0/fvcom_tools/namespaces.html create mode 100644 ver-1.11.0/fvcom_tools/namespaces_dup.js create mode 100644 ver-1.11.0/fvcom_tools/nav_f.png create mode 100644 ver-1.11.0/fvcom_tools/nav_g.png create mode 100644 ver-1.11.0/fvcom_tools/nav_h.png create mode 100644 ver-1.11.0/fvcom_tools/navtree.css create mode 100644 ver-1.11.0/fvcom_tools/navtree.js create mode 100644 ver-1.11.0/fvcom_tools/navtreedata.js create mode 100644 ver-1.11.0/fvcom_tools/navtreeindex0.js create mode 100644 ver-1.11.0/fvcom_tools/open.png create mode 100644 ver-1.11.0/fvcom_tools/pages.html create mode 100644 ver-1.11.0/fvcom_tools/process__FVCOM_8f90.html create mode 100644 ver-1.11.0/fvcom_tools/process__FVCOM_8f90.js create mode 100644 ver-1.11.0/fvcom_tools/process__FVCOM_8f90_source.html create mode 100644 ver-1.11.0/fvcom_tools/resize.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_10.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_10.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_11.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_11.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_12.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_12.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_2.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_2.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_3.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_3.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_4.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_4.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_5.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_5.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_6.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_6.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_7.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_7.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_8.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_8.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_9.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_9.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_a.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_a.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_b.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_b.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_c.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_c.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_d.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_d.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_e.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_e.js create mode 100644 ver-1.11.0/fvcom_tools/search/all_f.html create mode 100644 ver-1.11.0/fvcom_tools/search/all_f.js create mode 100644 ver-1.11.0/fvcom_tools/search/classes_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/classes_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/classes_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/classes_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/close.png create mode 100644 ver-1.11.0/fvcom_tools/search/files_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/files_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/files_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/files_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/files_2.html create mode 100644 ver-1.11.0/fvcom_tools/search/files_2.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_2.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_2.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_3.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_3.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_4.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_4.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_5.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_5.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_6.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_6.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_7.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_7.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_8.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_8.js create mode 100644 ver-1.11.0/fvcom_tools/search/functions_9.html create mode 100644 ver-1.11.0/fvcom_tools/search/functions_9.js create mode 100644 ver-1.11.0/fvcom_tools/search/mag_sel.png create mode 100644 ver-1.11.0/fvcom_tools/search/namespaces_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/namespaces_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/namespaces_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/namespaces_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/nomatches.html create mode 100644 ver-1.11.0/fvcom_tools/search/pages_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/pages_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/pages_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/pages_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/search.css create mode 100644 ver-1.11.0/fvcom_tools/search/search.js create mode 100644 ver-1.11.0/fvcom_tools/search/search_l.png create mode 100644 ver-1.11.0/fvcom_tools/search/search_m.png create mode 100644 ver-1.11.0/fvcom_tools/search/search_r.png create mode 100644 ver-1.11.0/fvcom_tools/search/searchdata.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_0.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_0.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_1.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_1.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_2.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_2.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_3.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_3.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_4.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_4.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_5.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_5.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_6.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_6.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_7.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_7.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_8.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_8.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_9.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_9.js create mode 100644 ver-1.11.0/fvcom_tools/search/variables_a.html create mode 100644 ver-1.11.0/fvcom_tools/search/variables_a.js create mode 100644 ver-1.11.0/fvcom_tools/splitbar.png create mode 100644 ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.html create mode 100644 ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.js create mode 100644 ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.html create mode 100644 ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.js create mode 100644 ver-1.11.0/fvcom_tools/sync_off.png create mode 100644 ver-1.11.0/fvcom_tools/sync_on.png create mode 100644 ver-1.11.0/fvcom_tools/tab_a.png create mode 100644 ver-1.11.0/fvcom_tools/tab_b.png create mode 100644 ver-1.11.0/fvcom_tools/tab_h.png create mode 100644 ver-1.11.0/fvcom_tools/tab_s.png create mode 100644 ver-1.11.0/fvcom_tools/tabs.css create mode 100644 ver-1.11.0/gblevents/README_8md_source.html create mode 100644 ver-1.11.0/gblevents/bc_s.png create mode 100644 ver-1.11.0/gblevents/bdwn.png create mode 100644 ver-1.11.0/gblevents/closed.png create mode 100644 ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.html create mode 100644 ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.js create mode 100644 ver-1.11.0/gblevents/doc.png create mode 100644 ver-1.11.0/gblevents/doxygen.css create mode 100644 ver-1.11.0/gblevents/doxygen.png create mode 100644 ver-1.11.0/gblevents/dynsections.js create mode 100644 ver-1.11.0/gblevents/files.html create mode 100644 ver-1.11.0/gblevents/files_dup.js create mode 100644 ver-1.11.0/gblevents/folderclosed.png create mode 100644 ver-1.11.0/gblevents/folderopen.png create mode 100644 ver-1.11.0/gblevents/gblevents_8f.html create mode 100644 ver-1.11.0/gblevents/gblevents_8f.js create mode 100644 ver-1.11.0/gblevents/gblevents_8f_source.html create mode 100644 ver-1.11.0/gblevents/gblevents_8md_source.html create mode 100644 ver-1.11.0/gblevents/globals.html create mode 100644 ver-1.11.0/gblevents/globals_func.html create mode 100644 ver-1.11.0/gblevents/index.html create mode 100644 ver-1.11.0/gblevents/jquery.js create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVENTS.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN01.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN02.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN03.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN04.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN06.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN08.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN10.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN12.3 create mode 100644 ver-1.11.0/gblevents/man/man3/GBLEVN13.3 create mode 100644 ver-1.11.0/gblevents/man/man3/OEFG01.3 create mode 100644 ver-1.11.0/gblevents/man/man3/dlat.3 create mode 100644 ver-1.11.0/gblevents/man/man3/dlon.3 create mode 100644 ver-1.11.0/gblevents/man/man3/gblevents.f.3 create mode 100644 ver-1.11.0/gblevents/man/man3/gblevn11.3 create mode 100644 ver-1.11.0/gblevents/man/man3/gblevn11d.3 create mode 100644 ver-1.11.0/gblevents/man/man3/getlats.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar12z.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar13p.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar14t.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar15u.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar16v.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iar17q.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iarpsd.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iarpsi.3 create mode 100644 ver-1.11.0/gblevents/man/man3/iarpsl.3 create mode 100644 ver-1.11.0/gblevents/man/man3/idsl.3 create mode 100644 ver-1.11.0/gblevents/man/man3/idvc.3 create mode 100644 ver-1.11.0/gblevents/man/man3/imax.3 create mode 100644 ver-1.11.0/gblevents/man/man3/jmax.3 create mode 100644 ver-1.11.0/gblevents/man/man3/kmax.3 create mode 100644 ver-1.11.0/gblevents/man/man3/kmaxs.3 create mode 100644 ver-1.11.0/gblevents/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_gblevents.fd_docs_README.3 create mode 100644 ver-1.11.0/gblevents/man/man3/nvcoord.3 create mode 100644 ver-1.11.0/gblevents/man/man3/sfcpress_id.3 create mode 100644 ver-1.11.0/gblevents/man/man3/thermodyn_id.3 create mode 100644 ver-1.11.0/gblevents/man/man3/vcoord.3 create mode 100644 ver-1.11.0/gblevents/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_gblevents_8fd_docs_README.html create mode 100644 ver-1.11.0/gblevents/menu.js create mode 100644 ver-1.11.0/gblevents/menudata.js create mode 100644 ver-1.11.0/gblevents/nav_f.png create mode 100644 ver-1.11.0/gblevents/nav_g.png create mode 100644 ver-1.11.0/gblevents/nav_h.png create mode 100644 ver-1.11.0/gblevents/navtree.css create mode 100644 ver-1.11.0/gblevents/navtree.js create mode 100644 ver-1.11.0/gblevents/navtreedata.js create mode 100644 ver-1.11.0/gblevents/navtreeindex0.js create mode 100644 ver-1.11.0/gblevents/open.png create mode 100644 ver-1.11.0/gblevents/pages.html create mode 100644 ver-1.11.0/gblevents/resize.js create mode 100644 ver-1.11.0/gblevents/search/all_0.html create mode 100644 ver-1.11.0/gblevents/search/all_0.js create mode 100644 ver-1.11.0/gblevents/search/all_1.html create mode 100644 ver-1.11.0/gblevents/search/all_1.js create mode 100644 ver-1.11.0/gblevents/search/all_2.html create mode 100644 ver-1.11.0/gblevents/search/all_2.js create mode 100644 ver-1.11.0/gblevents/search/close.png create mode 100644 ver-1.11.0/gblevents/search/files_0.html create mode 100644 ver-1.11.0/gblevents/search/files_0.js create mode 100644 ver-1.11.0/gblevents/search/functions_0.html create mode 100644 ver-1.11.0/gblevents/search/functions_0.js create mode 100644 ver-1.11.0/gblevents/search/functions_1.html create mode 100644 ver-1.11.0/gblevents/search/functions_1.js create mode 100644 ver-1.11.0/gblevents/search/mag_sel.png create mode 100644 ver-1.11.0/gblevents/search/nomatches.html create mode 100644 ver-1.11.0/gblevents/search/pages_0.html create mode 100644 ver-1.11.0/gblevents/search/pages_0.js create mode 100644 ver-1.11.0/gblevents/search/pages_1.html create mode 100644 ver-1.11.0/gblevents/search/pages_1.js create mode 100644 ver-1.11.0/gblevents/search/search.css create mode 100644 ver-1.11.0/gblevents/search/search.js create mode 100644 ver-1.11.0/gblevents/search/search_l.png create mode 100644 ver-1.11.0/gblevents/search/search_m.png create mode 100644 ver-1.11.0/gblevents/search/search_r.png create mode 100644 ver-1.11.0/gblevents/search/searchdata.js create mode 100644 ver-1.11.0/gblevents/splitbar.png create mode 100644 ver-1.11.0/gblevents/sync_off.png create mode 100644 ver-1.11.0/gblevents/sync_on.png create mode 100644 ver-1.11.0/gblevents/tab_a.png create mode 100644 ver-1.11.0/gblevents/tab_b.png create mode 100644 ver-1.11.0/gblevents/tab_h.png create mode 100644 ver-1.11.0/gblevents/tab_s.png create mode 100644 ver-1.11.0/gblevents/tabs.css create mode 100644 ver-1.11.0/global_cycle/README_8md_source.html create mode 100644 ver-1.11.0/global_cycle/annotated.html create mode 100644 ver-1.11.0/global_cycle/annotated_dup.js create mode 100644 ver-1.11.0/global_cycle/bc_s.png create mode 100644 ver-1.11.0/global_cycle/bdwn.png create mode 100644 ver-1.11.0/global_cycle/classes.html create mode 100644 ver-1.11.0/global_cycle/closed.png create mode 100644 ver-1.11.0/global_cycle/cycle_8f90.html create mode 100644 ver-1.11.0/global_cycle/cycle_8f90.js create mode 100644 ver-1.11.0/global_cycle/cycle_8f90_source.html create mode 100644 ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.html create mode 100644 ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.js create mode 100644 ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/global_cycle/doc.png create mode 100644 ver-1.11.0/global_cycle/doxygen.css create mode 100644 ver-1.11.0/global_cycle/doxygen.png create mode 100644 ver-1.11.0/global_cycle/dynsections.js create mode 100644 ver-1.11.0/global_cycle/files.html create mode 100644 ver-1.11.0/global_cycle/files_dup.js create mode 100644 ver-1.11.0/global_cycle/folderclosed.png create mode 100644 ver-1.11.0/global_cycle/folderopen.png create mode 100644 ver-1.11.0/global_cycle/global__cycle_8md_source.html create mode 100644 ver-1.11.0/global_cycle/globals.html create mode 100644 ver-1.11.0/global_cycle/globals_func.html create mode 100644 ver-1.11.0/global_cycle/index.html create mode 100644 ver-1.11.0/global_cycle/jquery.js create mode 100644 ver-1.11.0/global_cycle/land__increments_8f90.html create mode 100644 ver-1.11.0/global_cycle/land__increments_8f90.js create mode 100644 ver-1.11.0/global_cycle/land__increments_8f90_source.html create mode 100644 ver-1.11.0/global_cycle/machine_8f90.html create mode 100644 ver-1.11.0/global_cycle/machine_8f90.js create mode 100644 ver-1.11.0/global_cycle/machine_8f90_source.html create mode 100644 ver-1.11.0/global_cycle/man/man3/ADJUST_NSST.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/CLIMO_TREND.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/DTZM_POINT.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/MACHINE.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/NETCDF_ERR.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/READ_DATA.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/READ_GSI_DATA.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/READ_LAT_LON_OROG.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/READ_WRITE_DATA.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/REMAP_COEF.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/SFCDRV.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/SFC_DRV.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/add_increment_snow.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/add_increment_soil.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_snd.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_soil.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/c_0.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/c_d.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/calculate_landinc_mask.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/cycle.f90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/d_conv.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/dt_cool.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/dtref_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_dim_nc.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_sal_clm.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_sal_clm_ta.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_tf_clm.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_tf_clm_dim.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_tf_clm_ta.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/get_tim_wei.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/idim_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/ifd.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/intp_tile.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/jdim_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/kind_dbl_prec.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/kind_io4.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/kind_io8.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/kind_sngl_prec.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/land_increments.f90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/lsm_noah.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/lsm_noahmp.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/lsoil_incr.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/machine.f90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/nc_check.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/nsst_water_reset.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/num_parthds.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/num_parthds.f90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/qrain.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/read_salclm_gfs_nc.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/read_tf_clim_grb.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/read_write_data.f90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/remove_checksum.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/slc_inc_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/slmsk_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/soilsnow_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/stc_inc_gaus.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/tf_thaw_set.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/tfinc.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/tfreez.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/tref.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/utils.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/utils.F90.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/w_0.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/w_d.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/write_data.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xs.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xt.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xtts.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xu.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xv.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xz.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/xzts.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/z_c.3 create mode 100644 ver-1.11.0/global_cycle/man/man3/zm.3 create mode 100644 ver-1.11.0/global_cycle/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html create mode 100644 ver-1.11.0/global_cycle/menu.js create mode 100644 ver-1.11.0/global_cycle/menudata.js create mode 100644 ver-1.11.0/global_cycle/namespaceMACHINE.html create mode 100644 ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.html create mode 100644 ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.js create mode 100644 ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup.js create mode 100644 ver-1.11.0/global_cycle/namespacemembers.html create mode 100644 ver-1.11.0/global_cycle/namespacemembers_func.html create mode 100644 ver-1.11.0/global_cycle/namespacemembers_vars.html create mode 100644 ver-1.11.0/global_cycle/namespaces.html create mode 100644 ver-1.11.0/global_cycle/namespaces_dup.js create mode 100644 ver-1.11.0/global_cycle/namespaceutils.html create mode 100644 ver-1.11.0/global_cycle/nav_f.png create mode 100644 ver-1.11.0/global_cycle/nav_g.png create mode 100644 ver-1.11.0/global_cycle/nav_h.png create mode 100644 ver-1.11.0/global_cycle/navtree.css create mode 100644 ver-1.11.0/global_cycle/navtree.js create mode 100644 ver-1.11.0/global_cycle/navtreedata.js create mode 100644 ver-1.11.0/global_cycle/navtreeindex0.js create mode 100644 ver-1.11.0/global_cycle/num__parthds_8f90.html create mode 100644 ver-1.11.0/global_cycle/num__parthds_8f90.js create mode 100644 ver-1.11.0/global_cycle/num__parthds_8f90_source.html create mode 100644 ver-1.11.0/global_cycle/open.png create mode 100644 ver-1.11.0/global_cycle/pages.html create mode 100644 ver-1.11.0/global_cycle/read__write__data_8f90.html create mode 100644 ver-1.11.0/global_cycle/read__write__data_8f90.js create mode 100644 ver-1.11.0/global_cycle/read__write__data_8f90_source.html create mode 100644 ver-1.11.0/global_cycle/resize.js create mode 100644 ver-1.11.0/global_cycle/search/all_0.html create mode 100644 ver-1.11.0/global_cycle/search/all_0.js create mode 100644 ver-1.11.0/global_cycle/search/all_1.html create mode 100644 ver-1.11.0/global_cycle/search/all_1.js create mode 100644 ver-1.11.0/global_cycle/search/all_2.html create mode 100644 ver-1.11.0/global_cycle/search/all_2.js create mode 100644 ver-1.11.0/global_cycle/search/all_3.html create mode 100644 ver-1.11.0/global_cycle/search/all_3.js create mode 100644 ver-1.11.0/global_cycle/search/all_4.html create mode 100644 ver-1.11.0/global_cycle/search/all_4.js create mode 100644 ver-1.11.0/global_cycle/search/all_5.html create mode 100644 ver-1.11.0/global_cycle/search/all_5.js create mode 100644 ver-1.11.0/global_cycle/search/all_6.html create mode 100644 ver-1.11.0/global_cycle/search/all_6.js create mode 100644 ver-1.11.0/global_cycle/search/all_7.html create mode 100644 ver-1.11.0/global_cycle/search/all_7.js create mode 100644 ver-1.11.0/global_cycle/search/all_8.html create mode 100644 ver-1.11.0/global_cycle/search/all_8.js create mode 100644 ver-1.11.0/global_cycle/search/all_9.html create mode 100644 ver-1.11.0/global_cycle/search/all_9.js create mode 100644 ver-1.11.0/global_cycle/search/all_a.html create mode 100644 ver-1.11.0/global_cycle/search/all_a.js create mode 100644 ver-1.11.0/global_cycle/search/all_b.html create mode 100644 ver-1.11.0/global_cycle/search/all_b.js create mode 100644 ver-1.11.0/global_cycle/search/all_c.html create mode 100644 ver-1.11.0/global_cycle/search/all_c.js create mode 100644 ver-1.11.0/global_cycle/search/all_d.html create mode 100644 ver-1.11.0/global_cycle/search/all_d.js create mode 100644 ver-1.11.0/global_cycle/search/all_e.html create mode 100644 ver-1.11.0/global_cycle/search/all_e.js create mode 100644 ver-1.11.0/global_cycle/search/classes_0.html create mode 100644 ver-1.11.0/global_cycle/search/classes_0.js create mode 100644 ver-1.11.0/global_cycle/search/close.png create mode 100644 ver-1.11.0/global_cycle/search/files_0.html create mode 100644 ver-1.11.0/global_cycle/search/files_0.js create mode 100644 ver-1.11.0/global_cycle/search/files_1.html create mode 100644 ver-1.11.0/global_cycle/search/files_1.js create mode 100644 ver-1.11.0/global_cycle/search/files_2.html create mode 100644 ver-1.11.0/global_cycle/search/files_2.js create mode 100644 ver-1.11.0/global_cycle/search/files_3.html create mode 100644 ver-1.11.0/global_cycle/search/files_3.js create mode 100644 ver-1.11.0/global_cycle/search/files_4.html create mode 100644 ver-1.11.0/global_cycle/search/files_4.js create mode 100644 ver-1.11.0/global_cycle/search/files_5.html create mode 100644 ver-1.11.0/global_cycle/search/files_5.js create mode 100644 ver-1.11.0/global_cycle/search/functions_0.html create mode 100644 ver-1.11.0/global_cycle/search/functions_0.js create mode 100644 ver-1.11.0/global_cycle/search/functions_1.html create mode 100644 ver-1.11.0/global_cycle/search/functions_1.js create mode 100644 ver-1.11.0/global_cycle/search/functions_2.html create mode 100644 ver-1.11.0/global_cycle/search/functions_2.js create mode 100644 ver-1.11.0/global_cycle/search/functions_3.html create mode 100644 ver-1.11.0/global_cycle/search/functions_3.js create mode 100644 ver-1.11.0/global_cycle/search/functions_4.html create mode 100644 ver-1.11.0/global_cycle/search/functions_4.js create mode 100644 ver-1.11.0/global_cycle/search/functions_5.html create mode 100644 ver-1.11.0/global_cycle/search/functions_5.js create mode 100644 ver-1.11.0/global_cycle/search/functions_6.html create mode 100644 ver-1.11.0/global_cycle/search/functions_6.js create mode 100644 ver-1.11.0/global_cycle/search/functions_7.html create mode 100644 ver-1.11.0/global_cycle/search/functions_7.js create mode 100644 ver-1.11.0/global_cycle/search/functions_8.html create mode 100644 ver-1.11.0/global_cycle/search/functions_8.js create mode 100644 ver-1.11.0/global_cycle/search/functions_9.html create mode 100644 ver-1.11.0/global_cycle/search/functions_9.js create mode 100644 ver-1.11.0/global_cycle/search/mag_sel.png create mode 100644 ver-1.11.0/global_cycle/search/namespaces_0.html create mode 100644 ver-1.11.0/global_cycle/search/namespaces_0.js create mode 100644 ver-1.11.0/global_cycle/search/namespaces_1.html create mode 100644 ver-1.11.0/global_cycle/search/namespaces_1.js create mode 100644 ver-1.11.0/global_cycle/search/namespaces_2.html create mode 100644 ver-1.11.0/global_cycle/search/namespaces_2.js create mode 100644 ver-1.11.0/global_cycle/search/nomatches.html create mode 100644 ver-1.11.0/global_cycle/search/pages_0.html create mode 100644 ver-1.11.0/global_cycle/search/pages_0.js create mode 100644 ver-1.11.0/global_cycle/search/pages_1.html create mode 100644 ver-1.11.0/global_cycle/search/pages_1.js create mode 100644 ver-1.11.0/global_cycle/search/search.css create mode 100644 ver-1.11.0/global_cycle/search/search.js create mode 100644 ver-1.11.0/global_cycle/search/search_l.png create mode 100644 ver-1.11.0/global_cycle/search/search_m.png create mode 100644 ver-1.11.0/global_cycle/search/search_r.png create mode 100644 ver-1.11.0/global_cycle/search/searchdata.js create mode 100644 ver-1.11.0/global_cycle/search/variables_0.html create mode 100644 ver-1.11.0/global_cycle/search/variables_0.js create mode 100644 ver-1.11.0/global_cycle/search/variables_1.html create mode 100644 ver-1.11.0/global_cycle/search/variables_1.js create mode 100644 ver-1.11.0/global_cycle/search/variables_2.html create mode 100644 ver-1.11.0/global_cycle/search/variables_2.js create mode 100644 ver-1.11.0/global_cycle/search/variables_3.html create mode 100644 ver-1.11.0/global_cycle/search/variables_3.js create mode 100644 ver-1.11.0/global_cycle/search/variables_4.html create mode 100644 ver-1.11.0/global_cycle/search/variables_4.js create mode 100644 ver-1.11.0/global_cycle/search/variables_5.html create mode 100644 ver-1.11.0/global_cycle/search/variables_5.js create mode 100644 ver-1.11.0/global_cycle/search/variables_6.html create mode 100644 ver-1.11.0/global_cycle/search/variables_6.js create mode 100644 ver-1.11.0/global_cycle/splitbar.png create mode 100644 ver-1.11.0/global_cycle/sync_off.png create mode 100644 ver-1.11.0/global_cycle/sync_on.png create mode 100644 ver-1.11.0/global_cycle/tab_a.png create mode 100644 ver-1.11.0/global_cycle/tab_b.png create mode 100644 ver-1.11.0/global_cycle/tab_h.png create mode 100644 ver-1.11.0/global_cycle/tab_s.png create mode 100644 ver-1.11.0/global_cycle/tabs.css create mode 100644 ver-1.11.0/global_cycle/utils_8F90.html create mode 100644 ver-1.11.0/global_cycle/utils_8F90.js create mode 100644 ver-1.11.0/global_cycle/utils_8F90_source.html create mode 100644 ver-1.11.0/grid_tools/README_8md_source.html create mode 100644 ver-1.11.0/grid_tools/annotated.html create mode 100644 ver-1.11.0/grid_tools/annotated_dup.js create mode 100644 ver-1.11.0/grid_tools/bc_s.png create mode 100644 ver-1.11.0/grid_tools/bdwn.png create mode 100644 ver-1.11.0/grid_tools/classes.html create mode 100644 ver-1.11.0/grid_tools/closed.png create mode 100644 ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.html create mode 100644 ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.js create mode 100644 ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.html create mode 100644 ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.js create mode 100644 ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.html create mode 100644 ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.js create mode 100644 ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.html create mode 100644 ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.js create mode 100644 ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.html create mode 100644 ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.js create mode 100644 ver-1.11.0/grid_tools/doc.png create mode 100644 ver-1.11.0/grid_tools/doxygen.css create mode 100644 ver-1.11.0/grid_tools/doxygen.png create mode 100644 ver-1.11.0/grid_tools/dynsections.js create mode 100644 ver-1.11.0/grid_tools/files.html create mode 100644 ver-1.11.0/grid_tools/files_dup.js create mode 100644 ver-1.11.0/grid_tools/filter__topo_8F90.html create mode 100644 ver-1.11.0/grid_tools/filter__topo_8F90.js create mode 100644 ver-1.11.0/grid_tools/filter__topo_8F90_source.html create mode 100644 ver-1.11.0/grid_tools/folderclosed.png create mode 100644 ver-1.11.0/grid_tools/folderopen.png create mode 100644 ver-1.11.0/grid_tools/functions.html create mode 100644 ver-1.11.0/grid_tools/functions_b.html create mode 100644 ver-1.11.0/grid_tools/functions_c.html create mode 100644 ver-1.11.0/grid_tools/functions_d.html create mode 100644 ver-1.11.0/grid_tools/functions_dup.js create mode 100644 ver-1.11.0/grid_tools/functions_e.html create mode 100644 ver-1.11.0/grid_tools/functions_f.html create mode 100644 ver-1.11.0/grid_tools/functions_func.html create mode 100644 ver-1.11.0/grid_tools/functions_func.js create mode 100644 ver-1.11.0/grid_tools/functions_func_b.html create mode 100644 ver-1.11.0/grid_tools/functions_func_c.html create mode 100644 ver-1.11.0/grid_tools/functions_func_d.html create mode 100644 ver-1.11.0/grid_tools/functions_func_e.html create mode 100644 ver-1.11.0/grid_tools/functions_func_f.html create mode 100644 ver-1.11.0/grid_tools/functions_func_g.html create mode 100644 ver-1.11.0/grid_tools/functions_func_h.html create mode 100644 ver-1.11.0/grid_tools/functions_func_i.html create mode 100644 ver-1.11.0/grid_tools/functions_func_l.html create mode 100644 ver-1.11.0/grid_tools/functions_func_m.html create mode 100644 ver-1.11.0/grid_tools/functions_func_n.html create mode 100644 ver-1.11.0/grid_tools/functions_func_o.html create mode 100644 ver-1.11.0/grid_tools/functions_func_p.html create mode 100644 ver-1.11.0/grid_tools/functions_func_q.html create mode 100644 ver-1.11.0/grid_tools/functions_func_r.html create mode 100644 ver-1.11.0/grid_tools/functions_func_s.html create mode 100644 ver-1.11.0/grid_tools/functions_func_t.html create mode 100644 ver-1.11.0/grid_tools/functions_func_u.html create mode 100644 ver-1.11.0/grid_tools/functions_func_w.html create mode 100644 ver-1.11.0/grid_tools/functions_func_x.html create mode 100644 ver-1.11.0/grid_tools/functions_func_z.html create mode 100644 ver-1.11.0/grid_tools/functions_g.html create mode 100644 ver-1.11.0/grid_tools/functions_h.html create mode 100644 ver-1.11.0/grid_tools/functions_i.html create mode 100644 ver-1.11.0/grid_tools/functions_l.html create mode 100644 ver-1.11.0/grid_tools/functions_m.html create mode 100644 ver-1.11.0/grid_tools/functions_n.html create mode 100644 ver-1.11.0/grid_tools/functions_o.html create mode 100644 ver-1.11.0/grid_tools/functions_p.html create mode 100644 ver-1.11.0/grid_tools/functions_q.html create mode 100644 ver-1.11.0/grid_tools/functions_r.html create mode 100644 ver-1.11.0/grid_tools/functions_s.html create mode 100644 ver-1.11.0/grid_tools/functions_t.html create mode 100644 ver-1.11.0/grid_tools/functions_u.html create mode 100644 ver-1.11.0/grid_tools/functions_w.html create mode 100644 ver-1.11.0/grid_tools/functions_x.html create mode 100644 ver-1.11.0/grid_tools/functions_z.html create mode 100644 ver-1.11.0/grid_tools/global__equiv__resol_8f90.html create mode 100644 ver-1.11.0/grid_tools/global__equiv__resol_8f90.js create mode 100644 ver-1.11.0/grid_tools/global__equiv__resol_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/globals.html create mode 100644 ver-1.11.0/grid_tools/globals_func.html create mode 100644 ver-1.11.0/grid_tools/grid__tools_8md_source.html create mode 100644 ver-1.11.0/grid_tools/index.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.js create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.html create mode 100644 ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1ahav.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1ahav.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1atanh.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1atanh.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1gd.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1gd.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1gdi.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1gdi.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1hav.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1hav.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1havh.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1havh.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sech.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sech.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sechs.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sechs.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinox.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinox.js create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.html create mode 100644 ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1avco.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1avco.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1absv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1absv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axial.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axial.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1corral.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1corral.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1det.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1det.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1diag.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1diag.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1gram.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1gram.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1hav.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1hav.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1identity.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1identity.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1setem.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1setem.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1trace.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1trace.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1inv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1inv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1invl.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1invl.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1invu.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1invu.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1ldum.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1ldum.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.js create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.html create mode 100644 ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.js create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.html create mode 100644 ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.js create mode 100644 ver-1.11.0/grid_tools/jquery.js create mode 100644 ver-1.11.0/grid_tools/man/man3/AVCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/CAD1B.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/CAD2B.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/CLIB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/CSB1B.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/CSB2B.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DAVCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DDFCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DDFCO2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DFCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DFCO2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DL1UBB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DL1UEB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DLDLTB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DLDUB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/DUDLB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/FV3_zs_filter.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/L1UBB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/L1UEB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/LDLTB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/LDUB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/LINBV.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/TAVCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/TDFCO.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/TDFCO2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LBV.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LBX.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LBY.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LVB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LXB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/U1LYB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLBV.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLBX.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLBY.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLVB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLXB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/UDLYB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/WRTB.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/absv_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/absv_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ahav_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ahav_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ahavh_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ahavh_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/atanh_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/atanh_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axial33_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axial33_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axial3_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axial3_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axtoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/axtorot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/bestesg_geo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/bestesg_map.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/c0.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/c1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cart_to_latlon.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cell_center2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/check.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/chol2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ci.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cinvmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cinvmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cipi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cldum.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cldumf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clib.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clib_c.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clib_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clinmmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clinmmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clinmvt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/clinmvtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cmobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/compute_filter_constants.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/corral.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cos_angle.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cross_product_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cross_product_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cstgeo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cswpvv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ctoz.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cudlmm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cudlmv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/cyclic.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dL1Lm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dL1Lmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dLdLm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dLdLmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dcstgeo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dctoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dctocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dctocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dctog.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dctogr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/del2_cubed_sphere.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/del4_cubed_sphere.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/det_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/det_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/det_id.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/det_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgrtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgrtocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgrtocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgtocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dgtocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagn_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagn_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagn_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagnn_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagnn_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/diagnn_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dininmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dinivmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dinvl.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dinvmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dinvmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dinvu.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dl1lm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dl1lmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dldlm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dldlmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dldum.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dldumf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinlv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinmmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinmmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinmvt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinmvtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlinuv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlltoxy_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dlltoxy_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dltdlbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dp.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dpc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dpi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dplrot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dplroti.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dqarea_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dqarea_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dswpvv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dtarea_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dtarea_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dtor.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dudlbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dudlmm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/dudlmv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/eigensym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/eigensym2d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/euler.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expmat.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expmatd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expmatdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expsym2d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expsym2d_e.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/expsym2d_t.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/f.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_AGRID_scalar_corners.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_AGRID_xy_corners.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_BGRID_scalar_corners.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_DGRID_xy_corners.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_cubic_grid_halo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/fill_regional_halo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/filter_topo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/filter_topo.F90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/frametwist.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gaulegh.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gd_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gd_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gdi_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gdi_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_area.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_edges.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_meanqd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_meanqs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_qofv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_qofvd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_qsofvs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_qx.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/get_qxd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/global_equiv_resol.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/global_equiv_resol.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gram_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gram_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/graml_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/great_circle_dist.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/grid_file.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/grid_type.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoframem.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoframev.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoxm_ak_dd_g.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoxm_ak_dd_m.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoxm_ak_rr_g.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/gtoxm_ak_rr_m.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/guessak_geo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/guessak_map.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/handle_err.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hav_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hav_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/havh_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/havh_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_c.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_dc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_dd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_dd_c.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_rc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_rr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/hgrid_ak_rr_c.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/huarea_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/huarea_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/id.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/id2222.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/identity3_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/identity_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/iinvf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/invsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/invsym2d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/latlon2xyz.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/logsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/logsym2d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ltdlbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mask_field.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mc1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mci.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_grid_tools.fd_docs_README.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mid_pt3_cart.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mid_pt_sphere.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mo2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mo3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mo4.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mo5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mo6.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms10.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms11.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms13.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms15.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms18.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms20.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms22.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms26.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms30.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms34.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms36.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms39.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms40.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms45.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms50.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms51.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms54.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms56.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms60.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms64.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms68.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms70.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms72.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms75.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms77.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms79.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ms80.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu4.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mu6.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/mulqq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/nested.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/normalize_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/normalize_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/normalized_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/normalized_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/o2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/o3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/o4.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/o5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/o6.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/or2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/or3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/or5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/orthogonalized_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/orthogonalized_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/outer_product_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/outer_product_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/outer_product_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/paraframe.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_bestesg_geo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_bestesg_map.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_gaulegh.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_get_edges.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_get_meanq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_get_qofv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_get_qx.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_gtoxm_ak_dd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_gtoxm_ak_rr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_guessak_geo.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_guessak_map.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_hgrid_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_hgrid_ak_dc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_hgrid_ak_dd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_hgrid_ak_rc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_hgrid_ak_rr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xctoxm_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xctoxs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xmtog_ak_dd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xmtog_ak_rr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xmtoxc_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xmtoxt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xstoxc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xstoxt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xttoxm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_xttoxs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_zmtozt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pesg_zttozm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_ahav.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_ahavh.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_atanh.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_gd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_gdi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_hav.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_havh.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sech.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sechs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sinhox.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sinhoxm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sinox.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pfun_sinoxm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/phi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pi2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pietc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pietc.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pietc_s.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pih.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pkind.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pkind.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/plaingram_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/plaingram_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/plctoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/plrot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/plroti.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_avco.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_cad1b.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_cad2b.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_clipb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_csb1b.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_csb2b.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_dfco.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_dfco2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_l1ubb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_l1ueb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_ldltb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_ldub.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_linbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_ltdlbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lbx.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lby.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lvb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lxb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_u1lyb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlbv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlbx.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlby.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlvb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlxb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_udlyb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat2_wrtb.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_absv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_axial.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_axtoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_axtorot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_corral.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_cross_product.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_ctoz.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_det.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_diag.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_dlltoxy.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_expmat.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_gram.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_hav.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_huarea.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_identity.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_mobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_mobiusi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_mulqq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_normalize.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_normalized.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_orthogonalized.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_outer_product.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_qtoax.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_qtorot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_qtospin.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_rottoax.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_rottoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_rowops.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_sarea.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_setem.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_setmobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_spintoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_trace.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_triple_product.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_znfun.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_zntay.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat4_ztoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_ctoc_schm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_ctog.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_ctogr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_frametwist.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_grtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_gtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_gtoframe.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_ininmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_inivmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_paraframe.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_plctoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_plrot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat5_plroti.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_inv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_invl.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_invu.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_l1lm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_ldlm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_ldum.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_swpvv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/pmat_udlmm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_chol2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_eigensym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_expsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_expsym2d_e.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_expsym2d_t.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_id2222.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_invsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_logsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_sqrtsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_sqrtsym2d_e.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/psym2_sqrtsym2d_t.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/qtoax.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/qtorot.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/qtospin.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/r2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/r3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/r5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/read_grid_file.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/read_namelist.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/read_topo_file.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/regional.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/regional_esg_grid.f90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/regional_grid.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/res.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rotm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rottoax.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rottoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rowgram.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rowops.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rpi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/rtod.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s10.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s11.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s13.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s15.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s18.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s20.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s22.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s26.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s30.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s34.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s36.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s39.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s40.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s45.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s50.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s51.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s54.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s56.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s60.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s64.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s68.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s70.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s72.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s75.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s77.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s79.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/s80.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sL1Lm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sL1Lmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sLdLm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sLdLmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sarea_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sarea_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sci.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sctoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sctocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sctocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sctog.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sctogr.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sech_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sech_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sechs_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sechs_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/setem.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/setmobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sframetwist.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgrtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgrtocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgrtocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgtoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgtocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgtocdd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgtoframem.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sgtoframev.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/shave_nc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/shave_nc.F90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinhox_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinhoxm_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sininmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinivmap.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinox_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinoxm_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinvl.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinvmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinvmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sinvu.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sl1lm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sl1lmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sldlm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sldlmf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sldum.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sldumf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinlv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinmmt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinmmtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinmvt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinmvtf.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/slinuv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sp.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sparaframe.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/spc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/spherical_angle.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/spi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/spintoq.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sqrtsym2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sqrtsym2d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sqrtsym2d_e.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sqrtsym2d_t.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sswpvv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/stretch_fac.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sudlmm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/sudlmv.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/t.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/topo_field.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/topo_file.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/trace_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/trace_i.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/trace_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/triple_cross_product_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/triple_cross_product_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/triple_product_d.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/triple_product_s.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/two_delta_filter.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u0.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u2.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u3.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u4.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u5.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/u6.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/utils.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/utils.F90.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/write_topo_file.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xctoxm_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xctoxs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtog_ak_dd_g.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtog_ak_dd_m.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtog_ak_rr_g.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtog_ak_rr_m.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtoxc_ak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtoxc_vak.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtoxc_vak1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtoxt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xmtoxt1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xstoxc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xstoxc1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xstoxt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xttoxm.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xttoxs.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/xttoxs1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z000.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z010.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z011.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z013.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z015.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z018.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z020.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z022.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z026.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z030.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z034.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z036.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z039.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z040.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z045.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z050.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z051.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z054.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z056.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z060.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z064.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z068.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z070.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z072.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z075.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z077.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z079.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z080.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z090.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z100.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z101.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z103.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z105.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z108.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z110.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z112.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z116.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z120.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z124.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z126.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z129.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z130.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z135.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z140.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z141.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z144.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z146.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z150.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z154.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z158.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z160.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z162.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z165.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z167.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z169.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z170.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z180.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z190.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z191.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z193.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z195.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z198.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z200.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z202.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z206.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z210.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z214.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z216.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z219.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z220.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z225.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z230.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z231.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z234.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z236.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z240.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z244.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z248.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z250.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z252.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z255.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z257.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z259.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z260.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z270.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z280.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z281.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z283.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z285.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z288.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z290.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z292.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z296.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z300.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z304.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z306.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z309.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z310.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z315.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z320.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z321.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z324.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z326.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z330.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z334.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z338.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z340.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z342.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z345.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z347.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z349.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/z350.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zero.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zero_ocean.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zmobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zmobiusi.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zmtozt.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zmtozt1.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/znfun.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zntay.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zsetmobius.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ztoc.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/ztocd.3 create mode 100644 ver-1.11.0/grid_tools/man/man3/zttozm.3 create mode 100644 ver-1.11.0/grid_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_grid_tools_8fd_docs_README.html create mode 100644 ver-1.11.0/grid_tools/menu.js create mode 100644 ver-1.11.0/grid_tools/menudata.js create mode 100644 ver-1.11.0/grid_tools/namespacecstgeo.html create mode 100644 ver-1.11.0/grid_tools/namespacedcstgeo.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_b.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_c.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_d.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_dup.js create mode 100644 ver-1.11.0/grid_tools/namespacemembers_e.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_f.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func.js create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_b.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_c.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_d.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_e.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_f.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_g.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_h.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_i.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_l.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_m.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_n.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_o.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_p.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_q.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_r.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_s.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_t.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_u.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_w.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_x.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_func_z.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_g.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_h.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_i.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_l.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_m.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_n.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_o.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_p.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_q.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_r.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_s.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_t.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_u.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars.js create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_d.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_e.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_f.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_g.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_i.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_m.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_n.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_o.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_p.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_r.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_s.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_t.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_u.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_vars_z.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_w.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_x.html create mode 100644 ver-1.11.0/grid_tools/namespacemembers_z.html create mode 100644 ver-1.11.0/grid_tools/namespacepesg.html create mode 100644 ver-1.11.0/grid_tools/namespacepesg.js create mode 100644 ver-1.11.0/grid_tools/namespacepfun.html create mode 100644 ver-1.11.0/grid_tools/namespacepfun.js create mode 100644 ver-1.11.0/grid_tools/namespacepietc.html create mode 100644 ver-1.11.0/grid_tools/namespacepkind.html create mode 100644 ver-1.11.0/grid_tools/namespacepmat2.html create mode 100644 ver-1.11.0/grid_tools/namespacepmat2.js create mode 100644 ver-1.11.0/grid_tools/namespacepmat4.html create mode 100644 ver-1.11.0/grid_tools/namespacepmat4.js create mode 100644 ver-1.11.0/grid_tools/namespacepmat5.html create mode 100644 ver-1.11.0/grid_tools/namespacepmat5.js create mode 100644 ver-1.11.0/grid_tools/namespacepsym2.html create mode 100644 ver-1.11.0/grid_tools/namespacepsym2.js create mode 100644 ver-1.11.0/grid_tools/namespaces.html create mode 100644 ver-1.11.0/grid_tools/namespaces_dup.js create mode 100644 ver-1.11.0/grid_tools/namespaceutils.html create mode 100644 ver-1.11.0/grid_tools/nav_f.png create mode 100644 ver-1.11.0/grid_tools/nav_g.png create mode 100644 ver-1.11.0/grid_tools/nav_h.png create mode 100644 ver-1.11.0/grid_tools/navtree.css create mode 100644 ver-1.11.0/grid_tools/navtree.js create mode 100644 ver-1.11.0/grid_tools/navtreedata.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex0.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex1.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex2.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex3.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex4.js create mode 100644 ver-1.11.0/grid_tools/navtreeindex5.js create mode 100644 ver-1.11.0/grid_tools/open.png create mode 100644 ver-1.11.0/grid_tools/pages.html create mode 100644 ver-1.11.0/grid_tools/pesg_8f90.html create mode 100644 ver-1.11.0/grid_tools/pesg_8f90.js create mode 100644 ver-1.11.0/grid_tools/pesg_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pfun_8f90.html create mode 100644 ver-1.11.0/grid_tools/pfun_8f90.js create mode 100644 ver-1.11.0/grid_tools/pfun_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pietc_8f90.html create mode 100644 ver-1.11.0/grid_tools/pietc_8f90.js create mode 100644 ver-1.11.0/grid_tools/pietc_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pietc__s_8f90.html create mode 100644 ver-1.11.0/grid_tools/pietc__s_8f90.js create mode 100644 ver-1.11.0/grid_tools/pietc__s_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pkind_8f90.html create mode 100644 ver-1.11.0/grid_tools/pkind_8f90.js create mode 100644 ver-1.11.0/grid_tools/pkind_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pmat2_8f90.html create mode 100644 ver-1.11.0/grid_tools/pmat2_8f90.js create mode 100644 ver-1.11.0/grid_tools/pmat2_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pmat4_8f90.html create mode 100644 ver-1.11.0/grid_tools/pmat4_8f90.js create mode 100644 ver-1.11.0/grid_tools/pmat4_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pmat5_8f90.html create mode 100644 ver-1.11.0/grid_tools/pmat5_8f90.js create mode 100644 ver-1.11.0/grid_tools/pmat5_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/pmat_8f90.html create mode 100644 ver-1.11.0/grid_tools/pmat_8f90.js create mode 100644 ver-1.11.0/grid_tools/pmat_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/psym2_8f90.html create mode 100644 ver-1.11.0/grid_tools/psym2_8f90.js create mode 100644 ver-1.11.0/grid_tools/psym2_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/regional__esg__grid_8f90.html create mode 100644 ver-1.11.0/grid_tools/regional__esg__grid_8f90.js create mode 100644 ver-1.11.0/grid_tools/regional__esg__grid_8f90_source.html create mode 100644 ver-1.11.0/grid_tools/resize.js create mode 100644 ver-1.11.0/grid_tools/search/all_0.html create mode 100644 ver-1.11.0/grid_tools/search/all_0.js create mode 100644 ver-1.11.0/grid_tools/search/all_1.html create mode 100644 ver-1.11.0/grid_tools/search/all_1.js create mode 100644 ver-1.11.0/grid_tools/search/all_10.html create mode 100644 ver-1.11.0/grid_tools/search/all_10.js create mode 100644 ver-1.11.0/grid_tools/search/all_11.html create mode 100644 ver-1.11.0/grid_tools/search/all_11.js create mode 100644 ver-1.11.0/grid_tools/search/all_12.html create mode 100644 ver-1.11.0/grid_tools/search/all_12.js create mode 100644 ver-1.11.0/grid_tools/search/all_13.html create mode 100644 ver-1.11.0/grid_tools/search/all_13.js create mode 100644 ver-1.11.0/grid_tools/search/all_14.html create mode 100644 ver-1.11.0/grid_tools/search/all_14.js create mode 100644 ver-1.11.0/grid_tools/search/all_15.html create mode 100644 ver-1.11.0/grid_tools/search/all_15.js create mode 100644 ver-1.11.0/grid_tools/search/all_2.html create mode 100644 ver-1.11.0/grid_tools/search/all_2.js create mode 100644 ver-1.11.0/grid_tools/search/all_3.html create mode 100644 ver-1.11.0/grid_tools/search/all_3.js create mode 100644 ver-1.11.0/grid_tools/search/all_4.html create mode 100644 ver-1.11.0/grid_tools/search/all_4.js create mode 100644 ver-1.11.0/grid_tools/search/all_5.html create mode 100644 ver-1.11.0/grid_tools/search/all_5.js create mode 100644 ver-1.11.0/grid_tools/search/all_6.html create mode 100644 ver-1.11.0/grid_tools/search/all_6.js create mode 100644 ver-1.11.0/grid_tools/search/all_7.html create mode 100644 ver-1.11.0/grid_tools/search/all_7.js create mode 100644 ver-1.11.0/grid_tools/search/all_8.html create mode 100644 ver-1.11.0/grid_tools/search/all_8.js create mode 100644 ver-1.11.0/grid_tools/search/all_9.html create mode 100644 ver-1.11.0/grid_tools/search/all_9.js create mode 100644 ver-1.11.0/grid_tools/search/all_a.html create mode 100644 ver-1.11.0/grid_tools/search/all_a.js create mode 100644 ver-1.11.0/grid_tools/search/all_b.html create mode 100644 ver-1.11.0/grid_tools/search/all_b.js create mode 100644 ver-1.11.0/grid_tools/search/all_c.html create mode 100644 ver-1.11.0/grid_tools/search/all_c.js create mode 100644 ver-1.11.0/grid_tools/search/all_d.html create mode 100644 ver-1.11.0/grid_tools/search/all_d.js create mode 100644 ver-1.11.0/grid_tools/search/all_e.html create mode 100644 ver-1.11.0/grid_tools/search/all_e.js create mode 100644 ver-1.11.0/grid_tools/search/all_f.html create mode 100644 ver-1.11.0/grid_tools/search/all_f.js create mode 100644 ver-1.11.0/grid_tools/search/classes_0.html create mode 100644 ver-1.11.0/grid_tools/search/classes_0.js create mode 100644 ver-1.11.0/grid_tools/search/classes_1.html create mode 100644 ver-1.11.0/grid_tools/search/classes_1.js create mode 100644 ver-1.11.0/grid_tools/search/classes_10.html create mode 100644 ver-1.11.0/grid_tools/search/classes_10.js create mode 100644 ver-1.11.0/grid_tools/search/classes_11.html create mode 100644 ver-1.11.0/grid_tools/search/classes_11.js create mode 100644 ver-1.11.0/grid_tools/search/classes_12.html create mode 100644 ver-1.11.0/grid_tools/search/classes_12.js create mode 100644 ver-1.11.0/grid_tools/search/classes_13.html create mode 100644 ver-1.11.0/grid_tools/search/classes_13.js create mode 100644 ver-1.11.0/grid_tools/search/classes_14.html create mode 100644 ver-1.11.0/grid_tools/search/classes_14.js create mode 100644 ver-1.11.0/grid_tools/search/classes_15.html create mode 100644 ver-1.11.0/grid_tools/search/classes_15.js create mode 100644 ver-1.11.0/grid_tools/search/classes_2.html create mode 100644 ver-1.11.0/grid_tools/search/classes_2.js create mode 100644 ver-1.11.0/grid_tools/search/classes_3.html create mode 100644 ver-1.11.0/grid_tools/search/classes_3.js create mode 100644 ver-1.11.0/grid_tools/search/classes_4.html create mode 100644 ver-1.11.0/grid_tools/search/classes_4.js create mode 100644 ver-1.11.0/grid_tools/search/classes_5.html create mode 100644 ver-1.11.0/grid_tools/search/classes_5.js create mode 100644 ver-1.11.0/grid_tools/search/classes_6.html create mode 100644 ver-1.11.0/grid_tools/search/classes_6.js create mode 100644 ver-1.11.0/grid_tools/search/classes_7.html create mode 100644 ver-1.11.0/grid_tools/search/classes_7.js create mode 100644 ver-1.11.0/grid_tools/search/classes_8.html create mode 100644 ver-1.11.0/grid_tools/search/classes_8.js create mode 100644 ver-1.11.0/grid_tools/search/classes_9.html create mode 100644 ver-1.11.0/grid_tools/search/classes_9.js create mode 100644 ver-1.11.0/grid_tools/search/classes_a.html create mode 100644 ver-1.11.0/grid_tools/search/classes_a.js create mode 100644 ver-1.11.0/grid_tools/search/classes_b.html create mode 100644 ver-1.11.0/grid_tools/search/classes_b.js create mode 100644 ver-1.11.0/grid_tools/search/classes_c.html create mode 100644 ver-1.11.0/grid_tools/search/classes_c.js create mode 100644 ver-1.11.0/grid_tools/search/classes_d.html create mode 100644 ver-1.11.0/grid_tools/search/classes_d.js create mode 100644 ver-1.11.0/grid_tools/search/classes_e.html create mode 100644 ver-1.11.0/grid_tools/search/classes_e.js create mode 100644 ver-1.11.0/grid_tools/search/classes_f.html create mode 100644 ver-1.11.0/grid_tools/search/classes_f.js create mode 100644 ver-1.11.0/grid_tools/search/close.png create mode 100644 ver-1.11.0/grid_tools/search/files_0.html create mode 100644 ver-1.11.0/grid_tools/search/files_0.js create mode 100644 ver-1.11.0/grid_tools/search/files_1.html create mode 100644 ver-1.11.0/grid_tools/search/files_1.js create mode 100644 ver-1.11.0/grid_tools/search/files_2.html create mode 100644 ver-1.11.0/grid_tools/search/files_2.js create mode 100644 ver-1.11.0/grid_tools/search/files_3.html create mode 100644 ver-1.11.0/grid_tools/search/files_3.js create mode 100644 ver-1.11.0/grid_tools/search/files_4.html create mode 100644 ver-1.11.0/grid_tools/search/files_4.js create mode 100644 ver-1.11.0/grid_tools/search/files_5.html create mode 100644 ver-1.11.0/grid_tools/search/files_5.js create mode 100644 ver-1.11.0/grid_tools/search/functions_0.html create mode 100644 ver-1.11.0/grid_tools/search/functions_0.js create mode 100644 ver-1.11.0/grid_tools/search/functions_1.html create mode 100644 ver-1.11.0/grid_tools/search/functions_1.js create mode 100644 ver-1.11.0/grid_tools/search/functions_10.html create mode 100644 ver-1.11.0/grid_tools/search/functions_10.js create mode 100644 ver-1.11.0/grid_tools/search/functions_11.html create mode 100644 ver-1.11.0/grid_tools/search/functions_11.js create mode 100644 ver-1.11.0/grid_tools/search/functions_12.html create mode 100644 ver-1.11.0/grid_tools/search/functions_12.js create mode 100644 ver-1.11.0/grid_tools/search/functions_13.html create mode 100644 ver-1.11.0/grid_tools/search/functions_13.js create mode 100644 ver-1.11.0/grid_tools/search/functions_14.html create mode 100644 ver-1.11.0/grid_tools/search/functions_14.js create mode 100644 ver-1.11.0/grid_tools/search/functions_15.html create mode 100644 ver-1.11.0/grid_tools/search/functions_15.js create mode 100644 ver-1.11.0/grid_tools/search/functions_2.html create mode 100644 ver-1.11.0/grid_tools/search/functions_2.js create mode 100644 ver-1.11.0/grid_tools/search/functions_3.html create mode 100644 ver-1.11.0/grid_tools/search/functions_3.js create mode 100644 ver-1.11.0/grid_tools/search/functions_4.html create mode 100644 ver-1.11.0/grid_tools/search/functions_4.js create mode 100644 ver-1.11.0/grid_tools/search/functions_5.html create mode 100644 ver-1.11.0/grid_tools/search/functions_5.js create mode 100644 ver-1.11.0/grid_tools/search/functions_6.html create mode 100644 ver-1.11.0/grid_tools/search/functions_6.js create mode 100644 ver-1.11.0/grid_tools/search/functions_7.html create mode 100644 ver-1.11.0/grid_tools/search/functions_7.js create mode 100644 ver-1.11.0/grid_tools/search/functions_8.html create mode 100644 ver-1.11.0/grid_tools/search/functions_8.js create mode 100644 ver-1.11.0/grid_tools/search/functions_9.html create mode 100644 ver-1.11.0/grid_tools/search/functions_9.js create mode 100644 ver-1.11.0/grid_tools/search/functions_a.html create mode 100644 ver-1.11.0/grid_tools/search/functions_a.js create mode 100644 ver-1.11.0/grid_tools/search/functions_b.html create mode 100644 ver-1.11.0/grid_tools/search/functions_b.js create mode 100644 ver-1.11.0/grid_tools/search/functions_c.html create mode 100644 ver-1.11.0/grid_tools/search/functions_c.js create mode 100644 ver-1.11.0/grid_tools/search/functions_d.html create mode 100644 ver-1.11.0/grid_tools/search/functions_d.js create mode 100644 ver-1.11.0/grid_tools/search/functions_e.html create mode 100644 ver-1.11.0/grid_tools/search/functions_e.js create mode 100644 ver-1.11.0/grid_tools/search/functions_f.html create mode 100644 ver-1.11.0/grid_tools/search/functions_f.js create mode 100644 ver-1.11.0/grid_tools/search/mag_sel.png create mode 100644 ver-1.11.0/grid_tools/search/namespaces_0.html create mode 100644 ver-1.11.0/grid_tools/search/namespaces_0.js create mode 100644 ver-1.11.0/grid_tools/search/namespaces_1.html create mode 100644 ver-1.11.0/grid_tools/search/namespaces_1.js create mode 100644 ver-1.11.0/grid_tools/search/namespaces_2.html create mode 100644 ver-1.11.0/grid_tools/search/namespaces_2.js create mode 100644 ver-1.11.0/grid_tools/search/namespaces_3.html create mode 100644 ver-1.11.0/grid_tools/search/namespaces_3.js create mode 100644 ver-1.11.0/grid_tools/search/nomatches.html create mode 100644 ver-1.11.0/grid_tools/search/pages_0.html create mode 100644 ver-1.11.0/grid_tools/search/pages_0.js create mode 100644 ver-1.11.0/grid_tools/search/pages_1.html create mode 100644 ver-1.11.0/grid_tools/search/pages_1.js create mode 100644 ver-1.11.0/grid_tools/search/search.css create mode 100644 ver-1.11.0/grid_tools/search/search.js create mode 100644 ver-1.11.0/grid_tools/search/search_l.png create mode 100644 ver-1.11.0/grid_tools/search/search_m.png create mode 100644 ver-1.11.0/grid_tools/search/search_r.png create mode 100644 ver-1.11.0/grid_tools/search/searchdata.js create mode 100644 ver-1.11.0/grid_tools/search/variables_0.html create mode 100644 ver-1.11.0/grid_tools/search/variables_0.js create mode 100644 ver-1.11.0/grid_tools/search/variables_1.html create mode 100644 ver-1.11.0/grid_tools/search/variables_1.js create mode 100644 ver-1.11.0/grid_tools/search/variables_2.html create mode 100644 ver-1.11.0/grid_tools/search/variables_2.js create mode 100644 ver-1.11.0/grid_tools/search/variables_3.html create mode 100644 ver-1.11.0/grid_tools/search/variables_3.js create mode 100644 ver-1.11.0/grid_tools/search/variables_4.html create mode 100644 ver-1.11.0/grid_tools/search/variables_4.js create mode 100644 ver-1.11.0/grid_tools/search/variables_5.html create mode 100644 ver-1.11.0/grid_tools/search/variables_5.js create mode 100644 ver-1.11.0/grid_tools/search/variables_6.html create mode 100644 ver-1.11.0/grid_tools/search/variables_6.js create mode 100644 ver-1.11.0/grid_tools/search/variables_7.html create mode 100644 ver-1.11.0/grid_tools/search/variables_7.js create mode 100644 ver-1.11.0/grid_tools/search/variables_8.html create mode 100644 ver-1.11.0/grid_tools/search/variables_8.js create mode 100644 ver-1.11.0/grid_tools/search/variables_9.html create mode 100644 ver-1.11.0/grid_tools/search/variables_9.js create mode 100644 ver-1.11.0/grid_tools/search/variables_a.html create mode 100644 ver-1.11.0/grid_tools/search/variables_a.js create mode 100644 ver-1.11.0/grid_tools/search/variables_b.html create mode 100644 ver-1.11.0/grid_tools/search/variables_b.js create mode 100644 ver-1.11.0/grid_tools/search/variables_c.html create mode 100644 ver-1.11.0/grid_tools/search/variables_c.js create mode 100644 ver-1.11.0/grid_tools/search/variables_d.html create mode 100644 ver-1.11.0/grid_tools/search/variables_d.js create mode 100644 ver-1.11.0/grid_tools/search/variables_e.html create mode 100644 ver-1.11.0/grid_tools/search/variables_e.js create mode 100644 ver-1.11.0/grid_tools/shave__nc_8F90.html create mode 100644 ver-1.11.0/grid_tools/shave__nc_8F90.js create mode 100644 ver-1.11.0/grid_tools/shave__nc_8F90_source.html create mode 100644 ver-1.11.0/grid_tools/splitbar.png create mode 100644 ver-1.11.0/grid_tools/sync_off.png create mode 100644 ver-1.11.0/grid_tools/sync_on.png create mode 100644 ver-1.11.0/grid_tools/tab_a.png create mode 100644 ver-1.11.0/grid_tools/tab_b.png create mode 100644 ver-1.11.0/grid_tools/tab_h.png create mode 100644 ver-1.11.0/grid_tools/tab_s.png create mode 100644 ver-1.11.0/grid_tools/tabs.css create mode 100644 ver-1.11.0/grid_tools/utils_8F90.html create mode 100644 ver-1.11.0/grid_tools/utils_8F90.js create mode 100644 ver-1.11.0/grid_tools/utils_8F90_source.html create mode 100644 ver-1.11.0/index.html create mode 100644 ver-1.11.0/jquery.js create mode 100644 ver-1.11.0/lsm_routines/bc_s.png create mode 100644 ver-1.11.0/lsm_routines/bdwn.png create mode 100644 ver-1.11.0/lsm_routines/closed.png create mode 100644 ver-1.11.0/lsm_routines/doc.png create mode 100644 ver-1.11.0/lsm_routines/doxygen.css create mode 100644 ver-1.11.0/lsm_routines/doxygen.png create mode 100644 ver-1.11.0/lsm_routines/dynsections.js create mode 100644 ver-1.11.0/lsm_routines/folderclosed.png create mode 100644 ver-1.11.0/lsm_routines/folderopen.png create mode 100644 ver-1.11.0/lsm_routines/index.html create mode 100644 ver-1.11.0/lsm_routines/jquery.js create mode 100644 ver-1.11.0/lsm_routines/lsm__routines_8md_source.html create mode 100644 ver-1.11.0/lsm_routines/menu.js create mode 100644 ver-1.11.0/lsm_routines/menudata.js create mode 100644 ver-1.11.0/lsm_routines/nav_f.png create mode 100644 ver-1.11.0/lsm_routines/nav_g.png create mode 100644 ver-1.11.0/lsm_routines/nav_h.png create mode 100644 ver-1.11.0/lsm_routines/navtree.css create mode 100644 ver-1.11.0/lsm_routines/navtree.js create mode 100644 ver-1.11.0/lsm_routines/navtreedata.js create mode 100644 ver-1.11.0/lsm_routines/navtreeindex0.js create mode 100644 ver-1.11.0/lsm_routines/open.png create mode 100644 ver-1.11.0/lsm_routines/resize.js create mode 100644 ver-1.11.0/lsm_routines/search/all_0.html create mode 100644 ver-1.11.0/lsm_routines/search/all_0.js create mode 100644 ver-1.11.0/lsm_routines/search/close.png create mode 100644 ver-1.11.0/lsm_routines/search/mag_sel.png create mode 100644 ver-1.11.0/lsm_routines/search/nomatches.html create mode 100644 ver-1.11.0/lsm_routines/search/pages_0.html create mode 100644 ver-1.11.0/lsm_routines/search/pages_0.js create mode 100644 ver-1.11.0/lsm_routines/search/search.css create mode 100644 ver-1.11.0/lsm_routines/search/search.js create mode 100644 ver-1.11.0/lsm_routines/search/search_l.png create mode 100644 ver-1.11.0/lsm_routines/search/search_m.png create mode 100644 ver-1.11.0/lsm_routines/search/search_r.png create mode 100644 ver-1.11.0/lsm_routines/search/searchdata.js create mode 100644 ver-1.11.0/lsm_routines/splitbar.png create mode 100644 ver-1.11.0/lsm_routines/sync_off.png create mode 100644 ver-1.11.0/lsm_routines/sync_on.png create mode 100644 ver-1.11.0/lsm_routines/tab_a.png create mode 100644 ver-1.11.0/lsm_routines/tab_b.png create mode 100644 ver-1.11.0/lsm_routines/tab_h.png create mode 100644 ver-1.11.0/lsm_routines/tab_s.png create mode 100644 ver-1.11.0/lsm_routines/tabs.css create mode 100644 ver-1.11.0/main_8md_source.html create mode 100644 ver-1.11.0/menu.js create mode 100644 ver-1.11.0/menudata.js create mode 100644 ver-1.11.0/nav_f.png create mode 100644 ver-1.11.0/nav_g.png create mode 100644 ver-1.11.0/nav_h.png create mode 100644 ver-1.11.0/navtree.css create mode 100644 ver-1.11.0/navtree.js create mode 100644 ver-1.11.0/navtreedata.js create mode 100644 ver-1.11.0/navtreeindex0.js create mode 100644 ver-1.11.0/noah/README_8md_source.html create mode 100644 ver-1.11.0/noah/bc_s.png create mode 100644 ver-1.11.0/noah/bdwn.png create mode 100644 ver-1.11.0/noah/bulk__snow__module_8f90.html create mode 100644 ver-1.11.0/noah/bulk__snow__module_8f90.js create mode 100644 ver-1.11.0/noah/bulk__snow__module_8f90_source.html create mode 100644 ver-1.11.0/noah/closed.png create mode 100644 ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.html create mode 100644 ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.js create mode 100644 ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.html create mode 100644 ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.js create mode 100644 ver-1.11.0/noah/doc.png create mode 100644 ver-1.11.0/noah/doxygen.css create mode 100644 ver-1.11.0/noah/doxygen.png create mode 100644 ver-1.11.0/noah/dynsections.js create mode 100644 ver-1.11.0/noah/files.html create mode 100644 ver-1.11.0/noah/files_dup.js create mode 100644 ver-1.11.0/noah/folderclosed.png create mode 100644 ver-1.11.0/noah/folderopen.png create mode 100644 ver-1.11.0/noah/index.html create mode 100644 ver-1.11.0/noah/jquery.js create mode 100644 ver-1.11.0/noah/man/man3/bulk_snow_module.f90.3 create mode 100644 ver-1.11.0/noah/man/man3/calc_density.3 create mode 100644 ver-1.11.0/noah/man/man3/frh2o.3 create mode 100644 ver-1.11.0/noah/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_lsm_routines.fd_noah.fd_docs_README.3 create mode 100644 ver-1.11.0/noah/man/man3/set_soilveg.3 create mode 100644 ver-1.11.0/noah/man/man3/set_soilveg_snippet.f90.3 create mode 100644 ver-1.11.0/noah/man/man3/set_soilveg_snippet_mod.3 create mode 100644 ver-1.11.0/noah/man/man3/sflx_snippet.f90.3 create mode 100644 ver-1.11.0/noah/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_lsm_routines_8fd_noah_8fd_docs_README.html create mode 100644 ver-1.11.0/noah/menu.js create mode 100644 ver-1.11.0/noah/menudata.js create mode 100644 ver-1.11.0/noah/namespacemembers.html create mode 100644 ver-1.11.0/noah/namespacemembers_func.html create mode 100644 ver-1.11.0/noah/namespaces.html create mode 100644 ver-1.11.0/noah/namespaces_dup.js create mode 100644 ver-1.11.0/noah/namespaceset__soilveg__snippet__mod.html create mode 100644 ver-1.11.0/noah/nav_f.png create mode 100644 ver-1.11.0/noah/nav_g.png create mode 100644 ver-1.11.0/noah/nav_h.png create mode 100644 ver-1.11.0/noah/navtree.css create mode 100644 ver-1.11.0/noah/navtree.js create mode 100644 ver-1.11.0/noah/navtreedata.js create mode 100644 ver-1.11.0/noah/navtreeindex0.js create mode 100644 ver-1.11.0/noah/noah_8md_source.html create mode 100644 ver-1.11.0/noah/open.png create mode 100644 ver-1.11.0/noah/pages.html create mode 100644 ver-1.11.0/noah/resize.js create mode 100644 ver-1.11.0/noah/search/all_0.html create mode 100644 ver-1.11.0/noah/search/all_0.js create mode 100644 ver-1.11.0/noah/search/all_1.html create mode 100644 ver-1.11.0/noah/search/all_1.js create mode 100644 ver-1.11.0/noah/search/all_2.html create mode 100644 ver-1.11.0/noah/search/all_2.js create mode 100644 ver-1.11.0/noah/search/all_3.html create mode 100644 ver-1.11.0/noah/search/all_3.js create mode 100644 ver-1.11.0/noah/search/all_4.html create mode 100644 ver-1.11.0/noah/search/all_4.js create mode 100644 ver-1.11.0/noah/search/all_5.html create mode 100644 ver-1.11.0/noah/search/all_5.js create mode 100644 ver-1.11.0/noah/search/close.png create mode 100644 ver-1.11.0/noah/search/files_0.html create mode 100644 ver-1.11.0/noah/search/files_0.js create mode 100644 ver-1.11.0/noah/search/files_1.html create mode 100644 ver-1.11.0/noah/search/files_1.js create mode 100644 ver-1.11.0/noah/search/functions_0.html create mode 100644 ver-1.11.0/noah/search/functions_0.js create mode 100644 ver-1.11.0/noah/search/functions_1.html create mode 100644 ver-1.11.0/noah/search/functions_1.js create mode 100644 ver-1.11.0/noah/search/functions_2.html create mode 100644 ver-1.11.0/noah/search/functions_2.js create mode 100644 ver-1.11.0/noah/search/mag_sel.png create mode 100644 ver-1.11.0/noah/search/namespaces_0.html create mode 100644 ver-1.11.0/noah/search/namespaces_0.js create mode 100644 ver-1.11.0/noah/search/nomatches.html create mode 100644 ver-1.11.0/noah/search/pages_0.html create mode 100644 ver-1.11.0/noah/search/pages_0.js create mode 100644 ver-1.11.0/noah/search/pages_1.html create mode 100644 ver-1.11.0/noah/search/pages_1.js create mode 100644 ver-1.11.0/noah/search/search.css create mode 100644 ver-1.11.0/noah/search/search.js create mode 100644 ver-1.11.0/noah/search/search_l.png create mode 100644 ver-1.11.0/noah/search/search_m.png create mode 100644 ver-1.11.0/noah/search/search_r.png create mode 100644 ver-1.11.0/noah/search/searchdata.js create mode 100644 ver-1.11.0/noah/set__soilveg__snippet_8f90.html create mode 100644 ver-1.11.0/noah/set__soilveg__snippet_8f90.js create mode 100644 ver-1.11.0/noah/set__soilveg__snippet_8f90_source.html create mode 100644 ver-1.11.0/noah/sflx__snippet_8f90.html create mode 100644 ver-1.11.0/noah/sflx__snippet_8f90.js create mode 100644 ver-1.11.0/noah/sflx__snippet_8f90_source.html create mode 100644 ver-1.11.0/noah/splitbar.png create mode 100644 ver-1.11.0/noah/sync_off.png create mode 100644 ver-1.11.0/noah/sync_on.png create mode 100644 ver-1.11.0/noah/tab_a.png create mode 100644 ver-1.11.0/noah/tab_b.png create mode 100644 ver-1.11.0/noah/tab_h.png create mode 100644 ver-1.11.0/noah/tab_s.png create mode 100644 ver-1.11.0/noah/tabs.css create mode 100644 ver-1.11.0/open.png create mode 100644 ver-1.11.0/orog_mask_tools/README_8md_source.html create mode 100644 ver-1.11.0/orog_mask_tools/annotated.html create mode 100644 ver-1.11.0/orog_mask_tools/annotated_dup.js create mode 100644 ver-1.11.0/orog_mask_tools/bc_s.png create mode 100644 ver-1.11.0/orog_mask_tools/bdwn.png create mode 100644 ver-1.11.0/orog_mask_tools/classes.html create mode 100644 ver-1.11.0/orog_mask_tools/closed.png create mode 100644 ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.js create mode 100644 ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.js create mode 100644 ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.js create mode 100644 ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.js create mode 100644 ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html create mode 100644 ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.js create mode 100644 ver-1.11.0/orog_mask_tools/doc.png create mode 100644 ver-1.11.0/orog_mask_tools/doxygen.css create mode 100644 ver-1.11.0/orog_mask_tools/doxygen.png create mode 100644 ver-1.11.0/orog_mask_tools/dynsections.js create mode 100644 ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/files.html create mode 100644 ver-1.11.0/orog_mask_tools/files_dup.js create mode 100644 ver-1.11.0/orog_mask_tools/find__limit_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/find__limit_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/find__limit_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/folderclosed.png create mode 100644 ver-1.11.0/orog_mask_tools/folderopen.png create mode 100644 ver-1.11.0/orog_mask_tools/functions.html create mode 100644 ver-1.11.0/orog_mask_tools/functions_vars.html create mode 100644 ver-1.11.0/orog_mask_tools/globals.html create mode 100644 ver-1.11.0/orog_mask_tools/globals_func.html create mode 100644 ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.html create mode 100644 ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.js create mode 100644 ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/index.html create mode 100644 ver-1.11.0/orog_mask_tools/inland_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/inland_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/inland_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/jquery.js create mode 100644 ver-1.11.0/orog_mask_tools/lakefrac_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/lakefrac_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/lakefrac_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/HGT_interpolate.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEMT.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEMT2.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEOA.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEOA2.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEOA3.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEPC.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/MAKEPC2.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/REVERS.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/SPFFT1.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/TERSUB.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/__mtnlm7_oclsm.F__.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/bndry.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/bndry_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/cal_lake_frac_depth.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_lg_scale.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_sm_scale.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/calc_mean_HGT.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/cres.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_gp_idx.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_tile_idx.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/dbl_kind.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/dimx_fine.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/dimy_fine.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/find_limit.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/find_limit.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/free_mem.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_index.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_lat_angle.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_lon_angle.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_mismatch_index.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_xnsum.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_xnsum2.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/get_xnsum3.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/gg2rg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/gp_type.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.f90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/hgt_m_fine.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/hgt_missing.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/idx_init.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/idx_init_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/ijt.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/inland.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/inland_mask.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/inside_a_polygon.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/interp_1d.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/interpolate_mismatch.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/lake_frac.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/lakefrac.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/lat1d_fine.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/latlon2xyz.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/lon1d_fine.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland_rec_d.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mark_inland_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mark_regional_inland_rec_d.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/maxmin.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/middle.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/minmaxj.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/minmxj.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mnmxja.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_lg_scale.f90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_sm_scale.f90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/mtnlm7_oclsm.F.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nanc.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nb.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nb_tile.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nb_tile_bndry.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nb_tile_num.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nc_opchk.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nearest_i_east.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nearest_i_west.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nearest_j_north.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/nearest_j_south.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/neighbors.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/neighbors_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/netcdf_err.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/netcdf_io.F90.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/p5.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/pi.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_grid.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_reg_grid.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_g.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_lakedata.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_orog.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/read_orog_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/real_kind.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/rg2gg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/spherical_angle.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/spherical_distance.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/timef.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/write_inland.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/write_inland_reg.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/write_lakedata_to_orodata.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/write_netcdf.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/write_reg_lakedata_to_orodata.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/xres.3 create mode 100644 ver-1.11.0/orog_mask_tools/man/man3/yres.3 create mode 100644 ver-1.11.0/orog_mask_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html create mode 100644 ver-1.11.0/orog_mask_tools/menu.js create mode 100644 ver-1.11.0/orog_mask_tools/menudata.js create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.html create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.js create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.html create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.js create mode 100644 ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.html create mode 100644 ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.js create mode 100644 ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F_source.html create mode 100644 ver-1.11.0/orog_mask_tools/nav_f.png create mode 100644 ver-1.11.0/orog_mask_tools/nav_g.png create mode 100644 ver-1.11.0/orog_mask_tools/nav_h.png create mode 100644 ver-1.11.0/orog_mask_tools/navtree.css create mode 100644 ver-1.11.0/orog_mask_tools/navtree.js create mode 100644 ver-1.11.0/orog_mask_tools/navtreedata.js create mode 100644 ver-1.11.0/orog_mask_tools/navtreeindex0.js create mode 100644 ver-1.11.0/orog_mask_tools/nb_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/nb_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/nb_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/netcdf__io_8F90.html create mode 100644 ver-1.11.0/orog_mask_tools/netcdf__io_8F90.js create mode 100644 ver-1.11.0/orog_mask_tools/netcdf__io_8F90_source.html create mode 100644 ver-1.11.0/orog_mask_tools/open.png create mode 100644 ver-1.11.0/orog_mask_tools/orog__mask__tools_8md_source.html create mode 100644 ver-1.11.0/orog_mask_tools/pages.html create mode 100644 ver-1.11.0/orog_mask_tools/resize.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_1.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_1.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_10.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_10.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_11.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_11.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_12.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_12.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_13.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_13.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_2.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_2.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_3.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_3.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_4.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_4.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_5.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_5.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_6.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_6.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_7.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_7.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_8.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_8.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_9.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_9.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_a.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_a.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_b.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_b.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_c.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_c.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_d.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_d.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_e.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_e.js create mode 100644 ver-1.11.0/orog_mask_tools/search/all_f.html create mode 100644 ver-1.11.0/orog_mask_tools/search/all_f.js create mode 100644 ver-1.11.0/orog_mask_tools/search/classes_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/classes_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/close.png create mode 100644 ver-1.11.0/orog_mask_tools/search/files_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_1.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_1.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_2.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_2.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_3.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_3.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_4.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_4.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_5.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_5.js create mode 100644 ver-1.11.0/orog_mask_tools/search/files_6.html create mode 100644 ver-1.11.0/orog_mask_tools/search/files_6.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_1.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_1.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_2.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_2.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_3.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_3.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_4.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_4.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_5.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_5.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_6.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_6.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_7.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_7.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_8.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_8.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_9.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_9.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_a.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_a.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_b.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_b.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_c.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_c.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_d.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_d.js create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_e.html create mode 100644 ver-1.11.0/orog_mask_tools/search/functions_e.js create mode 100644 ver-1.11.0/orog_mask_tools/search/mag_sel.png create mode 100644 ver-1.11.0/orog_mask_tools/search/nomatches.html create mode 100644 ver-1.11.0/orog_mask_tools/search/pages_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/pages_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/pages_1.html create mode 100644 ver-1.11.0/orog_mask_tools/search/pages_1.js create mode 100644 ver-1.11.0/orog_mask_tools/search/search.css create mode 100644 ver-1.11.0/orog_mask_tools/search/search.js create mode 100644 ver-1.11.0/orog_mask_tools/search/search_l.png create mode 100644 ver-1.11.0/orog_mask_tools/search/search_m.png create mode 100644 ver-1.11.0/orog_mask_tools/search/search_r.png create mode 100644 ver-1.11.0/orog_mask_tools/search/searchdata.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_0.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_0.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_1.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_1.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_2.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_2.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_3.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_3.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_4.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_4.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_5.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_5.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_6.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_6.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_7.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_7.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_8.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_8.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_9.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_9.js create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_a.html create mode 100644 ver-1.11.0/orog_mask_tools/search/variables_a.js create mode 100644 ver-1.11.0/orog_mask_tools/splitbar.png create mode 100644 ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.html create mode 100644 ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.js create mode 100644 ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.html create mode 100644 ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.js create mode 100644 ver-1.11.0/orog_mask_tools/sync_off.png create mode 100644 ver-1.11.0/orog_mask_tools/sync_on.png create mode 100644 ver-1.11.0/orog_mask_tools/tab_a.png create mode 100644 ver-1.11.0/orog_mask_tools/tab_b.png create mode 100644 ver-1.11.0/orog_mask_tools/tab_h.png create mode 100644 ver-1.11.0/orog_mask_tools/tab_s.png create mode 100644 ver-1.11.0/orog_mask_tools/tabs.css create mode 100644 ver-1.11.0/resize.js create mode 100644 ver-1.11.0/search/close.png create mode 100644 ver-1.11.0/search/mag_sel.png create mode 100644 ver-1.11.0/search/nomatches.html create mode 100644 ver-1.11.0/search/search.css create mode 100644 ver-1.11.0/search/search.js create mode 100644 ver-1.11.0/search/search_l.png create mode 100644 ver-1.11.0/search/search_m.png create mode 100644 ver-1.11.0/search/search_r.png create mode 100644 ver-1.11.0/search/searchdata.js create mode 100644 ver-1.11.0/sfc_climo_gen/README_8md_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/bc_s.png create mode 100644 ver-1.11.0/sfc_climo_gen/bdwn.png create mode 100644 ver-1.11.0/sfc_climo_gen/closed.png create mode 100644 ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.html create mode 100644 ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.js create mode 100644 ver-1.11.0/sfc_climo_gen/doc.png create mode 100644 ver-1.11.0/sfc_climo_gen/doxygen.css create mode 100644 ver-1.11.0/sfc_climo_gen/doxygen.png create mode 100644 ver-1.11.0/sfc_climo_gen/driver_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/driver_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/driver_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/dynsections.js create mode 100644 ver-1.11.0/sfc_climo_gen/files.html create mode 100644 ver-1.11.0/sfc_climo_gen/files_dup.js create mode 100644 ver-1.11.0/sfc_climo_gen/folderclosed.png create mode 100644 ver-1.11.0/sfc_climo_gen/folderopen.png create mode 100644 ver-1.11.0/sfc_climo_gen/globals.html create mode 100644 ver-1.11.0/sfc_climo_gen/globals_func.html create mode 100644 ver-1.11.0/sfc_climo_gen/index.html create mode 100644 ver-1.11.0/sfc_climo_gen/interp_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/interp_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/interp_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/jquery.js create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/adjust_for_landice.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/data_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/day_of_rec.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/define_model_grid.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/define_source_grid.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/driver.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/driver.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/error_handler.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/field_names.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/fract_vegsoil_type.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/get_model_info.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/grid_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/grid_src.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/grid_tiles.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/halo.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/i_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/i_src.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/ij_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_facsf_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_leaf_area_index_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_maximum_snow_albedo_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_slope_type_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_snowfree_albedo_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_soil_color_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_soil_type_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_substrate_temperature_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_vegetation_greenness_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/input_vegetation_type_file.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/interp.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/interp.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/interp_frac_cats.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/interp_frac_cats.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/j_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/j_src.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/land_frac_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/latitude_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/leaf_area_index_method.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/longitude_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/mask_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/maximum_snow_albedo_method.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_sfc_climo_gen.fd_docs_README.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/missing.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/model_grid.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/model_grid.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/model_grid_cleanup.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/mosaic_file_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/netcdf_err.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/num_fields.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/num_records.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/num_tiles.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/num_time_recs.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/orog_dir_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/orog_files_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/output.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/output.f90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/output_driver.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/output_frac_cats.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/output_frac_cats.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/program_setup.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/program_setup.f90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/read_setup_namelist.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/search.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/search.f90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/search_frac_cats.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/search_frac_cats.f90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/snowfree_albedo_method.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/source.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/source_grid.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/source_grid.F90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/source_grid_cleanup.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/utils.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/utils.f90.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/vegetation_greenness_method.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/vegt_field_mdl.3 create mode 100644 ver-1.11.0/sfc_climo_gen/man/man3/writeit.3 create mode 100644 ver-1.11.0/sfc_climo_gen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_sfc_climo_gen_8fd_docs_README.html create mode 100644 ver-1.11.0/sfc_climo_gen/menu.js create mode 100644 ver-1.11.0/sfc_climo_gen/menudata.js create mode 100644 ver-1.11.0/sfc_climo_gen/model__grid_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/model__grid_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/model__grid_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespacemembers.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespacemembers_func.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespacemembers_vars.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespacemodel__grid.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespaceoutput__frac__cats.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespaceprogram__setup.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespaces.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespaces_dup.js create mode 100644 ver-1.11.0/sfc_climo_gen/namespacesource__grid.html create mode 100644 ver-1.11.0/sfc_climo_gen/namespaceutils.html create mode 100644 ver-1.11.0/sfc_climo_gen/nav_f.png create mode 100644 ver-1.11.0/sfc_climo_gen/nav_g.png create mode 100644 ver-1.11.0/sfc_climo_gen/nav_h.png create mode 100644 ver-1.11.0/sfc_climo_gen/navtree.css create mode 100644 ver-1.11.0/sfc_climo_gen/navtree.js create mode 100644 ver-1.11.0/sfc_climo_gen/navtreedata.js create mode 100644 ver-1.11.0/sfc_climo_gen/navtreeindex0.js create mode 100644 ver-1.11.0/sfc_climo_gen/open.png create mode 100644 ver-1.11.0/sfc_climo_gen/output_8f90.html create mode 100644 ver-1.11.0/sfc_climo_gen/output_8f90.js create mode 100644 ver-1.11.0/sfc_climo_gen/output_8f90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/pages.html create mode 100644 ver-1.11.0/sfc_climo_gen/program__setup_8f90.html create mode 100644 ver-1.11.0/sfc_climo_gen/program__setup_8f90.js create mode 100644 ver-1.11.0/sfc_climo_gen/program__setup_8f90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/resize.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_10.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_10.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_11.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_11.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_2.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_2.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_3.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_3.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_4.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_4.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_5.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_5.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_6.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_6.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_7.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_7.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_8.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_8.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_9.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_9.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_a.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_a.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_b.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_b.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_c.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_c.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_d.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_d.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_e.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_e.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_f.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/all_f.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/close.png create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_2.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_2.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_3.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_3.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_4.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_4.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_5.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_5.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_6.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/files_6.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_2.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_2.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_3.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_3.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_4.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_4.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_5.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_5.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_6.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_6.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_7.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_7.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_8.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_8.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_9.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_9.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_a.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/functions_a.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/mag_sel.png create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_2.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_2.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_3.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_3.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_4.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/namespaces_4.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/nomatches.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/pages_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/pages_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/pages_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/pages_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/search.css create mode 100644 ver-1.11.0/sfc_climo_gen/search/search.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/search_l.png create mode 100644 ver-1.11.0/sfc_climo_gen/search/search_m.png create mode 100644 ver-1.11.0/sfc_climo_gen/search/search_r.png create mode 100644 ver-1.11.0/sfc_climo_gen/search/searchdata.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_0.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_0.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_1.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_1.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_2.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_2.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_3.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_3.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_4.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_4.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_5.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_5.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_6.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_6.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_7.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_7.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_8.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_8.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_9.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_9.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_a.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_a.js create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_b.html create mode 100644 ver-1.11.0/sfc_climo_gen/search/variables_b.js create mode 100644 ver-1.11.0/sfc_climo_gen/search_8f90.html create mode 100644 ver-1.11.0/sfc_climo_gen/search_8f90.js create mode 100644 ver-1.11.0/sfc_climo_gen/search_8f90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.html create mode 100644 ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.js create mode 100644 ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/sfc__climo__gen_8md_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/source__grid_8F90.html create mode 100644 ver-1.11.0/sfc_climo_gen/source__grid_8F90.js create mode 100644 ver-1.11.0/sfc_climo_gen/source__grid_8F90_source.html create mode 100644 ver-1.11.0/sfc_climo_gen/splitbar.png create mode 100644 ver-1.11.0/sfc_climo_gen/sync_off.png create mode 100644 ver-1.11.0/sfc_climo_gen/sync_on.png create mode 100644 ver-1.11.0/sfc_climo_gen/tab_a.png create mode 100644 ver-1.11.0/sfc_climo_gen/tab_b.png create mode 100644 ver-1.11.0/sfc_climo_gen/tab_h.png create mode 100644 ver-1.11.0/sfc_climo_gen/tab_s.png create mode 100644 ver-1.11.0/sfc_climo_gen/tabs.css create mode 100644 ver-1.11.0/sfc_climo_gen/utils_8f90.html create mode 100644 ver-1.11.0/sfc_climo_gen/utils_8f90.js create mode 100644 ver-1.11.0/sfc_climo_gen/utils_8f90_source.html create mode 100644 ver-1.11.0/splitbar.png create mode 100644 ver-1.11.0/sync_off.png create mode 100644 ver-1.11.0/sync_on.png create mode 100644 ver-1.11.0/tab_a.png create mode 100644 ver-1.11.0/tab_b.png create mode 100644 ver-1.11.0/tab_h.png create mode 100644 ver-1.11.0/tab_s.png create mode 100644 ver-1.11.0/tabs.css create mode 100644 ver-1.11.0/vcoord_gen/README_8md_source.html create mode 100644 ver-1.11.0/vcoord_gen/bc_s.png create mode 100644 ver-1.11.0/vcoord_gen/bdwn.png create mode 100644 ver-1.11.0/vcoord_gen/closed.png create mode 100644 ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.html create mode 100644 ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.js create mode 100644 ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/vcoord_gen/doc.png create mode 100644 ver-1.11.0/vcoord_gen/doxygen.css create mode 100644 ver-1.11.0/vcoord_gen/doxygen.png create mode 100644 ver-1.11.0/vcoord_gen/driver_8f90.html create mode 100644 ver-1.11.0/vcoord_gen/driver_8f90.js create mode 100644 ver-1.11.0/vcoord_gen/driver_8f90_source.html create mode 100644 ver-1.11.0/vcoord_gen/dynsections.js create mode 100644 ver-1.11.0/vcoord_gen/files.html create mode 100644 ver-1.11.0/vcoord_gen/files_dup.js create mode 100644 ver-1.11.0/vcoord_gen/folderclosed.png create mode 100644 ver-1.11.0/vcoord_gen/folderopen.png create mode 100644 ver-1.11.0/vcoord_gen/globals.html create mode 100644 ver-1.11.0/vcoord_gen/globals_func.html create mode 100644 ver-1.11.0/vcoord_gen/index.html create mode 100644 ver-1.11.0/vcoord_gen/jquery.js create mode 100644 ver-1.11.0/vcoord_gen/man/man3/driver.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/driver.f90.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/lubksb.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/ludcmp.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/matrix_utils.f90.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_vcoord_gen.fd_docs_README.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/vcoord_gen.3 create mode 100644 ver-1.11.0/vcoord_gen/man/man3/vcoord_gen.f90.3 create mode 100644 ver-1.11.0/vcoord_gen/matrix__utils_8f90.html create mode 100644 ver-1.11.0/vcoord_gen/matrix__utils_8f90.js create mode 100644 ver-1.11.0/vcoord_gen/matrix__utils_8f90_source.html create mode 100644 ver-1.11.0/vcoord_gen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html create mode 100644 ver-1.11.0/vcoord_gen/menu.js create mode 100644 ver-1.11.0/vcoord_gen/menudata.js create mode 100644 ver-1.11.0/vcoord_gen/nav_f.png create mode 100644 ver-1.11.0/vcoord_gen/nav_g.png create mode 100644 ver-1.11.0/vcoord_gen/nav_h.png create mode 100644 ver-1.11.0/vcoord_gen/navtree.css create mode 100644 ver-1.11.0/vcoord_gen/navtree.js create mode 100644 ver-1.11.0/vcoord_gen/navtreedata.js create mode 100644 ver-1.11.0/vcoord_gen/navtreeindex0.js create mode 100644 ver-1.11.0/vcoord_gen/open.png create mode 100644 ver-1.11.0/vcoord_gen/pages.html create mode 100644 ver-1.11.0/vcoord_gen/resize.js create mode 100644 ver-1.11.0/vcoord_gen/search/all_0.html create mode 100644 ver-1.11.0/vcoord_gen/search/all_0.js create mode 100644 ver-1.11.0/vcoord_gen/search/all_1.html create mode 100644 ver-1.11.0/vcoord_gen/search/all_1.js create mode 100644 ver-1.11.0/vcoord_gen/search/all_2.html create mode 100644 ver-1.11.0/vcoord_gen/search/all_2.js create mode 100644 ver-1.11.0/vcoord_gen/search/all_3.html create mode 100644 ver-1.11.0/vcoord_gen/search/all_3.js create mode 100644 ver-1.11.0/vcoord_gen/search/all_4.html create mode 100644 ver-1.11.0/vcoord_gen/search/all_4.js create mode 100644 ver-1.11.0/vcoord_gen/search/close.png create mode 100644 ver-1.11.0/vcoord_gen/search/files_0.html create mode 100644 ver-1.11.0/vcoord_gen/search/files_0.js create mode 100644 ver-1.11.0/vcoord_gen/search/files_1.html create mode 100644 ver-1.11.0/vcoord_gen/search/files_1.js create mode 100644 ver-1.11.0/vcoord_gen/search/files_2.html create mode 100644 ver-1.11.0/vcoord_gen/search/files_2.js create mode 100644 ver-1.11.0/vcoord_gen/search/functions_0.html create mode 100644 ver-1.11.0/vcoord_gen/search/functions_0.js create mode 100644 ver-1.11.0/vcoord_gen/search/functions_1.html create mode 100644 ver-1.11.0/vcoord_gen/search/functions_1.js create mode 100644 ver-1.11.0/vcoord_gen/search/functions_2.html create mode 100644 ver-1.11.0/vcoord_gen/search/functions_2.js create mode 100644 ver-1.11.0/vcoord_gen/search/mag_sel.png create mode 100644 ver-1.11.0/vcoord_gen/search/nomatches.html create mode 100644 ver-1.11.0/vcoord_gen/search/pages_0.html create mode 100644 ver-1.11.0/vcoord_gen/search/pages_0.js create mode 100644 ver-1.11.0/vcoord_gen/search/pages_1.html create mode 100644 ver-1.11.0/vcoord_gen/search/pages_1.js create mode 100644 ver-1.11.0/vcoord_gen/search/search.css create mode 100644 ver-1.11.0/vcoord_gen/search/search.js create mode 100644 ver-1.11.0/vcoord_gen/search/search_l.png create mode 100644 ver-1.11.0/vcoord_gen/search/search_m.png create mode 100644 ver-1.11.0/vcoord_gen/search/search_r.png create mode 100644 ver-1.11.0/vcoord_gen/search/searchdata.js create mode 100644 ver-1.11.0/vcoord_gen/splitbar.png create mode 100644 ver-1.11.0/vcoord_gen/sync_off.png create mode 100644 ver-1.11.0/vcoord_gen/sync_on.png create mode 100644 ver-1.11.0/vcoord_gen/tab_a.png create mode 100644 ver-1.11.0/vcoord_gen/tab_b.png create mode 100644 ver-1.11.0/vcoord_gen/tab_h.png create mode 100644 ver-1.11.0/vcoord_gen/tab_s.png create mode 100644 ver-1.11.0/vcoord_gen/tabs.css create mode 100644 ver-1.11.0/vcoord_gen/vcoord__gen_8f90.html create mode 100644 ver-1.11.0/vcoord_gen/vcoord__gen_8f90.js create mode 100644 ver-1.11.0/vcoord_gen/vcoord__gen_8f90_source.html create mode 100644 ver-1.11.0/vcoord_gen/vcoord__gen_8md_source.html create mode 100644 ver-1.11.0/weight_gen/bc_s.png create mode 100644 ver-1.11.0/weight_gen/bdwn.png create mode 100644 ver-1.11.0/weight_gen/closed.png create mode 100644 ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.html create mode 100644 ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.js create mode 100644 ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html create mode 100644 ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js create mode 100644 ver-1.11.0/weight_gen/doc.png create mode 100644 ver-1.11.0/weight_gen/doxygen.css create mode 100644 ver-1.11.0/weight_gen/doxygen.png create mode 100644 ver-1.11.0/weight_gen/dynsections.js create mode 100644 ver-1.11.0/weight_gen/files.html create mode 100644 ver-1.11.0/weight_gen/files_dup.js create mode 100644 ver-1.11.0/weight_gen/folderclosed.png create mode 100644 ver-1.11.0/weight_gen/folderopen.png create mode 100644 ver-1.11.0/weight_gen/globals.html create mode 100644 ver-1.11.0/weight_gen/globals_func.html create mode 100644 ver-1.11.0/weight_gen/index.html create mode 100644 ver-1.11.0/weight_gen/jquery.js create mode 100644 ver-1.11.0/weight_gen/man/man3/scrip.3 create mode 100644 ver-1.11.0/weight_gen/man/man3/scrip.F90.3 create mode 100644 ver-1.11.0/weight_gen/menu.js create mode 100644 ver-1.11.0/weight_gen/menudata.js create mode 100644 ver-1.11.0/weight_gen/nav_f.png create mode 100644 ver-1.11.0/weight_gen/nav_g.png create mode 100644 ver-1.11.0/weight_gen/nav_h.png create mode 100644 ver-1.11.0/weight_gen/navtree.css create mode 100644 ver-1.11.0/weight_gen/navtree.js create mode 100644 ver-1.11.0/weight_gen/navtreedata.js create mode 100644 ver-1.11.0/weight_gen/navtreeindex0.js create mode 100644 ver-1.11.0/weight_gen/open.png create mode 100644 ver-1.11.0/weight_gen/resize.js create mode 100644 ver-1.11.0/weight_gen/scrip_8F90.html create mode 100644 ver-1.11.0/weight_gen/scrip_8F90.js create mode 100644 ver-1.11.0/weight_gen/scrip_8F90_source.html create mode 100644 ver-1.11.0/weight_gen/search/all_0.html create mode 100644 ver-1.11.0/weight_gen/search/all_0.js create mode 100644 ver-1.11.0/weight_gen/search/all_1.html create mode 100644 ver-1.11.0/weight_gen/search/all_1.js create mode 100644 ver-1.11.0/weight_gen/search/close.png create mode 100644 ver-1.11.0/weight_gen/search/files_0.html create mode 100644 ver-1.11.0/weight_gen/search/files_0.js create mode 100644 ver-1.11.0/weight_gen/search/functions_0.html create mode 100644 ver-1.11.0/weight_gen/search/functions_0.js create mode 100644 ver-1.11.0/weight_gen/search/mag_sel.png create mode 100644 ver-1.11.0/weight_gen/search/nomatches.html create mode 100644 ver-1.11.0/weight_gen/search/pages_0.html create mode 100644 ver-1.11.0/weight_gen/search/pages_0.js create mode 100644 ver-1.11.0/weight_gen/search/search.css create mode 100644 ver-1.11.0/weight_gen/search/search.js create mode 100644 ver-1.11.0/weight_gen/search/search_l.png create mode 100644 ver-1.11.0/weight_gen/search/search_m.png create mode 100644 ver-1.11.0/weight_gen/search/search_r.png create mode 100644 ver-1.11.0/weight_gen/search/searchdata.js create mode 100644 ver-1.11.0/weight_gen/splitbar.png create mode 100644 ver-1.11.0/weight_gen/sync_off.png create mode 100644 ver-1.11.0/weight_gen/sync_on.png create mode 100644 ver-1.11.0/weight_gen/tab_a.png create mode 100644 ver-1.11.0/weight_gen/tab_b.png create mode 100644 ver-1.11.0/weight_gen/tab_h.png create mode 100644 ver-1.11.0/weight_gen/tab_s.png create mode 100644 ver-1.11.0/weight_gen/tabs.css create mode 100644 ver-1.11.0/weight_gen/user__guide_8md_source.html diff --git a/ver-1.11.0/bc_s.png b/ver-1.11.0/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/bdwn.png b/ver-1.11.0/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +chgres_cube: Data Types List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Types List
+
+
+
Here are the data types with brief descriptions:
+
[detail level 12]
+ + + +
 NsurfaceProcess surface and nst fields
 Crealptr_2d
 Crealptr_3d
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/annotated_dup.js b/ver-1.11.0/chgres_cube/annotated_dup.js new file mode 100644 index 000000000..4979e35d1 --- /dev/null +++ b/ver-1.11.0/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/ver-1.11.0/chgres_cube/atm__input__data_8F90.html b/ver-1.11.0/chgres_cube/atm__input__data_8F90.html new file mode 100644 index 000000000..29c510624 --- /dev/null +++ b/ver-1.11.0/chgres_cube/atm__input__data_8F90.html @@ -0,0 +1,219 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atm_input_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atm_input_data.F90 File Reference
+
+
+ +

Read atmospheric data from GRIB2, NEMSIO and NetCDF files. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  atm_input_data
 Read atmospheric data on the input grid.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine atm_input_data::calcalpha_rotlatlon (latgrid, longrid, cenlat, cenlon, alpha)
 Calculate rotation angle for rotated latlon grids. More...
 
subroutine, public atm_input_data::cleanup_input_atm_data
 Free up memory associated with atm data. More...
 
subroutine, public atm_input_data::convert_winds_to_xyz
 Convert winds from 2-d to 3-d components. More...
 
subroutine atm_input_data::gridrot (lov, latin1, latin2, lon, rot)
 Compute grid rotation angle for non-latlon grids. More...
 
subroutine atm_input_data::init_atm_esmf_fields
 Create atmospheric esmf fields. More...
 
subroutine, public atm_input_data::read_input_atm_data (localpet)
 Read input grid atmospheric data driver. More...
 
subroutine atm_input_data::read_input_atm_gaussian_nemsio_file (localpet)
 Read input grid atmospheric fv3 gaussian nemsio files. More...
 
subroutine atm_input_data::read_input_atm_gaussian_netcdf_file (localpet)
 Read fv3 netcdf gaussian history file. More...
 
subroutine atm_input_data::read_input_atm_gfs_gaussian_nemsio_file (localpet)
 Read input atmospheric data from spectral gfs (global gaussian in nemsio format. More...
 
subroutine atm_input_data::read_input_atm_gfs_sigio_file (localpet)
 Read input atmospheric data from spectral gfs (old sigio format). More...
 
subroutine atm_input_data::read_input_atm_grib2_file (localpet)
 Read input grid atmospheric fv3gfs grib2 files. More...
 
subroutine atm_input_data::read_input_atm_restart_file (localpet)
 Read input grid fv3 atmospheric data 'warm' restart files. More...
 
subroutine atm_input_data::read_input_atm_tiled_history_file (localpet)
 Read input grid fv3 atmospheric tiled history files in netcdf format. More...
 
subroutine atm_input_data::read_winds (u, v, localpet, octet_23, rlevs, lugb, pdt_num)
 Read winds from a grib2 file. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field) atm_input_data::dpres_input_grid
 pressure thickness More...
 
type(esmf_field), public atm_input_data::dzdt_input_grid
 vert velocity More...
 
integer, public atm_input_data::lev_input
 number of atmospheric layers More...
 
integer, public atm_input_data::levp1_input
 number of atmos layer interfaces More...
 
type(esmf_field), public atm_input_data::pres_input_grid
 3-d pressure More...
 
type(esmf_field), public atm_input_data::ps_input_grid
 surface pressure More...
 
character(len=50), dimension(:), allocatable, private atm_input_data::slevs
 The atmospheric levels in the GRIB2 input file. More...
 
type(esmf_field), public atm_input_data::temp_input_grid
 temperature More...
 
type(esmf_field), public atm_input_data::terrain_input_grid
 terrain height More...
 
type(esmf_field), dimension(:), allocatable, public atm_input_data::tracers_input_grid
 tracers More...
 
type(esmf_field), public atm_input_data::u_input_grid
 u/v wind at grid More...
 
type(esmf_field), public atm_input_data::v_input_grid
 box center More...
 
type(esmf_field), public atm_input_data::xwind_input_grid
 x-component wind More...
 
type(esmf_field), public atm_input_data::ywind_input_grid
 y-component wind More...
 
type(esmf_field), public atm_input_data::zwind_input_grid
 z-component wind More...
 
+

Detailed Description

+

Read atmospheric data from GRIB2, NEMSIO and NetCDF files.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file atm_input_data.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/atm__input__data_8F90.js b/ver-1.11.0/chgres_cube/atm__input__data_8F90.js new file mode 100644 index 000000000..86fed46c4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/atm__input__data_8F90.js @@ -0,0 +1,32 @@ +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_nemsio_file", "atm__input__data_8F90.html#a5036243fe27266911f42b4b3284e0be1", null ], + [ "read_input_atm_gaussian_netcdf_file", "atm__input__data_8F90.html#af0df614e570fb2d35809a47db2db9d77", null ], + [ "read_input_atm_gfs_gaussian_nemsio_file", "atm__input__data_8F90.html#ac3d51a1e727ec4409ef6dc9470def416", null ], + [ "read_input_atm_gfs_sigio_file", "atm__input__data_8F90.html#a50775c3b526de0bb83059bebae880268", 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/ver-1.11.0/chgres_cube/atm__input__data_8F90_source.html b/ver-1.11.0/chgres_cube/atm__input__data_8F90_source.html new file mode 100644 index 000000000..2cbe4d88b --- /dev/null +++ b/ver-1.11.0/chgres_cube/atm__input__data_8F90_source.html @@ -0,0 +1,162 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atm_input_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
atm_input_data.F90
+
+
+Go to the documentation of this file.
1 
4 
14 
16  use esmf
17  use netcdf
18  use nemsio_module
19 
20  use program_setup, only : data_dir_input_grid, &
26  tracers, &
27  get_var_cond, &
31  use model_grid, only : input_grid, &
32  i_input, j_input, &
37  use utilities, only : error_handler, &
38  netcdf_err, &
39  handle_grib_error, &
40  quicksort, &
41  dint2p
42 implicit none
43 
44  private
45 
46 ! Fields associated with the atmospheric model.
47 
48  type(esmf_field), public :: dzdt_input_grid
49  type(esmf_field) :: dpres_input_grid
50  type(esmf_field), public :: pres_input_grid
51  type(esmf_field), public :: ps_input_grid
52  type(esmf_field), public :: terrain_input_grid
53  type(esmf_field), public :: temp_input_grid
54 
55  type(esmf_field), public :: u_input_grid
56  type(esmf_field), public :: v_input_grid
57  type(esmf_field), public :: xwind_input_grid
58  type(esmf_field), public :: ywind_input_grid
59  type(esmf_field), public :: zwind_input_grid
60  type(esmf_field), allocatable, public :: tracers_input_grid(:)
61 
62  integer, public :: lev_input
63  integer, public :: levp1_input
64 
65  character(len=50), private, allocatable :: slevs(:)
66 
67  public :: read_input_atm_data
68  public :: cleanup_input_atm_data
69  public :: convert_winds_to_xyz
70 
71  contains
72 
77  subroutine read_input_atm_data(localpet)
78 
79  implicit none
80 
81  integer, intent(in) :: localpet
82 
83 !-------------------------------------------------------------------------------
84 ! Read the tiled 'warm' restart files.
85 !-------------------------------------------------------------------------------
86 
87  if (trim(input_type) == "restart") then
88 
89  call read_input_atm_restart_file(localpet)
90 
91 !-------------------------------------------------------------------------------
92 ! Read the gaussian history files in netcdf format.
93 !-------------------------------------------------------------------------------
94 
95  elseif (trim(input_type) == "gaussian_netcdf") then
96 
98 
99 !-------------------------------------------------------------------------------
100 ! Read the tiled history files in netcdf format.
101 !-------------------------------------------------------------------------------
102 
103  elseif (trim(input_type) == "history") then
104 
105  call read_input_atm_tiled_history_file(localpet)
106 
107 !-------------------------------------------------------------------------------
108 ! Read the gaussian history files in nemsio format.
109 !-------------------------------------------------------------------------------
110 
111  elseif (trim(input_type) == "gaussian_nemsio") then ! fv3gfs gaussian nemsio
112 
114 
115 !-------------------------------------------------------------------------------
116 ! Read the spectral gfs gaussian history files in nemsio format.
117 !-------------------------------------------------------------------------------
118 
119  elseif (trim(input_type) == "gfs_gaussian_nemsio") then ! spectral gfs gaussian
120  ! nemsio.
122 
123 !-------------------------------------------------------------------------------
124 ! Read the spectral gfs gaussian history files in sigio format.
125 !-------------------------------------------------------------------------------
126 
127  elseif (trim(input_type) == "gfs_sigio") then ! spectral gfs sigio format.
128 
129  call read_input_atm_gfs_sigio_file(localpet)
130 
131 !-------------------------------------------------------------------------------
132 ! Read fv3gfs data in grib2 format.
133 !-------------------------------------------------------------------------------
134 
135  elseif (trim(input_type) == "grib2") then
136 
137  call read_input_atm_grib2_file(localpet)
138 
139  endif
140 
141  end subroutine read_input_atm_data
142 
143 
147  subroutine init_atm_esmf_fields
148 
149  implicit none
150 
151  integer :: i, rc
152 
153  print*,"- INITIALIZE ATMOSPHERIC ESMF FIELDS."
154 
155  print*,"- CALL FieldCreate FOR INPUT GRID SURFACE PRESSURE."
156  ps_input_grid = esmf_fieldcreate(input_grid, &
157  typekind=esmf_typekind_r8, &
158  staggerloc=esmf_staggerloc_center, rc=rc)
159  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
160  call error_handler("IN FieldCreate", rc)
161 
162  print*,"- CALL FieldCreate FOR INPUT GRID TERRAIN."
163  terrain_input_grid = esmf_fieldcreate(input_grid, &
164  typekind=esmf_typekind_r8, &
165  staggerloc=esmf_staggerloc_center, rc=rc)
166  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
167  call error_handler("IN FieldCreate", rc)
168 
169  print*,"- CALL FieldCreate FOR INPUT GRID xwind."
170  xwind_input_grid = esmf_fieldcreate(input_grid, &
171  typekind=esmf_typekind_r8, &
172  staggerloc=esmf_staggerloc_center, &
173  ungriddedlbound=(/1/), &
174  ungriddedubound=(/lev_input/), rc=rc)
175  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
176  call error_handler("IN FieldCreate", rc)
177 
178  print*,"- CALL FieldCreate FOR INPUT GRID ywind."
179  ywind_input_grid = esmf_fieldcreate(input_grid, &
180  typekind=esmf_typekind_r8, &
181  staggerloc=esmf_staggerloc_center, &
182  ungriddedlbound=(/1/), &
183  ungriddedubound=(/lev_input/), rc=rc)
184  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
185  call error_handler("IN FieldCreate", rc)
186 
187  print*,"- CALL FieldCreate FOR INPUT GRID zwind."
188  zwind_input_grid = esmf_fieldcreate(input_grid, &
189  typekind=esmf_typekind_r8, &
190  staggerloc=esmf_staggerloc_center, &
191  ungriddedlbound=(/1/), &
192  ungriddedubound=(/lev_input/), rc=rc)
193  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
194  call error_handler("IN FieldCreate", rc)
195 
196  print*,"- CALL FieldCreate FOR INPUT GRID TEMPERATURE."
197  temp_input_grid = esmf_fieldcreate(input_grid, &
198  typekind=esmf_typekind_r8, &
199  staggerloc=esmf_staggerloc_center, &
200  ungriddedlbound=(/1/), &
201  ungriddedubound=(/lev_input/), rc=rc)
202  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
203  call error_handler("IN FieldCreate", rc)
204 
206 
207  do i = 1, num_tracers_input
208  print*,"- CALL FieldCreate FOR INPUT GRID TRACER ", trim(tracers_input(i))
209  tracers_input_grid(i) = esmf_fieldcreate(input_grid, &
210  typekind=esmf_typekind_r8, &
211  staggerloc=esmf_staggerloc_center, &
212  ungriddedlbound=(/1/), &
213  ungriddedubound=(/lev_input/), rc=rc)
214  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
215  call error_handler("IN FieldCreate", rc)
216  enddo
217 
218  print*,"- CALL FieldCreate FOR INPUT GRID DZDT."
219  dzdt_input_grid = esmf_fieldcreate(input_grid, &
220  typekind=esmf_typekind_r8, &
221  staggerloc=esmf_staggerloc_center, &
222  ungriddedlbound=(/1/), &
223  ungriddedubound=(/lev_input/), rc=rc)
224  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
225  call error_handler("IN FieldCreate", rc)
226 
227  print*,"- CALL FieldCreate FOR INPUT GRID U."
228  u_input_grid = esmf_fieldcreate(input_grid, &
229  typekind=esmf_typekind_r8, &
230  staggerloc=esmf_staggerloc_center, &
231  ungriddedlbound=(/1/), &
232  ungriddedubound=(/lev_input/), rc=rc)
233  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
234  call error_handler("IN FieldCreate", rc)
235 
236  print*,"- CALL FieldCreate FOR INPUT GRID V."
237  v_input_grid = esmf_fieldcreate(input_grid, &
238  typekind=esmf_typekind_r8, &
239  staggerloc=esmf_staggerloc_center, &
240  ungriddedlbound=(/1/), &
241  ungriddedubound=(/lev_input/), rc=rc)
242  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
243  call error_handler("IN FieldCreate", rc)
244 
245  print*,"- CALL FieldCreate FOR INPUT GRID PRESSURE."
246  pres_input_grid = esmf_fieldcreate(input_grid, &
247  typekind=esmf_typekind_r8, &
248  staggerloc=esmf_staggerloc_center, &
249  ungriddedlbound=(/1/), &
250  ungriddedubound=(/lev_input/), rc=rc)
251  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
252  call error_handler("IN FieldCreate", rc)
253 
254  end subroutine init_atm_esmf_fields
255 
261  subroutine read_input_atm_gfs_sigio_file(localpet)
263  use sigio_module
264 
265  implicit none
266 
267  integer, intent(in) :: localpet
268 
269  character(len=300) :: the_file
270 
271  integer(sigio_intkind) :: iret
272  integer :: rc, i, j, k
273  integer :: clb(3), cub(3)
274 
275  real(esmf_kind_r8) :: ak, bk
276  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
277  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
278  real(esmf_kind_r8), allocatable :: dummy3d2(:,:,:)
279  real(esmf_kind_r8), pointer :: pptr(:,:,:), psptr(:,:)
280  real(esmf_kind_r8), allocatable :: pi(:,:,:)
281 
282  type(sigio_head) :: sighead
283  type(sigio_dbta) :: sigdata
284 
285  the_file = trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
286 
287  print*,"- ATMOSPHERIC DATA IN SIGIO FORMAT."
288  print*,"- OPEN AND READ: ", trim(the_file)
289 
290  call sigio_sropen(21, trim(the_file), iret)
291  if (iret /= 0) then
292  rc = iret
293  call error_handler("OPENING SPECTRAL GFS SIGIO FILE.", rc)
294  endif
295  call sigio_srhead(21, sighead, iret)
296  if (iret /= 0) then
297  rc = iret
298  call error_handler("READING SPECTRAL GFS SIGIO FILE.", rc)
299  endif
300 
301  lev_input = sighead%levs
302  levp1_input = lev_input + 1
303 
304  if (num_tracers_input /= sighead%ntrac) then
305  call error_handler("WRONG NUMBER OF TRACERS EXPECTED.", 99)
306  endif
307 
308  if (sighead%idvt == 0 .or. sighead%idvt == 21) then
309  if (trim(tracers_input(1)) /= 'spfh' .or. &
310  trim(tracers_input(2)) /= 'o3mr' .or. &
311  trim(tracers_input(3)) /= 'clwmr') then
312  call error_handler("TRACERS SELECTED DO NOT MATCH FILE CONTENTS.", 99)
313  endif
314  else
315  print*,'- UNRECOGNIZED IDVT: ', sighead%idvt
316  call error_handler("UNRECOGNIZED IDVT", 99)
317  endif
318 
319 !---------------------------------------------------------------------------
320 ! Initialize esmf atmospheric fields.
321 !---------------------------------------------------------------------------
322 
324 
325  if (localpet == 0) then
326  allocate(dummy2d(i_input,j_input))
327  allocate(dummy3d(i_input,j_input,lev_input))
328  allocate(dummy3d2(i_input,j_input,lev_input))
329  else
330  allocate(dummy2d(0,0))
331  allocate(dummy3d(0,0,0))
332  allocate(dummy3d2(0,0,0))
333  endif
334 
335  if (localpet == 0) then
336  call sigio_aldbta(sighead, sigdata, iret)
337  if (iret /= 0) then
338  rc = iret
339  call error_handler("ALLOCATING SIGDATA.", rc)
340  endif
341  call sigio_srdbta(21, sighead, sigdata, iret)
342  if (iret /= 0) then
343  rc = iret
344  call error_handler("READING SIGDATA.", rc)
345  endif
346  call sptez(0,sighead%jcap,4,i_input, j_input, sigdata%ps, dummy2d, 1)
347  dummy2d = exp(dummy2d) * 1000.0
348  print*,'surface pres ',maxval(dummy2d),minval(dummy2d)
349  endif
350 
351  print*,"- CALL FieldScatter FOR SURFACE PRESSURE."
352  call esmf_fieldscatter(ps_input_grid, dummy2d, rootpet=0, rc=rc)
353  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
354  call error_handler("IN FieldScatter", rc)
355 
356  if (localpet == 0) then
357  call sptez(0,sighead%jcap,4,i_input, j_input, sigdata%hs, dummy2d, 1)
358  print*,'terrain ',maxval(dummy2d),minval(dummy2d)
359  endif
360 
361  print*,"- CALL FieldScatter FOR TERRAIN."
362  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
363  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
364  call error_handler("IN FieldScatter", rc)
365 
366  do k = 1, num_tracers_input
367 
368  if (localpet == 0) then
369  call sptezm(0,sighead%jcap,4,i_input, j_input, lev_input, sigdata%q(:,:,k), dummy3d, 1)
370  print*,trim(tracers_input(k)),maxval(dummy3d),minval(dummy3d)
371  endif
372 
373  print*,"- CALL FieldScatter FOR INPUT ", trim(tracers_input(k))
374  call esmf_fieldscatter(tracers_input_grid(k), dummy3d, rootpet=0, rc=rc)
375  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
376  call error_handler("IN FieldScatter", rc)
377 
378  enddo
379 
380  if (localpet == 0) then
381  call sptezm(0,sighead%jcap,4,i_input, j_input, lev_input, sigdata%t, dummy3d, 1)
382  print*,'temp ',maxval(dummy3d),minval(dummy3d)
383  endif
384 
385  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
386  call esmf_fieldscatter(temp_input_grid, dummy3d, rootpet=0, rc=rc)
387  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
388  call error_handler("IN FieldScatter", rc)
389 
390 !---------------------------------------------------------------------------
391 ! The spectral gfs files have omega, not vertical velocity. Set to
392 ! zero for now. Convert from omega to vv in the future?
393 !---------------------------------------------------------------------------
394 
395  if (localpet == 0) then
396  print*,"- NO VERTICAL VELOCITY RECORD. SET TO ZERO."
397  dummy3d = 0.0
398  endif
399 
400  print*,"- CALL FieldScatter FOR INPUT DZDT."
401  call esmf_fieldscatter(dzdt_input_grid, dummy3d, rootpet=0, rc=rc)
402  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
403  call error_handler("IN FieldScatter", rc)
404 
405  if (localpet == 0) then
406  call sptezmv(0, sighead%jcap, 4, i_input, j_input, lev_input, sigdata%d, sigdata%z, dummy3d, dummy3d2, 1)
407  print*,'u ',maxval(dummy3d),minval(dummy3d)
408  print*,'v ',maxval(dummy3d2),minval(dummy3d2)
409  endif
410 
411  print*,"- CALL FieldScatter FOR INPUT U-WIND."
412  call esmf_fieldscatter(u_input_grid, dummy3d, rootpet=0, rc=rc)
413  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
414  call error_handler("IN FieldScatter", rc)
415 
416  print*,"- CALL FieldScatter FOR INPUT V-WIND."
417  call esmf_fieldscatter(v_input_grid, dummy3d2, rootpet=0, rc=rc)
418  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
419  call error_handler("IN FieldScatter", rc)
420 
421  deallocate(dummy2d, dummy3d, dummy3d2)
422 
423  if (localpet == 0) call sigio_axdbta(sigdata, iret)
424 
425  call sigio_sclose(21, iret)
426 
427 !---------------------------------------------------------------------------
428 ! Convert from 2-d to 3-d component winds.
429 !---------------------------------------------------------------------------
430 
432 
433 !---------------------------------------------------------------------------
434 ! Compute 3-d pressure from 'ak' and 'bk'.
435 !---------------------------------------------------------------------------
436 
437  print*,"- COMPUTE 3-D PRESSURE."
438 
439  print*,"- CALL FieldGet FOR 3-D PRES."
440  nullify(pptr)
441  call esmf_fieldget(pres_input_grid, &
442  computationallbound=clb, &
443  computationalubound=cub, &
444  farrayptr=pptr, rc=rc)
445  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
446  call error_handler("IN FieldGet", rc)
447 
448  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
449  nullify(psptr)
450  call esmf_fieldget(ps_input_grid, &
451  farrayptr=psptr, rc=rc)
452  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
453  call error_handler("IN FieldGet", rc)
454 
455 !---------------------------------------------------------------------------
456 ! First, compute interface pressure.
457 !---------------------------------------------------------------------------
458 
459  allocate(pi(clb(1):cub(1),clb(2):cub(2),1:levp1_input),stat=rc)
460 
461  do k=1,levp1_input
462  ak = sighead%vcoord(k,1)
463  bk = sighead%vcoord(k,2)
464  do i= clb(1), cub(1)
465  do j= clb(2), cub(2)
466  pi(i,j,k) = ak + bk*psptr(i,j)
467  enddo
468  enddo
469  enddo
470 
471  if (localpet == 0) then
472  print*,'pres int ',psptr(clb(1),clb(2)),pi(clb(1),clb(2),:)
473  endif
474 
475 !---------------------------------------------------------------------------
476 ! Now comput mid-layer pressure from interface pressure.
477 !---------------------------------------------------------------------------
478 
479  do k=1,lev_input
480  do i= clb(1), cub(1)
481  do j= clb(2), cub(2)
482  pptr(i,j,k) = (pi(i,j,k)+pi(i,j,k+1))/2.0_esmf_kind_r8
483  enddo
484  enddo
485  enddo
486 
487  deallocate(pi)
488 
489  if (localpet == 0) then
490  print*,'pres ',psptr(clb(1),clb(2)),pptr(clb(1),clb(2),:)
491  endif
492 
493  end subroutine read_input_atm_gfs_sigio_file
494 
500  subroutine read_input_atm_gfs_gaussian_nemsio_file(localpet)
502  implicit none
503 
504  integer, intent(in) :: localpet
505 
506  character(len=300) :: the_file
507  character(len=20) :: vlevtyp, vname
508 
509  integer(nemsio_intkind) :: vlev, iret
510  integer :: i, j, k, n, rc
511  integer :: clb(3), cub(3)
512 
513  real(nemsio_realkind), allocatable :: vcoord(:,:,:)
514  real(nemsio_realkind), allocatable :: dummy(:)
515  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
516  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
517  real(esmf_kind_r8) :: ak, bk
518  real(esmf_kind_r8), allocatable :: pi(:,:,:)
519  real(esmf_kind_r8), pointer :: pptr(:,:,:), psptr(:,:)
520 
521  type(nemsio_gfile) :: gfile
522 
523  the_file = trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
524 
525  print*,"- READ ATMOS DATA FROM SPECTRAL GFS NEMSIO FILE: ", trim(the_file)
526 
527  print*,"- OPEN FILE."
528  call nemsio_open(gfile, the_file, "read", iret=iret)
529  if (iret /= 0) call error_handler("OPENING SPECTRAL GFS NEMSIO ATM FILE.", iret)
530 
531  print*,"- READ NUMBER OF VERTICAL LEVELS."
532  call nemsio_getfilehead(gfile, iret=iret, dimz=lev_input)
533  if (iret /= 0) call error_handler("READING NUMBER OF VERTICAL LEVLES.", iret)
534 
535  levp1_input = lev_input + 1
536 
537  allocate(vcoord(levp1_input,3,2))
538 
539  print*,"- READ VERTICAL COORDINATE INFO."
540  call nemsio_getfilehead(gfile, iret=iret, vcoord=vcoord)
541  if (iret /= 0) call error_handler("READING VERTICAL COORDINATE INFO.", iret)
542 
543 !---------------------------------------------------------------------------
544 ! Initialize esmf atmospheric fields.
545 !---------------------------------------------------------------------------
546 
548 
549  if (localpet == 0) then
550  allocate(dummy(i_input*j_input))
551  allocate(dummy2d(i_input,j_input))
552  allocate(dummy3d(i_input,j_input,lev_input))
553  else
554  allocate(dummy(0))
555  allocate(dummy2d(0,0))
556  allocate(dummy3d(0,0,0))
557  endif
558 
559 !-----------------------------------------------------------------------
560 ! 3-d fields in gaussian files increment from bottom to model top.
561 ! That is what is expected by this program, so no need to flip indices.
562 !-----------------------------------------------------------------------
563 
564  if (localpet == 0) then
565  print*,"- READ TEMPERATURE."
566  vname = "tmp"
567  vlevtyp = "mid layer"
568  do vlev = 1, lev_input
569  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
570  if (iret /= 0) call error_handler("READING TEMPERATURE RECORD.", iret)
571  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
572 ! print*,'temp check after read ',vlev, dummy3d(1,1,vlev)
573  enddo
574  endif
575 
576  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
577  call esmf_fieldscatter(temp_input_grid, dummy3d, rootpet=0, rc=rc)
578  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
579  call error_handler("IN FieldScatter", rc)
580 
581  do n = 1, num_tracers_input
582 
583  if (localpet == 0) then
584  print*,"- READ ", trim(tracers_input(n))
585  vname = trim(tracers_input(n))
586  vlevtyp = "mid layer"
587  do vlev = 1, lev_input
588  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
589  if (iret /= 0) call error_handler("READING TRACER RECORD.", iret)
590 ! print*,'tracer ',vlev, maxval(dummy),minval(dummy)
591  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
592  enddo
593  endif
594 
595  print*,"- CALL FieldScatter FOR INPUT ", trim(tracers_input(n))
596  call esmf_fieldscatter(tracers_input_grid(n), dummy3d, rootpet=0, rc=rc)
597  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
598  call error_handler("IN FieldScatter", rc)
599 
600  enddo
601 
602  if (localpet == 0) then
603  print*,"- READ U-WINDS."
604  vname = "ugrd"
605  vlevtyp = "mid layer"
606  do vlev = 1, lev_input
607  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
608  if (iret /= 0) call error_handler("READING U-WIND RECORD.", iret)
609 ! print*,'ugrd ',vlev, maxval(dummy),minval(dummy)
610  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
611  enddo
612  endif
613 
614  print*,"- CALL FieldScatter FOR INPUT U-WIND."
615  call esmf_fieldscatter(u_input_grid, dummy3d, rootpet=0, rc=rc)
616  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
617  call error_handler("IN FieldScatter", rc)
618 
619  if (localpet == 0) then
620  print*,"- READ V-WINDS."
621  vname = "vgrd"
622  vlevtyp = "mid layer"
623  do vlev = 1, lev_input
624  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
625  if (iret /= 0) call error_handler("READING V-WIND RECORD.", iret)
626 ! print*,'vgrd ',vlev, maxval(dummy),minval(dummy)
627  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
628  enddo
629  endif
630 
631  print*,"- CALL FieldScatter FOR INPUT V-WIND."
632  call esmf_fieldscatter(v_input_grid, dummy3d, rootpet=0, rc=rc)
633  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
634  call error_handler("IN FieldScatter", rc)
635 
636 !---------------------------------------------------------------------------
637 ! The spectral gfs nemsio files do not have a vertical velocity or
638 ! omega record. So set to zero for now.
639 !---------------------------------------------------------------------------
640 
641  if (localpet == 0) then
642  print*,"- NO VERTICAL VELOCITY RECORD. SET TO ZERO."
643  dummy3d = 0.0
644  endif
645 
646  print*,"- CALL FieldScatter FOR INPUT DZDT."
647  call esmf_fieldscatter(dzdt_input_grid, dummy3d, rootpet=0, rc=rc)
648  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
649  call error_handler("IN FieldScatter", rc)
650 
651  if (localpet == 0) then
652  print*,"- READ HGT."
653  vname = "hgt"
654  vlevtyp = "sfc"
655  vlev = 1
656  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
657  if (iret /= 0) call error_handler("READING HGT RECORD.", iret)
658 ! print*,'hgt ',vlev, maxval(dummy),minval(dummy)
659  dummy2d = reshape(dummy, (/i_input,j_input/))
660  endif
661 
662  print*,"- CALL FieldScatter FOR TERRAIN."
663  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
664  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
665  call error_handler("IN FieldScatter", rc)
666 
667  if (localpet == 0) then
668  print*,"- READ PRES."
669  vname = "pres"
670  vlevtyp = "sfc"
671  vlev = 1
672  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
673  if (iret /= 0) call error_handler("READING PRES RECORD.", iret)
674 ! print*,'pres ',vlev, maxval(dummy),minval(dummy)
675  dummy2d = reshape(dummy, (/i_input,j_input/))
676  endif
677 
678  print*,"- CALL FieldScatter FOR SURFACE PRESSURE."
679  call esmf_fieldscatter(ps_input_grid, dummy2d, rootpet=0, rc=rc)
680  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
681  call error_handler("IN FieldScatter", rc)
682 
683  call nemsio_close(gfile)
684 
685  deallocate(dummy, dummy2d, dummy3d)
686 
687 !---------------------------------------------------------------------------
688 ! Convert from 2-d to 3-d component winds.
689 !---------------------------------------------------------------------------
690 
692 
693 !---------------------------------------------------------------------------
694 ! Compute 3-d pressure from 'ak' and 'bk'.
695 !---------------------------------------------------------------------------
696 
697  print*,"- COMPUTE 3-D PRESSURE."
698 
699  print*,"- CALL FieldGet FOR 3-D PRES."
700  nullify(pptr)
701  call esmf_fieldget(pres_input_grid, &
702  computationallbound=clb, &
703  computationalubound=cub, &
704  farrayptr=pptr, rc=rc)
705  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
706  call error_handler("IN FieldGet", rc)
707 
708  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
709  nullify(psptr)
710  call esmf_fieldget(ps_input_grid, &
711  farrayptr=psptr, rc=rc)
712  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
713  call error_handler("IN FieldGet", rc)
714 
715 !---------------------------------------------------------------------------
716 ! First, compute interface pressure.
717 !---------------------------------------------------------------------------
718 
719  allocate(pi(clb(1):cub(1),clb(2):cub(2),1:levp1_input))
720 
721  do k=1,levp1_input
722  ak = vcoord(k,1,1)
723  bk = vcoord(k,2,1)
724  do i= clb(1), cub(1)
725  do j= clb(2), cub(2)
726  pi(i,j,k) = ak + bk*psptr(i,j)
727  enddo
728  enddo
729  enddo
730 
731  deallocate(vcoord)
732 
733 !---------------------------------------------------------------------------
734 ! Now comput mid-layer pressure from interface pressure.
735 !---------------------------------------------------------------------------
736 
737  do k=1,lev_input
738  do i= clb(1), cub(1)
739  do j= clb(2), cub(2)
740  pptr(i,j,k) = (pi(i,j,k)+pi(i,j,k+1))/2.0
741  enddo
742  enddo
743  enddo
744 
745  deallocate(pi)
746 
748 
753  subroutine read_input_atm_gaussian_nemsio_file(localpet)
755  implicit none
756 
757  integer, intent(in) :: localpet
758 
759  character(len=300) :: the_file
760  character(len=20) :: vlevtyp, vname
761 
762  integer :: i, j, k, n
763  integer :: rc, clb(3), cub(3)
764  integer(nemsio_intkind) :: vlev, iret
765 
766  real(nemsio_realkind), allocatable :: vcoord(:,:,:)
767  real(nemsio_realkind), allocatable :: dummy(:)
768  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
769  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
770  real(esmf_kind_r8), pointer :: presptr(:,:,:), psptr(:,:)
771  real(esmf_kind_r8), pointer :: dpresptr(:,:,:)
772  real(esmf_kind_r8), allocatable :: pres_interface(:)
773 
774  type(nemsio_gfile) :: gfile
775 
776  the_file = trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
777 
778  print*,"- READ ATMOS DATA FROM GAUSSIAN NEMSIO FILE: ", trim(the_file)
779 
780  print*,"- OPEN FILE."
781  call nemsio_open(gfile, the_file, "read", iret=iret)
782  if (iret /= 0) call error_handler("OPENING GAUSSIAN NEMSIO ATM FILE.", iret)
783 
784  print*,"- READ NUMBER OF VERTICAL LEVELS."
785  call nemsio_getfilehead(gfile, iret=iret, dimz=lev_input)
786  if (iret /= 0) call error_handler("READING NUMBER OF VERTICAL LEVLES.", iret)
787 
788  levp1_input = lev_input + 1
789 
790  allocate(vcoord(levp1_input,3,2))
791 
792  print*,"- READ VERTICAL COORDINATE INFO."
793  call nemsio_getfilehead(gfile, iret=iret, vcoord=vcoord)
794  if (iret /= 0) call error_handler("READING VERTICAL COORDINATE INFO.", iret)
795 
796 !---------------------------------------------------------------------------
797 ! Initialize esmf atmospheric fields.
798 !---------------------------------------------------------------------------
799 
801 
802  print*,"- CALL FieldCreate FOR INPUT DPRES."
803  dpres_input_grid = esmf_fieldcreate(input_grid, &
804  typekind=esmf_typekind_r8, &
805  staggerloc=esmf_staggerloc_center, &
806  ungriddedlbound=(/1/), &
807  ungriddedubound=(/lev_input/), rc=rc)
808  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
809  call error_handler("IN FieldCreate", rc)
810 
811  if (localpet == 0) then
812  allocate(dummy(i_input*j_input))
813  allocate(dummy2d(i_input,j_input))
814  allocate(dummy3d(i_input,j_input,lev_input))
815  else
816  allocate(dummy(0))
817  allocate(dummy2d(0,0))
818  allocate(dummy3d(0,0,0))
819  endif
820 
821 !-----------------------------------------------------------------------
822 ! 3-d fields in gaussian files increment from bottom to model top.
823 ! That is what is expected by this program, so no need to flip indices.
824 !-----------------------------------------------------------------------
825 
826  if (localpet == 0) then
827  print*,"- READ TEMPERATURE."
828  vname = "tmp"
829  vlevtyp = "mid layer"
830  do vlev = 1, lev_input
831  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
832  if (iret /= 0) call error_handler("READING TEMPERATURE RECORD.", iret)
833  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
834  print*,'temp check after read ',vlev, dummy3d(1,1,vlev)
835  enddo
836  endif
837 
838  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
839  call esmf_fieldscatter(temp_input_grid, dummy3d, rootpet=0, rc=rc)
840  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
841  call error_handler("IN FieldScatter", rc)
842 
843  do n = 1, num_tracers_input
844 
845  if (localpet == 0) then
846  print*,"- READ ", trim(tracers_input(n))
847  vname = trim(tracers_input(n))
848  vlevtyp = "mid layer"
849  do vlev = 1, lev_input
850  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
851  if (iret /= 0) call error_handler("READING TRACER RECORD.", iret)
852  print*,'tracer ',vlev, maxval(dummy),minval(dummy)
853  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
854  enddo
855  endif
856 
857  print*,"- CALL FieldScatter FOR INPUT ", trim(tracers_input(n))
858  call esmf_fieldscatter(tracers_input_grid(n), dummy3d, rootpet=0, rc=rc)
859  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
860  call error_handler("IN FieldScatter", rc)
861 
862  enddo
863 
864  if (localpet == 0) then
865  print*,"- READ U-WINDS."
866  vname = "ugrd"
867  vlevtyp = "mid layer"
868  do vlev = 1, lev_input
869  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
870  if (iret /= 0) call error_handler("READING U-WIND RECORD.", iret)
871  print*,'ugrd ',vlev, maxval(dummy),minval(dummy)
872  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
873  enddo
874  endif
875 
876  print*,"- CALL FieldScatter FOR INPUT U-WIND."
877  call esmf_fieldscatter(u_input_grid, dummy3d, rootpet=0, rc=rc)
878  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
879  call error_handler("IN FieldScatter", rc)
880 
881  if (localpet == 0) then
882  print*,"- READ V-WINDS."
883  vname = "vgrd"
884  vlevtyp = "mid layer"
885  do vlev = 1, lev_input
886  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
887  if (iret /= 0) call error_handler("READING V-WIND RECORD.", iret)
888  print*,'vgrd ',vlev, maxval(dummy),minval(dummy)
889  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
890  enddo
891  endif
892 
893  print*,"- CALL FieldScatter FOR INPUT V-WIND."
894  call esmf_fieldscatter(v_input_grid, dummy3d, rootpet=0, rc=rc)
895  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
896  call error_handler("IN FieldScatter", rc)
897 
898  if (localpet == 0) then
899  print*,"- READ DPRES."
900  vname = "dpres"
901  vlevtyp = "mid layer"
902  do vlev = 1, lev_input
903  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
904  if (iret /= 0) call error_handler("READING DPRES RECORD.", iret)
905  print*,'dpres ',vlev, maxval(dummy),minval(dummy)
906  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
907  enddo
908  endif
909 
910  print*,"- CALL FieldScatter FOR INPUT DPRES."
911  call esmf_fieldscatter(dpres_input_grid, dummy3d, rootpet=0, rc=rc)
912  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
913  call error_handler("IN FieldScatter", rc)
914 
915  if (localpet == 0) then
916  print*,"- READ DZDT."
917  vname = "dzdt"
918  vlevtyp = "mid layer"
919  do vlev = 1, lev_input
920  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
921  if (iret /= 0) call error_handler("READING DZDT RECORD.", iret)
922  print*,'dzdt ',vlev, maxval(dummy),minval(dummy)
923  dummy3d(:,:,vlev) = reshape(dummy, (/i_input,j_input/))
924  enddo
925  endif
926 
927  print*,"- CALL FieldScatter FOR INPUT DZDT."
928  call esmf_fieldscatter(dzdt_input_grid, dummy3d, rootpet=0, rc=rc)
929  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
930  call error_handler("IN FieldScatter", rc)
931 
932  if (localpet == 0) then
933  print*,"- READ HGT."
934  vname = "hgt"
935  vlevtyp = "sfc"
936  vlev = 1
937  call nemsio_readrecv(gfile, vname, vlevtyp, vlev, dummy, 0, iret)
938  if (iret /= 0) call error_handler("READING HGT RECORD.", iret)
939  print*,'hgt ',vlev, maxval(dummy),minval(dummy)
940  dummy2d = reshape(dummy, (/i_input,j_input/))
941  endif
942 
943  print*,"- CALL FieldScatter FOR TERRAIN."
944  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
945  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
946  call error_handler("IN FieldScatter", rc)
947 
948  call nemsio_close(gfile)
949 
950  deallocate(dummy, dummy2d, dummy3d)
951 
952 !---------------------------------------------------------------------------
953 ! Convert from 2-d to 3-d component winds.
954 !---------------------------------------------------------------------------
955 
957 
958 !---------------------------------------------------------------------------
959 ! Compute 3-d pressure. Mid-layer and surface pressure are computed
960 ! from delta p. The surface pressure in the file is not used. After
961 ! the model's write component interpolates from the cubed-sphere grid
962 ! to the gaussian grid, the surface pressure is no longer consistent
963 ! with the delta p (per Jun Wang).
964 !---------------------------------------------------------------------------
965 
966  print*,"- COMPUTE 3-D PRESSURE."
967 
968  print*,"- CALL FieldGet FOR DELTA PRESSURE."
969  nullify(dpresptr)
970  call esmf_fieldget(dpres_input_grid, &
971  computationallbound=clb, &
972  computationalubound=cub, &
973  farrayptr=dpresptr, rc=rc)
974  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
975  call error_handler("IN FieldGet", rc)
976 
977  print*,"- CALL FieldGet FOR 3-D PRESSURE."
978  nullify(presptr)
979  call esmf_fieldget(pres_input_grid, &
980  farrayptr=presptr, rc=rc)
981  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
982  call error_handler("IN FieldGet", rc)
983 
984  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
985  nullify(psptr)
986  call esmf_fieldget(ps_input_grid, &
987  farrayptr=psptr, rc=rc)
988  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
989  call error_handler("IN FieldGet", rc)
990 
991  allocate(pres_interface(levp1_input))
992 
993  if (localpet == 0) then
994  do k = clb(3), cub(3)
995  print*,'dpres is ',cub(1),cub(2),k, dpresptr(cub(1),cub(2),k)
996  enddo
997  endif
998 
999  do i = clb(1), cub(1)
1000  do j = clb(2), cub(2)
1001  pres_interface(levp1_input) = vcoord(levp1_input,1,1)
1002  do k = lev_input, 1, -1
1003  pres_interface(k) = pres_interface(k+1) + dpresptr(i,j,k)
1004  enddo
1005  psptr(i,j) = pres_interface(1)
1006  do k = 1, lev_input
1007  presptr(i,j,k) = (pres_interface(k) + pres_interface(k+1)) / 2.0_8
1008  enddo
1009  enddo
1010  enddo
1011 
1012  deallocate(vcoord)
1013 
1014  if (localpet == 0) then
1015  print*,'psfc is ',clb(1),clb(2),psptr(clb(1),clb(2))
1016  print*,'pres is ',clb(1),clb(2),presptr(clb(1),clb(2),:)
1017  endif
1018 
1019  print*,'pres check 1',localpet,maxval(presptr(:,:,1)),minval(presptr(:,:,1))
1020  print*,'pres check lev',localpet,maxval(presptr(:,:,lev_input)),minval(presptr(:,:,lev_input))
1021 
1022  deallocate(pres_interface)
1023 
1024  call esmf_fielddestroy(dpres_input_grid, rc=rc)
1025 
1027 
1036  subroutine read_input_atm_restart_file(localpet)
1038  implicit none
1039 
1040  integer, intent(in) :: localpet
1041 
1042  character(len=500) :: tilefile
1043 
1044  integer :: i, j, k
1045  integer :: clb(3), cub(3)
1046  integer :: rc, tile, ncid, id_var
1047  integer :: error, id_dim
1048 
1049  real(esmf_kind_r8), allocatable :: ak(:)
1050  real(esmf_kind_r8), pointer :: presptr(:,:,:), psptr(:,:)
1051  real(esmf_kind_r8), pointer :: dpresptr(:,:,:)
1052  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1053  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1054  real(esmf_kind_r8), allocatable :: pres_interface(:)
1055 
1056 !---------------------------------------------------------------------------
1057 ! Get number of vertical levels and model top pressure.
1058 !---------------------------------------------------------------------------
1059 
1060  tilefile = trim(data_dir_input_grid) // "/" // trim(atm_core_files_input_grid(7))
1061  print*,"- READ ATM VERTICAL LEVELS FROM: ", trim(tilefile)
1062  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1063  call netcdf_err(error, 'opening: '//trim(tilefile) )
1064 
1065  error=nf90_inq_dimid(ncid, 'xaxis_1', id_dim)
1066  call netcdf_err(error, 'reading xaxis_1 id' )
1067  error=nf90_inquire_dimension(ncid,id_dim,len=levp1_input)
1068  call netcdf_err(error, 'reading xaxis_1 value' )
1069 
1070  lev_input = levp1_input - 1
1071 
1072  allocate(ak(levp1_input))
1073 
1074  error=nf90_inq_varid(ncid, 'ak', id_var)
1075  call netcdf_err(error, 'reading field id' )
1076  error=nf90_get_var(ncid, id_var, ak)
1077  call netcdf_err(error, 'reading ak' )
1078 
1079  error = nf90_close(ncid)
1080 
1081 !---------------------------------------------------------------------------
1082 ! Initialize esmf atmospheric fields.
1083 !---------------------------------------------------------------------------
1084 
1086 
1087  print*,"- CALL FieldCreate FOR INPUT GRID DELTA PRESSURE."
1088  dpres_input_grid = esmf_fieldcreate(input_grid, &
1089  typekind=esmf_typekind_r8, &
1090  staggerloc=esmf_staggerloc_center, &
1091  ungriddedlbound=(/1/), &
1092  ungriddedubound=(/lev_input/), rc=rc)
1093  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1094  call error_handler("IN FieldCreate", rc)
1095 
1096  if (localpet < num_tiles_input_grid) then
1097  allocate(data_one_tile_3d(i_input,j_input,lev_input))
1098  allocate(data_one_tile(i_input,j_input))
1099  else
1100  allocate(data_one_tile_3d(0,0,0))
1101  allocate(data_one_tile(0,0))
1102  endif
1103 
1104  if (localpet < num_tiles_input_grid) then
1105  tile = localpet+1
1106  tilefile= trim(data_dir_input_grid) // "/" // trim(atm_core_files_input_grid(tile))
1107  print*,"- READ ATMOSPHERIC CORE FILE: ", trim(tilefile)
1108  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1109  call netcdf_err(error, 'opening: '//trim(tilefile) )
1110  endif
1111 
1112  if (localpet < num_tiles_input_grid) then
1113  error=nf90_inq_varid(ncid, 'phis', id_var)
1114  call netcdf_err(error, 'reading field id' )
1115  error=nf90_get_var(ncid, id_var, data_one_tile)
1116  call netcdf_err(error, 'reading field' )
1117  data_one_tile = data_one_tile / 9.806_8 ! geopotential height
1118  endif
1119 
1120  do tile = 1, num_tiles_input_grid
1121  print*,"- CALL FieldScatter FOR INPUT GRID TERRAIN for tile ",tile
1122  call esmf_fieldscatter(terrain_input_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=rc)
1123  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1124  call error_handler("IN FieldScatter", rc)
1125  enddo
1126 
1127  if (localpet < num_tiles_input_grid) then
1128 ! error=nf90_inq_varid(ncid, 'W', id_var)
1129 ! call netcdf_err(error, 'reading field id' )
1130 ! error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1131 ! call netcdf_err(error, 'reading field' )
1132 ! data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1133 
1134 ! Using 'w' from restart files has caused problems. Set to zero.
1135  data_one_tile_3d = 0.0_8
1136  endif
1137 
1138  do tile = 1, num_tiles_input_grid
1139  print*,"- CALL FieldScatter FOR INPUT GRID VERTICAL VELOCITY for tile ",tile
1140  call esmf_fieldscatter(dzdt_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1141  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1142  call error_handler("IN FieldScatter", rc)
1143  enddo
1144 
1145  if (localpet < num_tiles_input_grid) then
1146  error=nf90_inq_varid(ncid, 'T', id_var)
1147  call netcdf_err(error, 'reading field id' )
1148  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1149  call netcdf_err(error, 'reading field' )
1150  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1151  endif
1152 
1153  do tile = 1, num_tiles_input_grid
1154  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
1155  call esmf_fieldscatter(temp_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1156  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1157  call error_handler("IN FieldScatter", rc)
1158  enddo
1159 
1160  if (localpet < num_tiles_input_grid) then
1161  error=nf90_inq_varid(ncid, 'delp', id_var)
1162  call netcdf_err(error, 'reading field id' )
1163  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1164  call netcdf_err(error, 'reading field' )
1165  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1166  endif
1167 
1168  do tile = 1, num_tiles_input_grid
1169  print*,"- CALL FieldScatter FOR INPUT DELTA PRESSURE."
1170  call esmf_fieldscatter(dpres_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1171  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1172  call error_handler("IN FieldScatter", rc)
1173  enddo
1174 
1175  if (localpet < num_tiles_input_grid) then
1176  error=nf90_inq_varid(ncid, 'ua', id_var)
1177  call netcdf_err(error, 'reading field id' )
1178  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1179  call netcdf_err(error, 'reading field' )
1180  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1181  endif
1182 
1183  do tile = 1, num_tiles_input_grid
1184  print*,"- CALL FieldScatter FOR INPUT GRID U."
1185  call esmf_fieldscatter(u_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1186  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1187  call error_handler("IN FieldScatter", rc)
1188  enddo
1189 
1190  if (localpet < num_tiles_input_grid) then
1191  error=nf90_inq_varid(ncid, 'va', id_var)
1192  call netcdf_err(error, 'reading field id' )
1193  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1194  call netcdf_err(error, 'reading field' )
1195  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1196  endif
1197 
1198  do tile = 1, num_tiles_input_grid
1199  print*,"- CALL FieldScatter FOR INPUT GRID V."
1200  call esmf_fieldscatter(v_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1201  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1202  call error_handler("IN FieldScatter", rc)
1203  enddo
1204 
1205  if (localpet < num_tiles_input_grid) error = nf90_close(ncid)
1206 
1207  if (localpet < num_tiles_input_grid) then
1208  tile = localpet+1
1209  tilefile= trim(data_dir_input_grid) // "/" // trim(atm_tracer_files_input_grid(tile))
1210  print*,"- READ ATMOSPHERIC TRACER FILE: ", trim(tilefile)
1211  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1212  call netcdf_err(error, 'opening: '//trim(tilefile) )
1213  endif
1214 
1215  do i = 1, num_tracers_input
1216 
1217  if (localpet < num_tiles_input_grid) then
1218  error=nf90_inq_varid(ncid, tracers_input(i), id_var)
1219  call netcdf_err(error, 'reading field id' )
1220  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1221  call netcdf_err(error, 'reading field' )
1222  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1223  endif
1224 
1225  do tile = 1, num_tiles_input_grid
1226  print*,"- CALL FieldScatter FOR INPUT ", trim(tracers_input(i))
1227  call esmf_fieldscatter(tracers_input_grid(i), data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1228  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1229  call error_handler("IN FieldScatter", rc)
1230  enddo
1231 
1232  enddo
1233 
1234  if (localpet < num_tiles_input_grid) error=nf90_close(ncid)
1235 
1236 !---------------------------------------------------------------------------
1237 ! Convert from 2-d to 3-d cartesian winds.
1238 !---------------------------------------------------------------------------
1239 
1241 
1242 !---------------------------------------------------------------------------
1243 ! Compute pressures
1244 !---------------------------------------------------------------------------
1245 
1246  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
1247  call esmf_fieldget(ps_input_grid, &
1248  farrayptr=psptr, rc=rc)
1249  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1250  call error_handler("IN FieldGet", rc)
1251 
1252  print*,"- CALL FieldGet FOR PRESSURE."
1253  call esmf_fieldget(pres_input_grid, &
1254  computationallbound=clb, &
1255  computationalubound=cub, &
1256  farrayptr=presptr, rc=rc)
1257  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1258  call error_handler("IN FieldGet", rc)
1259 
1260  print*,"- CALL FieldGet FOR DELTA PRESSURE."
1261  call esmf_fieldget(dpres_input_grid, &
1262  farrayptr=dpresptr, rc=rc)
1263  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1264  call error_handler("IN FieldGet", rc)
1265 
1266  allocate(pres_interface(levp1_input))
1267 
1268  do i = clb(1), cub(1)
1269  do j = clb(2), cub(2)
1270  pres_interface(levp1_input) = ak(1) ! model top in Pa
1271  do k = (levp1_input-1), 1, -1
1272  pres_interface(k) = pres_interface(k+1) + dpresptr(i,j,k)
1273  enddo
1274  do k = 1, lev_input
1275  presptr(i,j,k) = (pres_interface(k) + pres_interface(k+1)) / 2.0_8
1276  enddo
1277  psptr(i,j) = pres_interface(1)
1278  enddo
1279  enddo
1280 
1281  deallocate(ak)
1282  deallocate(pres_interface)
1283 
1284  call esmf_fielddestroy(dpres_input_grid, rc=rc)
1285 
1286  deallocate(data_one_tile_3d, data_one_tile)
1287 
1288  end subroutine read_input_atm_restart_file
1289 
1295  subroutine read_input_atm_gaussian_netcdf_file(localpet)
1297  use mpi
1298 
1299  implicit none
1300 
1301  integer, intent(in) :: localpet
1302 
1303  character(len=500) :: tilefile
1304 
1305  integer :: start(3), count(3), iscnt
1306  integer :: error, ncid, num_tracers_file
1307  integer :: id_dim, idim_input, jdim_input
1308  integer :: id_var, rc, nprocs, max_procs
1309  integer :: kdim, remainder, myrank, i, j, k, n
1310  integer :: clb(3), cub(3)
1311  integer, allocatable :: kcount(:), startk(:), displ(:)
1312  integer, allocatable :: ircnt(:)
1313 
1314  real(esmf_kind_r8), allocatable :: phalf(:)
1315  real(esmf_kind_r8), allocatable :: pres_interface(:)
1316  real(kind=4), allocatable :: dummy3d(:,:,:)
1317  real(kind=4), allocatable :: dummy3dall(:,:,:)
1318  real(esmf_kind_r8), allocatable :: dummy3dflip(:,:,:)
1319  real(esmf_kind_r8), allocatable :: dummy(:,:)
1320  real(esmf_kind_r8), pointer :: presptr(:,:,:), dpresptr(:,:,:)
1321  real(esmf_kind_r8), pointer :: psptr(:,:)
1322 
1323  print*,"- READ INPUT ATMOS DATA FROM GAUSSIAN NETCDF FILE."
1324 
1325  tilefile = trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
1326  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1327  call netcdf_err(error, 'opening: '//trim(tilefile) )
1328 
1329  error=nf90_inq_dimid(ncid, 'grid_xt', id_dim)
1330  call netcdf_err(error, 'reading grid_xt id' )
1331  error=nf90_inquire_dimension(ncid,id_dim,len=idim_input)
1332  call netcdf_err(error, 'reading grid_xt value' )
1333 
1334  error=nf90_inq_dimid(ncid, 'grid_yt', id_dim)
1335  call netcdf_err(error, 'reading grid_yt id' )
1336  error=nf90_inquire_dimension(ncid,id_dim,len=jdim_input)
1337  call netcdf_err(error, 'reading grid_yt value' )
1338 
1339  if (idim_input /= i_input .or. jdim_input /= j_input) then
1340  call error_handler("DIMENSION MISMATCH BETWEEN SFC AND OROG FILES.", 2)
1341  endif
1342 
1343  error=nf90_inq_dimid(ncid, 'pfull', id_dim)
1344  call netcdf_err(error, 'reading pfull id' )
1345  error=nf90_inquire_dimension(ncid,id_dim,len=lev_input)
1346  call netcdf_err(error, 'reading pfull value' )
1347 
1348  error=nf90_inq_dimid(ncid, 'phalf', id_dim)
1349  call netcdf_err(error, 'reading phalf id' )
1350  error=nf90_inquire_dimension(ncid,id_dim,len=levp1_input)
1351  call netcdf_err(error, 'reading phalf value' )
1352  allocate(phalf(levp1_input))
1353  error=nf90_inq_varid(ncid, 'phalf', id_var)
1354  call netcdf_err(error, 'getting phalf varid' )
1355  error=nf90_get_var(ncid, id_var, phalf)
1356  call netcdf_err(error, 'reading phalf varid' )
1357 
1358  error=nf90_get_att(ncid, nf90_global, 'ncnsto', num_tracers_file)
1359  call netcdf_err(error, 'reading ntracer value' )
1360 
1361  call mpi_comm_size(mpi_comm_world, nprocs, error)
1362  print*,'- Running with ', nprocs, ' processors'
1363 
1364  call mpi_comm_rank(mpi_comm_world, myrank, error)
1365  print*,'- myrank/localpet is ',myrank,localpet
1366 
1367  max_procs = nprocs
1368  if (nprocs > lev_input) then
1369  max_procs = lev_input
1370  endif
1371 
1372  kdim = lev_input / max_procs
1373  remainder = lev_input - (max_procs*kdim)
1374 
1375  allocate(kcount(0:nprocs-1))
1376  kcount=0
1377  allocate(startk(0:nprocs-1))
1378  startk=0
1379  allocate(displ(0:nprocs-1))
1380  displ=0
1381  allocate(ircnt(0:nprocs-1))
1382  ircnt=0
1383 
1384  do k = 0, max_procs-2
1385  kcount(k) = kdim
1386  enddo
1387  kcount(max_procs-1) = kdim + remainder
1388 
1389  startk(0) = 1
1390  do k = 1, max_procs-1
1391  startk(k) = startk(k-1) + kcount(k-1)
1392  enddo
1393 
1394  ircnt(:) = idim_input * jdim_input * kcount(:)
1395 
1396  displ(0) = 0
1397  do k = 1, max_procs-1
1398  displ(k) = displ(k-1) + ircnt(k-1)
1399  enddo
1400 
1401  iscnt=idim_input*jdim_input*kcount(myrank)
1402 
1403 ! Account for case if number of tasks exceeds the number of vert levels.
1404 
1405  if (myrank <= max_procs-1) then
1406  allocate(dummy3d(idim_input,jdim_input,kcount(myrank)))
1407  else
1408  allocate(dummy3d(0,0,0))
1409  endif
1410 
1411  if (myrank == 0) then
1412  allocate(dummy3dall(idim_input,jdim_input,lev_input))
1413  dummy3dall = 0.0
1414  allocate(dummy3dflip(idim_input,jdim_input,lev_input))
1415  dummy3dflip = 0.0
1416  allocate(dummy(idim_input,jdim_input))
1417  dummy = 0.0
1418  else
1419  allocate(dummy3dall(0,0,0))
1420  allocate(dummy3dflip(0,0,0))
1421  allocate(dummy(0,0))
1422  endif
1423 
1424 !---------------------------------------------------------------------------
1425 ! Initialize esmf atmospheric fields.
1426 !---------------------------------------------------------------------------
1427 
1429 
1430  print*,"- CALL FieldCreate FOR INPUT GRID DELTA PRESSURE."
1431  dpres_input_grid = esmf_fieldcreate(input_grid, &
1432  typekind=esmf_typekind_r8, &
1433  staggerloc=esmf_staggerloc_center, &
1434  ungriddedlbound=(/1/), &
1435  ungriddedubound=(/lev_input/), rc=rc)
1436  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1437  call error_handler("IN FieldCreate", rc)
1438 
1439 ! Temperature
1440 
1441  if (myrank <= max_procs-1) then
1442  start = (/1,1,startk(myrank)/)
1443  count = (/idim_input,jdim_input,kcount(myrank)/)
1444  error=nf90_inq_varid(ncid, 'tmp', id_var)
1445  call netcdf_err(error, 'reading tmp field id' )
1446  error=nf90_get_var(ncid, id_var, dummy3d, start=start, count=count)
1447  call netcdf_err(error, 'reading tmp field' )
1448  endif
1449 
1450  call mpi_gatherv(dummy3d, iscnt, mpi_real, &
1451  dummy3dall, ircnt, displ, mpi_real, &
1452  0, mpi_comm_world, error)
1453  if (error /= 0) call error_handler("IN mpi_gatherv of temperature", error)
1454 
1455  if (myrank == 0) then
1456  dummy3dflip(:,:,1:lev_input) = dummy3dall(:,:,lev_input:1:-1)
1457  endif
1458 
1459  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE "
1460  call esmf_fieldscatter(temp_input_grid, dummy3dflip, rootpet=0, rc=rc)
1461  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1462  call error_handler("IN FieldScatter", rc)
1463 
1464 ! dpres
1465 
1466  if (myrank <= max_procs-1) then
1467  error=nf90_inq_varid(ncid, 'dpres', id_var)
1468  call netcdf_err(error, 'reading dpres field id' )
1469  error=nf90_get_var(ncid, id_var, dummy3d, start=start, count=count)
1470  call netcdf_err(error, 'reading dpres field' )
1471  endif
1472 
1473  call mpi_gatherv(dummy3d, iscnt, mpi_real, &
1474  dummy3dall, ircnt, displ, mpi_real, &
1475  0, mpi_comm_world, error)
1476  if (error /= 0) call error_handler("IN mpi_gatherv of dpres", error)
1477 
1478  if (myrank == 0) then
1479  dummy3dflip(:,:,1:lev_input) = dummy3dall(:,:,lev_input:1:-1)
1480  endif
1481 
1482  print*,"- CALL FieldScatter FOR INPUT GRID DPRES "
1483  call esmf_fieldscatter(dpres_input_grid, dummy3dflip, rootpet=0, rc=rc)
1484  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1485  call error_handler("IN FieldScatter", rc)
1486 
1487 ! ugrd
1488 
1489  if (myrank <= max_procs-1) then
1490  error=nf90_inq_varid(ncid, 'ugrd', id_var)
1491  call netcdf_err(error, 'reading ugrd field id' )
1492  error=nf90_get_var(ncid, id_var, dummy3d, start=start, count=count)
1493  call netcdf_err(error, 'reading ugrd field' )
1494  endif
1495 
1496  call mpi_gatherv(dummy3d, iscnt, mpi_real, &
1497  dummy3dall, ircnt, displ, mpi_real, &
1498  0, mpi_comm_world, error)
1499  if (error /= 0) call error_handler("IN mpi_gatherv of ugrd", error)
1500 
1501  if (myrank == 0) then
1502  dummy3dflip(:,:,1:lev_input) = dummy3dall(:,:,lev_input:1:-1)
1503  endif
1504 
1505  print*,"- CALL FieldScatter FOR INPUT GRID UGRD "
1506  call esmf_fieldscatter(u_input_grid, dummy3dflip, rootpet=0, rc=rc)
1507  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1508  call error_handler("IN FieldScatter", rc)
1509 
1510 ! vgrd
1511 
1512  if (myrank <= max_procs-1) then
1513  error=nf90_inq_varid(ncid, 'vgrd', id_var)
1514  call netcdf_err(error, 'reading vgrd field id' )
1515  error=nf90_get_var(ncid, id_var, dummy3d, start=start, count=count)
1516  call netcdf_err(error, 'reading vgrd field' )
1517  endif
1518 
1519  call mpi_gatherv(dummy3d, iscnt, mpi_real, &
1520  dummy3dall, ircnt, displ, mpi_real, &
1521  0, mpi_comm_world, error)
1522  if (error /= 0) call error_handler("IN mpi_gatherv of vgrd", error)
1523 
1524  if (myrank == 0) then
1525  dummy3dflip(:,:,1:lev_input) = dummy3dall(:,:,lev_input:1:-1)
1526  endif
1527 
1528  print*,"- CALL FieldScatter FOR INPUT GRID VGRD "
1529  call esmf_fieldscatter(v_input_grid, dummy3dflip, rootpet=0, rc=rc)
1530  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1531  call error_handler("IN FieldScatter", rc)
1532 
1533 ! tracers
1534 
1535  do n = 1, num_tracers_input
1536 
1537  if (myrank <= max_procs-1) then
1538  error=nf90_inq_varid(ncid, tracers_input(n), id_var)
1539  call netcdf_err(error, 'reading tracer field id' )
1540  error=nf90_get_var(ncid, id_var, dummy3d, start=start, count=count)
1541  call netcdf_err(error, 'reading tracer field' )
1542  endif
1543 
1544  call mpi_gatherv(dummy3d, iscnt, mpi_real, &
1545  dummy3dall, ircnt, displ, mpi_real, &
1546  0, mpi_comm_world, error)
1547  if (error /= 0) call error_handler("IN mpi_gatherv of tracer", error)
1548 
1549  if (myrank == 0) then
1550  dummy3dflip(:,:,1:lev_input) = dummy3dall(:,:,lev_input:1:-1)
1551  where(dummy3dflip < 0.0) dummy3dflip = 0.0
1552  endif
1553 
1554  print*,"- CALL FieldScatter FOR INPUT GRID ", tracers_input(n)
1555  call esmf_fieldscatter(tracers_input_grid(n), dummy3dflip, rootpet=0, rc=rc)
1556  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1557  call error_handler("IN FieldScatter", rc)
1558 
1559  enddo
1560 
1561 ! dzdt set to zero for now.
1562 
1563  if (myrank == 0) then
1564  dummy3dflip = 0.0
1565  endif
1566 
1567  print*,"- CALL FieldScatter FOR INPUT GRID DZDT"
1568  call esmf_fieldscatter(dzdt_input_grid, dummy3dflip, rootpet=0, rc=rc)
1569  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1570  call error_handler("IN FieldScatter", rc)
1571 
1572  deallocate(dummy3dflip, dummy3dall, dummy3d)
1573 
1574 ! terrain
1575 
1576  if (myrank==0) then
1577  print*,"- READ TERRAIN."
1578  error=nf90_inq_varid(ncid, 'hgtsfc', id_var)
1579  call netcdf_err(error, 'reading hgtsfc field id' )
1580  error=nf90_get_var(ncid, id_var, dummy)
1581  call netcdf_err(error, 'reading hgtsfc field' )
1582  endif
1583 
1584  print*,"- CALL FieldScatter FOR INPUT GRID TERRAIN."
1585  call esmf_fieldscatter(terrain_input_grid, dummy, rootpet=0, rc=rc)
1586  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1587  call error_handler("IN FieldScatter", rc)
1588 
1589 ! surface pressure
1590 
1591  if (myrank==0) then
1592  print*,"- READ SURFACE P."
1593  error=nf90_inq_varid(ncid, 'pressfc', id_var)
1594  call netcdf_err(error, 'reading pressfc field id' )
1595  error=nf90_get_var(ncid, id_var, dummy)
1596  call netcdf_err(error, 'reading pressfc field' )
1597  endif
1598 
1599  print*,"- CALL FieldScatter FOR INPUT GRID SURFACE P."
1600  call esmf_fieldscatter(ps_input_grid, dummy, rootpet=0, rc=rc)
1601  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1602  call error_handler("IN FieldScatter", rc)
1603 
1604  deallocate(kcount, startk, displ, ircnt, dummy)
1605 
1606 !---------------------------------------------------------------------------
1607 ! Convert from 2-d to 3-d cartesian winds.
1608 !---------------------------------------------------------------------------
1609 
1611 
1612 !---------------------------------------------------------------------------
1613 ! Compute pressure.
1614 !---------------------------------------------------------------------------
1615 
1616  print*,"- CALL FieldGet FOR PRESSURE."
1617  call esmf_fieldget(pres_input_grid, &
1618  computationallbound=clb, &
1619  computationalubound=cub, &
1620  farrayptr=presptr, rc=rc)
1621  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1622  call error_handler("IN FieldGet", rc)
1623 
1624  print*,"- CALL FieldGet FOR DELTA PRESSURE."
1625  call esmf_fieldget(dpres_input_grid, &
1626  farrayptr=dpresptr, rc=rc)
1627  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1628  call error_handler("IN FieldGet", rc)
1629 
1630  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
1631  call esmf_fieldget(ps_input_grid, &
1632  farrayptr=psptr, rc=rc)
1633  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1634  call error_handler("IN FieldGet", rc)
1635 
1636  allocate(pres_interface(levp1_input))
1637 
1638 !---------------------------------------------------------------------------
1639 ! Compute 3-d pressure.
1640 !---------------------------------------------------------------------------
1641 
1642 !---------------------------------------------------------------------------
1643 ! When ingesting gaussian netcdf files, the mid-layer
1644 ! surface pressure are computed top down from delta-p
1645 ! The surface pressure in the file is not used. According
1646 ! to Jun Wang, after the model's write component interpolates from the
1647 ! cubed-sphere grid to the gaussian grid, the surface pressure is
1648 ! no longer consistent with the delta p.
1649 !---------------------------------------------------------------------------
1650 
1651  do i = clb(1), cub(1)
1652  do j = clb(2), cub(2)
1653  pres_interface(levp1_input) = phalf(1) * 100.0_8
1654  do k = lev_input, 1, -1
1655  pres_interface(k) = pres_interface(k+1) + dpresptr(i,j,k)
1656  enddo
1657  psptr(i,j) = pres_interface(1)
1658  do k = 1, lev_input
1659  presptr(i,j,k) = (pres_interface(k) + pres_interface(k+1)) / 2.0_8
1660  enddo
1661  enddo
1662  enddo
1663 
1664  deallocate(pres_interface, phalf)
1665 
1666  call esmf_fielddestroy(dpres_input_grid, rc=rc)
1667 
1669 
1679  subroutine read_input_atm_tiled_history_file(localpet)
1681  use mpi
1682 
1683  implicit none
1684 
1685  integer, intent(in) :: localpet
1686 
1687  character(len=500) :: tilefile
1688 
1689  integer :: error, ncid, rc, tile
1690  integer :: id_dim, idim_input, jdim_input
1691  integer :: id_var, i, j, k, n
1692  integer :: clb(3), cub(3), num_tracers_file
1693 
1694  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1695  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1696  real(esmf_kind_r8), pointer :: presptr(:,:,:), dpresptr(:,:,:)
1697  real(esmf_kind_r8), pointer :: psptr(:,:)
1698  real(esmf_kind_r8), allocatable :: pres_interface(:), phalf(:)
1699 
1700  print*,"- READ INPUT ATMOS DATA FROM TILED HISTORY FILES."
1701 
1702  tilefile = trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
1703  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1704  call netcdf_err(error, 'opening: '//trim(tilefile) )
1705 
1706  error=nf90_inq_dimid(ncid, 'grid_xt', id_dim)
1707  call netcdf_err(error, 'reading grid_xt id' )
1708  error=nf90_inquire_dimension(ncid,id_dim,len=idim_input)
1709  call netcdf_err(error, 'reading grid_xt value' )
1710 
1711  error=nf90_inq_dimid(ncid, 'grid_yt', id_dim)
1712  call netcdf_err(error, 'reading grid_yt id' )
1713  error=nf90_inquire_dimension(ncid,id_dim,len=jdim_input)
1714  call netcdf_err(error, 'reading grid_yt value' )
1715 
1716  if (idim_input /= i_input .or. jdim_input /= j_input) then
1717  call error_handler("DIMENSION MISMATCH BETWEEN SFC AND OROG FILES.", 2)
1718  endif
1719 
1720  error=nf90_inq_dimid(ncid, 'pfull', id_dim)
1721  call netcdf_err(error, 'reading pfull id' )
1722  error=nf90_inquire_dimension(ncid,id_dim,len=lev_input)
1723  call netcdf_err(error, 'reading pfull value' )
1724 
1725  error=nf90_inq_dimid(ncid, 'phalf', id_dim)
1726  call netcdf_err(error, 'reading phalf id' )
1727  error=nf90_inquire_dimension(ncid,id_dim,len=levp1_input)
1728  call netcdf_err(error, 'reading phalf value' )
1729  allocate(phalf(levp1_input))
1730  error=nf90_inq_varid(ncid, 'phalf', id_var)
1731  call netcdf_err(error, 'getting phalf varid' )
1732  error=nf90_get_var(ncid, id_var, phalf)
1733  call netcdf_err(error, 'reading phalf varid' )
1734 
1735  error=nf90_get_att(ncid, nf90_global, 'ncnsto', num_tracers_file)
1736  call netcdf_err(error, 'reading ntracer value' )
1737 
1738  error = nf90_close(ncid)
1739 
1740  print*,'- FILE HAS ', num_tracers_file, ' TRACERS.'
1741  print*,'- WILL PROCESS ', num_tracers_input, ' TRACERS.'
1742 
1743 !---------------------------------------------------------------------------
1744 ! Initialize esmf atmospheric fields.
1745 !---------------------------------------------------------------------------
1746 
1748 
1749  print*,"- CALL FieldCreate FOR INPUT GRID DELTA PRESSURE."
1750  dpres_input_grid = esmf_fieldcreate(input_grid, &
1751  typekind=esmf_typekind_r8, &
1752  staggerloc=esmf_staggerloc_center, &
1753  ungriddedlbound=(/1/), &
1754  ungriddedubound=(/lev_input/), rc=rc)
1755  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1756  call error_handler("IN FieldCreate", rc)
1757 
1758  if (localpet < num_tiles_input_grid) then
1759  allocate(data_one_tile(i_input,j_input))
1760  allocate(data_one_tile_3d(i_input,j_input,lev_input))
1761  else
1762  allocate(data_one_tile(0,0))
1763  allocate(data_one_tile_3d(0,0,0))
1764  endif
1765 
1766  if (localpet < num_tiles_input_grid) then
1767  tile = localpet+1
1768  tilefile= trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(tile))
1769  print*,"- READ ATMOSPHERIC DATA FROM: ", trim(tilefile)
1770  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1771  call netcdf_err(error, 'opening: '//trim(tilefile) )
1772  endif
1773 
1774  if (localpet < num_tiles_input_grid) then
1775 ! print*,"- READ VERTICAL VELOCITY."
1776 ! error=nf90_inq_varid(ncid, 'dzdt', id_var)
1777 ! call netcdf_err(error, 'reading field id' )
1778 ! error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1779 ! call netcdf_err(error, 'reading field' )
1780 ! data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1781 
1782 ! Using w from the tiled history files has caused problems.
1783 ! Set to zero.
1784  data_one_tile_3d = 0.0_8
1785  endif
1786 
1787  do tile = 1, num_tiles_input_grid
1788  print*,"- CALL FieldScatter FOR INPUT GRID VERTICAL VELOCITY."
1789  call esmf_fieldscatter(dzdt_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1790  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1791  call error_handler("IN FieldScatter", rc)
1792  enddo
1793 
1794  do n = 1, num_tracers_input
1795 
1796  if (localpet < num_tiles_input_grid) then
1797  print*,"- READ ", trim(tracers_input(n))
1798  error=nf90_inq_varid(ncid, tracers_input(n), id_var)
1799  call netcdf_err(error, 'reading field id' )
1800  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1801  call netcdf_err(error, 'reading field' )
1802  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1803  endif
1804 
1805  do tile = 1, num_tiles_input_grid
1806  print*,"- CALL FieldScatter FOR INPUT GRID TRACER ", trim(tracers_input(n))
1807  call esmf_fieldscatter(tracers_input_grid(n), data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1808  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1809  call error_handler("IN FieldScatter", rc)
1810  enddo
1811 
1812  enddo
1813 
1814  if (localpet < num_tiles_input_grid) then
1815  print*,"- READ TEMPERATURE."
1816  error=nf90_inq_varid(ncid, 'tmp', id_var)
1817  call netcdf_err(error, 'reading field id' )
1818  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1819  call netcdf_err(error, 'reading field' )
1820  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1821  endif
1822 
1823  do tile = 1, num_tiles_input_grid
1824  print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
1825  call esmf_fieldscatter(temp_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1826  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1827  call error_handler("IN FieldScatter", rc)
1828  enddo
1829 
1830  if (localpet < num_tiles_input_grid) then
1831  print*,"- READ U-WIND."
1832  error=nf90_inq_varid(ncid, 'ugrd', id_var)
1833  call netcdf_err(error, 'reading field id' )
1834  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1835  call netcdf_err(error, 'reading field' )
1836  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1837  endif
1838 
1839  do tile = 1, num_tiles_input_grid
1840  print*,"- CALL FieldScatter FOR INPUT GRID U."
1841  call esmf_fieldscatter(u_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1842  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1843  call error_handler("IN FieldScatter", rc)
1844  enddo
1845 
1846  if (localpet < num_tiles_input_grid) then
1847  print*,"- READ V-WIND."
1848  error=nf90_inq_varid(ncid, 'vgrd', id_var)
1849  call netcdf_err(error, 'reading field id' )
1850  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1851  call netcdf_err(error, 'reading field' )
1852  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1853  endif
1854 
1855  do tile = 1, num_tiles_input_grid
1856  print*,"- CALL FieldScatter FOR INPUT GRID V."
1857  call esmf_fieldscatter(v_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1858  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1859  call error_handler("IN FieldScatter", rc)
1860  enddo
1861 
1862  if (localpet < num_tiles_input_grid) then
1863  print*,"- READ SURFACE PRESSURE."
1864  error=nf90_inq_varid(ncid, 'pressfc', id_var)
1865  call netcdf_err(error, 'reading field id' )
1866  error=nf90_get_var(ncid, id_var, data_one_tile)
1867  call netcdf_err(error, 'reading field' )
1868  endif
1869 
1870  do tile = 1, num_tiles_input_grid
1871  print*,"- CALL FieldScatter FOR INPUT GRID SURFACE PRESSURE."
1872  call esmf_fieldscatter(ps_input_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=rc)
1873  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1874  call error_handler("IN FieldScatter", rc)
1875  enddo
1876 
1877  if (localpet < num_tiles_input_grid) then
1878  print*,"- READ TERRAIN."
1879  error=nf90_inq_varid(ncid, 'hgtsfc', id_var)
1880  call netcdf_err(error, 'reading field id' )
1881  error=nf90_get_var(ncid, id_var, data_one_tile)
1882  call netcdf_err(error, 'reading field' )
1883  endif
1884 
1885  do tile = 1, num_tiles_input_grid
1886  print*,"- CALL FieldScatter FOR INPUT GRID TERRAIN."
1887  call esmf_fieldscatter(terrain_input_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=rc)
1888  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1889  call error_handler("IN FieldScatter", rc)
1890  enddo
1891 
1892  if (localpet < num_tiles_input_grid) then
1893  print*,"- READ DELTA PRESSURE."
1894  error=nf90_inq_varid(ncid, 'dpres', id_var)
1895  call netcdf_err(error, 'reading field id' )
1896  error=nf90_get_var(ncid, id_var, data_one_tile_3d)
1897  call netcdf_err(error, 'reading field' )
1898  data_one_tile_3d(:,:,1:lev_input) = data_one_tile_3d(:,:,lev_input:1:-1)
1899  endif
1900 
1901  do tile = 1, num_tiles_input_grid
1902  print*,"- CALL FieldScatter FOR INPUT DELTA PRESSURE."
1903  call esmf_fieldscatter(dpres_input_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=rc)
1904  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1905  call error_handler("IN FieldScatter", rc)
1906  enddo
1907 
1908  if (localpet < num_tiles_input_grid) error = nf90_close(ncid)
1909 
1910  deallocate(data_one_tile_3d, data_one_tile)
1911 
1912 !---------------------------------------------------------------------------
1913 ! Convert from 2-d to 3-d cartesian winds.
1914 !---------------------------------------------------------------------------
1915 
1917 
1918 !---------------------------------------------------------------------------
1919 ! Compute pressure.
1920 !---------------------------------------------------------------------------
1921 
1922  print*,"- CALL FieldGet FOR PRESSURE."
1923  call esmf_fieldget(pres_input_grid, &
1924  computationallbound=clb, &
1925  computationalubound=cub, &
1926  farrayptr=presptr, rc=rc)
1927  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1928  call error_handler("IN FieldGet", rc)
1929 
1930  print*,"- CALL FieldGet FOR DELTA PRESSURE."
1931  call esmf_fieldget(dpres_input_grid, &
1932  farrayptr=dpresptr, rc=rc)
1933  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1934  call error_handler("IN FieldGet", rc)
1935 
1936  print*,"- CALL FieldGet FOR SURFACE PRESSURE."
1937  call esmf_fieldget(ps_input_grid, &
1938  farrayptr=psptr, rc=rc)
1939  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1940  call error_handler("IN FieldGet", rc)
1941 
1942  allocate(pres_interface(levp1_input))
1943 
1944 !---------------------------------------------------------------------------
1945 ! Compute 3-d pressure.
1946 !---------------------------------------------------------------------------
1947 
1948  do i = clb(1), cub(1)
1949  do j = clb(2), cub(2)
1950  pres_interface(1) = psptr(i,j)
1951  do k = 2, levp1_input
1952  pres_interface(k) = pres_interface(k-1) - dpresptr(i,j,k-1)
1953  enddo
1954  do k = 1, lev_input
1955  presptr(i,j,k) = (pres_interface(k) + pres_interface(k+1)) / 2.0_8
1956  enddo
1957  enddo
1958  enddo
1959 
1960  deallocate(pres_interface, phalf)
1961 
1962  call esmf_fielddestroy(dpres_input_grid, rc=rc)
1963 
1964  end subroutine read_input_atm_tiled_history_file
1965 
1970  subroutine read_input_atm_grib2_file(localpet)
1972  use mpi
1973  use grib_mod
1974 
1976 
1977  implicit none
1978 
1979  integer, intent(in) :: localpet
1980 
1981  integer, parameter :: ntrac_max=14
1982  integer, parameter :: max_levs=1000
1983 
1984  character(len=300) :: the_file
1985  character(len=20) :: vname, &
1986  trac_names_vmap(ntrac_max), &
1987  tmpstr, &
1988  method, tracers_input_vmap(num_tracers_input), &
1989  tracers_default(ntrac_max)
1990 
1991  integer :: i, j, k, n
1992  integer :: ii,jj
1993  integer :: rc, clb(3), cub(3)
1994  integer :: vlev, iret,varnum, o3n, pdt_num
1995  integer :: intrp_ier, done_print
1996  integer :: trac_names_oct10(ntrac_max)
1997  integer :: tracers_input_oct10(num_tracers_input)
1998  integer :: trac_names_oct11(ntrac_max)
1999  integer :: tracers_input_oct11(num_tracers_input)
2000  integer :: lugb, lugi, jdisc, jpdt(200), jgdt(200), iscale
2001  integer :: jids(200), jpdtn, jgdtn, octet_23, octet_29
2002  integer :: count_spfh, count_rh, count_icmr, count_scliwc
2003  integer :: count_cice, count_rwmr, count_scllwc, count
2004 
2005  logical :: conv_omega=.false., &
2006  hasspfh=.true., &
2007  isnative=.false., &
2008  use_rh=.false. , unpack, &
2009  all_empty, is_missing
2010 
2011  real(esmf_kind_r8), allocatable :: dum2d_1(:,:)
2012 
2013 
2014  real(esmf_kind_r8) :: rlevs_hold(max_levs)
2015  real(esmf_kind_r8), allocatable :: rlevs(:)
2016  real(esmf_kind_r4), allocatable :: dummy2d(:,:)
2017  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:), dummy2d_8(:,:),&
2018  u_tmp_3d(:,:,:), v_tmp_3d(:,:,:)
2019  real(esmf_kind_r8), pointer :: presptr(:,:,:), psptr(:,:),tptr(:,:,:), &
2020  qptr(:,:,:), wptr(:,:,:), &
2021  uptr(:,:,:), vptr(:,:,:)
2022  real(esmf_kind_r4) :: value
2023  real(esmf_kind_r8), parameter :: p0 = 100000.0
2024  real(esmf_kind_r8), allocatable :: dummy3d_col_in(:),dummy3d_col_out(:)
2025  real(esmf_kind_r8), parameter :: intrp_missing = -999.0
2026  real(esmf_kind_r4), parameter :: lev_no_tr_fill = 20000.0
2027  real(esmf_kind_r4), parameter :: lev_no_o3_fill = 40000.0
2028 
2029  type(gribfield) :: gfld
2030 
2031  tracers(:) = "NULL"
2032 
2033  trac_names_oct10 = (/1, 1, 14, 1, 1, 1, 1, 6, 6, 1, 6, 13, 13, 2 /)
2034  trac_names_oct11 = (/0, 22, 192, 23, 24, 25, 32, 1, 29, 100, 28, 193, 192, 2 /)
2035 
2036  trac_names_vmap = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", &
2037  "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", &
2038  "rain_nc ", "water_nc", "liq_aero", "ice_aero", &
2039  "sgs_tke "/)
2040 
2041  tracers_default = (/"sphum ", "liq_wat ", "o3mr ", "ice_wat ", &
2042  "rainwat ", "snowwat ", "graupel ", "cld_amt ", "ice_nc ", &
2043  "rain_nc ", "water_nc", "liq_aero", "ice_aero", &
2044  "sgs_tke "/)
2045 
2046  the_file = trim(data_dir_input_grid) // "/" // trim(grib2_file_input_grid)
2047 
2048  print*,"- READ ATMOS DATA FROM GRIB2 FILE: ", trim(the_file)
2049 
2050  if (localpet == 0) then
2051 
2052  lugb=14
2053  lugi=0
2054  call baopenr(lugb,the_file,iret)
2055  if (iret /= 0) call error_handler("ERROR OPENING GRIB2 FILE.", iret)
2056 
2057  jdisc = 0 ! Search for discipline - meteorological products
2058  j = 0 ! Search at beginning of file.
2059  jpdt = -9999 ! Array of values in product definition template, set to wildcard
2060  jids = -9999 ! Array of values in identification section, set to wildcard
2061  jgdt = -9999 ! Array of values in grid definition template, set to wildcard
2062  jgdtn = -1 ! Search for any grid definition number.
2063  jpdtn = -1 ! Search for any product definition template number.
2064  unpack =.false.
2065 
2066  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2067  unpack, k, gfld, iret)
2068 
2069 !----------------------------------------------------------------------
2070 ! Read first record and check if this is NCEP GEFS data.
2071 ! This will determine what product definition template number to
2072 ! search for (Section 4/Octets 8-9).
2073 !
2074 ! Section 1/Octets 6-7 is '7' (NCEP)
2075 ! Section 1/Octets 8-9 is '2' (NCEP Ensemble products).
2076 !----------------------------------------------------------------------
2077 
2078  if (iret == 0) then
2079  if (gfld%idsect(1) == 7 .and. gfld%idsect(2) == 2) then
2080  print*,'- THIS IS NCEP GEFS DATA.'
2081  pdt_num = 1 ! Search for product definition template number 1.
2082  ! Individual ensember forecast.
2083  else
2084  pdt_num = 0 ! Search for product definition template number 0.
2085  ! Analysis or forecast.
2086  endif
2087  else
2088  call error_handler("READING GRIB2 FILE", iret)
2089  endif
2090 
2091 !----------------------------------------------------------------------
2092 ! First, check for the vertical coordinate. If temperture at the 10 hybrid
2093 ! level is found, hybrid coordinates are assumed. Otherwise, data is on
2094 ! isobaric levels.
2095 !----------------------------------------------------------------------
2096 
2097  j = 0
2098  jpdtn = pdt_num ! Search for the specific product definition template number.
2099  jpdt(1) = 0 ! Sect4/oct 10 - Parameter category - temperature field
2100  jpdt(2) = 0 ! Sect4/oct 11 - Parameter number - temperature
2101  jpdt(10) = 105 ! Sect4/oct 23 - Type of level - hybrid
2102  jpdt(12) = 10 ! Sect4/octs 25/28 - Value of hybrid level
2103  unpack=.false.
2104 
2105  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2106  unpack, k, gfld, iret)
2107 
2108  if (iret == 0) then
2109  print*,'- DATA IS ON HYBRID LEVELS.'
2110  octet_23 = 105 ! Section 4/Oct 23 - type of first fixed surface.
2111  octet_29 = 255 ! Section 4/Oct 29 - type of second fixed surface (N/A).
2112  isnative=.true.
2113  else
2114  print*,'- DATA IS ON ISOBARIC LEVELS.'
2115  octet_23 = 100 ! Section 4/Oct 23 - type of first fixed surface.
2116  octet_29 = 255 ! Section 4/Oct 29 - type of second fixed surface (N/A).
2117  isnative=.false.
2118  endif
2119 
2120 ! Now count the number of vertical levels by searching for u-wind.
2121 ! Store the value of each level.
2122 
2123  rlevs_hold = -999.9
2124  lev_input = 0
2125  iret = 0
2126  j = 0
2127  jpdtn = -1
2128  jpdt = -9999
2129 
2130  do
2131  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2132  unpack, k, gfld, iret)
2133 
2134  if (iret /= 0) exit
2135 
2136  if (gfld%discipline == 0) then ! Discipline - meteorological products
2137  if (gfld%ipdtnum == pdt_num) then ! Product definition template number.
2138  if (gfld%ipdtmpl(1) == 2 .and. gfld%ipdtmpl(2) == 2) then ! u-wind
2139  ! Sect4/octs 10 and 11.
2140  if (gfld%ipdtmpl(10) == octet_23 .and. gfld%ipdtmpl(13) == octet_29) then
2141  ! Sect4 octs 23 and 29.
2142  ! Hybrid or isobaric.
2143  lev_input = lev_input + 1
2144  iscale = 10 ** gfld%ipdtmpl(11)
2145  rlevs_hold(lev_input) = float(gfld%ipdtmpl(12))/float(iscale)
2146  endif
2147  endif
2148  endif
2149  endif
2150 
2151  j = k
2152  enddo
2153 
2154  endif ! read file on task 0.
2155 
2156  call mpi_barrier(mpi_comm_world, iret)
2157  call mpi_bcast(isnative,1,mpi_logical,0,mpi_comm_world,iret)
2158  call mpi_bcast(lev_input,1,mpi_integer,0,mpi_comm_world,iret)
2159  call mpi_bcast(pdt_num,1,mpi_integer,0,mpi_comm_world,iret)
2160  call mpi_bcast(rlevs_hold, max_levs, mpi_integer,0,mpi_comm_world,iret)
2161 
2162  allocate(slevs(lev_input))
2163  allocate(rlevs(lev_input))
2164  allocate(dummy3d_col_in(lev_input))
2165  allocate(dummy3d_col_out(lev_input))
2166 
2167  levp1_input = lev_input + 1
2168 
2169 ! Jili Dong add sort to re-order isobaric levels.
2170 
2171  do i = 1, lev_input
2172  rlevs(i) = rlevs_hold(i)
2173  enddo
2174 
2175  call quicksort(rlevs,1,lev_input)
2176 
2177  do i = 1, lev_input
2178  if (isnative) then
2179  write(slevs(i), '(i6)') nint(rlevs(i))
2180  slevs(i) = trim(slevs(i)) // " hybrid"
2181  if (i>1) then
2182  if (any(slevs(1:i-1)==slevs(i))) call error_handler("Duplicate vertical level entries found.",1)
2183  endif
2184  else
2185  write(slevs(i), '(f11.2)') rlevs(i)
2186  slevs(i) = trim(slevs(i)) // " Pa"
2187  if (i>1) then
2188  if (any(slevs(1:i-1)==slevs(i))) call error_handler("Duplicate vertical level entries found.",1)
2189  endif
2190  endif
2191  enddo
2192 
2193  if(localpet == 0) then
2194  do i = 1,lev_input
2195  print*, "- LEVEL AFTER SORT = ",trim(slevs(i))
2196  enddo
2197  endif
2198 
2199 ! Check to see if specfic humidity exists at all the same levels as ugrd.
2200 
2201  if (localpet == 0) then
2202 
2203  jpdtn = pdt_num ! Product definition template number.
2204  jpdt = -9999
2205  jpdt(1) = 1 ! Sect4/oct 10 - Parameter category - moisture
2206  jpdt(2) = 0 ! Sect4/oct 11 - Parameter number - specific humidity
2207  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level.
2208  unpack=.false.
2209 
2210  count_spfh=0
2211 
2212  do vlev = 1, lev_input
2213  j = 0
2214  jpdt(12) = nint(rlevs(vlev))
2215 
2216  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2217  unpack, k, gfld, iret)
2218 
2219  if (iret == 0) then
2220  count_spfh = count_spfh + 1
2221  endif
2222  enddo
2223 
2224  jpdt(1) = 1 ! Sec4/oct 10 - Parameter category - moisture
2225  jpdt(2) = 1 ! Sec4/oct 11 - Parameter number - rel humidity
2226  count_rh=0
2227 
2228  do vlev = 1, lev_input
2229  j = 0
2230  jpdt(12) = nint(rlevs(vlev))
2231 
2232  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2233  unpack, k, gfld, iret)
2234 
2235  if (iret == 0) then
2236  count_rh = count_rh + 1
2237  endif
2238  enddo
2239 
2240  if (count_spfh /= lev_input) then
2241  use_rh = .true.
2242  endif
2243 
2244  if (count_spfh == 0 .or. use_rh) then
2245  if (count_rh == 0) then
2246  call error_handler("READING ATMOSPHERIC WATER VAPOR VARIABLE.", 2)
2247  endif
2248  hasspfh = .false. ! Will read rh and convert to specific humidity.
2249  trac_names_oct10(1) = 1
2250  trac_names_oct11(1) = 1
2251  print*,"- FILE CONTAINS RH."
2252  else
2253  print*,"- FILE CONTAINS SPFH."
2254  endif
2255 
2256  endif
2257 
2258  call mpi_barrier(mpi_comm_world, rc)
2259  call mpi_bcast(hasspfh,1,mpi_logical,0,mpi_comm_world,rc)
2260 
2261 ! Search for and count the number of tracers in the file.
2262 
2263  if (localpet == 0) then
2264 
2265  jpdtn = pdt_num ! Product definition template number.
2266  jpdt = -9999
2267  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level.
2268  unpack=.false.
2269 
2270  count_icmr=0
2271  count_scliwc=0
2272  count_cice=0
2273  count_rwmr=0
2274  count_scllwc=0
2275 
2276  do vlev = 1, lev_input
2277 
2278  j = 0
2279  jpdt(1) = 1 ! Sect4/oct 10 - Parameter category - moisture
2280  jpdt(2) = 23 ! Sect4/oct 11 - Parameter number - ice water mixing ratio
2281  jpdt(12) = nint(rlevs(vlev))
2282 
2283  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2284  unpack, k, gfld, iret)
2285 
2286  if (iret == 0) then
2287  count_icmr = count_icmr + 1
2288  endif
2289 
2290  j = 0
2291  jpdt(1) = 1 ! Sect4/oct 10 - Parameter category - moisture
2292  jpdt(2) = 84 ! Sect4/oct 11 - Parameter number - cloud ice water content.
2293  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2294  unpack, k, gfld, iret)
2295 
2296  if (iret == 0) then
2297  count_scliwc = count_scliwc + 1
2298  endif
2299 
2300  j = 0
2301  jpdt(1) = 6 ! Sect4/oct 10 - Parameter category - clouds
2302  jpdt(2) = 0 ! Sect4/oct 11 - Parameter number - cloud ice
2303  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2304  unpack, k, gfld, iret)
2305 
2306  if (iret == 0) then
2307  count_cice = count_cice + 1
2308  endif
2309 
2310  j = 0
2311  jpdt(1) = 1 ! Sect4/oct 10 - Parameter category - moisture
2312  jpdt(2) = 24 ! Sect4/oct 11 - Parameter number - rain mixing ratio
2313  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2314  unpack, k, gfld, iret)
2315 
2316  if (iret == 0) then
2317  count_rwmr = count_rwmr + 1
2318  endif
2319 
2320  j = 0
2321  jpdt(1) = 1 ! Sect4/oct 10 - Parameter category - moisture
2322  jpdt(2) = 83 ! Sect4/oct 11 - Parameter number - specific cloud liquid
2323  ! water content.
2324  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2325  unpack, k, gfld, iret)
2326 
2327  if (iret == 0) then
2328  count_scllwc = count_scllwc + 1
2329  endif
2330 
2331  enddo
2332 
2333  if (count_icmr == 0) then
2334  if (count_scliwc == 0) then
2335  if (count_cice == 0) then
2336  print*,'- FILE DOES NOT CONTAIN CICE.'
2337  else
2338  trac_names_oct10(4) = 6 ! Sect4/oct 10 - Parameter category - clouds
2339  trac_names_oct11(4) = 0 ! Sect4/oct 11 - Parameter number - cloud ice
2340  print*,"- FILE CONTAINS CICE."
2341  endif
2342  else
2343  trac_names_oct10(4) = 1 ! Sect4/oct 10 - Parameter category - moisture
2344  trac_names_oct11(4) = 84 ! Sect4/oct 11 - Parameter number - cloud ice water content.
2345  print*,"- FILE CONTAINS SCLIWC."
2346  endif
2347  else
2348  print*,"- FILE CONTAINS ICMR."
2349  endif ! count of icmr
2350 
2351  if (count_rwmr == 0) then
2352  if (count_scllwc == 0) then
2353  print*,"- FILE DOES NOT CONTAIN SCLLWC."
2354  else
2355  trac_names_oct10(4) = 1 ! Sect4/oct 10 - Parameter category - moisture
2356  trac_names_oct11(4) = 83 ! Sect4/oct 11 - Parameter number - specific cloud liquid
2357  ! water content.
2358  print*,"- FILE CONTAINS SCLLWC."
2359  endif
2360  else
2361  print*,"- FILE CONTAINS CLWMR."
2362  endif
2363 
2364  endif ! count of tracers/localpet = 0
2365 
2366  call mpi_barrier(mpi_comm_world, rc)
2367  call mpi_bcast(trac_names_oct10,ntrac_max,mpi_integer,0,mpi_comm_world,rc)
2368  call mpi_bcast(trac_names_oct11,ntrac_max,mpi_integer,0,mpi_comm_world,rc)
2369 
2370  print*,"- COUNT NUMBER OF TRACERS TO BE READ IN BASED ON PHYSICS SUITE TABLE"
2371  do n = 1, num_tracers_input
2372 
2373  vname = tracers_input(n)
2374 
2375  i = maxloc(merge(1.,0.,trac_names_vmap == vname),dim=1)
2376 
2377  tracers_input_vmap(n)=trac_names_vmap(i)
2378  tracers(n)=tracers_default(i)
2379  if(trim(tracers(n)) .eq. "o3mr") o3n = n
2380 
2381  tracers_input_oct10(n) = trac_names_oct10(i)
2382  tracers_input_oct11(n) = trac_names_oct11(i)
2383 
2384  enddo
2385 
2386 !---------------------------------------------------------------------------
2387 ! Initialize esmf atmospheric fields.
2388 !---------------------------------------------------------------------------
2389 
2391 
2392  if (localpet == 0) then
2393  allocate(dummy2d(i_input,j_input))
2394  allocate(dummy2d_8(i_input,j_input))
2395  allocate(dummy3d(i_input,j_input,lev_input))
2396  allocate(dum2d_1(i_input,j_input))
2397  else
2398  allocate(dummy2d(0,0))
2399  allocate(dummy2d_8(0,0))
2400  allocate(dummy3d(0,0,0))
2401  allocate(dum2d_1(0,0))
2402  endif
2403 
2404 !----------------------------------------------------------------------------------
2405 ! This program expects field levels from bottom to top. Fields in non-native
2406 ! files read in from top to bottom. We will flip indices later. Fields on
2407 ! native vertical coordinates read from bottom to top so those need no adjustments.
2408 !----------------------------------------------------------------------------------
2409 
2410  if (localpet == 0) then
2411 
2412  print*,"- READ TEMPERATURE."
2413 
2414  jdisc = 0 ! search for discipline - meteorological products
2415  j = 0 ! search at beginning of file.
2416  jpdt = -9999 ! array of values in product definition template, set to wildcard
2417  jids = -9999 ! array of values in identification section, set to wildcard
2418  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2419  jgdtn = -1 ! search for any grid definition number.
2420  jpdtn = pdt_num ! Search for specific product definition template number.
2421  jpdt(1) = 0 ! Sect 4/oct 10 - parameter category - temperature
2422  jpdt(2) = 0 ! Sect 4/oct 11 - parameter number - temperature
2423  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level.
2424 
2425  unpack=.true.
2426 
2427  do vlev = 1, lev_input
2428 
2429  jpdt(12) = nint(rlevs(vlev))
2430 
2431  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2432  unpack, k, gfld, iret)
2433  if (iret /= 0) then
2434  call error_handler("READING IN TEMPERATURE AT LEVEL "//trim(slevs(vlev)),iret)
2435  endif
2436 
2437  dum2d_1 = reshape(gfld%fld, (/i_input,j_input/) )
2438 
2439  dummy3d(:,:,vlev) = dum2d_1
2440 
2441  enddo
2442 
2443  endif ! Read of temperature
2444 
2445  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT GRID TEMPERATURE."
2446  call esmf_fieldscatter(temp_input_grid, dummy3d, rootpet=0, rc=rc)
2447  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2448  call error_handler("IN FieldScatter", rc)
2449 
2450 ! Read tracers
2451 
2452  do n = 1, num_tracers_input
2453 
2454  if (localpet == 0) print*,"- READ ", trim(tracers_input_vmap(n))
2455 
2456  vname = tracers_input_vmap(n)
2457  call get_var_cond(vname,this_miss_var_method=method, this_miss_var_value=value, &
2458  this_field_var_name=tmpstr,loc=varnum)
2459 
2460  if (n==1 .and. .not. hasspfh) then
2461  print*,"- CALL FieldGather TEMPERATURE."
2462  call esmf_fieldgather(temp_input_grid,dummy3d,rootpet=0, tile=1, rc=rc)
2463  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2464  call error_handler("IN FieldGet", rc)
2465  endif
2466 
2467  if (localpet == 0) then
2468 
2469  jdisc = 0 ! search for discipline - meteorological products
2470  jpdt = -9999 ! array of values in product definition template, set to wildcard
2471  jids = -9999 ! array of values in identification section, set to wildcard
2472  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2473  jgdtn = -1 ! search for any grid definition number.
2474  jpdtn = pdt_num ! Search for the product definition template number.
2475  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level.
2476  unpack = .false.
2477 
2478  count = 0
2479 
2480  do vlev = 1, lev_input
2481 
2482  j = 0
2483  jpdt(1) = tracers_input_oct10(n)
2484  jpdt(2) = tracers_input_oct11(n)
2485  jpdt(12) = nint(rlevs(vlev))
2486 
2487  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2488  unpack, k, gfld, iret)
2489 
2490  if (iret == 0) then
2491  count = count + 1
2492  endif
2493 
2494  enddo
2495  iret=count
2496 
2497  ! Check to see if file has any data for this tracer
2498  if (iret == 0) then
2499  all_empty = .true.
2500  else
2501  all_empty = .false.
2502  endif
2503 
2504  is_missing = .false.
2505 
2506  do vlev = 1, lev_input
2507 
2508  unpack=.true.
2509  j = 0
2510  jpdt(1) = tracers_input_oct10(n)
2511  jpdt(2) = tracers_input_oct11(n)
2512  jpdt(12) = nint(rlevs(vlev) )
2513 
2514  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2515  unpack, k, gfld, iret)
2516 
2517  if (iret == 0) then ! found data
2518  dummy2d = real((reshape(gfld%fld, (/i_input,j_input/) )), kind=esmf_kind_r4)
2519  else ! did not find data.
2520  if (trim(method) .eq. 'intrp' .and. .not.all_empty) then
2521  dummy2d = intrp_missing
2522  is_missing = .true.
2523  else
2524  ! Abort if input data has some data for current tracer, but has
2525  ! missing data below 200 mb/ above 400mb
2526  if (.not.all_empty .and. n == o3n) then
2527  if (rlevs(vlev) .lt. lev_no_o3_fill) &
2528  call error_handler("TRACER "//trim(tracers(n))//" HAS MISSING DATA AT "//trim(slevs(vlev))//&
2529  ". SET MISSING VARIABLE CONDITION TO 'INTRP' TO AVOID THIS ERROR", 1)
2530  elseif (.not.all_empty .and. n .ne. o3n) then
2531  if (rlevs(vlev) .gt. lev_no_tr_fill) &
2532  call error_handler("TRACER "//trim(tracers(n))//" HAS MISSING DATA AT "//trim(slevs(vlev))//&
2533  ". SET MISSING VARIABLE CONDITION TO 'INTRP' TO AVOID THIS ERROR.", 1)
2534  endif
2535  ! If entire array is empty and method is set to intrp, switch method to fill
2536  if (trim(method) .eq. 'intrp' .and. all_empty) method='set_to_fill'
2537 
2538  call handle_grib_error(vname, slevs(vlev),method,value,varnum,read_from_input,iret,var=dummy2d)
2539  if (iret==1) then ! missing_var_method == skip or no entry
2540  if ( (tracers_input_oct10(n) == 1 .and. tracers_input_oct11(n) == 0) .or. & ! spec humidity
2541  (tracers_input_oct10(n) == 1 .and. tracers_input_oct11(n) == 1) .or. & ! rel humidity
2542  (tracers_input_oct10(n) == 14 .and. tracers_input_oct11(n) == 192) ) then ! ozone
2543  call error_handler("READING IN "//trim(tracers(n))//" AT LEVEL "//trim(slevs(vlev))&
2544  //". SET A FILL VALUE IN THE VARMAP TABLE IF THIS ERROR IS NOT DESIRABLE.",iret)
2545  endif
2546  endif
2547  endif ! method intrp
2548  endif !iret<=0
2549 
2550  if (n==1 .and. .not. hasspfh) then
2551  if (trim(external_model) .eq. 'GFS') then
2552  print *,'- CALL CALRH GFS'
2553  call rh2spfh_gfs(dummy2d,rlevs(vlev),dummy3d(:,:,vlev))
2554  else
2555  print *,'- CALL CALRH non-GFS'
2556  call rh2spfh(dummy2d,rlevs(vlev),dummy3d(:,:,vlev))
2557  end if
2558  endif
2559 
2560  dummy3d(:,:,vlev) = real(dummy2d,esmf_kind_r8)
2561 
2562  enddo !vlev
2563 
2564 ! Jili Dong interpolation for missing levels
2565  if (is_missing .and. trim(method) .eq. 'intrp') then
2566  print *,'- INTERPOLATE TRACER '//trim(tracers(n))
2567  done_print = 0
2568  do jj = 1, j_input
2569  do ii = 1, i_input
2570  dummy3d_col_in=dummy3d(ii,jj,:)
2571  call dint2p(rlevs,dummy3d_col_in,lev_input,rlevs,dummy3d_col_out, &
2572  lev_input, 2, intrp_missing, intrp_ier)
2573  if (intrp_ier .gt. 0) call error_handler("Interpolation failed.",intrp_ier)
2574  dummy3d(ii,jj,:)=dummy3d_col_out
2575  enddo
2576  enddo
2577  do vlev=1,lev_input
2578  dummy2d = real(dummy3d(:,:,n) , kind=esmf_kind_r4)
2579  if (any(dummy2d .eq. intrp_missing)) then
2580  ! If we're outside the appropriate region, don't fill but error instead
2581  if (n == o3n .and. rlevs(vlev) .lt. lev_no_o3_fill) then
2582  call error_handler("TRACER "//trim(tracers(n))//" HAS MISSING DATA AT "//trim(slevs(vlev)),1)
2583  elseif (n .ne. o3n .and. rlevs(vlev) .gt. lev_no_tr_fill) then
2584  call error_handler("TRACER "//trim(tracers(n))//" HAS MISSING DATA AT "//trim(slevs(vlev)),1)
2585  else ! we're okay to fill missing data with provided fill value
2586  if (done_print .eq. 0) then
2587  print*, "Pressure out of range of existing data. Defaulting to fill value."
2588  done_print = 1
2589  end if !done print
2590  where(dummy2d .eq. intrp_missing) dummy2d = value
2591  dummy3d(:,:,vlev) = dummy2d
2592  end if !n & lev
2593  endif ! intrp_missing
2594  ! zero out negative tracers from interpolation/extrapolation
2595  where(dummy3d(:,:,vlev) .lt. 0.0) dummy3d(:,:,vlev) = 0.0
2596 ! print*,'tracer af intrp',vlev, maxval(dummy3d(:,:,vlev)),minval(dummy3d(:,:,vlev))
2597  end do !nlevs do
2598  end if !if intrp
2599  endif !localpet == 0
2600 
2601  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT ", trim(tracers_input_vmap(n))
2602  call esmf_fieldscatter(tracers_input_grid(n), dummy3d, rootpet=0, rc=rc)
2603  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2604  call error_handler("IN FieldScatter", rc)
2605 
2606  enddo
2607 
2608  deallocate(dummy3d_col_in, dummy3d_col_out)
2609 
2610  call read_winds(u_tmp_3d,v_tmp_3d,localpet,octet_23,rlevs,lugb,pdt_num)
2611 
2612  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT U-WIND."
2613  call esmf_fieldscatter(u_input_grid, u_tmp_3d, rootpet=0, rc=rc)
2614  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2615  call error_handler("IN FieldScatter", rc)
2616 
2617  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT V-WIND."
2618  call esmf_fieldscatter(v_input_grid, v_tmp_3d, rootpet=0, rc=rc)
2619  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2620  call error_handler("IN FieldScatter", rc)
2621 
2622  if (localpet == 0) then
2623 
2624  print*,"- READ SURFACE PRESSURE."
2625  jdisc = 0 ! search for discipline - meteorological products
2626  j = 0 ! search at beginning of file.
2627  jpdt = -9999 ! array of values in product definition template, set to wildcard
2628  jids = -9999 ! array of values in identification section, set to wildcard
2629  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2630  jgdtn = -1 ! search for any grid definition number.
2631  jpdtn = pdt_num ! Search for the product definition template number.
2632  jpdt(1) = 3 ! Sect4/oct 10 - param category - mass
2633  jpdt(2) = 0 ! Sect4/oct 11 - param number - pressure
2634  jpdt(10) = 1 ! Sect4/oct 23 - type of level - ground surface
2635  unpack=.true.
2636 
2637  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2638  unpack, k, gfld, iret)
2639  if (iret /= 0) call error_handler("READING SURFACE PRESSURE RECORD.", iret)
2640 
2641  dummy2d_8 = reshape(gfld%fld, (/i_input,j_input/) )
2642 
2643  endif ! Read surface pressure
2644 
2645  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT GRID SURFACE PRESSURE."
2646  call esmf_fieldscatter(ps_input_grid, dummy2d_8, rootpet=0, rc=rc)
2647  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2648  call error_handler("IN FieldScatter", rc)
2649 
2650 ! Read dzdt.
2651 
2652  if (localpet == 0) then
2653 
2654  print*,"- READ DZDT."
2655  vname = "dzdt"
2656  call get_var_cond(vname,this_miss_var_method=method, this_miss_var_value=value, &
2657  loc=varnum)
2658 
2659  jdisc = 0 ! search for discipline - meteorological products
2660  j = 0 ! search at beginning of file.
2661  jpdt = -9999 ! array of values in product definition template, set to wildcard
2662  jids = -9999 ! array of values in identification section, set to wildcard
2663  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2664  jgdtn = -1 ! search for any grid definition number.
2665  jpdtn = pdt_num ! Search for the product definition template number.
2666  jpdt(1) = 2 ! Sect4/oct 10 - param category - momentum
2667  jpdt(2) = 9 ! Sect4/oct 11 - param number - dzdt
2668  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level
2669 
2670  unpack=.true.
2671 
2672  do vlev = 1, lev_input
2673 
2674  jpdt(12) = nint(rlevs(vlev))
2675 
2676  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2677  unpack, k, gfld, iret)
2678 
2679  if (iret /= 0) then ! dzdt not found, look for omega.
2680  print*,"DZDT not available at level ", trim(slevs(vlev)), " so checking for VVEL"
2681  jpdt(2) = 8 ! Sect4/oct 11 - parameter number - omega
2682  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2683  unpack, k, gfld, iret)
2684  if (iret /= 0) then
2685  call handle_grib_error(vname, slevs(vlev),method,value,varnum,read_from_input,iret,var8=dum2d_1)
2686  if (iret==1) then ! missing_var_method == skip
2687  cycle
2688  endif
2689  else
2690  conv_omega = .true.
2691  dum2d_1 = reshape(gfld%fld, (/i_input,j_input/) )
2692  endif
2693  else ! found dzdt
2694  dum2d_1 = reshape(gfld%fld, (/i_input,j_input/) )
2695  endif
2696 
2697  dummy3d(:,:,vlev) = dum2d_1
2698 
2699  enddo
2700 
2701  endif ! Read of dzdt
2702 
2703  call mpi_bcast(conv_omega,1,mpi_logical,0,mpi_comm_world,rc)
2704 
2705  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT DZDT."
2706  call esmf_fieldscatter(dzdt_input_grid, dummy3d, rootpet=0, rc=rc)
2707  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2708  call error_handler("IN FieldScatter", rc)
2709 
2710 ! Read terrain
2711 
2712  if (localpet == 0) then
2713 
2714  print*,"- READ TERRAIN."
2715  jdisc = 0 ! search for discipline - meteorological products
2716  j = 0 ! search at beginning of file.
2717  jpdt = -9999 ! array of values in product definition template, set to wildcard
2718  jids = -9999 ! array of values in identification section, set to wildcard
2719  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2720  jgdtn = -1 ! search for any grid definition number.
2721  jpdtn = pdt_num ! Search for the product definition template number.
2722  jpdt(1) = 3 ! Sect4/oct 10 - param category - mass
2723  jpdt(2) = 5 ! Sect4/oct 11 - param number - geopotential height
2724  jpdt(10) = 1 ! Sect4/oct 23 - type of level - ground surface
2725  unpack=.true.
2726 
2727  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2728  unpack, k, gfld, iret)
2729  if (iret /= 0) call error_handler("READING TERRAIN HEIGHT RECORD.", iret)
2730 
2731  dummy2d_8 = reshape(gfld%fld, (/i_input,j_input/) )
2732 
2733  endif ! read of terrain.
2734 
2735  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT GRID TERRAIN."
2736  call esmf_fieldscatter(terrain_input_grid, dummy2d_8, rootpet=0, rc=rc)
2737  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2738  call error_handler("IN FieldScatter", rc)
2739 
2740  deallocate(dummy2d, dummy2d_8)
2741 
2742 if (.not. isnative) then
2743 
2744  !---------------------------------------------------------------------------
2745  ! Flip 'z' indices to all 3-d variables. Data is read in from model
2746  ! top to surface. This program expects surface to model top.
2747  !---------------------------------------------------------------------------
2748 
2749  if (localpet == 0) print*,"- CALL FieldGet FOR SURFACE PRESSURE."
2750  nullify(psptr)
2751  call esmf_fieldget(ps_input_grid, &
2752  farrayptr=psptr, rc=rc)
2753  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2754  call error_handler("IN FieldGet", rc)
2755 
2756  nullify(presptr)
2757  if (localpet == 0) print*,"- CALL FieldGet FOR 3-D PRESSURE."
2758  call esmf_fieldget(pres_input_grid, &
2759  computationallbound=clb, &
2760  computationalubound=cub, &
2761  farrayptr=presptr, rc=rc)
2762  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2763  call error_handler("IN FieldGet", rc)
2764 
2765  nullify(tptr)
2766  if (localpet == 0) print*,"- CALL FieldGet TEMPERATURE."
2767  call esmf_fieldget(temp_input_grid, &
2768  farrayptr=tptr, rc=rc)
2769  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2770  call error_handler("IN FieldGet", rc)
2771 
2772  nullify(uptr)
2773  if (localpet == 0) print*,"- CALL FieldGet FOR U"
2774  call esmf_fieldget(u_input_grid, &
2775  farrayptr=uptr, rc=rc)
2776  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2777  call error_handler("IN FieldGet", rc)
2778 
2779  nullify(vptr)
2780  if (localpet == 0) print*,"- CALL FieldGet FOR V"
2781  call esmf_fieldget(v_input_grid, &
2782  farrayptr=vptr, rc=rc)
2783  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2784  call error_handler("IN FieldGet", rc)
2785 
2786  nullify(wptr)
2787  if (localpet == 0) print*,"- CALL FieldGet FOR W"
2788  call esmf_fieldget(dzdt_input_grid, &
2789  farrayptr=wptr, rc=rc)
2790  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2791  call error_handler("IN FieldGet", rc)
2792 
2793  if (localpet == 0) print*,"- CALL FieldGet FOR TRACERS."
2794  do n=1,num_tracers_input
2795  nullify(qptr)
2796  call esmf_fieldget(tracers_input_grid(n), &
2797  farrayptr=qptr, rc=rc)
2798  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2799  call error_handler("IN FieldGet", rc)
2800  do i = clb(1),cub(1)
2801  do j = clb(2),cub(2)
2802  qptr(i,j,:) = qptr(i,j,lev_input:1:-1)
2803  end do
2804  end do
2805  end do
2806 
2807  do i = clb(1),cub(1)
2808  do j = clb(2),cub(2)
2809  presptr(i,j,:) = rlevs(lev_input:1:-1)
2810  tptr(i,j,:) = tptr(i,j,lev_input:1:-1)
2811  uptr(i,j,:) = uptr(i,j,lev_input:1:-1)
2812  vptr(i,j,:) = vptr(i,j,lev_input:1:-1)
2813  wptr(i,j,:) = wptr(i,j,lev_input:1:-1)
2814  end do
2815  end do
2816 
2817  if (localpet == 0) then
2818  print*,'psfc is ',clb(1),clb(2),psptr(clb(1),clb(2))
2819  print*,'pres is ',cub(1),cub(2),presptr(cub(1),cub(2),:)
2820 
2821  print*,'pres check 1',localpet,maxval(presptr(clb(1):cub(1),clb(2):cub(2),1)), &
2822  minval(presptr(clb(1):cub(1),clb(2):cub(2),1))
2823  print*,'pres check lev',localpet,maxval(presptr(clb(1):cub(1),clb(2):cub(2), &
2824  lev_input)),minval(presptr(clb(1):cub(1),clb(2):cub(2),lev_input))
2825  endif
2826 
2827 else ! is native coordinate (hybrid).
2828 
2829 ! For native files, read in pressure field directly from file but don't flip levels
2830 
2831  if (localpet == 0) then
2832 
2833  print*,"- READ PRESSURE."
2834 
2835  jdisc = 0 ! search for discipline - meteorological products
2836  j = 0 ! search at beginning of file.
2837  jpdt = -9999 ! array of values in product definition template, set to wildcard
2838  jids = -9999 ! array of values in identification section, set to wildcard
2839  jgdt = -9999 ! array of values in grid definition template, set to wildcard
2840  jgdtn = -1 ! search for any grid definition number.
2841  jpdtn = pdt_num ! Search for the product definition template number.
2842  jpdt(1) = 3 ! Sect4/oct 10 - parameter category - mass
2843  jpdt(2) = 0 ! Sect4/oct 11 - parameter number - pressure
2844  jpdt(10) = octet_23 ! Sect4/oct 23 - type of level.
2845  unpack=.true.
2846 
2847  do vlev = 1, lev_input
2848 
2849  jpdt(12) = nint(rlevs(vlev))
2850  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2851  unpack, k, gfld, iret)
2852  if (iret /= 0) then
2853  call error_handler("READING IN PRESSURE AT LEVEL "//trim(slevs(vlev)),iret)
2854  endif
2855 
2856  dum2d_1 = reshape(gfld%fld, (/i_input,j_input/) )
2857 
2858  dummy3d(:,:,vlev) = dum2d_1
2859 
2860  enddo
2861 
2862  endif ! localpet == 0
2863 
2864  if (localpet == 0) print*,"- CALL FieldScatter FOR INPUT GRID PRESSURE."
2865  call esmf_fieldscatter(pres_input_grid, dummy3d, rootpet=0, rc=rc)
2866  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2867  call error_handler("IN FieldScatter", rc)
2868 
2869  endif
2870 
2871  deallocate(dummy3d, dum2d_1)
2872 
2873 !---------------------------------------------------------------------------
2874 ! Convert from 2-d to 3-d component winds.
2875 !---------------------------------------------------------------------------
2876 
2878 
2879 !---------------------------------------------------------------------------
2880 ! Convert dpdt to dzdt if needed
2881 !---------------------------------------------------------------------------
2882 
2883  if (conv_omega) then
2884 
2885  if (localpet == 0) print*,"- CONVERT FROM OMEGA TO DZDT."
2886 
2887  nullify(tptr)
2888  if (localpet == 0) print*,"- CALL FieldGet TEMPERATURE."
2889  call esmf_fieldget(temp_input_grid, &
2890  farrayptr=tptr, rc=rc)
2891  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2892  call error_handler("IN FieldGet", rc)
2893 
2894  nullify(qptr)
2895  if (localpet == 0) print*,"- CALL FieldGet SPECIFIC HUMIDITY."
2896  call esmf_fieldget(tracers_input_grid(1), &
2897  computationallbound=clb, &
2898  computationalubound=cub, &
2899  farrayptr=qptr, rc=rc)
2900  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2901  call error_handler("IN FieldGet", rc)
2902 
2903  nullify(wptr)
2904  if (localpet == 0) print*,"- CALL FieldGet DZDT."
2905  call esmf_fieldget(dzdt_input_grid, &
2906  computationallbound=clb, &
2907  computationalubound=cub, &
2908  farrayptr=wptr, rc=rc)
2909  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2910  call error_handler("IN FieldGet", rc)
2911 
2912  nullify(presptr)
2913  call esmf_fieldget(pres_input_grid, &
2914  farrayptr=presptr, rc=rc)
2915  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2916  call error_handler("IN FieldGet", rc)
2917 
2918  call convert_omega(wptr,presptr,tptr,qptr,clb,cub)
2919 
2920  endif
2921 
2922  if (localpet == 0) call baclose(lugb, rc)
2923 
2924  end subroutine read_input_atm_grib2_file
2925 
2937  subroutine read_winds(u,v,localpet,octet_23,rlevs,lugb,pdt_num)
2939  use grib_mod
2940  use program_setup, only : get_var_cond
2941 
2942  implicit none
2943 
2944  integer, intent(in) :: localpet, lugb
2945  integer, intent(in) :: pdt_num, octet_23
2946 
2947  real(esmf_kind_r8), intent(inout), allocatable :: u(:,:,:),v(:,:,:)
2948  real(esmf_kind_r8), intent(in), dimension(lev_input) :: rlevs
2949 
2950  real(esmf_kind_r4), dimension(i_input,j_input) :: alpha
2951  real(esmf_kind_r8), dimension(i_input,j_input) :: lon, lat
2952  real(esmf_kind_r4), allocatable :: u_tmp(:,:),v_tmp(:,:)
2953  real(esmf_kind_r8), allocatable :: dum2d(:,:)
2954  real(esmf_kind_r4), dimension(i_input,j_input) :: ws,wd
2955  real(esmf_kind_r4) :: value_u, value_v,lov,latin1,latin2
2956  real(esmf_kind_r8) :: d2r
2957 
2958  integer :: varnum_u, varnum_v, vlev, &
2959  error, iret
2960  integer :: j, k, lugi, jgdtn, jpdtn
2961  integer :: jdisc, jids(200), jgdt(200), jpdt(200)
2962 
2963  character(len=20) :: vname
2964  character(len=50) :: method_u, method_v
2965 
2966  logical :: unpack
2967 
2968  type(gribfield) :: gfld
2969 
2970  d2r=acos(-1.0_esmf_kind_r8) / 180.0_esmf_kind_r8
2971  if (localpet==0) then
2972  allocate(u(i_input,j_input,lev_input))
2973  allocate(v(i_input,j_input,lev_input))
2974  else
2975  allocate(u(0,0,0))
2976  allocate(v(0,0,0))
2977  endif
2978 
2979  vname = "u"
2980  call get_var_cond(vname,this_miss_var_method=method_u, this_miss_var_value=value_u, &
2981  loc=varnum_u)
2982  vname = "v"
2983  call get_var_cond(vname,this_miss_var_method=method_v, this_miss_var_value=value_v, &
2984  loc=varnum_v)
2985 
2986  print*,"- CALL FieldGather FOR INPUT GRID LONGITUDE"
2987  call esmf_fieldgather(longitude_input_grid, lon, rootpet=0, tile=1, rc=error)
2988  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2989  call error_handler("IN FieldGather", error)
2990 
2991  print*,"- CALL FieldGather FOR INPUT GRID LATITUDE"
2992  call esmf_fieldgather(latitude_input_grid, lat, rootpet=0, tile=1, rc=error)
2993  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2994  call error_handler("IN FieldGather", error)
2995 
2996  if (localpet==0) then
2997 
2998  lugi = 0 ! index file unit number
2999  jdisc = 0 ! search for discipline - meteorological products
3000  j = 0 ! search at beginning of file.
3001  jpdt = -9999 ! array of values in product definition template, set to wildcard
3002  jids = -9999 ! array of values in identification section, set to wildcard
3003  jgdt = -9999 ! array of values in grid definition template, set to wildcard
3004  jgdtn = -1 ! search for any grid definition number.
3005  jpdtn = pdt_num ! Search for the product definition template number.
3006  unpack=.false.
3007 
3008  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
3009  unpack, k, gfld, iret)
3010 
3011  if (iret /= 0) call error_handler("ERROR READING GRIB2 FILE.", iret)
3012 
3013  if (gfld%igdtnum == 32769) then ! grid definition template number - rotated lat/lon grid
3014 
3015  latin1 = real(float(gfld%igdtmpl(15))/1.0E6, kind=esmf_kind_r4)
3016  lov = real(float(gfld%igdtmpl(16))/1.0E6, kind=esmf_kind_r4)
3017 
3018  print*, "- CALL CALCALPHA_ROTLATLON with center lat,lon = ",latin1,lov
3019  call calcalpha_rotlatlon(lat,lon,latin1,lov,alpha)
3020 
3021  elseif (gfld%igdtnum == 30) then ! grid definition template number - lambert conformal grid.
3022 
3023  lov = real(float(gfld%igdtmpl(14))/1.0E6, kind=esmf_kind_r4)
3024  latin1 = real(float(gfld%igdtmpl(19))/1.0E6, kind=esmf_kind_r4)
3025  latin2 = real(float(gfld%igdtmpl(20))/1.0E6, kind=esmf_kind_r4)
3026 
3027  print*, "- CALL GRIDROT for LC grid with lov,latin1/2 = ",lov,latin1,latin2
3028  call gridrot(lov,latin1,latin2,lon,alpha)
3029 
3030  endif
3031 
3032  jpdt(10) = octet_23 ! Sec4/oct 23 - type of level.
3033 
3034  unpack=.true.
3035 
3036  allocate(dum2d(i_input,j_input))
3037  allocate(u_tmp(i_input,j_input))
3038  allocate(v_tmp(i_input,j_input))
3039 
3040  do vlev = 1, lev_input
3041 
3042  vname = ":UGRD:"
3043 
3044  jpdt(1) = 2 ! Sec4/oct 10 - parameter category - momentum
3045  jpdt(2) = 2 ! Sec4/oct 11 - parameter number - u-wind
3046  jpdt(12) = nint(rlevs(vlev)) ! Sect4/octs 25-28 - scaled value of fixed surface.
3047 
3048  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
3049  unpack, k, gfld, iret)
3050 
3051  if (iret /= 0) then
3052  call handle_grib_error(vname, slevs(vlev),method_u,value_u,varnum_u,read_from_input,iret,var=u_tmp)
3053  if (iret==1) then ! missing_var_method == skip
3054  call error_handler("READING IN U AT LEVEL "//trim(slevs(vlev))//". SET A FILL "// &
3055  "VALUE IN THE VARMAP TABLE IF THIS ERROR IS NOT DESIRABLE.",iret)
3056  endif
3057  else
3058  dum2d = reshape(gfld%fld, (/i_input,j_input/) )
3059  u_tmp(:,:) = real(dum2d, kind=esmf_kind_r4)
3060  endif
3061 
3062  vname = ":VGRD:"
3063 
3064  jpdt(2) = 3 ! Sec4/oct 11 - parameter number - v-wind
3065 
3066  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
3067  unpack, k, gfld, iret)
3068 
3069  if (iret /= 0) then
3070  call handle_grib_error(vname, slevs(vlev),method_v,value_v,varnum_v,read_from_input,iret,var=v_tmp)
3071  if (iret==1) then ! missing_var_method == skip
3072  call error_handler("READING IN V AT LEVEL "//trim(slevs(vlev))//". SET A FILL "// &
3073  "VALUE IN THE VARMAP TABLE IF THIS ERROR IS NOT DESIRABLE.",iret)
3074  endif
3075  else
3076  dum2d = reshape(gfld%fld, (/i_input,j_input/) )
3077  v_tmp(:,:) = real(dum2d, kind=esmf_kind_r4)
3078  endif
3079 
3080  deallocate(dum2d)
3081 
3082  if (gfld%igdtnum == 0) then ! grid definition template number - lat/lon grid
3083  if (external_model == 'UKMET') then
3084  u(:,:,vlev) = u_tmp
3085  v(:,:,vlev) = (v_tmp(:,2:jp1_input) + v_tmp(:,1:j_input))/2
3086  else
3087  u(:,:,vlev) = u_tmp
3088  v(:,:,vlev) = v_tmp
3089  endif
3090  else if (gfld%igdtnum == 32769) then ! grid definition template number - rotated lat/lon grid
3091  ws = sqrt(u_tmp**2 + v_tmp**2)
3092  wd = real((atan2(-u_tmp,-v_tmp) / d2r), kind=esmf_kind_r4) ! calculate grid-relative wind direction
3093  wd = real((wd + alpha + 180.0), kind=esmf_kind_r4) ! Rotate from grid- to earth-relative direction
3094  wd = real((270.0 - wd), kind=esmf_kind_r4) ! Convert from meteorological (true N) to mathematical direction
3095  u(:,:,vlev) = -ws*cos(wd*d2r)
3096  v(:,:,vlev) = -ws*sin(wd*d2r)
3097  else
3098  u(:,:,vlev) = real(u_tmp * cos(alpha) + v_tmp * sin(alpha),esmf_kind_r8)
3099  v(:,:,vlev) = real(v_tmp * cos(alpha) - u_tmp * sin(alpha),esmf_kind_r8)
3100  endif
3101 
3102  print*, 'max, min U ', minval(u(:,:,vlev)), maxval(u(:,:,vlev))
3103  print*, 'max, min V ', minval(v(:,:,vlev)), maxval(v(:,:,vlev))
3104  enddo
3105  endif
3106 
3107 end subroutine read_winds
3108 
3112  subroutine convert_winds_to_xyz
3114  implicit none
3115 
3116  integer :: clb(3), cub(3)
3117  integer :: i, j, k, rc
3118 
3119  real(esmf_kind_r8) :: latrad, lonrad
3120  real(esmf_kind_r8), pointer :: xptr(:,:,:)
3121  real(esmf_kind_r8), pointer :: yptr(:,:,:)
3122  real(esmf_kind_r8), pointer :: zptr(:,:,:)
3123  real(esmf_kind_r8), pointer :: uptr(:,:,:)
3124  real(esmf_kind_r8), pointer :: vptr(:,:,:)
3125  real(esmf_kind_r8), pointer :: latptr(:,:)
3126  real(esmf_kind_r8), pointer :: lonptr(:,:)
3127 
3128  print*,"- CALL FieldGet FOR xwind."
3129  call esmf_fieldget(xwind_input_grid, &
3130  computationallbound=clb, &
3131  computationalubound=cub, &
3132  farrayptr=xptr, rc=rc)
3133  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3134  call error_handler("IN FieldGet", rc)
3135 
3136  print*,"- CALL FieldGet FOR ywind."
3137  call esmf_fieldget(ywind_input_grid, &
3138  farrayptr=yptr, rc=rc)
3139  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3140  call error_handler("IN FieldGet", rc)
3141 
3142  print*,"- CALL FieldGet FOR zwind."
3143  call esmf_fieldget(zwind_input_grid, &
3144  farrayptr=zptr, rc=rc)
3145  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3146  call error_handler("IN FieldGet", rc)
3147 
3148  print*,"- CALL FieldGet FOR U."
3149  call esmf_fieldget(u_input_grid, &
3150  farrayptr=uptr, rc=rc)
3151  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3152  call error_handler("IN FieldGet", rc)
3153 
3154  print*,"- CALL FieldGet FOR V."
3155  call esmf_fieldget(v_input_grid, &
3156  farrayptr=vptr, rc=rc)
3157  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3158  call error_handler("IN FieldGet", rc)
3159 
3160  print*,"- CALL FieldGet FOR LATITUDE."
3161  call esmf_fieldget(latitude_input_grid, &
3162  farrayptr=latptr, rc=rc)
3163  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3164  call error_handler("IN FieldGet", rc)
3165 
3166  print*,"- CALL FieldGet FOR LONGITUDE."
3167  call esmf_fieldget(longitude_input_grid, &
3168  farrayptr=lonptr, rc=rc)
3169  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3170  call error_handler("IN FieldGet", rc)
3171 
3172  do i = clb(1), cub(1)
3173  do j = clb(2), cub(2)
3174  latrad = latptr(i,j) * acos(-1.) / 180.0
3175  lonrad = lonptr(i,j) * acos(-1.) / 180.0
3176  do k = clb(3), cub(3)
3177  xptr(i,j,k) = uptr(i,j,k) * cos(lonrad) - vptr(i,j,k) * sin(latrad) * sin(lonrad)
3178  yptr(i,j,k) = uptr(i,j,k) * sin(lonrad) + vptr(i,j,k) * sin(latrad) * cos(lonrad)
3179  zptr(i,j,k) = vptr(i,j,k) * cos(latrad)
3180  enddo
3181  enddo
3182  enddo
3183 
3184  call esmf_fielddestroy(u_input_grid, rc=rc)
3185  call esmf_fielddestroy(v_input_grid, rc=rc)
3186 
3187  end subroutine convert_winds_to_xyz
3188 
3202 subroutine gridrot(lov,latin1,latin2,lon,rot)
3204  use model_grid, only : i_input,j_input
3205  implicit none
3206 
3207 
3208  real(esmf_kind_r4), intent(in) :: lov,latin1,latin2
3209  real(esmf_kind_r4), intent(inout) :: rot(i_input,j_input)
3210  real(esmf_kind_r8), intent(in) :: lon(i_input,j_input)
3211 
3212  real(esmf_kind_r4) :: trot(i_input,j_input), tlon(i_input,j_input)
3213  real(esmf_kind_r4) :: dtor = 3.14159265359_esmf_kind_r4/180.0_esmf_kind_r4
3214  real(esmf_kind_r4) :: an
3215  !trot_tmp = real(lon,esmf_kind_r4)-lov
3216  !trot = trot_tmp
3217  !where(trot_tmp > 180.0) trot = trot-360.0_esmf_kind_r4
3218  !where(trot_tmp < -180.0) trot = trot-360.0_esmf_kind_r4
3219 
3220  if ( (latin1 - latin2) .lt. 0.000001 ) then
3221  an = sin(latin1*dtor)
3222  else
3223  an = real(log( cos(latin1*dtor) / cos(latin2*dtor) ) / & + log( tan(dtor*(90.0-latin1)/2.) / tan(dtor*(90.0-latin2)/2.)), kind=esmf_kind_r4)
3224  end if
3225 
3226  tlon = real((mod(lon - lov + 180. + 3600., 360.) - 180.), kind=esmf_kind_r4)
3227  trot = an * tlon
3228 
3229  rot = trot * dtor
3230 
3231 end subroutine gridrot
3232 
3242 subroutine calcalpha_rotlatlon(latgrid,longrid,cenlat,cenlon,alpha)
3243 
3245  implicit none
3246 
3247  real(esmf_kind_r8), intent(in) :: latgrid(i_input,j_input), &
3248  longrid(i_input,j_input)
3249  real(esmf_kind_r4), intent(in) :: cenlat, cenlon
3250  real(esmf_kind_r4), intent(out) :: alpha(i_input,j_input)
3251 
3252  ! Variables local to subroutine
3253  real(esmf_kind_r8) :: D2R,lon0_r,lat0_r,sphi0,cphi0
3254  real(esmf_kind_r8), DIMENSION(i_input,j_input) :: tlat,tlon,tph,sinalpha
3255 
3256  d2r = acos(-1.0_esmf_kind_r8) / 180.0_esmf_kind_r8
3257  if (cenlon .lt. 0) then
3258  lon0_r = (cenlon + 360.0)*d2r
3259  else
3260  lon0_r = cenlon*d2r
3261  end if
3262  lat0_r=cenlat*d2r
3263  sphi0=sin(lat0_r)
3264  cphi0=cos(lat0_r)
3265 
3266  ! deal with input lat/lon
3267  tlat = latgrid * d2r
3268  tlon = longrid * d2r
3269 
3270  ! Calculate alpha (rotation angle)
3271  tlon = -tlon + lon0_r
3272  tph = asin(cphi0*sin(tlat) - sphi0*cos(tlat)*cos(tlon))
3273  sinalpha = sphi0 * sin(tlon) / cos(tph)
3274  alpha = real((-asin(sinalpha)/D2R), kind=esmf_kind_r4)
3275  ! returns alpha in degrees
3276 end subroutine calcalpha_rotlatlon
3277 
3281 subroutine cleanup_input_atm_data
3282 
3283  implicit none
3284 
3285  integer :: rc, n
3286 
3287  print*,'- DESTROY ATMOSPHERIC INPUT DATA.'
3288 
3289  call esmf_fielddestroy(terrain_input_grid, rc=rc)
3290  call esmf_fielddestroy(pres_input_grid, rc=rc)
3291  call esmf_fielddestroy(dzdt_input_grid, rc=rc)
3292  call esmf_fielddestroy(temp_input_grid, rc=rc)
3293  call esmf_fielddestroy(xwind_input_grid, rc=rc)
3294  call esmf_fielddestroy(ywind_input_grid, rc=rc)
3295  call esmf_fielddestroy(zwind_input_grid, rc=rc)
3296  call esmf_fielddestroy(ps_input_grid, rc=rc)
3297 
3298  do n = 1, num_tracers_input
3299  call esmf_fielddestroy(tracers_input_grid(n), rc=rc)
3300  enddo
3301  deallocate(tracers_input_grid)
3302 
3303  end subroutine cleanup_input_atm_data
3304 
3305 end module atm_input_data
3306 
Utilities for use when reading grib2 data.
Definition: grib2_util.F90:12
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
character(len=500), dimension(6), public atm_tracer_files_input_grid
File names of input atmospheric restart tracer files.
+
integer, public num_tracers_input
Number of atmospheric tracers in input file.
+
character(len=50), dimension(:), allocatable, private slevs
The atmospheric levels in the GRIB2 input file.
+
subroutine read_input_atm_gfs_sigio_file(localpet)
Read input atmospheric data from spectral gfs (old sigio format).
+
integer, public ip1_input
i_input plus 1
Definition: model_grid.F90:33
+
Read atmospheric data on the input grid.
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
type(esmf_field) dpres_input_grid
pressure thickness
+
subroutine read_input_atm_restart_file(localpet)
Read input grid fv3 atmospheric data &#39;warm&#39; restart files.
+
type(esmf_field), public dzdt_input_grid
vert velocity
+
character(len=20), dimension(max_tracers), public tracers
Name of each atmos tracer to be processed.
+
subroutine, public read_input_atm_data(localpet)
Read input grid atmospheric data driver.
+
integer, public jp1_input
j_input plus 1
Definition: model_grid.F90:35
+
subroutine read_input_atm_tiled_history_file(localpet)
Read input grid fv3 atmospheric tiled history files in netcdf format.
+
type(esmf_field), dimension(:), allocatable, public tracers_input_grid
tracers
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
character(len=20), dimension(max_tracers), public tracers_input
Name of each atmos tracer record in the input file.
+
type(esmf_field), public latitude_input_grid
latitude of grid center, input grid
Definition: model_grid.F90:57
+
type(esmf_field), public pres_input_grid
3-d pressure
+
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.
+
integer, public levp1_input
number of atmos layer interfaces
+
integer, public num_tiles_input_grid
Number of tiles, input grid.
Definition: model_grid.F90:47
+
type(esmf_field), public ywind_input_grid
y-component wind
+
subroutine, public rh2spfh_gfs(rh_sphum, p, t)
Convert relative humidity to specific humidity (GFS formula) Calculation of saturation water vapor pr...
Definition: grib2_util.F90:81
+
type(esmf_field), public v_input_grid
box center
+
character(len=20), public external_model
The model that the input data is derived from.
+
subroutine init_atm_esmf_fields
Create atmospheric esmf fields.
+
subroutine read_winds(u, v, localpet, octet_23, rlevs, lugb, pdt_num)
Read winds from a grib2 file.
+
character(len=500), dimension(6), public atm_files_input_grid
File names of input atmospheric data.
+
subroutine read_input_atm_gaussian_nemsio_file(localpet)
Read input grid atmospheric fv3 gaussian nemsio files.
+
type(esmf_field), public terrain_input_grid
terrain height
+
type(esmf_field), public ps_input_grid
surface pressure
+
subroutine calcalpha_rotlatlon(latgrid, longrid, cenlat, cenlon, alpha)
Calculate rotation angle for rotated latlon grids.
+
subroutine read_input_atm_gaussian_netcdf_file(localpet)
Read fv3 netcdf gaussian history file.
+
subroutine gridrot(lov, latin1, latin2, lon, rot)
Compute grid rotation angle for non-latlon grids.
+
type(esmf_grid), public input_grid
input grid esmf grid object
Definition: model_grid.F90:52
+
character(len=500), public data_dir_input_grid
Directory containing input atm or sfc files.
+
subroutine, public convert_omega(omega, p, t, q, clb, cub)
Convert omega to vertical velocity.
Definition: grib2_util.F90:218
+
type(esmf_field), public u_input_grid
u/v wind at grid
+
type(esmf_field), public xwind_input_grid
x-component wind
+
subroutine, public cleanup_input_atm_data
Free up memory associated with atm data.
+
character(len=25), public input_type
Input data type:
+
character(len=500), dimension(7), public atm_core_files_input_grid
File names of input atmospheric restart core files.
+
type(esmf_field), public temp_input_grid
temperature
+
type(esmf_field), public longitude_input_grid
longitude of grid center, input grid
Definition: model_grid.F90:59
+
subroutine read_input_atm_grib2_file(localpet)
Read input grid atmospheric fv3gfs grib2 files.
+
character(len=500), public grib2_file_input_grid
REQUIRED.
+
subroutine read_input_atm_gfs_gaussian_nemsio_file(localpet)
Read input atmospheric data from spectral gfs (global gaussian in nemsio format.
+
logical, dimension(:), allocatable, public read_from_input
When false, variable was not read from GRIB2 input file.
+
integer, public lev_input
number of atmospheric layers
+
subroutine, public convert_winds_to_xyz
Convert winds from 2-d to 3-d components.
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
subroutine, public rh2spfh(rh_sphum, p, t)
Convert relative humidity to specific humidity.
Definition: grib2_util.F90:38
+
type(esmf_field), public zwind_input_grid
z-component wind
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/atmosphere_8F90.html b/ver-1.11.0/chgres_cube/atmosphere_8F90.html new file mode 100644 index 000000000..0f85616eb --- /dev/null +++ b/ver-1.11.0/chgres_cube/atmosphere_8F90.html @@ -0,0 +1,246 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atmosphere.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atmosphere.F90 File Reference
+
+
+ +

Process atmospheric fields. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  atmosphere
 Process atmospheric fields.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public atmosphere::atmosphere_driver (localpet)
 Driver routine to process for atmospheric fields. More...
 
subroutine atmosphere::cleanup_all_target_atm_data
 Cleanup target grid atmospheric field objects. More...
 
subroutine atmosphere::cleanup_target_atm_b4adj_data
 Cleanup atmospheric field (before adjustment) objects. More...
 
subroutine atmosphere::compute_zh
 Compute vertical level height. More...
 
subroutine atmosphere::convert_winds_to_uv
 Convert 3-d component winds to u and v. More...
 
subroutine atmosphere::create_atm_b4adj_esmf_fields
 Create target grid field objects to hold data before vertical interpolation. More...
 
subroutine atmosphere::create_atm_esmf_fields
 Create target grid field objects. More...
 
subroutine atmosphere::horiz_interp_thomp_mp_climo
 Horizontally interpolate thompson microphysics data to the target model grid. More...
 
subroutine atmosphere::newpr1 (localpet)
 Computes 3-D pressure given an adjusted surface pressure. More...
 
subroutine atmosphere::newps (localpet)
 Computes adjusted surface pressure given a new terrain height. More...
 
subroutine, public atmosphere::read_vcoord_info
 Reads model vertical coordinate definition file (as specified by namelist variable vcoord_file_target_grid). More...
 
subroutine atmosphere::RSEARCH (IM, KM1, IXZ1, KXZ1, Z1, KM2, IXZ2, KXZ2, Z2, IXL2, KXL2, L2)
 Search for a surrounding real interval. More...
 
subroutine atmosphere::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 atmosphere::VINTG
 Vertically interpolate upper-air fields. More...
 
subroutine atmosphere::VINTG_THOMP_MP_CLIMO
 Vertically interpolate atmospheric fields to target FV3 grid. More...
 
subroutine atmosphere::VINTG_WAM (YEAR, MONTH, DAY, HOUR, PF)
 Vertically extend model top into thermosphere for whole atmosphere model. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field) atmosphere::dzdt_b4adj_target_grid
 vertical vel before vert adj More...
 
type(esmf_field) atmosphere::pres_b4adj_target_grid
 3-d pres before terrain adj More...
 
type(esmf_field) atmosphere::pres_target_grid
 3-d pressure More...
 
type(esmf_field) atmosphere::ps_b4adj_target_grid
 sfc pres before terrain adj More...
 
type(esmf_field) atmosphere::qnifa_climo_b4adj_target_grid
 number concentration of ice friendly aerosols before vert adj More...
 
type(esmf_field) atmosphere::qnwfa_climo_b4adj_target_grid
 number concentration of water friendly aerosols before vert adj More...
 
type(esmf_field) atmosphere::temp_b4adj_target_grid
 temp before vert adj More...
 
type(esmf_field) atmosphere::terrain_interp_to_target_grid
 Input grid terrain interpolated to target grid. More...
 
type(esmf_field) atmosphere::thomp_pres_climo_b4adj_target_grid
 pressure of each level on target grid More...
 
type(esmf_field), dimension(:), allocatable atmosphere::tracers_b4adj_target_grid
 tracers before vert adj More...
 
type(esmf_field) atmosphere::xwind_b4adj_target_grid
 x-component wind, before vert adj More...
 
type(esmf_field) atmosphere::xwind_s_target_grid
 x-component wind, 'south' edge More...
 
type(esmf_field) atmosphere::xwind_target_grid
 x-component wind, grid box center More...
 
type(esmf_field) atmosphere::xwind_w_target_grid
 x-component wind, 'west' edge More...
 
type(esmf_field) atmosphere::ywind_b4adj_target_grid
 y-component wind, before vert adj More...
 
type(esmf_field) atmosphere::ywind_s_target_grid
 y-component wind, 'south' edge More...
 
type(esmf_field) atmosphere::ywind_target_grid
 y-component wind, grid box center More...
 
type(esmf_field) atmosphere::ywind_w_target_grid
 y-component wind, 'west' edge More...
 
type(esmf_field) atmosphere::zwind_b4adj_target_grid
 z-component wind, before vert adj More...
 
type(esmf_field) atmosphere::zwind_s_target_grid
 z-component wind, 'south' edge More...
 
type(esmf_field) atmosphere::zwind_target_grid
 z-component wind, grid box center More...
 
type(esmf_field) atmosphere::zwind_w_target_grid
 z-component wind, 'west' edge More...
 
+

Detailed Description

+

Process atmospheric fields.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file atmosphere.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/atmosphere_8F90.js b/ver-1.11.0/chgres_cube/atmosphere_8F90.js new file mode 100644 index 000000000..fda166578 --- /dev/null +++ b/ver-1.11.0/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#a1793890ef3e504c7c6cadb96e11f70d5", null ], + [ "TERP3", "atmosphere_8F90.html#a2ae6fde0c278c9987858325248a2f3b5", null ], + [ "VINTG", "atmosphere_8F90.html#a75294095ace0bcf1be8d215e5fdb5b23", null ], + [ "VINTG_THOMP_MP_CLIMO", "atmosphere_8F90.html#aa1c919a13ca76fbbb05dffce7a052c2a", null ], + [ "VINTG_WAM", "atmosphere_8F90.html#a8d9dc31ed0f13897f3f4b1b44777b0cf", 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/ver-1.11.0/chgres_cube/atmosphere_8F90_source.html b/ver-1.11.0/chgres_cube/atmosphere_8F90_source.html new file mode 100644 index 000000000..64bb1c883 --- /dev/null +++ b/ver-1.11.0/chgres_cube/atmosphere_8F90_source.html @@ -0,0 +1,200 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atmosphere.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
atmosphere.F90
+
+
+Go to the documentation of this file.
1 
4 
19  module atmosphere
20 
21  use esmf
22 
31 
32  use atm_input_data, only : lev_input, &
33  levp1_input, &
36  ps_input_grid, &
45 
46  use model_grid, only : target_grid, &
52 
57  regional, &
62 
69 
70  use write_data, only : write_fv3_atm_header_netcdf, &
71  write_fv3_atm_bndy_data_netcdf, &
72  write_fv3_atm_data_netcdf
73 
74  use utilities, only : error_handler
75 
76  implicit none
77 
78  private
79 
80  type(esmf_field) :: dzdt_b4adj_target_grid
81  type(esmf_field), allocatable :: tracers_b4adj_target_grid(:)
82  type(esmf_field) :: ps_b4adj_target_grid
83  type(esmf_field) :: pres_target_grid
84  type(esmf_field) :: pres_b4adj_target_grid
85  type(esmf_field) :: temp_b4adj_target_grid
86  type(esmf_field) :: terrain_interp_to_target_grid
87  type(esmf_field) :: xwind_target_grid
88  type(esmf_field) :: ywind_target_grid
89  type(esmf_field) :: zwind_target_grid
90  type(esmf_field) :: xwind_b4adj_target_grid
91  type(esmf_field) :: ywind_b4adj_target_grid
92  type(esmf_field) :: zwind_b4adj_target_grid
93  type(esmf_field) :: xwind_s_target_grid
94  type(esmf_field) :: ywind_s_target_grid
95  type(esmf_field) :: zwind_s_target_grid
96  type(esmf_field) :: xwind_w_target_grid
97  type(esmf_field) :: ywind_w_target_grid
98  type(esmf_field) :: zwind_w_target_grid
99 
100 ! Fields associated with thompson microphysics climatological tracers.
101 
102  type(esmf_field) :: qnifa_climo_b4adj_target_grid
104  type(esmf_field) :: qnwfa_climo_b4adj_target_grid
108 
109  public :: atmosphere_driver
110  public :: read_vcoord_info
111 
112  contains
113 
118  subroutine atmosphere_driver(localpet)
120  use mpi
121 
122  implicit none
123 
124  integer, intent(in) :: localpet
125 
126  integer :: isrctermprocessing
127  integer :: rc, n
128 
129  type(esmf_regridmethod_flag) :: method
130  type(esmf_routehandle) :: regrid_bl
131 
132  real(esmf_kind_r8), parameter :: p0=101325.0
133  real(esmf_kind_r8), parameter :: rd = 287.058
134  real(esmf_kind_r8), parameter :: grav = 9.81
135  real(esmf_kind_r8), parameter :: lapse = -6.5e-03
136 
137  real(esmf_kind_r8), parameter :: exponent = rd*lapse/grav
138  real(esmf_kind_r8), parameter :: one_over_exponent = 1.0 / exponent
139 
140  real(esmf_kind_r8), pointer :: psptr(:,:), tempptr(:,:,:)
141 
142 !-----------------------------------------------------------------------------------
143 ! Read atmospheric fields on the input grid.
144 !-----------------------------------------------------------------------------------
145 
146  call read_input_atm_data(localpet)
147 
148 !-----------------------------------------------------------------------------------
149 ! Read vertical coordinate info for target grid.
150 !-----------------------------------------------------------------------------------
151 
152  call read_vcoord_info
153 
154 !-----------------------------------------------------------------------------------
155 ! Create target grid field objects to hold data before vertical adjustment.
156 !-----------------------------------------------------------------------------------
157 
159 
160 !-----------------------------------------------------------------------------------
161 ! Horizontally interpolate. If specified, use weights from file.
162 !-----------------------------------------------------------------------------------
163 
164  isrctermprocessing = 1
165 
166  if (trim(atm_weight_file) /= "NULL") then
167 
168  print*,"- CALL FieldSMMStore FOR ATMOSPHERIC FIELDS."
169 
170  call esmf_fieldsmmstore(temp_input_grid, &
172  atm_weight_file, &
173  routehandle=regrid_bl, &
174  srctermprocessing=isrctermprocessing, rc=rc)
175  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
176  call error_handler("IN FieldSMMStore", rc)
177 
178  else
179 
180  print*,"- CALL FieldRegridStore FOR ATMOSPHERIC FIELDS."
181 
182  method=esmf_regridmethod_bilinear
183 
184  call esmf_fieldregridstore(temp_input_grid, &
186  polemethod=esmf_polemethod_allavg, &
187  srctermprocessing=isrctermprocessing, &
188  routehandle=regrid_bl, &
189  regridmethod=method, rc=rc)
190  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
191  call error_handler("IN FieldRegridStore", rc)
192 
193  endif
194 
195  print*,"- CALL Field_Regrid FOR TEMPERATURE."
196  call esmf_fieldregrid(temp_input_grid, &
198  routehandle=regrid_bl, &
199  termorderflag=esmf_termorder_srcseq, &
200  rc=rc)
201  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
202  call error_handler("IN FieldRegrid", rc)
203 
204  print*,"- CALL Field_Regrid FOR PRESSURE."
205  call esmf_fieldregrid(pres_input_grid, &
207  routehandle=regrid_bl, &
208  termorderflag=esmf_termorder_srcseq, &
209  rc=rc)
210  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
211  call error_handler("IN FieldRegrid", rc)
212 
213  do n = 1, num_tracers_input
214  print*,"- CALL Field_Regrid FOR TRACER ", trim(tracers(n))
215  call esmf_fieldregrid(tracers_input_grid(n), &
217  routehandle=regrid_bl, &
218  termorderflag=esmf_termorder_srcseq, rc=rc)
219  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
220  call error_handler("IN FieldRegrid", rc)
221 
222  enddo
223 
224  print*,"- CALL Field_Regrid FOR VERTICAL VELOCITY."
225  call esmf_fieldregrid(dzdt_input_grid, &
227  routehandle=regrid_bl, &
228  termorderflag=esmf_termorder_srcseq, rc=rc)
229  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
230  call error_handler("IN FieldRegrid", rc)
231 
232  nullify(tempptr)
233  print*,"- CALL FieldGet FOR INPUT GRID VERTICAL VEL."
234  call esmf_fieldget(dzdt_input_grid, &
235  farrayptr=tempptr, rc=rc)
236  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
237  call error_handler("IN FieldGet", rc)
238 
239  print*, "MIN MAX W INPUT = ", minval(tempptr), maxval(tempptr)
240 
241  nullify(tempptr)
242  print*,"- CALL FieldGet FOR VERTICAL VEL B4ADJ."
243  call esmf_fieldget(dzdt_b4adj_target_grid, &
244  farrayptr=tempptr, rc=rc)
245  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
246  call error_handler("IN FieldGet", rc)
247 
248  print*, "MIN MAX W B4ADJ = ", minval(tempptr), maxval(tempptr)
249 
250  nullify(psptr)
251  print*,"- CALL FieldGet FOR INPUT SURFACE PRESSURE."
252  call esmf_fieldget(ps_input_grid, &
253  farrayptr=psptr, rc=rc)
254  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
255  call error_handler("IN FieldGet", rc)
256 
257 !------------------------------------------------------------------------------------
258 ! Assume standard lapse rate when interpolating pressure (per Phil Pegion).
259 !------------------------------------------------------------------------------------
260 
261  psptr = (psptr/p0)**exponent
262 
263  print*,"- CALL Field_Regrid FOR SURFACE PRESSURE."
264  call esmf_fieldregrid(ps_input_grid, &
266  routehandle=regrid_bl, &
267  termorderflag=esmf_termorder_srcseq, &
268  rc=rc)
269  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
270  call error_handler("IN FieldRegrid", rc)
271 
272  nullify(psptr)
273  print*,"- CALL FieldGet FOR INPUT SURFACE PRESSURE B4ADJ."
274  call esmf_fieldget(ps_b4adj_target_grid, &
275  farrayptr=psptr, rc=rc)
276  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
277  call error_handler("IN FieldGet", rc)
278 
279  psptr = p0 * psptr**one_over_exponent
280 
281  print*,"- CALL Field_Regrid FOR TERRAIN."
282  call esmf_fieldregrid(terrain_input_grid, &
284  routehandle=regrid_bl, &
285  termorderflag=esmf_termorder_srcseq, &
286  rc=rc)
287  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
288  call error_handler("IN FieldRegrid", rc)
289 
290  print*,"- CALL Field_Regrid FOR x WIND."
291  call esmf_fieldregrid(xwind_input_grid, &
293  routehandle=regrid_bl, &
294  termorderflag=esmf_termorder_srcseq, rc=rc)
295  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
296  call error_handler("IN FieldRegrid", rc)
297 
298  print*,"- CALL Field_Regrid FOR y WIND."
299  call esmf_fieldregrid(ywind_input_grid, &
301  routehandle=regrid_bl, &
302  termorderflag=esmf_termorder_srcseq, rc=rc)
303  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
304  call error_handler("IN FieldRegrid", rc)
305 
306  print*,"- CALL Field_Regrid FOR z WIND."
307  call esmf_fieldregrid(zwind_input_grid, &
309  routehandle=regrid_bl, &
310  termorderflag=esmf_termorder_srcseq, rc=rc)
311  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
312  call error_handler("IN FieldRegrid", rc)
313 
314 
315 
316  print*,"- CALL FieldRegridRelease."
317  call esmf_fieldregridrelease(routehandle=regrid_bl, rc=rc)
318  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
319  call error_handler("IN FieldRegridRelease", rc)
320 
321 !-----------------------------------------------------------------------------------
322 ! Deallocate input fields.
323 !-----------------------------------------------------------------------------------
324 
326 
327 !-----------------------------------------------------------------------------------
328 ! Create target grid field objects to hold data after vertical interpolation.
329 !-----------------------------------------------------------------------------------
330 
332 
333 !-----------------------------------------------------------------------------------
334 ! Adjust surface pressure for terrain differences.
335 !-----------------------------------------------------------------------------------
336 
337  call newps(localpet)
338 
339 !-----------------------------------------------------------------------------------
340 ! Compute 3-d pressure based on adjusted surface pressure.
341 !-----------------------------------------------------------------------------------
342 
343  call newpr1(localpet)
344 
345 !-----------------------------------------------------------------------------------
346 ! Vertically interpolate.
347 !-----------------------------------------------------------------------------------
348 
349  call vintg
350 
351  if( wam_cold_start ) then
353  endif
354 
355 !-----------------------------------------------------------------------------------
356 ! Compute height.
357 !-----------------------------------------------------------------------------------
358 
359  call compute_zh
360 
361 !-----------------------------------------------------------------------------------
362 ! Free up memory.
363 !-----------------------------------------------------------------------------------
364 
366 
367 !-----------------------------------------------------------------------------------
368 ! Interpolate winds to 'd' grid.
369 !-----------------------------------------------------------------------------------
370 
371  isrctermprocessing = 1
372  method=esmf_regridmethod_bilinear
373 
374  print*,"- CALL FieldRegridStore FOR X-WIND WEST EDGE."
375  call esmf_fieldregridstore(xwind_target_grid, &
377  polemethod=esmf_polemethod_allavg, &
378  srctermprocessing=isrctermprocessing, &
379  routehandle=regrid_bl, &
380  extrapmethod=esmf_extrapmethod_nearest_stod, &
381  regridmethod=method, rc=rc)
382  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
383  call error_handler("IN FieldRegridStore", rc)
384 
385  print*,"- CALL Field_Regrid FOR X-WIND WEST EDGE."
386  call esmf_fieldregrid(xwind_target_grid, &
388  routehandle=regrid_bl, &
389  termorderflag=esmf_termorder_srcseq, rc=rc)
390  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
391  call error_handler("IN FieldRegrid", rc)
392 
393  print*,"- CALL Field_Regrid FOR Y-WIND WEST EDGE."
394  call esmf_fieldregrid(ywind_target_grid, &
396  routehandle=regrid_bl, &
397  termorderflag=esmf_termorder_srcseq, rc=rc)
398  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
399  call error_handler("IN FieldRegrid", rc)
400 
401  print*,"- CALL Field_Regrid FOR Z-WIND WEST EDGE."
402  call esmf_fieldregrid(zwind_target_grid, &
404  routehandle=regrid_bl, &
405  termorderflag=esmf_termorder_srcseq, rc=rc)
406  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
407  call error_handler("IN FieldRegrid", rc)
408 
409  print*,"- CALL FieldRegridRelease."
410  call esmf_fieldregridrelease(routehandle=regrid_bl, rc=rc)
411  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
412  call error_handler("IN FieldRegridRelease", rc)
413 
414  isrctermprocessing = 1
415  method=esmf_regridmethod_bilinear
416 
417  print*,"- CALL FieldRegridStore FOR X-WIND SOUTH EDGE."
418  call esmf_fieldregridstore(xwind_target_grid, &
420  polemethod=esmf_polemethod_allavg, &
421  srctermprocessing=isrctermprocessing, &
422  routehandle=regrid_bl, &
423  extrapmethod=esmf_extrapmethod_nearest_stod, &
424  regridmethod=method, rc=rc)
425  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
426  call error_handler("IN FieldRegridStore", rc)
427 
428  print*,"- CALL Field_Regrid FOR X-WIND SOUTH EDGE."
429  call esmf_fieldregrid(xwind_target_grid, &
431  routehandle=regrid_bl, &
432  termorderflag=esmf_termorder_srcseq, rc=rc)
433  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
434  call error_handler("IN FieldRegrid", rc)
435 
436  print*,"- CALL Field_Regrid FOR Y-WIND SOUTH EDGE."
437  call esmf_fieldregrid(ywind_target_grid, &
439  routehandle=regrid_bl, &
440  termorderflag=esmf_termorder_srcseq, rc=rc)
441  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
442  call error_handler("IN FieldRegrid", rc)
443 
444  print*,"- CALL Field_Regrid FOR Z-WIND SOUTH EDGE."
445  call esmf_fieldregrid(zwind_target_grid, &
447  routehandle=regrid_bl, &
448  termorderflag=esmf_termorder_srcseq, rc=rc)
449  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
450  call error_handler("IN FieldRegrid", rc)
451 
452  print*,"- CALL FieldRegridRelease."
453  call esmf_fieldregridrelease(routehandle=regrid_bl, rc=rc)
454  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
455  call error_handler("IN FieldRegridRelease", rc)
456 
457 !-----------------------------------------------------------------------------------
458 ! Convert from 3-d to 2-d cartesian winds.
459 !-----------------------------------------------------------------------------------
460 
462 
463 !-----------------------------------------------------------------------------------
464 ! If selected, process thompson microphysics climatological fields.
465 !-----------------------------------------------------------------------------------
466 
467  if (use_thomp_mp_climo) then
470  call vintg_thomp_mp_climo
471  endif
472 
473 !-----------------------------------------------------------------------------------
474 ! Write target data to file.
475 !-----------------------------------------------------------------------------------
476 
477  call write_fv3_atm_header_netcdf(localpet)
478  if (regional <= 1) call write_fv3_atm_data_netcdf(localpet)
479  if (regional >= 1) call write_fv3_atm_bndy_data_netcdf(localpet)
480 
481 !-----------------------------------------------------------------------------------
482 ! Free up memory.
483 !-----------------------------------------------------------------------------------
484 
486 
487  end subroutine atmosphere_driver
488 
496  implicit none
497 
498  integer :: rc, n
499 
501 
502  do n = 1, num_tracers_input
503  print*,"- CALL FieldCreate FOR TARGET GRID TRACER BEFORE ADJUSTMENT ", trim(tracers(n))
504  tracers_b4adj_target_grid(n) = esmf_fieldcreate(target_grid, &
505  typekind=esmf_typekind_r8, &
506  staggerloc=esmf_staggerloc_center, &
507  ungriddedlbound=(/1/), &
508  ungriddedubound=(/lev_input/), rc=rc)
509  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
510  call error_handler("IN FieldCreate", rc)
511  enddo
512 
513  print*,"- CALL FieldCreate FOR TARGET GRID TEMPERATURE BEFORE ADJUSTMENT."
514  temp_b4adj_target_grid = esmf_fieldcreate(target_grid, &
515  typekind=esmf_typekind_r8, &
516  staggerloc=esmf_staggerloc_center, &
517  ungriddedlbound=(/1/), &
518  ungriddedubound=(/lev_input/), rc=rc)
519  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
520  call error_handler("IN FieldCreate", rc)
521 
522  print*,"- CALL FieldCreate FOR TARGET GRID PRESSURE BEFORE ADJUSTMENT."
523  pres_b4adj_target_grid = esmf_fieldcreate(target_grid, &
524  typekind=esmf_typekind_r8, &
525  staggerloc=esmf_staggerloc_center, &
526  ungriddedlbound=(/1/), &
527  ungriddedubound=(/lev_input/), rc=rc)
528  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
529  call error_handler("IN FieldCreate", rc)
530 
531  print*,"- CALL FieldCreate FOR TARGET GRID VERTICAL VELOCITY BEFORE ADJUSTMENT."
532  dzdt_b4adj_target_grid = esmf_fieldcreate(target_grid, &
533  typekind=esmf_typekind_r8, &
534  staggerloc=esmf_staggerloc_center, &
535  ungriddedlbound=(/1/), &
536  ungriddedubound=(/lev_input/), rc=rc)
537  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
538  call error_handler("IN FieldCreate", rc)
539 
540  print*,"- CALL FieldCreate FOR TARGET GRID xwind."
541  xwind_b4adj_target_grid = esmf_fieldcreate(target_grid, &
542  typekind=esmf_typekind_r8, &
543  staggerloc=esmf_staggerloc_center, &
544  ungriddedlbound=(/1/), &
545  ungriddedubound=(/lev_input/), rc=rc)
546  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
547  call error_handler("IN FieldCreate", rc)
548 
549  print*,"- CALL FieldCreate FOR TARGET GRID ywind."
550  ywind_b4adj_target_grid = esmf_fieldcreate(target_grid, &
551  typekind=esmf_typekind_r8, &
552  staggerloc=esmf_staggerloc_center, &
553  ungriddedlbound=(/1/), &
554  ungriddedubound=(/lev_input/), rc=rc)
555  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
556  call error_handler("IN FieldCreate", rc)
557 
558  print*,"- CALL FieldCreate FOR TARGET GRID zwind."
559  zwind_b4adj_target_grid = esmf_fieldcreate(target_grid, &
560  typekind=esmf_typekind_r8, &
561  staggerloc=esmf_staggerloc_center, &
562  ungriddedlbound=(/1/), &
563  ungriddedubound=(/lev_input/), rc=rc)
564  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
565  call error_handler("IN FieldCreate", rc)
566 
567  print*,"- CALL FieldCreate FOR TARGET TERRAIN."
568  terrain_interp_to_target_grid = esmf_fieldcreate(target_grid, &
569  typekind=esmf_typekind_r8, &
570  staggerloc=esmf_staggerloc_center, rc=rc)
571  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
572  call error_handler("IN FieldCreate", rc)
573 
574  print*,"- CALL FieldCreate FOR TARGET SURFACE PRESSURE BEFORE ADJUSTMENT."
575  ps_b4adj_target_grid = esmf_fieldcreate(target_grid, &
576  typekind=esmf_typekind_r8, &
577  staggerloc=esmf_staggerloc_center, rc=rc)
578  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
579  call error_handler("IN FieldCreate", rc)
580 
581  end subroutine create_atm_b4adj_esmf_fields
582 
586  subroutine create_atm_esmf_fields
588  implicit none
589 
590  integer :: rc, n
591 
593 
594  do n = 1, num_tracers
595  print*,"- CALL FieldCreate FOR TARGET GRID TRACERS ", trim(tracers(n))
596  tracers_target_grid(n) = esmf_fieldcreate(target_grid, &
597  typekind=esmf_typekind_r8, &
598  staggerloc=esmf_staggerloc_center, &
599  ungriddedlbound=(/1/), &
600  ungriddedubound=(/lev_target/), rc=rc)
601  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
602  call error_handler("IN FieldCreate", rc)
603  enddo
604 
605  print*,"- CALL FieldCreate FOR TARGET GRID TEMPERATURE."
606  temp_target_grid = esmf_fieldcreate(target_grid, &
607  typekind=esmf_typekind_r8, &
608  staggerloc=esmf_staggerloc_center, &
609  ungriddedlbound=(/1/), &
610  ungriddedubound=(/lev_target/), rc=rc)
611  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
612  call error_handler("IN FieldCreate", rc)
613 
614  print*,"- CALL FieldCreate FOR TARGET GRID PRESSURE."
615  pres_target_grid = esmf_fieldcreate(target_grid, &
616  typekind=esmf_typekind_r8, &
617  staggerloc=esmf_staggerloc_center, &
618  ungriddedlbound=(/1/), &
619  ungriddedubound=(/lev_target/), rc=rc)
620  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
621  call error_handler("IN FieldCreate", rc)
622 
623  print*,"- CALL FieldCreate FOR TARGET GRID VERTICAL VELOCITY."
624  dzdt_target_grid = esmf_fieldcreate(target_grid, &
625  typekind=esmf_typekind_r8, &
626  staggerloc=esmf_staggerloc_center, &
627  ungriddedlbound=(/1/), &
628  ungriddedubound=(/lev_target/), rc=rc)
629  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
630  call error_handler("IN FieldCreate", rc)
631 
632  print*,"- CALL FieldCreate FOR TARGET GRID DELP."
633  delp_target_grid = esmf_fieldcreate(target_grid, &
634  typekind=esmf_typekind_r8, &
635  staggerloc=esmf_staggerloc_center, &
636  ungriddedlbound=(/1/), &
637  ungriddedubound=(/lev_target/), rc=rc)
638  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
639  call error_handler("IN FieldCreate", rc)
640 
641  print*,"- CALL FieldCreate FOR TARGET GRID xwind."
642  xwind_target_grid = esmf_fieldcreate(target_grid, &
643  typekind=esmf_typekind_r8, &
644  staggerloc=esmf_staggerloc_center, &
645  ungriddedlbound=(/1/), &
646  ungriddedubound=(/lev_target/), rc=rc)
647  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
648  call error_handler("IN FieldCreate", rc)
649 
650  print*,"- CALL FieldCreate FOR TARGET GRID ywind."
651  ywind_target_grid = esmf_fieldcreate(target_grid, &
652  typekind=esmf_typekind_r8, &
653  staggerloc=esmf_staggerloc_center, &
654  ungriddedlbound=(/1/), &
655  ungriddedubound=(/lev_target/), rc=rc)
656  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
657  call error_handler("IN FieldCreate", rc)
658 
659  print*,"- CALL FieldCreate FOR TARGET GRID zwind."
660  zwind_target_grid = esmf_fieldcreate(target_grid, &
661  typekind=esmf_typekind_r8, &
662  staggerloc=esmf_staggerloc_center, &
663  ungriddedlbound=(/1/), &
664  ungriddedubound=(/lev_target/), rc=rc)
665  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
666  call error_handler("IN FieldCreate", rc)
667 
668  print*,"- CALL FieldCreate FOR TARGET HEIGHT."
669  zh_target_grid = esmf_fieldcreate(target_grid, &
670  typekind=esmf_typekind_r8, &
671  staggerloc=esmf_staggerloc_center, &
672  ungriddedlbound=(/1/), &
673  ungriddedubound=(/levp1_target/), rc=rc)
674  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
675  call error_handler("IN FieldCreate", rc)
676 
677  print*,"- CALL FieldCreate FOR TARGET U_S."
678  u_s_target_grid = esmf_fieldcreate(target_grid, &
679  typekind=esmf_typekind_r8, &
680  staggerloc=esmf_staggerloc_edge2, &
681  ungriddedlbound=(/1/), &
682  ungriddedubound=(/lev_target/), rc=rc)
683  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
684  call error_handler("IN FieldCreate", rc)
685 
686  print*,"- CALL FieldCreate FOR TARGET V_S."
687  v_s_target_grid = esmf_fieldcreate(target_grid, &
688  typekind=esmf_typekind_r8, &
689  staggerloc=esmf_staggerloc_edge2, &
690  ungriddedlbound=(/1/), &
691  ungriddedubound=(/lev_target/), rc=rc)
692  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
693  call error_handler("IN FieldCreate", rc)
694 
695  print*,"- CALL FieldCreate FOR TARGET xwind_S."
696  xwind_s_target_grid = esmf_fieldcreate(target_grid, &
697  typekind=esmf_typekind_r8, &
698  staggerloc=esmf_staggerloc_edge2, &
699  ungriddedlbound=(/1/), &
700  ungriddedubound=(/lev_target/), rc=rc)
701  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
702  call error_handler("IN FieldCreate", rc)
703 
704  print*,"- CALL FieldCreate FOR TARGET ywind_S."
705  ywind_s_target_grid = esmf_fieldcreate(target_grid, &
706  typekind=esmf_typekind_r8, &
707  staggerloc=esmf_staggerloc_edge2, &
708  ungriddedlbound=(/1/), &
709  ungriddedubound=(/lev_target/), rc=rc)
710  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
711  call error_handler("IN FieldCreate", rc)
712 
713  print*,"- CALL FieldCreate FOR TARGET zwind_S."
714  zwind_s_target_grid = esmf_fieldcreate(target_grid, &
715  typekind=esmf_typekind_r8, &
716  staggerloc=esmf_staggerloc_edge2, &
717  ungriddedlbound=(/1/), &
718  ungriddedubound=(/lev_target/), rc=rc)
719  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
720  call error_handler("IN FieldCreate", rc)
721 
722  print*,"- CALL FieldCreate FOR TARGET U_W."
723  u_w_target_grid = esmf_fieldcreate(target_grid, &
724  typekind=esmf_typekind_r8, &
725  staggerloc=esmf_staggerloc_edge1, &
726  ungriddedlbound=(/1/), &
727  ungriddedubound=(/lev_target/), rc=rc)
728  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
729  call error_handler("IN FieldCreate", rc)
730 
731  print*,"- CALL FieldCreate FOR TARGET V_W."
732  v_w_target_grid = esmf_fieldcreate(target_grid, &
733  typekind=esmf_typekind_r8, &
734  staggerloc=esmf_staggerloc_edge1, &
735  ungriddedlbound=(/1/), &
736  ungriddedubound=(/lev_target/), rc=rc)
737  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
738  call error_handler("IN FieldCreate", rc)
739 
740  print*,"- CALL FieldCreate FOR TARGET xwind_W."
741  xwind_w_target_grid = esmf_fieldcreate(target_grid, &
742  typekind=esmf_typekind_r8, &
743  staggerloc=esmf_staggerloc_edge1, &
744  ungriddedlbound=(/1/), &
745  ungriddedubound=(/lev_target/), rc=rc)
746  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
747  call error_handler("IN FieldCreate", rc)
748 
749  print*,"- CALL FieldCreate FOR TARGET ywind_W."
750  ywind_w_target_grid = esmf_fieldcreate(target_grid, &
751  typekind=esmf_typekind_r8, &
752  staggerloc=esmf_staggerloc_edge1, &
753  ungriddedlbound=(/1/), &
754  ungriddedubound=(/lev_target/), rc=rc)
755  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
756  call error_handler("IN FieldCreate", rc)
757 
758  print*,"- CALL FieldCreate FOR TARGET zwind_W."
759  zwind_w_target_grid = esmf_fieldcreate(target_grid, &
760  typekind=esmf_typekind_r8, &
761  staggerloc=esmf_staggerloc_edge1, &
762  ungriddedlbound=(/1/), &
763  ungriddedubound=(/lev_target/), rc=rc)
764  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
765  call error_handler("IN FieldCreate", rc)
766 
767  print*,"- CALL FieldCreate FOR TARGET SURFACE PRESSURE."
768  ps_target_grid = esmf_fieldcreate(target_grid, &
769  typekind=esmf_typekind_r8, &
770  staggerloc=esmf_staggerloc_center, rc=rc)
771  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
772  call error_handler("IN FieldCreate", rc)
773 
774  end subroutine create_atm_esmf_fields
775 
779  subroutine convert_winds_to_uv
780 
781  implicit none
782 
783  integer :: clb(3), cub(3)
784  integer :: i, j, k, rc
785 
786  real(esmf_kind_r8), pointer :: latptr(:,:)
787  real(esmf_kind_r8), pointer :: lonptr(:,:)
788  real(esmf_kind_r8), pointer :: uptr(:,:,:)
789  real(esmf_kind_r8), pointer :: vptr(:,:,:)
790  real(esmf_kind_r8), pointer :: xwindptr(:,:,:)
791  real(esmf_kind_r8), pointer :: ywindptr(:,:,:)
792  real(esmf_kind_r8), pointer :: zwindptr(:,:,:)
793  real(esmf_kind_r8) :: latrad, lonrad
794 
795 !-----------------------------------------------------------------------------------
796 ! Convert from 3-d cartesian to 2-cartesian winds
797 !-----------------------------------------------------------------------------------
798 
799  print*,'- CONVERT WINDS.'
800 
801  print*,"- CALL FieldGet FOR xwind_S."
802  call esmf_fieldget(xwind_s_target_grid, &
803  computationallbound=clb, &
804  computationalubound=cub, &
805  farrayptr=xwindptr, rc=rc)
806  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
807  call error_handler("IN FieldGet", rc)
808 
809  print*,"- CALL FieldGet FOR ywind_S."
810  call esmf_fieldget(ywind_s_target_grid, &
811  farrayptr=ywindptr, rc=rc)
812  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
813  call error_handler("IN FieldGet", rc)
814 
815  print*,"- CALL FieldGet FOR zwind_S."
816  call esmf_fieldget(zwind_s_target_grid, &
817  farrayptr=zwindptr, rc=rc)
818  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
819  call error_handler("IN FieldGet", rc)
820 
821  print*,"- CALL FieldGet FOR U_S."
822  call esmf_fieldget(u_s_target_grid, &
823  farrayptr=uptr, rc=rc)
824  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
825  call error_handler("IN FieldGet", rc)
826 
827  print*,"- CALL FieldGet FOR V_S."
828  call esmf_fieldget(v_s_target_grid, &
829  farrayptr=vptr, rc=rc)
830  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
831  call error_handler("IN FieldGet", rc)
832 
833  print*,"- CALL FieldGet FOR LATITUDE_S."
834  call esmf_fieldget(latitude_s_target_grid, &
835  farrayptr=latptr, rc=rc)
836  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
837  call error_handler("IN FieldGet", rc)
838 
839  print*,"- CALL FieldGet FOR LONGITUDE_S."
840  call esmf_fieldget(longitude_s_target_grid, &
841  farrayptr=lonptr, rc=rc)
842  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
843  call error_handler("IN FieldGet", rc)
844 
845  do i = clb(1), cub(1)
846  do j = clb(2), cub(2)
847  latrad = latptr(i,j) * acos(-1.) / 180.0
848  lonrad = lonptr(i,j) * acos(-1.) / 180.0
849  do k = clb(3), cub(3)
850  uptr(i,j,k) = xwindptr(i,j,k) * cos(lonrad) + ywindptr(i,j,k) * sin(lonrad)
851  vptr(i,j,k) = -xwindptr(i,j,k) * sin(latrad) * sin(lonrad) + &
852  ywindptr(i,j,k) * sin(latrad) * cos(lonrad) + &
853  zwindptr(i,j,k) * cos(latrad)
854  enddo
855  enddo
856  enddo
857 
858  print*,"- CALL FieldGet FOR xwind_w."
859  call esmf_fieldget(xwind_w_target_grid, &
860  computationallbound=clb, &
861  computationalubound=cub, &
862  farrayptr=xwindptr, rc=rc)
863  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
864  call error_handler("IN FieldGet", rc)
865 
866  print*,"- CALL FieldGet FOR ywind_w."
867  call esmf_fieldget(ywind_w_target_grid, &
868  farrayptr=ywindptr, rc=rc)
869  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
870  call error_handler("IN FieldGet", rc)
871 
872  print*,"- CALL FieldGet FOR zwind_w."
873  call esmf_fieldget(zwind_w_target_grid, &
874  farrayptr=zwindptr, rc=rc)
875  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
876  call error_handler("IN FieldGet", rc)
877 
878  print*,"- CALL FieldGet FOR U_W."
879  call esmf_fieldget(u_w_target_grid, &
880  farrayptr=uptr, rc=rc)
881  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
882  call error_handler("IN FieldGet", rc)
883 
884  print*,"- CALL FieldGet FOR V_W."
885  call esmf_fieldget(v_w_target_grid, &
886  farrayptr=vptr, rc=rc)
887  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
888  call error_handler("IN FieldGet", rc)
889 
890  print*,"- CALL FieldGet FOR LATITUDE_W."
891  call esmf_fieldget(latitude_w_target_grid, &
892  farrayptr=latptr, rc=rc)
893  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
894  call error_handler("IN FieldGet", rc)
895 
896  print*,"- CALL FieldGet FOR LONGITUDE_W."
897  call esmf_fieldget(longitude_w_target_grid, &
898  farrayptr=lonptr, rc=rc)
899  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
900  call error_handler("IN FieldGet", rc)
901 
902  do i = clb(1), cub(1)
903  do j = clb(2), cub(2)
904  latrad = latptr(i,j) * acos(-1.) / 180.0
905  lonrad = lonptr(i,j) * acos(-1.) / 180.0
906  do k = clb(3), cub(3)
907  uptr(i,j,k) = xwindptr(i,j,k) * cos(lonrad) + ywindptr(i,j,k) * sin(lonrad)
908  vptr(i,j,k) = -xwindptr(i,j,k) * sin(latrad) * sin(lonrad) + &
909  ywindptr(i,j,k) * sin(latrad) * cos(lonrad) + &
910  zwindptr(i,j,k) * cos(latrad)
911  enddo
912  enddo
913  enddo
914 
915  end subroutine convert_winds_to_uv
916 
948  subroutine newpr1(localpet)
949  implicit none
950 
951  integer, intent(in) :: localpet
952 
953  integer :: idsl, idvc, rc
954  integer :: i, j, k, clb(3), cub(3)
955 
956  real(esmf_kind_r8), parameter :: rd=287.05
957  real(esmf_kind_r8), parameter :: cp=1004.6
958  real(esmf_kind_r8), parameter :: rocp=rd/cp
959  real(esmf_kind_r8), parameter :: rocp1=rocp+1
960  real(esmf_kind_r8), parameter :: rocpr=1/rocp
961 
962  real(esmf_kind_r8), pointer :: delp_ptr(:,:,:)
963  real(esmf_kind_r8), pointer :: pptr(:,:,:) ! adjusted 3-d p.
964  real(esmf_kind_r8), pointer :: psptr(:,:) ! adjusted surface p.
965  real(esmf_kind_r8) :: ak, bk
966  real(esmf_kind_r8), allocatable :: pi(:,:,:)
967 
968  print*,"COMPUTE 3-D PRESSURE FROM ADJUSTED SURFACE PRESSURE."
969 
970  idvc = 2 ! hard wire for now.
971  idsl = 2 ! hard wire for now.
972 
973  print*,"- CALL FieldGet FOR 3-D PRES."
974  call esmf_fieldget(pres_target_grid, &
975  computationallbound=clb, &
976  computationalubound=cub, &
977  farrayptr=pptr, rc=rc)
978  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
979  call error_handler("IN FieldGet", rc)
980 
981  print*,"- CALL FieldGet FOR DELP."
982  call esmf_fieldget(delp_target_grid, &
983  computationallbound=clb, &
984  computationalubound=cub, &
985  farrayptr=delp_ptr, rc=rc)
986  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
987  call error_handler("IN FieldGet", rc)
988 
989  print*,"- CALL FieldGet FOR SURFACE PRESSURE AFTER ADJUSTMENT"
990  call esmf_fieldget(ps_target_grid, &
991  farrayptr=psptr, rc=rc)
992  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
993  call error_handler("IN FieldGet", rc)
994 
995  allocate(pi(clb(1):cub(1),clb(2):cub(2),1:levp1_target))
996 
997  if(idvc.eq.2) then
998  do k=1,levp1_target
999  ak = vcoord_target(k,1)
1000  bk = vcoord_target(k,2)
1001  do i= clb(1), cub(1)
1002  do j= clb(2), cub(2)
1003  pi(i,j,k) = ak + bk*psptr(i,j)
1004  enddo
1005  enddo
1006  enddo
1007  do k=1,lev_target
1008  do i= clb(1), cub(1)
1009  do j= clb(2), cub(2)
1010  delp_ptr(i,j,k) = pi(i,j,k) - pi(i,j,k+1)
1011  enddo
1012  enddo
1013  enddo
1014  else
1015  call error_handler("PROGRAM ONLY WORKS WITH IDVC 2", 1)
1016  endif
1017 
1018  if(idsl.eq.2) then
1019  do k=1,lev_target
1020  do i= clb(1), cub(1)
1021  do j= clb(2), cub(2)
1022  pptr(i,j,k) = (pi(i,j,k)+pi(i,j,k+1))/2.0
1023  enddo
1024  enddo
1025  enddo
1026  else
1027  do k=1,lev_target
1028  do i= clb(1), cub(1)
1029  do j= clb(2), cub(2)
1030  pptr(i,j,k) = ((pi(i,j,k)**rocp1-pi(i,j,k+1)**rocp1)/ &
1031  (rocp1*(pi(i,j,k)-pi(i,j,k+1))))**rocpr
1032  enddo
1033  enddo
1034  enddo
1035  endif
1036 
1037  deallocate(pi)
1038 
1039  if (localpet == 0) then
1040  print*,'new pres ',pptr(clb(1),clb(2),:)
1041  print*,'delp ',delp_ptr(clb(1),clb(2),:)
1042  endif
1043 
1044  end subroutine newpr1
1045 
1059  subroutine newps(localpet)
1061  implicit none
1062 
1063  integer, intent(in) :: localpet
1064  integer :: i, j, k, ii
1065  integer :: clb(3), cub(3), ls, rc
1066 
1067  real(esmf_kind_r8), pointer :: pptr(:,:,:)
1068  real(esmf_kind_r8), pointer :: psptr(:,:)
1069  real(esmf_kind_r8), pointer :: psnewptr(:,:) ! adjusted surface p.
1070  real(esmf_kind_r8), pointer :: tptr(:,:,:)
1071  real(esmf_kind_r8), pointer :: qptr(:,:,:)
1072  real(esmf_kind_r8), pointer :: zsptr(:,:)
1073  real(esmf_kind_r8), pointer :: zsnewptr(:,:)
1074  real(esmf_kind_r8), allocatable :: zu(:,:)
1075  real(esmf_kind_r8), parameter :: beta=-6.5e-3
1076  real(esmf_kind_r8), parameter :: epsilon=1.e-9
1077  real(esmf_kind_r8), parameter :: g=9.80665
1078  real(esmf_kind_r8), parameter :: rd=287.05
1079  real(esmf_kind_r8), parameter :: rv=461.50
1080  real(esmf_kind_r8), parameter :: gor=g/rd
1081  real(esmf_kind_r8), parameter :: fv=rv/rd-1.
1082  real(esmf_kind_r8) :: ftv, fgam, apu, fz0
1083  real(esmf_kind_r8) :: atvu, atv, fz1, fp0
1084  real(esmf_kind_r8) :: apd, azd, agam, azu
1085  real(esmf_kind_r8) :: atvd, fp1, gamma, pu
1086  real(esmf_kind_r8) :: tvu, pd, tvd
1087  real(esmf_kind_r8) :: at, aq, ap, az
1088 
1089  ftv(at,aq)=at*(1+fv*aq)
1090  fgam(apu,atvu,apd,atvd)=-gor*log(atvd/atvu)/log(apd/apu)
1091  fz0(ap,atv,azd,apd)=azd+atv/gor*log(apd/ap)
1092  fz1(ap,atv,azd,apd,agam)=azd-atv/agam*((apd/ap)**(-agam/gor)-1)
1093  fp0(az,azu,apu,atvu)=apu*exp(-gor/atvu*(az-azu))
1094  fp1(az,azu,apu,atvu,agam)=apu*(1+agam/atvu*(az-azu))**(-gor/agam)
1095 
1096  print*,"- ADJUST SURFACE PRESSURE FOR NEW TERRAIN."
1097 
1098  print*,"- CALL FieldGet FOR 3-D PRES."
1099  call esmf_fieldget(pres_b4adj_target_grid, &
1100  computationallbound=clb, &
1101  computationalubound=cub, &
1102  farrayptr=pptr, rc=rc)
1103  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1104  call error_handler("IN FieldGet", rc)
1105 
1106  if(localpet==0) then
1107  print*,'old pres ',pptr(clb(1),clb(2),:)
1108  endif
1109 
1110  print*,"- CALL FieldGet FOR TEMPERATURE"
1111  call esmf_fieldget(temp_b4adj_target_grid, &
1112  farrayptr=tptr, rc=rc)
1113  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1114  call error_handler("IN FieldGet", rc)
1115 
1116 ! Find specific humidity in the array of tracer fields.
1117 
1118  do ii = 1, num_tracers
1119  if (trim(tracers(ii)) == "sphum") exit
1120  enddo
1121 
1122  print*,"- CALL FieldGet FOR SPECIFIC HUMIDITY"
1123  call esmf_fieldget(tracers_b4adj_target_grid(ii), &
1124  farrayptr=qptr, rc=rc)
1125  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1126  call error_handler("IN FieldGet", rc)
1127 
1128  print*,"- CALL FieldGet FOR SURFACE PRESSURE BEFORE ADJUSTMENT"
1129  call esmf_fieldget(ps_b4adj_target_grid, &
1130  farrayptr=psptr, rc=rc)
1131  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1132  call error_handler("IN FieldGet", rc)
1133 
1134  print*,"- CALL FieldGet FOR SURFACE PRESSURE AFTER ADJUSTMENT"
1135  call esmf_fieldget(ps_target_grid, &
1136  farrayptr=psnewptr, rc=rc)
1137  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1138  call error_handler("IN FieldGet", rc)
1139 
1140  print*,"- CALL FieldGet FOR OLD TERRAIN"
1141  call esmf_fieldget(terrain_interp_to_target_grid, &
1142  farrayptr=zsptr, rc=rc)
1143  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1144  call error_handler("IN FieldGet", rc)
1145 
1146  print*,"- CALL FieldGet FOR NEW TERRAIN"
1147  call esmf_fieldget(terrain_target_grid, &
1148  farrayptr=zsnewptr, rc=rc)
1149  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1150  call error_handler("IN FieldGet", rc)
1151 
1152  allocate(zu(clb(1):cub(1),clb(2):cub(2)))
1153 
1154 !-----------------------------------------------------------------------------------
1155 ! Note, this routine was adapted from the spectral GFS which labeled the lowest
1156 ! model layer as '1'.
1157 !-----------------------------------------------------------------------------------
1158 
1159 !-----------------------------------------------------------------------------------
1160 ! Compute surface pressure below the original ground.
1161 !-----------------------------------------------------------------------------------
1162 
1163  ls=0
1164  k=1
1165  gamma=beta
1166  do i=clb(1), cub(1)
1167  do j=clb(2), cub(2)
1168  pu=pptr(i,j,k)
1169  tvu=ftv(tptr(i,j,k),qptr(i,j,k))
1170  zu(i,j)=fz1(pu,tvu,zsptr(i,j),psptr(i,j),gamma)
1171  if(zsnewptr(i,j).le.zu(i,j)) then
1172  pu=pptr(i,j,k)
1173  tvu=ftv(tptr(i,j,k),qptr(i,j,k))
1174  if(abs(gamma).gt.epsilon) then
1175  psnewptr(i,j)=fp1(zsnewptr(i,j),zu(i,j),pu,tvu,gamma)
1176  else
1177  psnewptr(i,j)=fp0(zsnewptr(i,j),zu(i,j),pu,tvu)
1178  endif
1179  else
1180  psnewptr(i,j)=0
1181  ls=ls+1
1182  endif
1183  enddo
1184  enddo
1185 
1186 !-----------------------------------------------------------------------------------
1187 ! Compute surface pressure above the original ground.
1188 !-----------------------------------------------------------------------------------
1189 
1190  do k=2,cub(3)
1191  if(ls.gt.0) then
1192  do i=clb(1),cub(1)
1193  do j=clb(2),cub(2)
1194  if(psnewptr(i,j).eq.0) then
1195  pu=pptr(i,j,k)
1196  tvu=ftv(tptr(i,j,k),qptr(i,j,k))
1197  pd=pptr(i,j,k-1)
1198  tvd=ftv(tptr(i,j,k-1),qptr(i,j,k-1))
1199  gamma=fgam(pu,tvu,pd,tvd)
1200  if(abs(gamma).gt.epsilon) then
1201  zu(i,j)=fz1(pu,tvu,zu(i,j),pd,gamma)
1202  else
1203  zu(i,j)=fz0(pu,tvu,zu(i,j),pd)
1204  endif
1205  if(zsnewptr(i,j).le.zu(i,j)) then
1206  if(abs(gamma).gt.epsilon) then
1207  psnewptr(i,j)=fp1(zsnewptr(i,j),zu(i,j),pu,tvu,gamma)
1208  else
1209  psnewptr(i,j)=fp0(zsnewptr(i,j),zu(i,j),pu,tvu)
1210  endif
1211  ls=ls-1
1212  endif
1213  endif
1214  enddo
1215  enddo
1216  endif
1217  enddo
1218 
1219 !-----------------------------------------------------------------------------------
1220 ! Compute surface pressure over the top.
1221 !-----------------------------------------------------------------------------------
1222 
1223 
1224  if(ls.gt.0) then
1225  k=cub(3)
1226  gamma=0
1227  do i=clb(1),cub(1)
1228  do j=clb(2),cub(2)
1229  if(psnewptr(i,j).eq.0) then
1230  pu=pptr(i,j,k)
1231  tvu=ftv(tptr(i,j,k),qptr(i,j,k))
1232  psnewptr(i,j)=fp0(zsnewptr(i,j),zu(i,j),pu,tvu)
1233  endif
1234  enddo
1235  enddo
1236  endif
1237 
1238  deallocate(zu)
1239 
1240  if (localpet == 0) then
1241 ! do i=clb(1),cub(1)
1242 ! do j=clb(2),cub(2)
1243  do i=clb(1),clb(1)
1244  do j=clb(2),clb(2)
1245  print*,'sfcp adjust ',(zsnewptr(i,j)-zsptr(i,j)), psptr(i,j),psnewptr(i,j)
1246  enddo
1247  enddo
1248  endif
1249 
1250  end subroutine newps
1251 
1256  subroutine read_vcoord_info
1257  implicit none
1258 
1259  integer :: istat, n, k
1260 
1261  print*
1262  print*,"OPEN VERTICAL COORD FILE: ", trim(vcoord_file_target_grid)
1263  open(14, file=trim(vcoord_file_target_grid), form='formatted', iostat=istat)
1264  if (istat /= 0) then
1265  call error_handler("OPENING VERTICAL COORD FILE", istat)
1266  endif
1267 
1268  read(14, *, iostat=istat) nvcoord_target, lev_target
1269  if (istat /= 0) then
1270  call error_handler("READING VERTICAL COORD FILE", istat)
1271  endif
1272 
1273  levp1_target = lev_target + 1
1274 
1276  read(14, *, iostat=istat) ((vcoord_target(n,k), k=1,nvcoord_target), n=1,levp1_target)
1277  if (istat /= 0) then
1278  call error_handler("READING VERTICAL COORD FILE", istat)
1279  endif
1280 
1281  print*
1282 
1283  close(14)
1284 
1285  end subroutine read_vcoord_info
1286 
1291  subroutine horiz_interp_thomp_mp_climo
1293  implicit none
1294 
1295  integer :: isrctermprocessing, rc
1296 
1297  type(esmf_regridmethod_flag) :: method
1298  type(esmf_routehandle) :: regrid_bl
1299 
1300  isrctermprocessing=1
1301 
1302  print*,"- CALL FieldCreate FOR TARGET GRID THOMP CLIMO QNIFA BEFORE ADJUSTMENT."
1303  qnifa_climo_b4adj_target_grid = esmf_fieldcreate(target_grid, &
1304  typekind=esmf_typekind_r8, &
1305  staggerloc=esmf_staggerloc_center, &
1306  ungriddedlbound=(/1/), &
1307  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
1308  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1309  call error_handler("IN FieldCreate", rc)
1310 
1311  print*,"- CALL FieldCreate FOR TARGET GRID THOMP CLIMO QNWFA BEFORE ADJUSTMENT."
1312  qnwfa_climo_b4adj_target_grid = esmf_fieldcreate(target_grid, &
1313  typekind=esmf_typekind_r8, &
1314  staggerloc=esmf_staggerloc_center, &
1315  ungriddedlbound=(/1/), &
1316  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
1317  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1318  call error_handler("IN FieldCreate", rc)
1319 
1320  print*,"- CALL FieldCreate FOR TARGET GRID THOMP CLIMO PRESSURE BEFORE ADJUSTMENT."
1321  thomp_pres_climo_b4adj_target_grid = esmf_fieldcreate(target_grid, &
1322  typekind=esmf_typekind_r8, &
1323  staggerloc=esmf_staggerloc_center, &
1324  ungriddedlbound=(/1/), &
1325  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
1326  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1327  call error_handler("IN FieldCreate", rc)
1328 
1329  print*,"- CALL FieldCreate FOR TARGET GRID THOMP CLIMO QNIFA."
1330  qnifa_climo_target_grid = esmf_fieldcreate(target_grid, &
1331  typekind=esmf_typekind_r8, &
1332  staggerloc=esmf_staggerloc_center, &
1333  ungriddedlbound=(/1/), &
1334  ungriddedubound=(/lev_target/), rc=rc)
1335  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1336  call error_handler("IN FieldCreate", rc)
1337 
1338  print*,"- CALL FieldCreate FOR TARGET GRID THOMP CLIMO QNWFA."
1339  qnwfa_climo_target_grid = esmf_fieldcreate(target_grid, &
1340  typekind=esmf_typekind_r8, &
1341  staggerloc=esmf_staggerloc_center, &
1342  ungriddedlbound=(/1/), &
1343  ungriddedubound=(/lev_target/), rc=rc)
1344  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1345  call error_handler("IN FieldCreate", rc)
1346 
1347  print*,"- CALL FieldRegridStore FOR THOMPSON CLIMO FIELDS."
1348 
1349  method=esmf_regridmethod_bilinear
1350 
1351  call esmf_fieldregridstore(qnifa_climo_input_grid, &
1353  polemethod=esmf_polemethod_allavg, &
1354  srctermprocessing=isrctermprocessing, &
1355  routehandle=regrid_bl, &
1356  regridmethod=method, rc=rc)
1357  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1358  call error_handler("IN FieldRegridStore", rc)
1359 
1360  print*,"- CALL Field_Regrid FOR THOMP CLIMO QNIFA."
1361  call esmf_fieldregrid(qnifa_climo_input_grid, &
1363  routehandle=regrid_bl, &
1364  termorderflag=esmf_termorder_srcseq, rc=rc)
1365  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1366  call error_handler("IN FieldRegrid", rc)
1367 
1368  print*,"- CALL Field_Regrid FOR THOMP CLIMO QNWFA."
1369  call esmf_fieldregrid(qnwfa_climo_input_grid, &
1371  routehandle=regrid_bl, &
1372  termorderflag=esmf_termorder_srcseq, rc=rc)
1373  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1374  call error_handler("IN FieldRegrid", rc)
1375 
1376  print*,"- CALL Field_Regrid FOR THOMP PRESSURE."
1377  call esmf_fieldregrid(thomp_pres_climo_input_grid, &
1379  routehandle=regrid_bl, &
1380  termorderflag=esmf_termorder_srcseq, rc=rc)
1381  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1382  call error_handler("IN FieldRegrid", rc)
1383 
1384  print*,"- CALL FieldRegridRelease."
1385  call esmf_fieldregridrelease(routehandle=regrid_bl, rc=rc)
1386  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1387  call error_handler("IN FieldRegridRelease", rc)
1388 
1389 !-----------------------------------------------------------------------------------
1390 ! Free up input data memory.
1391 !-----------------------------------------------------------------------------------
1392 
1394 
1395  end subroutine horiz_interp_thomp_mp_climo
1396 
1403  SUBROUTINE vintg_thomp_mp_climo
1405  implicit none
1406 
1407  INTEGER :: CLB(3), CUB(3), RC
1408  INTEGER :: IM, KM1, KM2, NT
1409  INTEGER :: I, J, K
1410 
1411  REAL(ESMF_KIND_R8), ALLOCATABLE :: Z1(:,:,:), Z2(:,:,:)
1412  REAL(ESMF_KIND_R8), ALLOCATABLE :: C1(:,:,:,:),C2(:,:,:,:)
1413 
1414  REAL(ESMF_KIND_R8), POINTER :: QNIFA1PTR(:,:,:) ! input
1415  REAL(ESMF_KIND_R8), POINTER :: QNIFA2PTR(:,:,:) ! target
1416  REAL(ESMF_KIND_R8), POINTER :: QNWFA1PTR(:,:,:) ! input
1417  REAL(ESMF_KIND_R8), POINTER :: QNWFA2PTR(:,:,:) ! target
1418  REAL(ESMF_KIND_R8), POINTER :: P1PTR(:,:,:) ! input pressure
1419  REAL(ESMF_KIND_R8), POINTER :: P2PTR(:,:,:) ! target pressure
1420 
1421  print*,"- VERTICALY INTERPOLATE THOMP MP CLIMO TRACERS."
1422 
1423  print*,"- CALL FieldGet FOR 3-D THOMP PRES."
1424  call esmf_fieldget(thomp_pres_climo_b4adj_target_grid, &
1425  computationallbound=clb, &
1426  computationalubound=cub, &
1427  farrayptr=p1ptr, rc=rc)
1428  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1429  call error_handler("IN FieldGet", rc)
1430 
1431 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1432 ! The '1'/'2' arrays hold fields before/after interpolation.
1433 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1434 
1435  nt= 2 ! number of thomp tracers
1436 
1437  ALLOCATE(z1(clb(1):cub(1),clb(2):cub(2),lev_thomp_mp_climo))
1438  ALLOCATE(z2(clb(1):cub(1),clb(2):cub(2),lev_target))
1439  ALLOCATE(c1(clb(1):cub(1),clb(2):cub(2),lev_thomp_mp_climo,nt))
1440  ALLOCATE(c2(clb(1):cub(1),clb(2):cub(2),lev_target,nt))
1441 
1442  z1 = -log(p1ptr)
1443 
1444  print*,"- CALL FieldGet FOR 3-D ADJUSTED PRESS"
1445  call esmf_fieldget(pres_target_grid, &
1446  farrayptr=p2ptr, rc=rc)
1447  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1448  call error_handler("IN FieldGet", rc)
1449 
1450  z2 = -log(p2ptr)
1451 
1452 !print*,'pres check 1 ', p1ptr(clb(1),clb(2),:)
1453 !print*,'pres check 2 ', p2ptr(clb(1),clb(2),:)
1454 
1455  print*,"- CALL FieldGet FOR qnifa before vertical adjustment."
1456  call esmf_fieldget(qnifa_climo_b4adj_target_grid, &
1457  farrayptr=qnifa1ptr, rc=rc)
1458  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1459  call error_handler("IN FieldGet", rc)
1460 
1461  c1(:,:,:,1) = qnifa1ptr(:,:,:)
1462 
1463  print*,"- CALL FieldGet FOR qnwfa before vertical adjustment."
1464  call esmf_fieldget(qnwfa_climo_b4adj_target_grid, &
1465  farrayptr=qnwfa1ptr, rc=rc)
1466  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1467  call error_handler("IN FieldGet", rc)
1468 
1469  c1(:,:,:,2) = qnwfa1ptr(:,:,:)
1470 
1471 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1472 ! PERFORM LAGRANGIAN ONE-DIMENSIONAL INTERPOLATION
1473 ! THAT IS 4TH-ORDER IN INTERIOR, 2ND-ORDER IN OUTSIDE INTERVALS
1474 ! AND 1ST-ORDER FOR EXTRAPOLATION.
1475 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1476 
1477  im = (cub(1)-clb(1)+1) * (cub(2)-clb(2)+1)
1478  km1= lev_thomp_mp_climo
1479  km2= lev_target
1480 
1481  CALL terp3(im,1,1,1,1,nt,(im*km1),(im*km2), &
1482  km1,im,im,z1,c1,km2,im,im,z2,c2)
1483 
1484  print*,"- CALL FieldGet FOR ADJUSTED climo qnifa."
1485  call esmf_fieldget(qnifa_climo_target_grid, &
1486  farrayptr=qnifa2ptr, rc=rc)
1487  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1488  call error_handler("IN FieldGet", rc)
1489 
1490  print*,"- CALL FieldGet FOR ADJUSTED climo qnwfa."
1491  call esmf_fieldget(qnwfa_climo_target_grid, &
1492  farrayptr=qnwfa2ptr, rc=rc)
1493  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1494  call error_handler("IN FieldGet", rc)
1495 
1496  DO k=1,lev_target
1497  DO i=clb(1),cub(1)
1498  DO j=clb(2),cub(2)
1499  qnifa2ptr(i,j,k) = c2(i,j,k,1)
1500  qnwfa2ptr(i,j,k) = c2(i,j,k,2)
1501  ENDDO
1502  ENDDO
1503  ENDDO
1504 
1505  DEALLOCATE (z1, z2, c1, c2)
1506 
1507  call esmf_fielddestroy(qnifa_climo_b4adj_target_grid, rc=rc)
1508  call esmf_fielddestroy(qnwfa_climo_b4adj_target_grid, rc=rc)
1509  call esmf_fielddestroy(thomp_pres_climo_b4adj_target_grid, rc=rc)
1510 
1511  END SUBROUTINE vintg_thomp_mp_climo
1512 
1513 
1527  SUBROUTINE vintg_wam (YEAR,MONTH,DAY,HOUR,PF)
1529  IMPLICIT NONE
1530 
1531  include 'mpif.h'
1532 
1533  INTEGER, INTENT(IN) :: YEAR,MONTH,DAY,HOUR
1534  CHARACTER(*), INTENT(IN) :: PF
1535 
1536  REAL(ESMF_KIND_R8), PARAMETER :: AMO = 15.9994 ! molecular weight of o
1537  REAL(ESMF_KIND_R8), PARAMETER :: AMO2 = 31.999 !molecular weight of o2
1538  REAL(ESMF_KIND_R8), PARAMETER :: AMN2 = 28.013 !molecular weight of n2
1539 
1540  REAL(ESMF_KIND_R8) :: COE,WFUN(10),DEGLAT,HOLD
1541  REAL(ESMF_KIND_R8) :: SUMMASS,QVMASS,O3MASS
1542  INTEGER :: I, J, K, II, CLB(3), CUB(3), RC, KREF
1543  INTEGER :: IDAT(8),JDOW,JDAY,ICDAY
1544 
1545  REAL(ESMF_KIND_R8), ALLOCATABLE :: TEMP(:),ON(:),O2N(:),N2N(:),PRMB(:)
1546 
1547  REAL(ESMF_KIND_R8), POINTER :: LATPTR(:,:) ! output latitude
1548  REAL(ESMF_KIND_R8), POINTER :: P1PTR(:,:,:) ! input pressure
1549  REAL(ESMF_KIND_R8), POINTER :: P2PTR(:,:,:) ! output pressure
1550  REAL(ESMF_KIND_R8), POINTER :: DZDT2PTR(:,:,:) ! output vvel
1551  REAL(ESMF_KIND_R8), POINTER :: T2PTR(:,:,:) ! output temperature
1552  REAL(ESMF_KIND_R8), POINTER :: Q2PTR(:,:,:) ! output tracer
1553  REAL(ESMF_KIND_R8), POINTER :: QVPTR(:,:,:) ! output tracer
1554  REAL(ESMF_KIND_R8), POINTER :: QOPTR(:,:,:) ! output tracer
1555  REAL(ESMF_KIND_R8), POINTER :: O2PTR(:,:,:) ! output tracer
1556  REAL(ESMF_KIND_R8), POINTER :: O3PTR(:,:,:) ! output tracer
1557  REAL(ESMF_KIND_R8), POINTER :: XWIND2PTR(:,:,:) ! output wind (x component)
1558  REAL(ESMF_KIND_R8), POINTER :: YWIND2PTR(:,:,:) ! output wind (y component)
1559  REAL(ESMF_KIND_R8), POINTER :: ZWIND2PTR(:,:,:) ! output wind (z component)
1560 
1561 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1562 
1563  print*,"VINTG_WAM:- VERTICALY EXTEND FIELDS FOR WAM COLD START."
1564 
1565 ! prepare date
1566  idat = 0
1567  jdow = 0
1568  jday = 0
1569  icday = 0
1570  idat(1)=year
1571  idat(2)=month
1572  idat(3)=day
1573  idat(5)=hour
1574  CALL w3doxdat(idat,jdow,icday,jday)
1575  print *,"VINTG_WAM: WAM START DATE FOR ICDAY=",icday
1576 
1577 ! prepare weighting function
1578  DO k=1,10
1579  wfun(k) = (k-1.0) / 9.0
1580  ENDDO
1581 
1582  ALLOCATE(temp(lev_target))
1583  ALLOCATE(prmb(lev_target))
1584  ALLOCATE( on(lev_target))
1585  ALLOCATE( o2n(lev_target))
1586  ALLOCATE( n2n(lev_target))
1587 
1588 ! p1 (pascal)
1589  print*,"VINTG_WAM:- CALL FieldGet FOR 3-D PRES."
1590  call esmf_fieldget(pres_b4adj_target_grid, &
1591  computationallbound=clb, &
1592  computationalubound=cub, &
1593  farrayptr=p1ptr, rc=rc)
1594  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1595  call error_handler("IN FieldGet", rc)
1596 !print*,"VINTG_WAM: p1ptr ",(p1ptr(1,1,k),k=1,LEV_INPUT)
1597 
1598 ! p2 (pascal)
1599  print*,"VINTG_WAM:- CALL FieldGet FOR 3-D ADJUSTED PRESS"
1600  call esmf_fieldget(pres_target_grid, &
1601  farrayptr=p2ptr, rc=rc)
1602  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1603  call error_handler("IN FieldGet", rc)
1604 !print*,"VINTG_WAM: p2ptr ",(p2ptr(1,1,k),k=1,LEV_TARGET)
1605 
1606 ! latitude in degree
1607  print*,"VINTG_WAM - CALL FieldGet FOR LATITUDE_S."
1608  call esmf_fieldget(latitude_s_target_grid, &
1609  farrayptr=latptr, rc=rc)
1610  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1611  call error_handler("IN FieldGet", rc)
1612 !print*,"VINTG_WAM: latptr ",(latptr(1,j),j=clb(2),cub(2))
1613 
1614 ! temp
1615  print*,"VINTG_WAM:- CALL FieldGet FOR 3-D ADJUSTED TEMP."
1616  call esmf_fieldget(temp_target_grid, &
1617  farrayptr=t2ptr, rc=rc)
1618  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1619  call error_handler("IN FieldGet", rc)
1620 
1621 ! dzdt
1622  print*,"VINTG_WAM:- CALL FieldGet FOR ADJUSTED VERTICAL VELOCITY."
1623  call esmf_fieldget(dzdt_target_grid, &
1624  farrayptr=dzdt2ptr, rc=rc)
1625  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1626  call error_handler("IN FieldGet", rc)
1627 
1628 ! wind
1629  print*,"VINTG_WAM:- CALL FieldGet FOR ADJUSTED WIND COMPONENTS."
1630 
1631  call esmf_fieldget(xwind_target_grid, &
1632  farrayptr=xwind2ptr, rc=rc)
1633  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1634  call error_handler("IN FieldGet", rc)
1635 
1636  call esmf_fieldget(ywind_target_grid, &
1637  farrayptr=ywind2ptr, rc=rc)
1638  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1639  call error_handler("IN FieldGet", rc)
1640 
1641  call esmf_fieldget(zwind_target_grid, &
1642  farrayptr=zwind2ptr, rc=rc)
1643  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1644  call error_handler("IN FieldGet", rc)
1645 
1646 !
1647 ! determine vertical blending point and modified extrapolation values
1648 !
1649  DO i=clb(1),cub(1)
1650  DO j=clb(2),cub(2)
1651 
1652  DO k=1,lev_target
1653  IF(p2ptr(i,j,k).le.p1ptr(i,j,lev_input)) THEN
1654  kref =k-1
1655  EXIT
1656  ENDIF
1657  ENDDO
1658 !
1659  DO k=kref,lev_target
1660  coe = p2ptr(i,j,k) / p2ptr(i,j,kref)
1661  xwind2ptr(i,j,k) = coe*xwind2ptr(i,j,k)
1662  ywind2ptr(i,j,k) = coe*ywind2ptr(i,j,k)
1663  zwind2ptr(i,j,k) = coe*zwind2ptr(i,j,k)
1664  dzdt2ptr(i,j,k) = coe*dzdt2ptr(i,j,k)
1665  ENDDO
1666 
1667  ENDDO
1668  ENDDO
1669 
1670 !
1671 ! point necessary tracers
1672 !
1673  DO ii = 1, num_tracers
1674 
1675  print*,"VINTG_WAM:- CALL FieldGet FOR 3-D TRACER ", trim(tracers(ii))
1676  call esmf_fieldget(tracers_target_grid(ii), &
1677  farrayptr=q2ptr, rc=rc)
1678  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1679  call error_handler("IN FieldGet", rc)
1680 
1681  DO j=clb(2),cub(2)
1682  DO i=clb(1),cub(1)
1683  DO k=1,lev_target
1684  IF(p2ptr(i,j,k).le.p1ptr(i,j,lev_input)) THEN
1685  kref =k-1
1686  EXIT
1687  ENDIF
1688  ENDDO
1689 !
1690  DO k=kref,lev_target
1691  coe = min(1.0, p2ptr(i,j,k) / p2ptr(i,j,kref) )
1692  q2ptr(i,j,k) = coe * q2ptr(i,j,k)
1693  ENDDO
1694  ENDDO
1695  ENDDO
1696 
1697  IF (trim(tracers(ii)) == "sphum") qvptr => q2ptr
1698  IF (trim(tracers(ii)) == "spo" ) qoptr => q2ptr
1699  IF (trim(tracers(ii)) == "spo2" ) o2ptr => q2ptr
1700  IF (trim(tracers(ii)) == "spo3" ) o3ptr => q2ptr
1701 
1702  ENDDO
1703 
1704 !
1705 ! obtained wam gases distribution and temperature profile
1706 !
1707  DO i=clb(1),cub(1)
1708  DO j=clb(2),cub(2)
1709 !
1710  deglat = latptr(i,j)
1711  DO k=1,lev_target
1712  prmb(k) = p2ptr(i,j,k) * 0.01
1713  ENDDO
1714  CALL gettemp(icday,deglat,prmb,lev_target,pf,temp,on,o2n,n2n)
1715 !
1716  DO k=1,lev_target
1717  summass = on(k)*amo+o2n(k)*amo2+n2n(k)*amn2
1718  qvmass = summass*qvptr(i,j,k)/(1.-qvptr(i,j,k))
1719  summass = summass+qvmass
1720  o3mass = summass*o3ptr(i,j,k)
1721  summass = summass+o3mass
1722  hold = 1.0 / summass
1723  qoptr(i,j,k) = on(k)*amo *hold
1724  o2ptr(i,j,k) = o2n(k)*amo2*hold
1725  o3ptr(i,j,k) = o3mass * hold
1726  qvptr(i,j,k) = qvmass * hold
1727  ENDDO
1728 !
1729  DO k=1,lev_target
1730  IF(p2ptr(i,j,k).le.p1ptr(i,j,lev_input)) THEN
1731  kref =k-1
1732  EXIT
1733  ENDIF
1734  ENDDO
1735 !
1736  DO k=kref,lev_target
1737  t2ptr(i,j,k) = temp(k)
1738  ENDDO
1739  DO k=kref-10,kref-1
1740  t2ptr(i,j,k) = wfun(k-kref+11) * temp(k) + &
1741  (1.- wfun(k-kref+11)) * t2ptr(i,j,k)
1742  ENDDO
1743  ENDDO
1744  ENDDO
1745 
1746  DEALLOCATE (temp, prmb, on, o2n, n2n)
1747 
1748  END SUBROUTINE vintg_wam
1749 
1763  SUBROUTINE vintg
1764  use mpi
1765 
1766  IMPLICIT NONE
1767 
1768  REAL(ESMF_KIND_R8), PARAMETER :: DLTDZ=-6.5e-3*287.05/9.80665
1769  REAL(ESMF_KIND_R8), PARAMETER :: DLPVDRT=-2.5e6/461.50
1770  REAL(ESMF_KIND_R8), PARAMETER :: ONE = 1.0_esmf_kind_r8
1771 
1772  INTEGER :: I, J, K, CLB(3), CUB(3), RC
1773  INTEGER :: IM, KM1, KM2, NT, II
1774 
1775  REAL(ESMF_KIND_R8) :: DZ
1776  REAL(ESMF_KIND_R8), ALLOCATABLE :: Z1(:,:,:), Z2(:,:,:)
1777  REAL(ESMF_KIND_R8), ALLOCATABLE :: C1(:,:,:,:),C2(:,:,:,:)
1778 
1779  REAL(ESMF_KIND_R8), POINTER :: P1PTR(:,:,:) ! input pressure
1780  REAL(ESMF_KIND_R8), POINTER :: P2PTR(:,:,:) ! output pressure
1781  REAL(ESMF_KIND_R8), POINTER :: DZDT1PTR(:,:,:) ! input vvel
1782  REAL(ESMF_KIND_R8), POINTER :: DZDT2PTR(:,:,:) ! output vvel
1783  REAL(ESMF_KIND_R8), POINTER :: T1PTR(:,:,:) ! input temperature
1784  REAL(ESMF_KIND_R8), POINTER :: T2PTR(:,:,:) ! output temperature
1785  REAL(ESMF_KIND_R8), POINTER :: Q1PTR(:,:,:) ! input tracer
1786  REAL(ESMF_KIND_R8), POINTER :: Q2PTR(:,:,:) ! output tracer
1787  REAL(ESMF_KIND_R8), POINTER :: XWIND1PTR(:,:,:) ! input wind (x component)
1788  REAL(ESMF_KIND_R8), POINTER :: YWIND1PTR(:,:,:) ! input wind (y component)
1789  REAL(ESMF_KIND_R8), POINTER :: ZWIND1PTR(:,:,:) ! input wind (z component)
1790  REAL(ESMF_KIND_R8), POINTER :: XWIND2PTR(:,:,:) ! output wind (x component)
1791  REAL(ESMF_KIND_R8), POINTER :: YWIND2PTR(:,:,:) ! output wind (y component)
1792  REAL(ESMF_KIND_R8), POINTER :: ZWIND2PTR(:,:,:) ! output wind (z component)
1793 
1794 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1795 ! COMPUTE LOG PRESSURE INTERPOLATING COORDINATE
1796 ! AND COPY INPUT WIND, TEMPERATURE, HUMIDITY AND OTHER TRACERS
1797 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1798 
1799  print*,"- VERTICALY INTERPOLATE FIELDS."
1800 
1801  print*,"- CALL FieldGet FOR 3-D PRES."
1802  call esmf_fieldget(pres_b4adj_target_grid, &
1803  computationallbound=clb, &
1804  computationalubound=cub, &
1805  farrayptr=p1ptr, rc=rc)
1806  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1807  call error_handler("IN FieldGet", rc)
1808 
1809 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1810 ! The '1'/'2' arrays hold fields before/after interpolation.
1811 ! Note the 'z' component of the horizontal wind will be treated as a
1812 ! tracer. So add one extra third dimension to these 3-d arrays.
1813 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1814 
1815  ALLOCATE(z1(clb(1):cub(1),clb(2):cub(2),lev_input))
1816  ALLOCATE(z2(clb(1):cub(1),clb(2):cub(2),lev_target))
1817  ALLOCATE(c1(clb(1):cub(1),clb(2):cub(2),lev_input,num_tracers_input+5))
1818  ALLOCATE(c2(clb(1):cub(1),clb(2):cub(2),lev_target,num_tracers_input+5))
1819 
1820  z1 = -log(p1ptr)
1821 
1822  print*,"- CALL FieldGet FOR 3-D ADJUSTED PRESS"
1823  call esmf_fieldget(pres_target_grid, &
1824  farrayptr=p2ptr, rc=rc)
1825  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1826  call error_handler("IN FieldGet", rc)
1827 
1828  z2 = -log(p2ptr)
1829 
1830  print*,"- CALL FieldGet FOR x WIND."
1831  call esmf_fieldget(xwind_b4adj_target_grid, &
1832  farrayptr=xwind1ptr, rc=rc)
1833  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1834  call error_handler("IN FieldGet", rc)
1835 
1836  c1(:,:,:,1) = xwind1ptr(:,:,:)
1837 
1838  print*,"- CALL FieldGet FOR y WIND."
1839  call esmf_fieldget(ywind_b4adj_target_grid, &
1840  farrayptr=ywind1ptr, rc=rc)
1841  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1842  call error_handler("IN FieldGet", rc)
1843 
1844  c1(:,:,:,2) = ywind1ptr(:,:,:)
1845 
1846  print*,"- CALL FieldGet FOR z WIND."
1847  call esmf_fieldget(zwind_b4adj_target_grid, &
1848  farrayptr=zwind1ptr, rc=rc)
1849  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1850  call error_handler("IN FieldGet", rc)
1851 
1852  c1(:,:,:,3) = zwind1ptr(:,:,:)
1853 
1854  print*,"- CALL FieldGet FOR VERTICAL VELOCITY."
1855  call esmf_fieldget(dzdt_b4adj_target_grid, &
1856  farrayptr=dzdt1ptr, rc=rc)
1857  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1858  call error_handler("IN FieldGet", rc)
1859 
1860  c1(:,:,:,4) = dzdt1ptr(:,:,:)
1861  print*,"MIN MAX W TARGETB4 IN VINTG = ", minval(dzdt1ptr(:,:,:)), maxval(dzdt1ptr(:,:,:))
1862 
1863  print*,"- CALL FieldGet FOR 3-D TEMP."
1864  call esmf_fieldget(temp_b4adj_target_grid, &
1865  farrayptr=t1ptr, rc=rc)
1866  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1867  call error_handler("IN FieldGet", rc)
1868 
1869  c1(:,:,:,5) = t1ptr(:,:,:)
1870 
1871  DO i = 1, num_tracers_input
1872 
1873  print*,"- CALL FieldGet FOR 3-D TRACERS ", trim(tracers(i))
1874  call esmf_fieldget(tracers_b4adj_target_grid(i), &
1875  farrayptr=q1ptr, rc=rc)
1876  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1877  call error_handler("IN FieldGet", rc)
1878 
1879  c1(:,:,:,5+i) = q1ptr(:,:,:)
1880 
1881  ENDDO
1882 
1883 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1884 ! PERFORM LAGRANGIAN ONE-DIMENSIONAL INTERPOLATION
1885 ! THAT IS 4TH-ORDER IN INTERIOR, 2ND-ORDER IN OUTSIDE INTERVALS
1886 ! AND 1ST-ORDER FOR EXTRAPOLATION.
1887 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1888 
1889  im = (cub(1)-clb(1)+1) * (cub(2)-clb(2)+1)
1890  km1= lev_input
1891  km2= lev_target
1892  nt= num_tracers_input + 1 ! treat 'z' wind as tracer.
1893 
1894  CALL terp3(im,1,1,1,1,4+nt,(im*km1),(im*km2), &
1895  km1,im,im,z1,c1,km2,im,im,z2,c2)
1896 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1897 ! COPY OUTPUT WIND, TEMPERATURE, HUMIDITY AND OTHER TRACERS
1898 ! EXCEPT BELOW THE INPUT DOMAIN, LET TEMPERATURE INCREASE WITH A FIXED
1899 ! LAPSE RATE AND LET THE RELATIVE HUMIDITY REMAIN CONSTANT.
1900 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1901 
1902  print*,"- CALL FieldGet FOR 3-D ADJUSTED TEMP."
1903  call esmf_fieldget(temp_target_grid, &
1904  farrayptr=t2ptr, rc=rc)
1905  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1906  call error_handler("IN FieldGet", rc)
1907 
1908  print*,"- CALL FieldGet FOR ADJUSTED VERTICAL VELOCITY."
1909  call esmf_fieldget(dzdt_target_grid, &
1910  farrayptr=dzdt2ptr, rc=rc)
1911  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1912  call error_handler("IN FieldGet", rc)
1913 
1914  print*,"- CALL FieldGet FOR ADJUSTED xwind."
1915  call esmf_fieldget(xwind_target_grid, &
1916  farrayptr=xwind2ptr, rc=rc)
1917  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1918  call error_handler("IN FieldGet", rc)
1919 
1920  print*,"- CALL FieldGet FOR ADJUSTED ywind."
1921  call esmf_fieldget(ywind_target_grid, &
1922  farrayptr=ywind2ptr, rc=rc)
1923  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1924  call error_handler("IN FieldGet", rc)
1925 
1926  print*,"- CALL FieldGet FOR ADJUSTED zwind."
1927  call esmf_fieldget(zwind_target_grid, &
1928  farrayptr=zwind2ptr, rc=rc)
1929  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1930  call error_handler("IN FieldGet", rc)
1931 
1932  DO k=1,lev_target
1933  DO i=clb(1),cub(1)
1934  DO j=clb(2),cub(2)
1935  xwind2ptr(i,j,k)=c2(i,j,k,1)
1936  ywind2ptr(i,j,k)=c2(i,j,k,2)
1937  zwind2ptr(i,j,k)=c2(i,j,k,3)
1938  dzdt2ptr(i,j,k)=c2(i,j,k,4)
1939  dz=z2(i,j,k)-z1(i,j,1)
1940  IF(dz.GE.0) THEN
1941  t2ptr(i,j,k)=c2(i,j,k,5)
1942  ELSE
1943  t2ptr(i,j,k)=c1(i,j,1,5)*exp(dltdz*dz)
1944  ENDIF
1945  ENDDO
1946  ENDDO
1947  ENDDO
1948 
1949  DO ii = 1, num_tracers_input
1950 
1951  print*,"- CALL FieldGet FOR 3-D TRACER ", trim(tracers(ii))
1952  call esmf_fieldget(tracers_target_grid(ii), &
1953  farrayptr=q2ptr, rc=rc)
1954  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1955  call error_handler("IN FieldGet", rc)
1956 
1957  IF (trim(tracers(ii)) == "sphum") THEN ! specific humidity
1958 
1959  DO k=1,lev_target
1960  DO i=clb(1),cub(1)
1961  DO j=clb(2),cub(2)
1962  dz=z2(i,j,k)-z1(i,j,1)
1963  IF(dz.GE.0) THEN
1964  q2ptr(i,j,k) = c2(i,j,k,5+ii)
1965  ELSE
1966  q2ptr(i,j,k) = c1(i,j,1,5+ii)*exp(dlpvdrt*(one/t2ptr(i,j,k)-one/t1ptr(i,j,1))-dz)
1967  ENDIF
1968  ENDDO
1969  ENDDO
1970  ENDDO
1971 
1972  ELSE ! all other tracers
1973 
1974  DO k=1,lev_target
1975  DO i=clb(1),cub(1)
1976  DO j=clb(2),cub(2)
1977  q2ptr(i,j,k) = c2(i,j,k,5+ii)
1978  ENDDO
1979  ENDDO
1980  ENDDO
1981 
1982  ENDIF
1983 
1984  ENDDO
1985 
1986  DEALLOCATE (z1, z2, c1, c2)
1987 
1988  END SUBROUTINE vintg
1989 
2026  SUBROUTINE terp3(IM,IXZ1,IXQ1,IXZ2,IXQ2,NM,NXQ1,NXQ2, &
2027  KM1,KXZ1,KXQ1,Z1,Q1,KM2,KXZ2,KXQ2,Z2,Q2)
2028  IMPLICIT NONE
2029  INTEGER IM,IXZ1,IXQ1,IXZ2,IXQ2,NM,NXQ1,NXQ2
2030  INTEGER KM1,KXZ1,KXQ1,KM2,KXZ2,KXQ2
2031  INTEGER I,K1,K2,N
2032  INTEGER K1S(IM,KM2)
2033  REAL(ESMF_KIND_R8), PARAMETER :: ONE = 1.0_esmf_kind_r8
2034  REAL(ESMF_KIND_R8) :: Z1(1+(IM-1)*IXZ1+(KM1-1)*KXZ1)
2035  REAL(ESMF_KIND_R8) :: Q1(1+(IM-1)*IXQ1+(KM1-1)*KXQ1+(NM-1)*NXQ1)
2036  REAL(ESMF_KIND_R8) :: Z2(1+(IM-1)*IXZ2+(KM2-1)*KXZ2)
2037  REAL(ESMF_KIND_R8) :: Q2(1+(IM-1)*IXQ2+(KM2-1)*KXQ2+(NM-1)*NXQ2)
2038 ! REAL(ESMF_KIND_R8) :: J2(1+(IM-1)*IXQ2+(KM2-1)*KXQ2+(NM-1)*NXQ2)
2039  REAL(ESMF_KIND_R8) :: FFA(IM),FFB(IM),FFC(IM),FFD(IM)
2040  REAL(ESMF_KIND_R8) :: GGA(IM),GGB(IM),GGC(IM),GGD(IM)
2041  REAL(ESMF_KIND_R8) :: Z1A,Z1B,Z1C,Z1D,Q1A,Q1B,Q1C,Q1D,Z2S,Q2S
2042 ! REAL(ESMF_KIND_R8) :: J2S
2043 
2044 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2045 ! FIND THE SURROUNDING INPUT INTERVAL FOR EACH OUTPUT POINT.
2046  CALL rsearch(im,km1,ixz1,kxz1,z1,km2,ixz2,kxz2,z2,1,im,k1s)
2047 
2048 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2049 ! GENERALLY INTERPOLATE CUBICALLY WITH MONOTONIC CONSTRAINT
2050 ! FROM TWO NEAREST INPUT POINTS ON EITHER SIDE OF THE OUTPUT POINT,
2051 ! BUT WITHIN THE TWO EDGE INTERVALS INTERPOLATE LINEARLY.
2052 ! KEEP THE OUTPUT FIELDS CONSTANT OUTSIDE THE INPUT DOMAIN.
2053 
2054 !$OMP PARALLEL DO DEFAULT(PRIVATE) SHARED(IM,IXZ1,IXQ1,IXZ2), &
2055 !$OMP& SHARED(IXQ2,NM,NXQ1,NXQ2,KM1,KXZ1,KXQ1,Z1,Q1,KM2,KXZ2), &
2056 !$OMP& SHARED(KXQ2,Z2,Q2,K1S)
2057  DO k2=1,km2
2058  DO i=1,im
2059  k1=k1s(i,k2)
2060  IF(k1.EQ.1.OR.k1.EQ.km1-1) THEN
2061  z2s=z2(1+(i-1)*ixz2+(k2-1)*kxz2)
2062  z1a=z1(1+(i-1)*ixz1+(k1-1)*kxz1)
2063  z1b=z1(1+(i-1)*ixz1+(k1+0)*kxz1)
2064  ffa(i)=(z2s-z1b)/(z1a-z1b)
2065  ffb(i)=(z2s-z1a)/(z1b-z1a)
2066  gga(i)=one/(z1a-z1b)
2067  ggb(i)=one/(z1b-z1a)
2068  ELSEIF(k1.GT.1.AND.k1.LT.km1-1) THEN
2069  z2s=z2(1+(i-1)*ixz2+(k2-1)*kxz2)
2070  z1a=z1(1+(i-1)*ixz1+(k1-2)*kxz1)
2071  z1b=z1(1+(i-1)*ixz1+(k1-1)*kxz1)
2072  z1c=z1(1+(i-1)*ixz1+(k1+0)*kxz1)
2073  z1d=z1(1+(i-1)*ixz1+(k1+1)*kxz1)
2074  ffa(i)=(z2s-z1b)/(z1a-z1b)* &
2075  (z2s-z1c)/(z1a-z1c)* &
2076  (z2s-z1d)/(z1a-z1d)
2077  ffb(i)=(z2s-z1a)/(z1b-z1a)* &
2078  (z2s-z1c)/(z1b-z1c)* &
2079  (z2s-z1d)/(z1b-z1d)
2080  ffc(i)=(z2s-z1a)/(z1c-z1a)* &
2081  (z2s-z1b)/(z1c-z1b)* &
2082  (z2s-z1d)/(z1c-z1d)
2083  ffd(i)=(z2s-z1a)/(z1d-z1a)* &
2084  (z2s-z1b)/(z1d-z1b)* &
2085  (z2s-z1c)/(z1d-z1c)
2086  gga(i)= one/(z1a-z1b)* &
2087  (z2s-z1c)/(z1a-z1c)* &
2088  (z2s-z1d)/(z1a-z1d)+ &
2089  (z2s-z1b)/(z1a-z1b)* &
2090  one/(z1a-z1c)* &
2091  (z2s-z1d)/(z1a-z1d)+ &
2092  (z2s-z1b)/(z1a-z1b)* &
2093  (z2s-z1c)/(z1a-z1c)* &
2094  one/(z1a-z1d)
2095  ggb(i)= one/(z1b-z1a)* &
2096  (z2s-z1c)/(z1b-z1c)* &
2097  (z2s-z1d)/(z1b-z1d)+ &
2098  (z2s-z1a)/(z1b-z1a)* &
2099  one/(z1b-z1c)* &
2100  (z2s-z1d)/(z1b-z1d)+ &
2101  (z2s-z1a)/(z1b-z1a)* &
2102  (z2s-z1c)/(z1b-z1c)* &
2103  one/(z1b-z1d)
2104  ggc(i)= one/(z1c-z1a)* &
2105  (z2s-z1b)/(z1c-z1b)* &
2106  (z2s-z1d)/(z1c-z1d)+ &
2107  (z2s-z1a)/(z1c-z1a)* &
2108  one/(z1c-z1b)* &
2109  (z2s-z1d)/(z1c-z1d)+ &
2110  (z2s-z1a)/(z1c-z1a)* &
2111  (z2s-z1b)/(z1c-z1b)* &
2112  one/(z1c-z1d)
2113  ggd(i)= one/(z1d-z1a)* &
2114  (z2s-z1b)/(z1d-z1b)* &
2115  (z2s-z1c)/(z1d-z1c)+ &
2116  (z2s-z1a)/(z1d-z1a)* &
2117  one/(z1d-z1b)* &
2118  (z2s-z1c)/(z1d-z1c)+ &
2119  (z2s-z1a)/(z1d-z1a)* &
2120  (z2s-z1b)/(z1d-z1b)* &
2121  one/(z1d-z1c)
2122  ENDIF
2123  ENDDO
2124 
2125 ! INTERPOLATE.
2126  DO n=1,nm
2127  DO i=1,im
2128  k1=k1s(i,k2)
2129  IF(k1.EQ.0) THEN
2130  q2s=q1(1+(i-1)*ixq1+(n-1)*nxq1)
2131 ! J2S=0
2132  ELSEIF(k1.EQ.km1) THEN
2133  q2s=q1(1+(i-1)*ixq1+(km1-1)*kxq1+(n-1)*nxq1)
2134 ! J2S=0
2135  ELSEIF(k1.EQ.1.OR.k1.EQ.km1-1) THEN
2136  q1a=q1(1+(i-1)*ixq1+(k1-1)*kxq1+(n-1)*nxq1)
2137  q1b=q1(1+(i-1)*ixq1+(k1+0)*kxq1+(n-1)*nxq1)
2138  q2s=ffa(i)*q1a+ffb(i)*q1b
2139 ! J2S=GGA(I)*Q1A+GGB(I)*Q1B
2140  ELSE
2141  q1a=q1(1+(i-1)*ixq1+(k1-2)*kxq1+(n-1)*nxq1)
2142  q1b=q1(1+(i-1)*ixq1+(k1-1)*kxq1+(n-1)*nxq1)
2143  q1c=q1(1+(i-1)*ixq1+(k1+0)*kxq1+(n-1)*nxq1)
2144  q1d=q1(1+(i-1)*ixq1+(k1+1)*kxq1+(n-1)*nxq1)
2145  q2s=ffa(i)*q1a+ffb(i)*q1b+ffc(i)*q1c+ffd(i)*q1d
2146 ! J2S=GGA(I)*Q1A+GGB(I)*Q1B+GGC(I)*Q1C+GGD(I)*Q1D
2147  IF(q2s.LT.min(q1b,q1c)) THEN
2148  q2s=min(q1b,q1c)
2149 ! J2S=0
2150  ELSEIF(q2s.GT.max(q1b,q1c)) THEN
2151  q2s=max(q1b,q1c)
2152 ! J2S=0
2153  ENDIF
2154  ENDIF
2155  q2(1+(i-1)*ixq2+(k2-1)*kxq2+(n-1)*nxq2)=q2s
2156 ! J2(1+(I-1)*IXQ2+(K2-1)*KXQ2+(N-1)*NXQ2)=J2S
2157  ENDDO
2158  ENDDO
2159  ENDDO
2160 !$OMP END PARALLEL DO
2161 
2162  END SUBROUTINE terp3
2163 
2220  SUBROUTINE rsearch(IM,KM1,IXZ1,KXZ1,Z1,KM2,IXZ2,KXZ2,Z2,IXL2,KXL2,L2)
2221  IMPLICIT NONE
2222 
2223  INTEGER,INTENT(IN) :: IM,KM1,IXZ1,KXZ1,KM2,IXZ2,KXZ2,IXL2,KXL2
2224  INTEGER,INTENT(OUT) :: L2(1+(IM-1)*IXL2+(KM2-1)*KXL2)
2225 
2226  REAL(ESMF_KIND_R8),INTENT(IN) :: Z1(1+(IM-1)*IXZ1+(KM1-1)*KXZ1)
2227  REAL(ESMF_KIND_R8),INTENT(IN) :: Z2(1+(IM-1)*IXZ2+(KM2-1)*KXZ2)
2228 
2229  INTEGER :: I,K2,L
2230 
2231  REAL(ESMF_KIND_R8) :: Z
2232 
2233 
2234 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2235 ! FIND THE SURROUNDING INPUT INTERVAL FOR EACH OUTPUT POINT.
2236  DO i=1,im
2237  IF (z1(1+(i-1)*ixz1).LE.z1(1+(i-1)*ixz1+(km1-1)*kxz1)) THEN
2238 ! INPUT COORDINATE IS MONOTONICALLY ASCENDING.
2239  DO k2=1,km2
2240  z=z2(1+(i-1)*ixz2+(k2-1)*kxz2)
2241  l=0
2242  DO
2243  IF(z.LT.z1(1+(i-1)*ixz1+l*kxz1)) EXIT
2244  l=l+1
2245  IF(l.EQ.km1) EXIT
2246  ENDDO
2247  l2(1+(i-1)*ixl2+(k2-1)*kxl2)=l
2248  ENDDO
2249  ELSE
2250 ! INPUT COORDINATE IS MONOTONICALLY DESCENDING.
2251  DO k2=1,km2
2252  z=z2(1+(i-1)*ixz2+(k2-1)*kxz2)
2253  l=0
2254  DO
2255  IF(z.GT.z1(1+(i-1)*ixz1+l*kxz1)) EXIT
2256  l=l+1
2257  IF(l.EQ.km1) EXIT
2258  ENDDO
2259  l2(1+(i-1)*ixl2+(k2-1)*kxl2)=l
2260  ENDDO
2261  ENDIF
2262  ENDDO
2263 
2264  END SUBROUTINE rsearch
2265 
2268  subroutine compute_zh
2270  implicit none
2271 
2272  integer :: i,ii, j,k, rc, clb(2), cub(2)
2273 
2274  real(esmf_kind_r8), allocatable :: pe0(:), pn0(:)
2275  real(esmf_kind_r8), pointer :: psptr(:,:)
2276  real(esmf_kind_r8), pointer :: zhsfcptr(:,:)
2277  real(esmf_kind_r8), pointer :: zhptr(:,:,:)
2278  real(esmf_kind_r8), pointer :: tptr(:,:,:)
2279  real(esmf_kind_r8), pointer :: qptr(:,:,:)
2280  real(esmf_kind_r8) :: ak, bk, zvir, grd
2281  real(esmf_kind_r8), parameter :: grav = 9.80665
2282  real(esmf_kind_r8), parameter :: rdgas = 287.05
2283  real(esmf_kind_r8), parameter :: rvgas = 461.50
2284 
2285  print*,"- COMPUTE HEIGHT"
2286 
2287  print*,"- CALL FieldGet FOR SURFACE PRESSURE"
2288  call esmf_fieldget(ps_target_grid, &
2289  computationallbound=clb, &
2290  computationalubound=cub, &
2291  farrayptr=psptr, rc=rc)
2292  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2293  call error_handler("IN FieldGet", rc)
2294 
2295  print*,"- CALL FieldGet FOR TERRAIN HEIGHT"
2296  call esmf_fieldget(terrain_target_grid, &
2297  farrayptr=zhsfcptr, rc=rc)
2298  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2299  call error_handler("IN FieldGet", rc)
2300 
2301  print*,"- CALL FieldGet FOR HEIGHT"
2302  call esmf_fieldget(zh_target_grid, &
2303  farrayptr=zhptr, rc=rc)
2304  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2305  call error_handler("IN FieldGet", rc)
2306 
2307  print*,"- CALL FieldGet FOR TEMPERATURE"
2308  call esmf_fieldget(temp_target_grid, &
2309  farrayptr=tptr, rc=rc)
2310  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2311  call error_handler("IN FieldGet", rc)
2312 
2313  do ii = 1, num_tracers
2314  if (trim(tracers(ii)) == "sphum") exit
2315  enddo
2316 
2317  print*,"- CALL FieldGet FOR SPECIFIC HUMIDITY"
2318  call esmf_fieldget(tracers_target_grid(ii), &
2319  farrayptr=qptr, rc=rc)
2320  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2321  call error_handler("IN FieldGet", rc)
2322 
2323  grd = grav/rdgas
2324  zvir = rvgas/rdgas - 1.0_esmf_kind_r8
2325 
2326  allocate(pe0(levp1_target))
2327  allocate(pn0(levp1_target))
2328 
2329  do j = clb(2), cub(2)
2330  do i = clb(1), cub(1)
2331 
2332  do k = 1, levp1_target
2333  ak = vcoord_target(k,1)
2334  ak = max(ak, 1.e-9)
2335  bk = vcoord_target(k,2)
2336 
2337  pe0(k) = ak + bk*psptr(i,j)
2338  pn0(k) = log(pe0(k))
2339  enddo
2340 
2341  zhptr(i,j,1) = zhsfcptr(i,j)
2342 
2343  do k = 2, levp1_target
2344  zhptr(i,j,k) = zhptr(i,j,k-1)+tptr(i,j,k-1)*(1.+zvir*qptr(i,j,k-1))* &
2345  (pn0(k-1)-pn0(k))/grd
2346  enddo
2347 
2348  enddo
2349  enddo
2350 
2351  deallocate(pe0, pn0)
2352 
2353  end subroutine compute_zh
2354 
2360  implicit none
2361 
2362  integer :: i, rc
2363 
2364  print*,"- DESTROY TARGET GRID ATMOSPHERIC BEFORE ADJUSTMENT FIELDS."
2365 
2366  call esmf_fielddestroy(xwind_b4adj_target_grid, rc=rc)
2367  call esmf_fielddestroy(ywind_b4adj_target_grid, rc=rc)
2368  call esmf_fielddestroy(zwind_b4adj_target_grid, rc=rc)
2369  call esmf_fielddestroy(dzdt_b4adj_target_grid, rc=rc)
2370  call esmf_fielddestroy(ps_b4adj_target_grid, rc=rc)
2371  call esmf_fielddestroy(pres_b4adj_target_grid, rc=rc)
2372  call esmf_fielddestroy(temp_b4adj_target_grid, rc=rc)
2373  call esmf_fielddestroy(terrain_interp_to_target_grid, rc=rc)
2374 
2375  do i = 1, num_tracers_input
2376  call esmf_fielddestroy(tracers_b4adj_target_grid(i), rc=rc)
2377  enddo
2378 
2379  deallocate(tracers_b4adj_target_grid)
2380 
2381  end subroutine cleanup_target_atm_b4adj_data
2382 
2385  subroutine cleanup_all_target_atm_data
2388 
2389  implicit none
2390 
2391  integer :: rc
2392 
2393  print*,"- DESTROY LOCAL TARGET GRID ATMOSPHERIC FIELDS."
2394 
2395  call esmf_fielddestroy(pres_target_grid, rc=rc)
2396  call esmf_fielddestroy(xwind_target_grid, rc=rc)
2397  call esmf_fielddestroy(ywind_target_grid, rc=rc)
2398  call esmf_fielddestroy(zwind_target_grid, rc=rc)
2399  call esmf_fielddestroy(xwind_s_target_grid, rc=rc)
2400  call esmf_fielddestroy(ywind_s_target_grid, rc=rc)
2401  call esmf_fielddestroy(zwind_s_target_grid, rc=rc)
2402  call esmf_fielddestroy(xwind_w_target_grid, rc=rc)
2403  call esmf_fielddestroy(ywind_w_target_grid, rc=rc)
2404  call esmf_fielddestroy(zwind_w_target_grid, rc=rc)
2405 
2407 
2408  end subroutine cleanup_all_target_atm_data
2409 
2410  end module atmosphere
subroutine compute_zh
Compute vertical level height.
+
subroutine newps(localpet)
Computes adjusted surface pressure given a new terrain height.
+
type(esmf_field) ywind_w_target_grid
y-component wind, &#39;west&#39; edge
Definition: atmosphere.F90:97
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public num_tracers_input
Number of atmospheric tracers in input file.
+
type(esmf_field), public v_w_target_grid
V-wind, &#39;west&#39; edge of grid cell.
+
integer, public lev_thomp_mp_climo
number of vert lvls of Thompson climo data
+
type(esmf_field), public longitude_w_target_grid
longitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:90
+
subroutine cleanup_target_atm_b4adj_data
Cleanup atmospheric field (before adjustment) objects.
+
subroutine create_atm_esmf_fields
Create target grid field objects.
Definition: atmosphere.F90:587
+
Read atmospheric data on the input grid.
+
integer, public cycle_mon
Cycle month.
+
type(esmf_field) temp_b4adj_target_grid
temp before vert adj
Definition: atmosphere.F90:85
+
integer, public regional
For regional target grids.
+
type(esmf_field), public qnifa_climo_input_grid
number concentration of ice friendly nuclei.
+
type(esmf_field), public dzdt_input_grid
vert velocity
+
character(len=20), dimension(max_tracers), public tracers
Name of each atmos tracer to be processed.
+
subroutine, public read_input_atm_data(localpet)
Read input grid atmospheric data driver.
+
real(esmf_kind_r8), dimension(:,:), allocatable, public vcoord_target
Vertical coordinate.
+
type(esmf_field) zwind_w_target_grid
z-component wind, &#39;west&#39; edge
Definition: atmosphere.F90:98
+
subroutine, public atmosphere_driver(localpet)
Driver routine to process for atmospheric fields.
Definition: atmosphere.F90:119
+
type(esmf_field), public qnwfa_climo_input_grid
number concentration of water friendly nuclei.
+
integer, public cycle_year
Cycle year.
+
subroutine, public read_thomp_mp_climo_data
Read Thompson climatological MP data file and time interpolate data to current cycle time...
+
subroutine, public read_vcoord_info
Reads model vertical coordinate definition file (as specified by namelist variable vcoord_file_target...
+
type(esmf_field), dimension(:), allocatable, public tracers_input_grid
tracers
+
type(esmf_field), public longitude_s_target_grid
longitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:87
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
type(esmf_field), public qnifa_climo_target_grid
Number concentration of ice friendly aerosols.
+
type(esmf_field), public pres_input_grid
3-d pressure
+
type(esmf_field) zwind_target_grid
z-component wind, grid box center
Definition: atmosphere.F90:89
+
integer, public levp1_input
number of atmos layer interfaces
+
integer, public cycle_day
Cycle day.
+
type(esmf_field), public latitude_s_target_grid
latitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:79
+
type(esmf_field), public ywind_input_grid
y-component wind
+
type(esmf_field), public zh_target_grid
3-d height.
+
type(esmf_field) pres_b4adj_target_grid
3-d pres before terrain adj
Definition: atmosphere.F90:84
+
type(esmf_grid), public target_grid
target grid esmf grid object.
Definition: model_grid.F90:54
+
type(esmf_field) xwind_w_target_grid
x-component wind, &#39;west&#39; edge
Definition: atmosphere.F90:96
+
type(esmf_field), public latitude_w_target_grid
latitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:82
+
type(esmf_field), public delp_target_grid
Pressure thickness.
+
integer, public lev_target
Number of vertical levels.
+
Module to read the Thompson climatological MP data file and set up the associated esmf field and grid...
+
subroutine cleanup_all_target_atm_data
Cleanup target grid atmospheric field objects.
+
logical, public wam_cold_start
When true, cold start for whole atmosphere model.
+
subroutine horiz_interp_thomp_mp_climo
Horizontally interpolate thompson microphysics data to the target model grid.
+
character(len=500), public vcoord_file_target_grid
Vertical coordinate definition file.
+
Module to hold variables and ESMF fields associated with the target grid atmospheric data...
+
subroutine newpr1(localpet)
Computes 3-D pressure given an adjusted surface pressure.
Definition: atmosphere.F90:949
+
type(esmf_field) pres_target_grid
3-d pressure
Definition: atmosphere.F90:83
+
type(esmf_field) zwind_s_target_grid
z-component wind, &#39;south&#39; edge
Definition: atmosphere.F90:95
+
type(esmf_field) ywind_s_target_grid
y-component wind, &#39;south&#39; edge
Definition: atmosphere.F90:94
+
type(esmf_field) terrain_interp_to_target_grid
Input grid terrain interpolated to target grid.
Definition: atmosphere.F90:86
+
type(esmf_field), public terrain_input_grid
terrain height
+
subroutine convert_winds_to_uv
Convert 3-d component winds to u and v.
Definition: atmosphere.F90:780
+
type(esmf_field), public ps_input_grid
surface pressure
+
type(esmf_field) xwind_s_target_grid
x-component wind, &#39;south&#39; edge
Definition: atmosphere.F90:93
+
character(len=500), public atm_weight_file
File containing pre-computed weights to horizontally interpolate atmospheric fields.
+
type(esmf_field), public qnwfa_climo_target_grid
Number concentration of water friendly aerosols.
+
type(esmf_field), public v_s_target_grid
V-wind, &#39;south&#39; edge of grid cell.
+
type(esmf_field) zwind_b4adj_target_grid
z-component wind, before vert adj
Definition: atmosphere.F90:92
+
type(esmf_field) thomp_pres_climo_b4adj_target_grid
pressure of each level on target grid
Definition: atmosphere.F90:106
+
integer, public nvcoord_target
Number of vertical coordinate variables.
+
type(esmf_field) xwind_target_grid
x-component wind, grid box center
Definition: atmosphere.F90:87
+
subroutine gettemp(iday, xlat, pr, np, pf, temp, n_o, n_o2, n_n2)
Routine that computes temperature and neutral density values utilizing MSIS 2.1.
+
type(esmf_field) ywind_target_grid
y-component wind, grid box center
Definition: atmosphere.F90:88
+
type(esmf_field), public u_s_target_grid
U-wind, &#39;south&#39; edge of grid cell.
+
type(esmf_field), public ps_target_grid
Surface pressure.
+
type(esmf_field), dimension(:), allocatable tracers_b4adj_target_grid
tracers before vert adj
Definition: atmosphere.F90:81
+
type(esmf_field), public xwind_input_grid
x-component wind
+
type(esmf_field), public u_w_target_grid
U-wind, &#39;west&#39; edge of grid cell.
+
subroutine, public cleanup_input_atm_data
Free up memory associated with atm data.
+
type(esmf_field), public thomp_pres_climo_input_grid
3-d pressure of the Thompson climo data points
+
Process atmospheric fields.
Definition: atmosphere.F90:19
+
subroutine, public cleanup_thomp_mp_climo_input_data
Free up memory associated with this module.
+
integer, public num_tracers
Number of atmospheric tracers to be processed.
+
type(esmf_field), public temp_input_grid
temperature
+
type(esmf_field), public terrain_target_grid
terrain height target grid
Definition: model_grid.F90:96
+
type(esmf_field) ps_b4adj_target_grid
sfc pres before terrain adj
Definition: atmosphere.F90:82
+
type(esmf_field), public temp_target_grid
Temperautre.
+
integer, public levp1_target
Number of vertical levels plus 1.
+
character(len=500), public wam_parm_file
Full path to msis21.parm for WAM initialization.
+
logical, public use_thomp_mp_climo
When true, read and process Thompson MP climatological tracers.
+
type(esmf_field), dimension(:), allocatable, public tracers_target_grid
Tracers.
+
integer, public cycle_hour
Cycle hour.
+
integer, public lev_input
number of atmospheric layers
+
type(esmf_field), public dzdt_target_grid
Vertical velocity.
+
type(esmf_field) qnifa_climo_b4adj_target_grid
number concentration of ice friendly aerosols before vert adj
Definition: atmosphere.F90:102
+
type(esmf_field) xwind_b4adj_target_grid
x-component wind, before vert adj
Definition: atmosphere.F90:90
+
subroutine, public cleanup_atmosphere_target_data
Free up memory for fields and variables in this module.
+
subroutine create_atm_b4adj_esmf_fields
Create target grid field objects to hold data before vertical interpolation.
Definition: atmosphere.F90:495
+
type(esmf_field) ywind_b4adj_target_grid
y-component wind, before vert adj
Definition: atmosphere.F90:91
+
type(esmf_field), public zwind_input_grid
z-component wind
+
type(esmf_field) dzdt_b4adj_target_grid
vertical vel before vert adj
Definition: atmosphere.F90:80
+
type(esmf_field) qnwfa_climo_b4adj_target_grid
number concentration of water friendly aerosols before vert adj
Definition: atmosphere.F90:104
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.html b/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.html new file mode 100644 index 000000000..2e908d182 --- /dev/null +++ b/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.html @@ -0,0 +1,183 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atmosphere_target_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atmosphere_target_data.F90 File Reference
+
+
+ +

Define atmospheric target data variables. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  atmosphere_target_data
 Module to hold variables and ESMF fields associated with the target grid atmospheric data.
 
+ + + + +

+Functions/Subroutines

subroutine, public atmosphere_target_data::cleanup_atmosphere_target_data
 Free up memory for fields and variables in this module. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field), public atmosphere_target_data::delp_target_grid
 Pressure thickness. More...
 
type(esmf_field), public atmosphere_target_data::dzdt_target_grid
 Vertical velocity. More...
 
integer, public atmosphere_target_data::lev_target
 Number of vertical levels. More...
 
integer, public atmosphere_target_data::levp1_target
 Number of vertical levels plus 1. More...
 
integer, public atmosphere_target_data::nvcoord_target
 Number of vertical coordinate variables. More...
 
type(esmf_field), public atmosphere_target_data::ps_target_grid
 Surface pressure. More...
 
type(esmf_field), public atmosphere_target_data::qnifa_climo_target_grid
 Number concentration of ice friendly aerosols. More...
 
type(esmf_field), public atmosphere_target_data::qnwfa_climo_target_grid
 Number concentration of water friendly aerosols. More...
 
type(esmf_field), public atmosphere_target_data::temp_target_grid
 Temperautre. More...
 
type(esmf_field), dimension(:), allocatable, public atmosphere_target_data::tracers_target_grid
 Tracers. More...
 
type(esmf_field), public atmosphere_target_data::u_s_target_grid
 U-wind, 'south' edge of grid cell. More...
 
type(esmf_field), public atmosphere_target_data::u_w_target_grid
 U-wind, 'west' edge of grid cell. More...
 
type(esmf_field), public atmosphere_target_data::v_s_target_grid
 V-wind, 'south' edge of grid cell. More...
 
type(esmf_field), public atmosphere_target_data::v_w_target_grid
 V-wind, 'west' edge of grid cell. More...
 
real(esmf_kind_r8), dimension(:,:), allocatable, public atmosphere_target_data::vcoord_target
 Vertical coordinate. More...
 
type(esmf_field), public atmosphere_target_data::zh_target_grid
 3-d height. More...
 
+

Detailed Description

+

Define atmospheric target data variables.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file atmosphere_target_data.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.js b/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90.js new file mode 100644 index 000000000..36b716045 --- /dev/null +++ b/ver-1.11.0/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/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90_source.html b/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90_source.html new file mode 100644 index 000000000..2e27c6e7e --- /dev/null +++ b/ver-1.11.0/chgres_cube/atmosphere__target__data_8F90_source.html @@ -0,0 +1,125 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/atmosphere_target_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
atmosphere_target_data.F90
+
+
+Go to the documentation of this file.
1 
4 
10 
11  use esmf
12 
13  implicit none
14 
15  private
16 
17  integer, public :: lev_target
18  integer, public :: levp1_target
19  integer, public :: nvcoord_target
20 
21  real(esmf_kind_r8), allocatable, public :: vcoord_target(:,:)
22 
23  type(esmf_field), public :: delp_target_grid
24  type(esmf_field), public :: dzdt_target_grid
25  type(esmf_field), public :: ps_target_grid
26  type(esmf_field), public :: temp_target_grid
27  type(esmf_field), allocatable, public :: tracers_target_grid(:)
28  type(esmf_field), public :: u_s_target_grid
29  type(esmf_field), public :: v_s_target_grid
30  type(esmf_field), public :: u_w_target_grid
31  type(esmf_field), public :: v_w_target_grid
32  type(esmf_field), public :: zh_target_grid
33  type(esmf_field), public :: qnifa_climo_target_grid
35  type(esmf_field), public :: qnwfa_climo_target_grid
37 
39 
40  contains
41 
46 
47  use program_setup, only : num_tracers
48 
49  implicit none
50 
51  integer :: i, rc
52 
53  print*,"- DESTROY TARGET GRID ATMOSPHERIC FIELDS."
54 
55  if (esmf_fieldiscreated(delp_target_grid)) call esmf_fielddestroy(delp_target_grid, rc=rc)
56  if (esmf_fieldiscreated(dzdt_target_grid)) call esmf_fielddestroy(dzdt_target_grid, rc=rc)
57  if (esmf_fieldiscreated(ps_target_grid)) call esmf_fielddestroy(ps_target_grid, rc=rc)
58  if (esmf_fieldiscreated(temp_target_grid)) call esmf_fielddestroy(temp_target_grid, rc=rc)
59  if (esmf_fieldiscreated(u_s_target_grid)) call esmf_fielddestroy(u_s_target_grid, rc=rc)
60  if (esmf_fieldiscreated(v_s_target_grid)) call esmf_fielddestroy(v_s_target_grid, rc=rc)
61  if (esmf_fieldiscreated(u_w_target_grid)) call esmf_fielddestroy(u_w_target_grid, rc=rc)
62  if (esmf_fieldiscreated(v_w_target_grid)) call esmf_fielddestroy(v_w_target_grid, rc=rc)
63  if (esmf_fieldiscreated(zh_target_grid)) call esmf_fielddestroy(zh_target_grid, rc=rc)
64 
65  do i = 1, num_tracers
66  if (esmf_fieldiscreated(tracers_target_grid(i))) call esmf_fielddestroy(tracers_target_grid(i), rc=rc)
67  enddo
68 
69  if (allocated (tracers_target_grid)) deallocate(tracers_target_grid)
70 
71  if (esmf_fieldiscreated(qnifa_climo_target_grid)) then
72  call esmf_fielddestroy(qnifa_climo_target_grid, rc=rc)
73  endif
74 
75  if (esmf_fieldiscreated(qnwfa_climo_target_grid)) then
76  call esmf_fielddestroy(qnwfa_climo_target_grid, rc=rc)
77  endif
78 
79  if (allocated (vcoord_target)) deallocate(vcoord_target)
80 
81  end subroutine cleanup_atmosphere_target_data
82 
83  end module atmosphere_target_data
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
type(esmf_field), public v_w_target_grid
V-wind, &#39;west&#39; edge of grid cell.
+
real(esmf_kind_r8), dimension(:,:), allocatable, public vcoord_target
Vertical coordinate.
+
type(esmf_field), public qnifa_climo_target_grid
Number concentration of ice friendly aerosols.
+
type(esmf_field), public zh_target_grid
3-d height.
+
type(esmf_field), public delp_target_grid
Pressure thickness.
+
integer, public lev_target
Number of vertical levels.
+
Module to hold variables and ESMF fields associated with the target grid atmospheric data...
+
type(esmf_field), public qnwfa_climo_target_grid
Number concentration of water friendly aerosols.
+
type(esmf_field), public v_s_target_grid
V-wind, &#39;south&#39; edge of grid cell.
+
integer, public nvcoord_target
Number of vertical coordinate variables.
+
type(esmf_field), public u_s_target_grid
U-wind, &#39;south&#39; edge of grid cell.
+
type(esmf_field), public ps_target_grid
Surface pressure.
+
type(esmf_field), public u_w_target_grid
U-wind, &#39;west&#39; edge of grid cell.
+
integer, public num_tracers
Number of atmospheric tracers to be processed.
+
type(esmf_field), public temp_target_grid
Temperautre.
+
integer, public levp1_target
Number of vertical levels plus 1.
+
type(esmf_field), dimension(:), allocatable, public tracers_target_grid
Tracers.
+
type(esmf_field), public dzdt_target_grid
Vertical velocity.
+
subroutine, public cleanup_atmosphere_target_data
Free up memory for fields and variables in this module.
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/bc_s.png b/ver-1.11.0/chgres_cube/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/bdwn.png b/ver-1.11.0/chgres_cube/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/chgres.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
chgres.F90 File Reference
+
+
+ +

Initialize an FV3 model run. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Functions/Subroutines

program chgres
 Initialize an FV3 model run. More...
 
+

Detailed Description

+

Initialize an FV3 model run.

+
Author
George Gayno NOAA/EMC
+ +

Definition in file chgres.F90.

+

Function/Subroutine Documentation

+ +

◆ chgres()

+ +
+
+ + + + + + + +
program chgres ()
+
+ +

Initialize an FV3 model run.

+

Initialize an FV3 run using history or restart data from another FV3 run, the spectral GFS, and a few other models. Converts atmospheric, surface and nst data.

+

This file reads a configuration namelist.

+

Link the configuration namelist to ./fort.41. Then run the program with a multiple of six mpi tasks (an ESMF library requirement for fv3 cubed sphere grids).

+
Note
For variable names “input” refers to the data input to the program (i.e., GRIB2, NEMSIO, NetCDF). “Target” refers to the target or FV3 model grid.
+
Author
George Gayno NOAA/EMC
+
Returns
0 for success, error code otherwise.
+ +

Definition at line 24 of file chgres.F90.

+ +

References atmosphere::atmosphere_driver(), model_grid::cleanup_input_target_grid_data(), program_setup::convert_atm, program_setup::convert_sfc, model_grid::define_input_grid(), model_grid::define_target_grid(), program_setup::read_setup_namelist(), program_setup::read_varmap(), and surface::surface_driver().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/chgres_8F90.js b/ver-1.11.0/chgres_cube/chgres_8F90.js new file mode 100644 index 000000000..992e12e9b --- /dev/null +++ b/ver-1.11.0/chgres_cube/chgres_8F90.js @@ -0,0 +1,4 @@ +var chgres_8F90 = +[ + [ "chgres", "chgres_8F90.html#ad344b0a3c44aec05c1d3d8170d5527b1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/chgres_8F90_source.html b/ver-1.11.0/chgres_cube/chgres_8F90_source.html new file mode 100644 index 000000000..98fe33d51 --- /dev/null +++ b/ver-1.11.0/chgres_cube/chgres_8F90_source.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/chgres.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
chgres.F90
+
+
+Go to the documentation of this file.
1 
5 
24  program chgres
25 
26  use mpi
27  use esmf
28 
29  use atmosphere, only : atmosphere_driver
30 
31  use program_setup, only : read_setup_namelist, &
32  read_varmap, &
33  convert_atm, &
35 
36  use model_grid, only : define_target_grid, &
39 
40  use surface, only : surface_driver
41 
42  use utilities, only : error_handler
43  implicit none
44 
45  integer :: ierr, localpet, npets
46 
47  type(esmf_vm) :: vm
48 
49 !-------------------------------------------------------------------------
50 ! Initialize mpi and esmf environment.
51 !-------------------------------------------------------------------------
52 
53  call mpi_init(ierr)
54 
55  print*,"- INITIALIZE ESMF"
56  call esmf_initialize(rc=ierr)
57  if(esmf_logfounderror(rctocheck=ierr,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
58  call error_handler("INITIALIZING ESMF", ierr)
59 
60  print*,"- CALL VMGetGlobal"
61  call esmf_vmgetglobal(vm, rc=ierr)
62  if(esmf_logfounderror(rctocheck=ierr,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
63  call error_handler("IN VMGetGlobal", ierr)
64 
65  print*,"- CALL VMGet"
66  call esmf_vmget(vm, localpet=localpet, petcount=npets, rc=ierr)
67  if(esmf_logfounderror(rctocheck=ierr,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
68  call error_handler("IN VMGet", ierr)
69 
70  print*,'- NPETS IS ',npets
71  print*,'- LOCAL PET ',localpet
72 
73 !-------------------------------------------------------------------------
74 ! Read program configuration namelist.
75 !-------------------------------------------------------------------------
76 
78 
79 !-------------------------------------------------------------------------
80 ! Read variable mapping file (used for grib2 input data only).
81 !-------------------------------------------------------------------------
82 
83  call read_varmap
84 
85 !-------------------------------------------------------------------------
86 ! Create esmf grid objects for input and target grids.
87 !-------------------------------------------------------------------------
88 
89  call define_target_grid(localpet, npets)
90 
91  call define_input_grid(localpet, npets)
92 
93 !-------------------------------------------------------------------------
94 ! Convert atmospheric fields
95 !-------------------------------------------------------------------------
96 
97  if (convert_atm) then
98 
99  call atmosphere_driver(localpet)
100 
101  end if
102 
103 !-------------------------------------------------------------------------
104 ! Convert surface/nsst fields
105 !-------------------------------------------------------------------------
106 
107  if (convert_sfc) then
108 
109  call surface_driver(localpet)
110 
111  end if
112 
114 
115  print*,"- CALL ESMF_finalize"
116  call esmf_finalize(endflag=esmf_end_keepmpi, rc=ierr)
117 
118  call mpi_finalize(ierr)
119 
120  print*,"- DONE."
121 
122  end program chgres
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
subroutine, public cleanup_input_target_grid_data
Deallocate all esmf grid objects.
+
subroutine, public surface_driver(localpet)
Driver routine to process surface/nst data.
Definition: surface.F90:108
+
subroutine, public atmosphere_driver(localpet)
Driver routine to process for atmospheric fields.
Definition: atmosphere.F90:119
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
subroutine, public read_varmap
Reads the variable mapping table, which is required for initializing with GRIB2 data.
+
logical, public convert_sfc
Convert sfc data when true.
+
subroutine, public define_target_grid(localpet, npets)
Setup the esmf grid object for the target grid.
Definition: model_grid.F90:888
+
logical, public convert_atm
Convert atmospheric data when true.
+
subroutine, public define_input_grid(localpet, npets)
Driver routine to setup the esmf grid object for the input grid.
Definition: model_grid.F90:117
+
subroutine, public read_setup_namelist(filename)
Reads program configuration namelist.
+
Process atmospheric fields.
Definition: atmosphere.F90:19
+
Process surface and nst fields.
Definition: surface.F90:21
+
program chgres
Initialize an FV3 model run.
Definition: chgres.F90:24
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/chgres__cube_8md_source.html b/ver-1.11.0/chgres_cube/chgres__cube_8md_source.html new file mode 100644 index 000000000..4d63853e8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/chgres__cube_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/docs/chgres_cube.md Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/docs/chgres_cube.md
+
+
+
1 # chgres_cube
2 
3 # Introduction
4 
5 The chgres_cube program creates initial condition files to coldstart
6 the forecast model.
7 
8 This document is part of the <a href="../index.html">UFS_UTILS
9 documentation</a>.
10 
11 The chgres_cube program is part of the
12 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/classes.html b/ver-1.11.0/chgres_cube/classes.html new file mode 100644 index 000000000..0067eb6fd --- /dev/null +++ b/ver-1.11.0/chgres_cube/classes.html @@ -0,0 +1,113 @@ + + + + + + + +chgres_cube: Data Types + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Types
+
+
+ + + + + + +
  r  
+
realptr_3d (surface)   
realptr_2d (surface)   
+ +
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/closed.png b/ver-1.11.0/chgres_cube/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.html b/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.html new file mode 100644 index 000000000..e75e6a7b2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.html @@ -0,0 +1,160 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
chgres_cube.fd Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  atm_input_data.F90 [code]
 Read atmospheric data from GRIB2, NEMSIO and NetCDF files.
 
file  atmosphere.F90 [code]
 Process atmospheric fields.
 
file  atmosphere_target_data.F90 [code]
 Define atmospheric target data variables.
 
file  chgres.F90 [code]
 Initialize an FV3 model run.
 
file  grib2_util.F90 [code]
 Utilities for use when reading grib2 data.
 
file  model_grid.F90 [code]
 Specify input and target model grids.
 
file  nst_input_data.F90 [code]
 Read NST surface data from NEMSIO and NetCDF files.
 
file  program_setup.F90 [code]
 Set up program execution.
 
file  search_util.F90 [code]
 Replace undefined surface values.
 
file  sfc_input_data.F90 [code]
 Read atmospheric and surface data from GRIB2, NEMSIO and NetCDF files.
 
file  static_data.F90 [code]
 Process static surface data.
 
file  surface.F90 [code]
 Process land, sea/lake ice, open water/Near Sea Surface Temperature (NSST) fields.
 
file  surface_target_data.F90 [code]
 Define target grid surface data variables.
 
file  thompson_mp_climo_data.F90 [code]
 Process Thompson climatological MP data.
 
file  utils.F90 [code]
 Contains utility routines.
 
file  wam_climo_data.f90 [code]
 Process vertical profile climatologic data for WAM.
 
file  write_data.F90 [code]
 Writes the tiled and header files expected by the forecast model.
 
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.js b/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.js new file mode 100644 index 000000000..4e5a3ad23 --- /dev/null +++ b/ver-1.11.0/chgres_cube/dir_17310f848ad51b2f72dd722d66ff1321.js @@ -0,0 +1,20 @@ +var dir_17310f848ad51b2f72dd722d66ff1321 = +[ + [ "atm_input_data.F90", "atm__input__data_8F90.html", "atm__input__data_8F90" ], + [ "atmosphere.F90", "atmosphere_8F90.html", "atmosphere_8F90" ], + [ "atmosphere_target_data.F90", "atmosphere__target__data_8F90.html", "atmosphere__target__data_8F90" ], + [ "chgres.F90", "chgres_8F90.html", "chgres_8F90" ], + [ "grib2_util.F90", "grib2__util_8F90.html", "grib2__util_8F90" ], + [ "model_grid.F90", "model__grid_8F90.html", "model__grid_8F90" ], + [ "nst_input_data.F90", "nst__input__data_8F90.html", "nst__input__data_8F90" ], + [ "program_setup.F90", "program__setup_8F90.html", "program__setup_8F90" ], + [ "search_util.F90", "search__util_8F90.html", "search__util_8F90" ], + [ "sfc_input_data.F90", "sfc__input__data_8F90.html", "sfc__input__data_8F90" ], + [ "static_data.F90", "static__data_8F90.html", "static__data_8F90" ], + [ "surface.F90", "surface_8F90.html", "surface_8F90" ], + [ "surface_target_data.F90", "surface__target__data_8F90.html", "surface__target__data_8F90" ], + [ "thompson_mp_climo_data.F90", "thompson__mp__climo__data_8F90.html", "thompson__mp__climo__data_8F90" ], + [ "utils.F90", "utils_8F90.html", "utils_8F90" ], + [ "wam_climo_data.f90", "wam__climo__data_8f90.html", "wam__climo__data_8f90" ], + [ "write_data.F90", "write__data_8F90.html", "write__data_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..acc526576 --- /dev/null +++ b/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
sorc Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..dd122c99c --- /dev/null +++ b/ver-1.11.0/chgres_cube/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "chgres_cube.fd", "dir_17310f848ad51b2f72dd722d66ff1321.html", "dir_17310f848ad51b2f72dd722d66ff1321" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/doc.png b/ver-1.11.0/chgres_cube/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/doxygen.css b/ver-1.11.0/chgres_cube/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/chgres_cube/doxygen.png b/ver-1.11.0/chgres_cube/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/dynsections.js b/ver-1.11.0/chgres_cube/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/chgres_cube/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +chgres_cube: File List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + +
  sorc
  chgres_cube.fd
 atm_input_data.F90Read atmospheric data from GRIB2, NEMSIO and NetCDF files
 atmosphere.F90Process atmospheric fields
 atmosphere_target_data.F90Define atmospheric target data variables
 chgres.F90Initialize an FV3 model run
 grib2_util.F90Utilities for use when reading grib2 data
 model_grid.F90Specify input and target model grids
 nst_input_data.F90Read NST surface data from NEMSIO and NetCDF files
 program_setup.F90Set up program execution
 search_util.F90Replace undefined surface values
 sfc_input_data.F90Read atmospheric and surface data from GRIB2, NEMSIO and NetCDF files
 static_data.F90Process static surface data
 surface.F90Process land, sea/lake ice, open water/Near Sea Surface Temperature (NSST) fields
 surface_target_data.F90Define target grid surface data variables
 thompson_mp_climo_data.F90Process Thompson climatological MP data
 utils.F90Contains utility routines
 wam_climo_data.f90Process vertical profile climatologic data for WAM
 write_data.F90Writes the tiled and header files expected by the forecast model
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/files_dup.js b/ver-1.11.0/chgres_cube/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/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/ver-1.11.0/chgres_cube/folderclosed.png b/ver-1.11.0/chgres_cube/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/functions.html b/ver-1.11.0/chgres_cube/functions.html new file mode 100644 index 000000000..b46f3499c --- /dev/null +++ b/ver-1.11.0/chgres_cube/functions.html @@ -0,0 +1,106 @@ + + + + + + + +chgres_cube: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented data types members with links to the data structure documentation for each member
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/functions_vars.html b/ver-1.11.0/chgres_cube/functions_vars.html new file mode 100644 index 000000000..bd3254dfc --- /dev/null +++ b/ver-1.11.0/chgres_cube/functions_vars.html @@ -0,0 +1,106 @@ + + + + + + + +chgres_cube: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/ver-1.11.0/chgres_cube/globals.html b/ver-1.11.0/chgres_cube/globals.html new file mode 100644 index 000000000..1f52626fa --- /dev/null +++ b/ver-1.11.0/chgres_cube/globals.html @@ -0,0 +1,111 @@ + + + + + + + +chgres_cube: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/globals_func.html b/ver-1.11.0/chgres_cube/globals_func.html new file mode 100644 index 000000000..c3739ec43 --- /dev/null +++ b/ver-1.11.0/chgres_cube/globals_func.html @@ -0,0 +1,111 @@ + + + + + + + +chgres_cube: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/grib2__util_8F90.html b/ver-1.11.0/chgres_cube/grib2__util_8F90.html new file mode 100644 index 000000000..c41b49d75 --- /dev/null +++ b/ver-1.11.0/chgres_cube/grib2__util_8F90.html @@ -0,0 +1,140 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/grib2_util.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
grib2_util.F90 File Reference
+
+
+ +

Utilities for use when reading grib2 data. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  grib2_util
 Utilities for use when reading grib2 data.
 
+ + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public grib2_util::convert_omega (omega, p, t, q, clb, cub)
 Convert omega to vertical velocity. More...
 
elemental real function, public grib2_util::fpvsnew (t)
 Compute saturation vapor pressure. More...
 
subroutine, public grib2_util::rh2spfh (rh_sphum, p, t)
 Convert relative humidity to specific humidity. More...
 
subroutine, public grib2_util::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...
 
+

Detailed Description

+

Utilities for use when reading grib2 data.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file grib2_util.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/grib2__util_8F90.js b/ver-1.11.0/chgres_cube/grib2__util_8F90.js new file mode 100644 index 000000000..f15c9a538 --- /dev/null +++ b/ver-1.11.0/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/ver-1.11.0/chgres_cube/grib2__util_8F90_source.html b/ver-1.11.0/chgres_cube/grib2__util_8F90_source.html new file mode 100644 index 000000000..0644a729b --- /dev/null +++ b/ver-1.11.0/chgres_cube/grib2__util_8F90_source.html @@ -0,0 +1,113 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/grib2_util.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
grib2_util.F90
+
+
+Go to the documentation of this file.
1 
4 
12 module grib2_util
13 
14 use esmf
15 
16 use model_grid, only : i_input, j_input
17 
18 implicit none
19 
20 public :: rh2spfh
21 public :: convert_omega
22 public :: rh2spfh_gfs
23 public :: fpvsnew
24 
25 contains
26 
37  subroutine rh2spfh(rh_sphum,p,t)
38 
39  implicit none
40  real,parameter :: alpha=-9.477e-4 , & !K^-1,
41  tnot=273.15, & !K
42  lnot=2.5008e6, & !JKg^-1
43  rv=461.51, & !JKg^-1K^-1
44  esnot=611.21 !Pa
45 
46  real(esmf_kind_r4), intent(inout), dimension(i_input,j_input) ::rh_sphum
47  real(esmf_kind_r8), intent(in) :: p, t(i_input,j_input)
48 
49  real, dimension(i_input,j_input) :: es, e, rh
50 
51  print*,"- CONVERT RH TO SPFH AT LEVEL ", p
52 
53  rh = rh_sphum
54  !print *, 'T = ', T, ' RH = ', RH, ' P = ', P
55  es = esnot * exp( lnot/rv * ((t-tnot)/(t*tnot) + alpha * log(t/tnot) - alpha * (t-tnot)/ t))
56  !print *, 'es = ', es
57  e = rh * es / 100.0
58  !print *, 'e = ', e
59  rh_sphum = real((0.622 * e / p),kind=esmf_kind_r4)
60  !print *, 'q = ', sphum
61 
62  !if (P .eq. 100000.0) THEN
63  !print *, 'T = ', t, ' RH = ', rh, ' P = ', p, ' es = ', es, ' e = ', e, ' q = ', rh_sphum
64  !end if
65 
66 end subroutine rh2spfh
67 
80  subroutine rh2spfh_gfs(rh_sphum,p,t)
81 
82  implicit none
83 
84  integer kind_phys
85 
86  parameter(kind_phys = selected_real_kind(13,60)) ! the '60' maps to 64-bit real
87 
88 
89  real(kind=kind_phys),parameter:: con_rd =2.8705e+2 ! gas constant air (J/kg/K)
90  real(kind=kind_phys),parameter:: con_rv =4.6150e+2 ! gas constant H2O (J/kg/K)
91 
92  real(kind=kind_phys),parameter:: con_eps =con_rd/con_rv
93  real(kind=kind_phys),parameter:: con_epsm1 =con_rd/con_rv-1.
94 
95 
96 
97 
98  real(esmf_kind_r4), intent(inout), dimension(i_input,j_input) ::rh_sphum
99  real(esmf_kind_r8), intent(in) :: p, t(i_input,j_input)
100 
101  real, dimension(i_input,j_input) :: qc, rh
102  real :: es
103  integer :: i,j
104 
105  print*,"- CONVERT RH TO SPFH AT LEVEL ", p
106 
107  rh = rh_sphum
108 
109 do j=1,j_input
110  do i=1,i_input
111  es = min(fpvsnew(t(i,j)),p)
112  qc(i,j) = con_eps*es/(p+con_epsm1*es)
113  rh_sphum(i,j) = real((rh(i,j)*QC(i,j)/100.0),kind=esmf_kind_r4)
114  end do
115 end do
116 
117 
118  !print *, 'T = ', T, ' RH = ', RH, ' P = ', P
119  !print *, 'q = ', sphum
120 
121 
122 end subroutine rh2spfh_gfs
123 
124 
131 
132 !
133 !-------------------------------------------------------------------------------------
134 !
135  elemental function fpvsnew(t)
136 !
137  implicit none
138  integer,parameter:: nxpvs=7501
139  real,parameter:: con_ttp =2.7316e+2 ! temp at H2O 3pt
140  real,parameter:: con_psat =6.1078e+2 ! pres at H2O 3pt
141  real,parameter:: con_cvap =1.8460e+3 ! spec heat H2O gas (J/kg/K)
142  real,parameter:: con_cliq =4.1855e+3 ! spec heat H2O liq
143  real,parameter:: con_hvap =2.5000e+6 ! lat heat H2O cond
144  real,parameter:: con_rv =4.6150e+2 ! gas constant H2O
145  real,parameter:: con_csol =2.1060e+3 ! spec heat H2O ice
146  real,parameter:: con_hfus =3.3358e+5 ! lat heat H2O fusion
147  real,parameter:: tliq=con_ttp
148  real,parameter:: tice=con_ttp-20.0
149  real,parameter:: dldtl=con_cvap-con_cliq
150  real,parameter:: heatl=con_hvap
151  real,parameter:: xponal=-dldtl/con_rv
152  real,parameter:: xponbl=-dldtl/con_rv+heatl/(con_rv*con_ttp)
153  real,parameter:: dldti=con_cvap-con_csol
154  real,parameter:: heati=con_hvap+con_hfus
155  real,parameter:: xponai=-dldti/con_rv
156  real,parameter:: xponbi=-dldti/con_rv+heati/(con_rv*con_ttp)
157  real tr,w,pvl,pvi
158  real fpvsnew
159  real(esmf_kind_r8),intent(in):: t
160  integer jx
161  real xj,x,tbpvs(nxpvs),xp1
162  real xmin,xmax,xinc,c2xpvs,c1xpvs
163 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
164  xmin=180.0
165  xmax=330.0
166  xinc=(xmax-xmin)/(nxpvs-1)
167 ! c1xpvs=1.-xmin/xinc
168  c2xpvs=1./xinc
169  c1xpvs=1.-xmin*c2xpvs
170 ! xj=min(max(c1xpvs+c2xpvs*t,1.0),real(nxpvs,krealfp))
171  xj=min(max(c1xpvs+c2xpvs*t,1.0),float(nxpvs))
172  jx=int(min(xj,float(nxpvs)-1.0))
173  x=xmin+(jx-1)*xinc
174 
175  tr=con_ttp/x
176  if(x>=tliq) then
177  tbpvs(jx)=con_psat*(tr**xponal)*exp(xponbl*(1.-tr))
178  elseif(x<tice) then
179  tbpvs(jx)=con_psat*(tr**xponai)*exp(xponbi*(1.-tr))
180  else
181  w=(t-tice)/(tliq-tice)
182  pvl=con_psat*(tr**xponal)*exp(xponbl*(1.-tr))
183  pvi=con_psat*(tr**xponai)*exp(xponbi*(1.-tr))
184  tbpvs(jx)=w*pvl+(1.-w)*pvi
185  endif
186 
187  xp1=xmin+(jx-1+1)*xinc
188 
189  tr=con_ttp/xp1
190  if(xp1>=tliq) then
191  tbpvs(jx+1)=con_psat*(tr**xponal)*exp(xponbl*(1.-tr))
192  elseif(xp1<tice) then
193  tbpvs(jx+1)=con_psat*(tr**xponai)*exp(xponbi*(1.-tr))
194  else
195  w=(t-tice)/(tliq-tice)
196  pvl=con_psat*(tr**xponal)*exp(xponbl*(1.-tr))
197  pvi=con_psat*(tr**xponai)*exp(xponbi*(1.-tr))
198  tbpvs(jx+1)=w*pvl+(1.-w)*pvi
199  endif
200 
201  fpvsnew=tbpvs(jx)+(xj-jx)*(tbpvs(jx+1)-tbpvs(jx))
202 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
203  end function fpvsnew
204 
205 
206 
217 subroutine convert_omega(omega,p,t,q,clb,cub)
219  implicit none
220  real(esmf_kind_r8), pointer :: omega(:,:,:), p(:,:,:), t(:,:,:), q(:,:,:),omtmp,ptmp
221 
222  integer :: clb(3), cub(3), i ,j, k
223 
224  real, parameter :: rd = 287.15_esmf_kind_r8, & !JKg^-1K^-1
225  rv=461.51_esmf_kind_r8, & !JKg^-1K^-1
226  g = 9.81_esmf_kind_r8 ! ms^-2
227 
228  real(esmf_kind_r8) :: tv, w
229 
230  do k = clb(3),cub(3)
231  do j = clb(2),cub(2)
232  do i = clb(1),cub(1)
233  tv = t(i,j,k)*(1+rd/rv*q(i,j,k))
234  omtmp=>omega(i,j,k)
235  ptmp=>p(i,j,k)
236 
237  w = -1 * omtmp * rd * tv / (ptmp * g)
238  omega(i,j,k)=w
239  enddo
240  enddo
241  enddo
242 
243 end subroutine convert_omega
244 
245  end module grib2_util
Utilities for use when reading grib2 data.
Definition: grib2_util.F90:12
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
subroutine, public rh2spfh_gfs(rh_sphum, p, t)
Convert relative humidity to specific humidity (GFS formula) Calculation of saturation water vapor pr...
Definition: grib2_util.F90:81
+
subroutine, public convert_omega(omega, p, t, q, clb, cub)
Convert omega to vertical velocity.
Definition: grib2_util.F90:218
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
elemental real function, public fpvsnew(t)
Compute saturation vapor pressure.
Definition: grib2_util.F90:136
+
subroutine, public rh2spfh(rh_sphum, p, t)
Convert relative humidity to specific humidity.
Definition: grib2_util.F90:38
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/index.html b/ver-1.11.0/chgres_cube/index.html new file mode 100644 index 000000000..4dc6cef32 --- /dev/null +++ b/ver-1.11.0/chgres_cube/index.html @@ -0,0 +1,109 @@ + + + + + + + +chgres_cube: chgres_cube + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
chgres_cube
+
+
+

+Introduction

+

The chgres_cube program creates initial condition files to coldstart the forecast model.

+

This document is part of the UFS_UTILS documentation.

+

The chgres_cube program is part of the UFS_UTILS project.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/jquery.js b/ver-1.11.0/chgres_cube/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/chgres_cube/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+ +
+
model_grid.F90 File Reference
+
+
+ +

Specify input and target model grids. +More...

+ +

Go to the source code of this file.

+
+ + + + +

+Modules

module  model_grid
 Sets up the ESMF grid objects for the input data grid and target FV3 grid.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public model_grid::cleanup_input_target_grid_data
 Deallocate all esmf grid objects. More...
 
subroutine, public model_grid::define_input_grid (localpet, npets)
 Driver routine to setup the esmf grid object for the input grid. More...
 
subroutine model_grid::define_input_grid_gaussian (npets)
 Define grid object for input data on global gaussian grids. More...
 
subroutine model_grid::define_input_grid_grib2 (npets)
 Define input grid object for grib2 input data. More...
 
subroutine model_grid::define_input_grid_mosaic (localpet, npets)
 Define input grid for tiled data using the 'mosaic', 'grid' and orography files. More...
 
subroutine, public model_grid::define_target_grid (localpet, npets)
 Setup the esmf grid object for the target grid. More...
 
subroutine model_grid::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 model_grid::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 model_grid::get_model_mask_terrain (orog_file, idim, jdim, mask, terrain)
 Read the model land mask and terrain for a single tile from the orography file. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

integer, public model_grid::i_input
 i-dimension of input grid (or of each global tile) More...
 
integer, public model_grid::i_target
 i dimension of each global tile, or of a nest, target grid. More...
 
type(esmf_grid), public model_grid::input_grid
 input grid esmf grid object More...
 
character(len=50), public model_grid::input_grid_type = "latlon"
 map projection of input grid More...
 
integer, public model_grid::ip1_input
 i_input plus 1 More...
 
integer, public model_grid::ip1_target
 ip1_target plus 1 More...
 
integer, public model_grid::j_input
 j-dimension of input grid (or of each global tile) More...
 
integer, public model_grid::j_target
 j dimension of each global tile, or of a nest, target grid. More...
 
integer, public model_grid::jp1_input
 j_input plus 1 More...
 
integer, public model_grid::jp1_target
 jp1_target plus 1 More...
 
type(esmf_field), public model_grid::landmask_target_grid
 land mask target grid - '1' land; '0' non-land More...
 
type(esmf_field), public model_grid::latitude_input_grid
 latitude of grid center, input grid More...
 
type(esmf_field), public model_grid::latitude_s_input_grid
 latitude of 'south' edge of grid box, input grid More...
 
type(esmf_field), public model_grid::latitude_s_target_grid
 latitude of 'south' edge of grid box, target grid More...
 
type(esmf_field), public model_grid::latitude_target_grid
 latitude of grid center, target grid More...
 
type(esmf_field), public model_grid::latitude_w_input_grid
 latitude of 'west' edge of grid box, input grid More...
 
type(esmf_field), public model_grid::latitude_w_target_grid
 latitude of 'west' edge of grid box, target grid More...
 
type(esmf_field), public model_grid::longitude_input_grid
 longitude of grid center, input grid More...
 
type(esmf_field), public model_grid::longitude_s_input_grid
 longitude of 'south' edge of grid box, input grid More...
 
type(esmf_field), public model_grid::longitude_s_target_grid
 longitude of 'south' edge of grid box, target grid More...
 
type(esmf_field), public model_grid::longitude_target_grid
 longitude of grid center, target grid More...
 
type(esmf_field), public model_grid::longitude_w_input_grid
 longitude of 'west' edge of grid box, input grid More...
 
type(esmf_field), public model_grid::longitude_w_target_grid
 longitude of 'west' edge of grid box, target grid More...
 
integer, public model_grid::lsoil_target = 4
 Number of soil layers, target grid. More...
 
integer, public model_grid::num_tiles_input_grid
 Number of tiles, input grid. More...
 
integer, public model_grid::num_tiles_target_grid
 Number of tiles, target grid. More...
 
type(esmf_field), public model_grid::seamask_target_grid
 sea mask target grid - '1' non-land; '0' land More...
 
type(esmf_grid), public model_grid::target_grid
 target grid esmf grid object. More...
 
type(esmf_field), public model_grid::terrain_target_grid
 terrain height target grid More...
 
character(len=5), dimension(:), allocatable, public model_grid::tiles_target_grid
 Tile names of target grid. More...
 
+

Detailed Description

+

Specify input and target model grids.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file model_grid.F90.

+
+ + + + + diff --git a/ver-1.11.0/chgres_cube/model__grid_8F90.js b/ver-1.11.0/chgres_cube/model__grid_8F90.js new file mode 100644 index 000000000..c58abf126 --- /dev/null +++ b/ver-1.11.0/chgres_cube/model__grid_8F90.js @@ -0,0 +1,42 @@ +var model__grid_8F90 = +[ + [ "cleanup_input_target_grid_data", "model__grid_8F90.html#a200bf9a04e0664c70a004ef2e4684f68", null ], + [ "define_input_grid", "model__grid_8F90.html#a36c0033acb111e2ec5c8132ed0fa0199", null ], + [ "define_input_grid_gaussian", "model__grid_8F90.html#a38100494e868340aac0afcac251e7ff4", null ], + [ "define_input_grid_grib2", "model__grid_8F90.html#a86f8d9a686ecf5e7170e441a7e41a641", null ], + [ "define_input_grid_mosaic", "model__grid_8F90.html#a805584a781fcc2ac74c551e72c787a05", null ], + [ "define_target_grid", "model__grid_8F90.html#a0d0ed99ee8dd8353bf13ab47074eebb1", null ], + [ "gdt_to_gds", "model__grid_8F90.html#ac6b71e97768b663de2fcce75426b499e", null ], + [ "get_model_latlons", "model__grid_8F90.html#aa0556c652763c8b6310abfee5bb48032", null ], + [ "get_model_mask_terrain", "model__grid_8F90.html#a4860abf33f2f55ecd58fb5728df2c455", null ], + [ "i_input", "model__grid_8F90.html#a82f65a209ac509f7b875033a11c8f732", null ], + [ "i_target", "model__grid_8F90.html#a367ce0e39d8f4d24ea6a09c3e75d3162", null ], + [ "input_grid", "model__grid_8F90.html#a6fe7dceafaecb43b88c95581c8bef5f7", null ], + [ "input_grid_type", "model__grid_8F90.html#aac1f2077acd32917f36682691dbd2529", null ], + [ "ip1_input", "model__grid_8F90.html#a14b39337a9ccda16ca348f21a6a608b3", null ], + [ "ip1_target", "model__grid_8F90.html#af9c1b283e8c80dd9f704c8427db4d085", null ], + [ "j_input", "model__grid_8F90.html#aefd7c70cce6c5f470c80ee7ba0553b1e", null ], + [ "j_target", "model__grid_8F90.html#ae4008286f17a2f603da7de655c555a21", null ], + [ "jp1_input", "model__grid_8F90.html#a80d6893328bfe9c715534573177bcad1", null ], + [ "jp1_target", "model__grid_8F90.html#ae8dcbca4234f1074860ebde7012b5c85", null ], + [ "landmask_target_grid", "model__grid_8F90.html#a6afab6cbbba792a2ea872922f95d6feb", null ], + [ "latitude_input_grid", "model__grid_8F90.html#a0f1a11da8a184d13bd08017cc004d5ae", null ], + [ "latitude_s_input_grid", "model__grid_8F90.html#a914f3c0bf95631eb1d50b3cb6b67ac2a", null ], + [ "latitude_s_target_grid", "model__grid_8F90.html#afab4f0f662e0baa4526361ec0ae521c7", null ], + [ "latitude_target_grid", "model__grid_8F90.html#a2116a7a5b8705b34f2c66af39d811072", null ], + [ "latitude_w_input_grid", "model__grid_8F90.html#ade9cc9af8fe2eeb8d55f705b4f9cf8db", null ], + [ "latitude_w_target_grid", "model__grid_8F90.html#a50df9e05c2198a873bc0178dd1b4668b", null ], + [ "longitude_input_grid", "model__grid_8F90.html#a24aecc78c27241525d39f504b1c211c5", null ], + [ "longitude_s_input_grid", "model__grid_8F90.html#a8bbf374eb9c7cdfb0dadd07f5d52ab2e", null ], + [ "longitude_s_target_grid", "model__grid_8F90.html#af13ff8dcabc000d295d8b75f44dd710d", null ], + [ "longitude_target_grid", "model__grid_8F90.html#abdfd0325317286c1dcbe0ccfdf6ee4d1", null ], + [ "longitude_w_input_grid", "model__grid_8F90.html#a9d22b9cf2b11fe380fead036a530a2a0", null ], + [ "longitude_w_target_grid", "model__grid_8F90.html#a727e94df683ca38a029276509efa2d1e", null ], + [ "lsoil_target", "model__grid_8F90.html#aebe8f265a30b1af1177d42a02049d279", null ], + [ "num_tiles_input_grid", "model__grid_8F90.html#ad5a0922adf7266e1f3a84b9c6b4cb0a3", null ], + [ "num_tiles_target_grid", "model__grid_8F90.html#a3ef9fce75c3c775bfbc0f3758adc9ab5", null ], + [ "seamask_target_grid", "model__grid_8F90.html#ac603676e21495133afd160bf36c70068", null ], + [ "target_grid", "model__grid_8F90.html#a85499183cbbb666cbabd138c77374fd9", null ], + [ "terrain_target_grid", "model__grid_8F90.html#a82acb90fe22c5b4a5d27f95f1fe5a17a", null ], + [ "tiles_target_grid", "model__grid_8F90.html#ad41e7ee2c45f8ee4004c836433b715eb", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/model__grid_8F90_source.html b/ver-1.11.0/chgres_cube/model__grid_8F90_source.html new file mode 100644 index 000000000..3a158b2e4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/model__grid_8F90_source.html @@ -0,0 +1,160 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/model_grid.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
model_grid.F90
+
+
+Go to the documentation of this file.
1 
4 
9  module model_grid
10 
11  use esmf
12  use esmf_logpublicmod
13 
14  use utilities, only : error_handler, netcdf_err
15  implicit none
16 
17  private
18 
19  character(len=5), allocatable, public :: tiles_target_grid(:)
20 
21  character(len=50), public :: input_grid_type = "latlon"
22 
23 
24  ! Made lsoil_target non-parameter to allow for RAP land surface initiation
25  integer, public :: lsoil_target = 4 ! # soil layers
26 
27  integer, public :: i_input
28 
30  integer, public :: j_input
31 
33  integer, public :: ip1_input
34 
35  integer, public :: jp1_input
36 
37  integer, public :: i_target
38 
40  integer, public :: j_target
41 
43  integer, public :: ip1_target
44 
45  integer, public :: jp1_target
46 
47  integer, public :: num_tiles_input_grid
48 
49  integer, public :: num_tiles_target_grid
50 
51 
52  type(esmf_grid), public :: input_grid
53 
54  type(esmf_grid), public :: target_grid
55 
56 
57  type(esmf_field), public :: latitude_input_grid
58 
59  type(esmf_field), public :: longitude_input_grid
60 
61  type(esmf_field), public :: latitude_s_input_grid
62 
64  type(esmf_field), public :: longitude_s_input_grid
65 
67  type(esmf_field), public :: latitude_w_input_grid
68 
70  type(esmf_field), public :: longitude_w_input_grid
71 
73 
74  type(esmf_field), public :: landmask_target_grid
75 
77  type(esmf_field), public :: latitude_target_grid
78 
79  type(esmf_field), public :: latitude_s_target_grid
80 
82  type(esmf_field), public :: latitude_w_target_grid
83 
85  type(esmf_field), public :: longitude_target_grid
86 
87  type(esmf_field), public :: longitude_s_target_grid
88 
90  type(esmf_field), public :: longitude_w_target_grid
91 
93  type(esmf_field), public :: seamask_target_grid
94 
96  type(esmf_field), public :: terrain_target_grid
97 
98 
99  public :: define_target_grid
100  public :: define_input_grid
102 
103  contains
104 
116  subroutine define_input_grid(localpet, npets)
118  use program_setup, only : input_type
119 
120  implicit none
121 
122  integer, intent(in) :: localpet, npets
123 
124  if (trim(input_type) == "gaussian_nemsio" .or. &
125  trim(input_type) == "gfs_gaussian_nemsio" .or. &
126  trim(input_type) == "gfs_sigio" .or. &
127  trim(input_type) == "gaussian_netcdf") then
128  call define_input_grid_gaussian(npets)
129  elseif (trim(input_type) == "grib2") then
130  call define_input_grid_grib2(npets)
131  else
132  call define_input_grid_mosaic(localpet, npets)
133  endif
134 
135  end subroutine define_input_grid
136 
147  subroutine define_input_grid_gaussian(npets)
149  use nemsio_module
150 
151  use program_setup, only : data_dir_input_grid, &
154  input_type, &
156 
157  use sfcio_module
158  use sigio_module
159  use netcdf
160 
161  implicit none
162 
163  integer, intent(in) :: npets
164 
165  character(len=250) :: the_file
166 
167  integer :: i, j, rc, clb(2), cub(2), ncid, id_grid
168  integer(sfcio_intkind) :: rc2
169  integer(sigio_intkind) :: rc3
170 
171  real(esmf_kind_r8), allocatable :: latitude(:,:)
172  real(esmf_kind_r8), allocatable :: longitude(:,:)
173  real(esmf_kind_r8), pointer :: lat_src_ptr(:,:)
174  real(esmf_kind_r8), pointer :: lon_src_ptr(:,:)
175  real(esmf_kind_r8), pointer :: lat_corner_src_ptr(:,:)
176  real(esmf_kind_r8), pointer :: lon_corner_src_ptr(:,:)
177  real(esmf_kind_r8) :: deltalon
178  real(esmf_kind_r8), allocatable :: slat(:), wlat(:)
179 
180  type(nemsio_gfile) :: gfile
181  type(esmf_polekind_flag) :: polekindflag(2)
182  type(sfcio_head) :: sfchead
183  type(sigio_head) :: sighead
184 
185  print*,"- DEFINE INPUT GRID OBJECT FOR GAUSSIAN DATA."
186 
188 
189  if (convert_sfc) then
190  the_file=trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
191  elseif (convert_atm) then
192  the_file=trim(data_dir_input_grid) // "/" // trim(atm_files_input_grid(1))
193  endif
194 
195  if (trim(input_type) == "gfs_sigio") then ! sigio/sfcio format, used by
196  ! spectral gfs prior to 7/19/2017.
197 
198  if (convert_sfc) then ! sfcio format
199  print*,"- OPEN AND READ ", trim(the_file)
200  call sfcio_sropen(21, trim(the_file), rc2)
201  if (rc2 /= 0) call error_handler("OPENING FILE", rc2)
202  call sfcio_srhead(21, sfchead, rc2)
203  if (rc2 /= 0) call error_handler("READING FILE", rc2)
204  call sfcio_sclose(21, rc2)
205  i_input = sfchead%lonb
206  j_input = sfchead%latb
207  elseif (convert_atm) then ! sigio format
208  print*,"- OPEN AND READ ", trim(the_file)
209  call sigio_sropen(21, trim(the_file), rc3)
210  if (rc3 /= 0) call error_handler("OPENING FILE", rc3)
211  call sigio_srhead(21, sighead, rc3)
212  if (rc3 /= 0) call error_handler("READING FILE", rc3)
213  call sigio_sclose(21, rc3)
214  i_input = sighead%lonb
215  j_input = sighead%latb
216  endif
217 
218  elseif (trim(input_type) == "gaussian_netcdf") then
219 
220  print*,'- OPEN AND READ: ',trim(the_file)
221  rc=nf90_open(trim(the_file),nf90_nowrite,ncid)
222  call netcdf_err(rc, 'opening file')
223 
224  print*,"- READ grid_xt"
225  rc=nf90_inq_dimid(ncid, 'grid_xt', id_grid)
226  call netcdf_err(rc, 'reading grid_xt id')
227  rc=nf90_inquire_dimension(ncid,id_grid,len=i_input)
228  call netcdf_err(rc, 'reading grid_xt')
229 
230  print*,"- READ grid_yt"
231  rc=nf90_inq_dimid(ncid, 'grid_yt', id_grid)
232  call netcdf_err(rc, 'reading grid_yt id')
233  rc=nf90_inquire_dimension(ncid,id_grid,len=j_input)
234  call netcdf_err(rc, 'reading grid_yt')
235 
236  rc = nf90_close(ncid)
237 
238  else ! nemsio format
239 
240  call nemsio_init(iret=rc)
241 
242  print*,"- OPEN AND READ ", trim(the_file)
243  call nemsio_open(gfile, the_file, "read", iret=rc)
244  if (rc /= 0) call error_handler("OPENING FILE", rc)
245 
246  call nemsio_getfilehead(gfile, iret=rc, dimx=i_input, dimy=j_input)
247  if (rc /= 0) call error_handler("READING FILE", rc)
248 
249  call nemsio_close(gfile)
250 
251  endif
252 
253  ip1_input = i_input + 1
254  jp1_input = j_input + 1
255 
256  polekindflag(1:2) = esmf_polekind_monopole
257 
258  print*,"- CALL GridCreate1PeriDim FOR INPUT GRID."
259  input_grid = esmf_gridcreate1peridim(minindex=(/1,1/), &
260  maxindex=(/i_input,j_input/), &
261  polekindflag=polekindflag, &
262  periodicdim=1, &
263  poledim=2, &
264  coordsys=esmf_coordsys_sph_deg, &
265  regdecomp=(/1,npets/), &
266  indexflag=esmf_index_global, rc=rc)
267  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
268  call error_handler("IN GridCreate1PeriDim", rc)
269 
270  print*,"- CALL FieldCreate FOR INPUT GRID LATITUDE."
271  latitude_input_grid = esmf_fieldcreate(input_grid, &
272  typekind=esmf_typekind_r8, &
273  staggerloc=esmf_staggerloc_center, &
274  name="input_grid_latitude", rc=rc)
275  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
276  call error_handler("IN FieldCreate", rc)
277 
278  print*,"- CALL FieldCreate FOR INPUT GRID LONGITUDE."
279  longitude_input_grid = esmf_fieldcreate(input_grid, &
280  typekind=esmf_typekind_r8, &
281  staggerloc=esmf_staggerloc_center, &
282  name="input_grid_longitude", rc=rc)
283  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
284  call error_handler("IN FieldCreate", rc)
285 
286  allocate(longitude(i_input,j_input))
287  allocate(latitude(i_input,j_input))
288 
289  deltalon = 360.0_esmf_kind_r8 / real(i_input,kind=esmf_kind_r8)
290  do i = 1, i_input
291  longitude(i,:) = real((i-1),kind=esmf_kind_r8) * deltalon
292  enddo
293 
294  allocate(slat(j_input))
295  allocate(wlat(j_input))
296  call splat(4, j_input, slat, wlat)
297 
298  do i = 1, j_input
299  latitude(:,i) = 90.0_esmf_kind_r8 - (acos(slat(i))* 180.0_esmf_kind_r8 / &
300  (4.0_esmf_kind_r8*atan(1.0_esmf_kind_r8)))
301  enddo
302 
303  deallocate(slat, wlat)
304 
305  print*,"- CALL FieldScatter FOR INPUT GRID LONGITUDE."
306  call esmf_fieldscatter(longitude_input_grid, longitude, rootpet=0, rc=rc)
307  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
308  call error_handler("IN FieldScatter", rc)
309 
310  print*,"- CALL FieldScatter FOR INPUT GRID LATITUDE."
311  call esmf_fieldscatter(latitude_input_grid, latitude, rootpet=0, rc=rc)
312  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
313  call error_handler("IN FieldScatter", rc)
314 
315  print*,"- CALL GridAddCoord FOR INPUT GRID."
316  call esmf_gridaddcoord(input_grid, &
317  staggerloc=esmf_staggerloc_center, rc=rc)
318  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
319  call error_handler("IN GridAddCoord", rc)
320 
321  print*,"- CALL GridGetCoord FOR INPUT GRID X-COORD."
322  nullify(lon_src_ptr)
323  call esmf_gridgetcoord(input_grid, &
324  staggerloc=esmf_staggerloc_center, &
325  coorddim=1, &
326  farrayptr=lon_src_ptr, rc=rc)
327  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
328  call error_handler("IN GridGetCoord", rc)
329 
330  print*,"- CALL GridGetCoord FOR INPUT GRID Y-COORD."
331  nullify(lat_src_ptr)
332  call esmf_gridgetcoord(input_grid, &
333  staggerloc=esmf_staggerloc_center, &
334  coorddim=2, &
335  computationallbound=clb, &
336  computationalubound=cub, &
337  farrayptr=lat_src_ptr, rc=rc)
338  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
339  call error_handler("IN GridGetCoord", rc)
340 
341  do j = clb(2), cub(2)
342  do i = clb(1), cub(1)
343  lon_src_ptr(i,j) = longitude(i,j)
344  if (lon_src_ptr(i,j) > 360.0_esmf_kind_r8) lon_src_ptr(i,j) = lon_src_ptr(i,j) - 360.0_esmf_kind_r8
345  lat_src_ptr(i,j) = latitude(i,j)
346  enddo
347  enddo
348 
349  print*,"- CALL GridAddCoord FOR INPUT GRID."
350  call esmf_gridaddcoord(input_grid, &
351  staggerloc=esmf_staggerloc_corner, rc=rc)
352  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
353  call error_handler("IN GridAddCoord", rc)
354 
355  print*,"- CALL GridGetCoord FOR INPUT GRID X-COORD."
356  nullify(lon_corner_src_ptr)
357  call esmf_gridgetcoord(input_grid, &
358  staggerloc=esmf_staggerloc_corner, &
359  coorddim=1, &
360  farrayptr=lon_corner_src_ptr, rc=rc)
361  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
362  call error_handler("IN GridGetCoord", rc)
363 
364  print*,"- CALL GridGetCoord FOR INPUT GRID Y-COORD."
365  nullify(lat_corner_src_ptr)
366  call esmf_gridgetcoord(input_grid, &
367  staggerloc=esmf_staggerloc_corner, &
368  coorddim=2, &
369  computationallbound=clb, &
370  computationalubound=cub, &
371  farrayptr=lat_corner_src_ptr, rc=rc)
372  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
373  call error_handler("IN GridGetCoord", rc)
374 
375  do j = clb(2), cub(2)
376  do i = clb(1), cub(1)
377  lon_corner_src_ptr(i,j) = longitude(i,1) - (0.5_esmf_kind_r8*deltalon)
378  if (lon_corner_src_ptr(i,j) > 360.0_esmf_kind_r8) lon_corner_src_ptr(i,j) = lon_corner_src_ptr(i,j) - 360.0_esmf_kind_r8
379  if (j == 1) then
380  lat_corner_src_ptr(i,j) = 90.0_esmf_kind_r8
381  cycle
382  endif
383  if (j == jp1_input) then
384  lat_corner_src_ptr(i,j) = -90.0_esmf_kind_r8
385  cycle
386  endif
387  lat_corner_src_ptr(i,j) = 0.5_esmf_kind_r8 * (latitude(i,j-1)+ latitude(i,j))
388  enddo
389  enddo
390 
391  deallocate(latitude,longitude)
392 
393  end subroutine define_input_grid_gaussian
394 
401  subroutine define_input_grid_mosaic(localpet, npets)
403  use netcdf
407 
408  implicit none
409 
410  character(len=500) :: the_file
411 
412  integer, intent(in) :: localpet, npets
413 
414  integer :: id_tiles, id_dim, tile
415  integer :: extra, error, ncid
416  integer, allocatable :: decomptile(:,:)
417 
418  integer(esmf_kind_i8), allocatable :: landmask_one_tile(:,:)
419 
420  real(esmf_kind_r8), allocatable :: latitude_one_tile(:,:)
421  real(esmf_kind_r8), allocatable :: latitude_s_one_tile(:,:)
422  real(esmf_kind_r8), allocatable :: latitude_w_one_tile(:,:)
423  real(esmf_kind_r8), allocatable :: longitude_one_tile(:,:)
424  real(esmf_kind_r8), allocatable :: longitude_s_one_tile(:,:)
425  real(esmf_kind_r8), allocatable :: longitude_w_one_tile(:,:)
426 
427  print*,'- OPEN INPUT GRID MOSAIC FILE: ',trim(mosaic_file_input_grid)
428  error=nf90_open(trim(mosaic_file_input_grid),nf90_nowrite,ncid)
429  call netcdf_err(error, 'opening grid mosaic file')
430 
431  print*,"- READ NUMBER OF TILES"
432  error=nf90_inq_dimid(ncid, 'ntiles', id_tiles)
433  call netcdf_err(error, 'reading ntiles id')
434  error=nf90_inquire_dimension(ncid,id_tiles,len=num_tiles_input_grid)
435  call netcdf_err(error, 'reading ntiles')
436 
437  error = nf90_close(ncid)
438 
439  print*,'- NUMBER OF TILES, INPUT MODEL GRID IS ', num_tiles_input_grid
440 
441  if (mod(npets,num_tiles_input_grid) /= 0) then
442  call error_handler("MUST RUN WITH A TASK COUNT THAT IS A MULTIPLE OF 6.", 1)
443  endif
444 
445 !-----------------------------------------------------------------------
446 ! Create ESMF grid object for the model grid.
447 !-----------------------------------------------------------------------
448 
449  extra = npets / num_tiles_input_grid
450 
451  allocate(decomptile(2,num_tiles_input_grid))
452 
453  do tile = 1, num_tiles_input_grid
454  decomptile(:,tile)=(/1,extra/)
455  enddo
456 
457  print*,"- CALL GridCreateMosaic FOR INPUT MODEL GRID"
458  input_grid = esmf_gridcreatemosaic(filename=trim(mosaic_file_input_grid), &
459  regdecompptile=decomptile, &
460  staggerloclist=(/esmf_staggerloc_center, esmf_staggerloc_corner, &
461  esmf_staggerloc_edge1, esmf_staggerloc_edge2/), &
462  indexflag=esmf_index_global, &
463  tilefilepath=trim(orog_dir_input_grid), &
464  rc=error)
465  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
466  call error_handler("IN GridCreateMosaic", error)
467 
468 !-----------------------------------------------------------------------
469 ! Read the mask and lat/lons.
470 !-----------------------------------------------------------------------
471 
472  print*,"- CALL FieldCreate FOR INPUT GRID LATITUDE."
473  latitude_input_grid = esmf_fieldcreate(input_grid, &
474  typekind=esmf_typekind_r8, &
475  staggerloc=esmf_staggerloc_center, &
476  name="input_grid_latitude", &
477  rc=error)
478  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
479  call error_handler("IN FieldCreate", error)
480 
481  print*,"- CALL FieldCreate FOR INPUT GRID LONGITUDE."
482  longitude_input_grid = esmf_fieldcreate(input_grid, &
483  typekind=esmf_typekind_r8, &
484  staggerloc=esmf_staggerloc_center, &
485  name="input_grid_longitude", &
486  rc=error)
487  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
488  call error_handler("IN FieldCreate", error)
489 
490  print*,"- CALL FieldCreate FOR INPUT GRID LATITUDE_S."
491  latitude_s_input_grid = esmf_fieldcreate(input_grid, &
492  typekind=esmf_typekind_r8, &
493  staggerloc=esmf_staggerloc_edge2, &
494  name="input_grid_latitude_s", &
495  rc=error)
496  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
497  call error_handler("IN FieldCreate", error)
498 
499  print*,"- CALL FieldCreate FOR INPUT GRID LONGITUDE_S."
500  longitude_s_input_grid = esmf_fieldcreate(input_grid, &
501  typekind=esmf_typekind_r8, &
502  staggerloc=esmf_staggerloc_edge2, &
503  name="input_grid_longitude_s", &
504  rc=error)
505  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
506  call error_handler("IN FieldCreate", error)
507 
508  print*,"- CALL FieldCreate FOR INPUT GRID LATITUDE_W."
509  latitude_w_input_grid = esmf_fieldcreate(input_grid, &
510  typekind=esmf_typekind_r8, &
511  staggerloc=esmf_staggerloc_edge1, &
512  name="input_grid_latitude_w", &
513  rc=error)
514  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
515  call error_handler("IN FieldCreate", error)
516 
517  print*,"- CALL FieldCreate FOR INPUT GRID LONGITUDE_W."
518  longitude_w_input_grid = esmf_fieldcreate(input_grid, &
519  typekind=esmf_typekind_r8, &
520  staggerloc=esmf_staggerloc_edge1, &
521  name="input_grid_longitude_w", &
522  rc=error)
523  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
524  call error_handler("IN FieldCreate", error)
525 
526  the_file = trim(orog_dir_input_grid) // trim(orog_files_input_grid(1))
527 
528  print*,'- OPEN FIRST INPUT GRID OROGRAPHY FILE: ',trim(the_file)
529  error=nf90_open(trim(the_file),nf90_nowrite,ncid)
530  call netcdf_err(error, 'opening ororgraphy file')
531  print*,"- READ GRID DIMENSIONS"
532  error=nf90_inq_dimid(ncid, 'lon', id_dim)
533  call netcdf_err(error, 'reading lon id')
534  error=nf90_inquire_dimension(ncid,id_dim,len=i_input)
535  call netcdf_err(error, 'reading lon')
536  error=nf90_inq_dimid(ncid, 'lat', id_dim)
537  call netcdf_err(error, 'reading lat id')
538  error=nf90_inquire_dimension(ncid,id_dim,len=j_input)
539  call netcdf_err(error, 'reading lat')
540  error = nf90_close(ncid)
541 
542  print*,"- I/J DIMENSIONS OF THE INPUT GRID TILES ", i_input, j_input
543 
544  ip1_input = i_input + 1
545  jp1_input = j_input + 1
546 
547  if (localpet == 0) then
548  allocate(longitude_one_tile(i_input,j_input))
549  allocate(longitude_s_one_tile(i_input,jp1_input))
550  allocate(longitude_w_one_tile(ip1_input,j_input))
551  allocate(latitude_one_tile(i_input,j_input))
552  allocate(latitude_s_one_tile(i_input,jp1_input))
553  allocate(latitude_w_one_tile(ip1_input,j_input))
554  allocate(landmask_one_tile(i_input,j_input))
555  else
556  allocate(longitude_one_tile(0,0))
557  allocate(longitude_s_one_tile(0,0))
558  allocate(longitude_w_one_tile(0,0))
559  allocate(latitude_one_tile(0,0))
560  allocate(latitude_s_one_tile(0,0))
561  allocate(latitude_w_one_tile(0,0))
562  allocate(landmask_one_tile(0,0))
563  endif
564 
565  do tile = 1, num_tiles_input_grid
566  if (localpet == 0) then
568  i_input, j_input, ip1_input, jp1_input, latitude_one_tile, &
569  latitude_s_one_tile, latitude_w_one_tile, longitude_one_tile, &
570  longitude_s_one_tile, longitude_w_one_tile)
571  endif
572  print*,"- CALL FieldScatter FOR INPUT GRID LATITUDE. TILE IS: ", tile
573  call esmf_fieldscatter(latitude_input_grid, latitude_one_tile, rootpet=0, tile=tile, rc=error)
574  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
575  call error_handler("IN FieldScatter", error)
576  print*,"- CALL FieldScatter FOR INPUT GRID LONGITUDE. TILE IS: ", tile
577  call esmf_fieldscatter(longitude_input_grid, longitude_one_tile, rootpet=0, tile=tile, rc=error)
578  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
579  call error_handler("IN FieldScatter", error)
580  print*,"- CALL FieldScatter FOR INPUT GRID LATITUDE_S. TILE IS: ", tile
581  call esmf_fieldscatter(latitude_s_input_grid, latitude_s_one_tile, rootpet=0, tile=tile, rc=error)
582  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
583  call error_handler("IN FieldScatter", error)
584  print*,"- CALL FieldScatter FOR INPUT GRID LONGITUDE_S. TILE IS: ", tile
585  call esmf_fieldscatter(longitude_s_input_grid, longitude_s_one_tile, rootpet=0, tile=tile, rc=error)
586  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
587  call error_handler("IN FieldScatter", error)
588  print*,"- CALL FieldScatter FOR INPUT GRID LATITUDE_W. TILE IS: ", tile
589  call esmf_fieldscatter(latitude_w_input_grid, latitude_w_one_tile, rootpet=0, tile=tile, rc=error)
590  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
591  call error_handler("IN FieldScatter", error)
592  print*,"- CALL FieldScatter FOR INPUT GRID LONGITUDE_W. TILE IS: ", tile
593  call esmf_fieldscatter(longitude_w_input_grid, longitude_w_one_tile, rootpet=0, tile=tile, rc=error)
594  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
595  call error_handler("IN FieldScatter", error)
596  enddo
597 
598  deallocate(longitude_one_tile)
599  deallocate(longitude_s_one_tile)
600  deallocate(longitude_w_one_tile)
601  deallocate(latitude_one_tile)
602  deallocate(latitude_s_one_tile)
603  deallocate(latitude_w_one_tile)
604  deallocate(landmask_one_tile)
605 
606  end subroutine define_input_grid_mosaic
607 
614  subroutine define_input_grid_grib2(npets)
616  use grib_mod
617  use gdswzd_mod
619 
620  implicit none
621 
622  integer, intent(in) :: npets
623 
624  character(len=500) :: the_file
625 
626  integer :: i, j, k, jdisc, jgdtn, jpdtn, lugb, lugi
627  integer :: jids(200), jgdt(200), jpdt(200), rc
628  integer :: kgds(200), nret, clb(2), cub(2)
629 
630  logical :: unpack
631 
632  real :: res
633  real, allocatable :: rlon(:,:),rlat(:,:),xpts(:,:),ypts(:,:)
634  real, allocatable :: rlon_corner(:,:),rlat_corner(:,:)
635  real, allocatable :: rlon_diff(:,:),rlat_diff(:,:)
636  real, allocatable :: xpts_corner(:,:),ypts_corner(:,:)
637  real(esmf_kind_r8), allocatable :: latitude(:,:)
638  real(esmf_kind_r8), allocatable :: longitude(:,:)
639  real(esmf_kind_r8), allocatable :: latitude_corner(:,:)
640  real(esmf_kind_r8), allocatable :: longitude_corner(:,:)
641  real(esmf_kind_r8), pointer :: lat_src_ptr(:,:)
642  real(esmf_kind_r8), pointer :: lat_corner_src_ptr(:,:)
643  real(esmf_kind_r8), pointer :: lon_src_ptr(:,:)
644  real(esmf_kind_r8), pointer :: lon_corner_src_ptr(:,:)
645 
646  type(esmf_polekind_flag) :: polekindflag(2)
647 
648  type(gribfield) :: gfld
649 
650  the_file = trim(data_dir_input_grid) // "/" // grib2_file_input_grid
651 
652  lugb=12
653 
654  print*,"- OPEN AND READ INPUT DATA GRIB2 FILE: ", trim(the_file)
655  call baopenr(lugb,the_file,rc)
656  if (rc /= 0) call error_handler("OPENING FILE", rc)
657 
658 ! Read the first record and get the grid definition template.
659 
660  j = 0 ! Search at beginning of file
661  lugi = 0 ! No grib index file
662  jdisc = -1 ! Search for any discipline
663  jpdtn = -1 ! Search for any product definition template number
664  jgdtn = -1 ! Search for any grid definition template number
665  jids = -9999 ! Array of values in identification section, set to wildcard.
666  jgdt = -9999 ! Array of values in grid definition template, set to wildcard.
667  jpdt = -9999 ! Array of values in product definition template, set to wildcard.
668  unpack = .false. ! unpack data
669 
670  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
671  unpack, k, gfld, rc)
672  if (rc /= 0) call error_handler("DEGRIBBING INPUT FILE.", rc)
673 
674  call baclose(lugb,rc)
675 
676  if (gfld%igdtnum == 0) then
677  print*,"- INPUT DATA ON LAT/LON GRID."
678  input_grid_type = 'latlon'
679  elseif (gfld%igdtnum == 30) then
680  print*,"- INPUT DATA ON LAMBERT CONFORMAL GRID."
681  input_grid_type = 'lambert'
682  elseif (gfld%igdtnum == 32769) then
683  print*,"- INPUT DATA ON ROTATED LAT/LON GRID."
684  input_grid_type = 'rotated_latlon'
685  else
686  call error_handler("INPUT GRID TEMPLATE NOT SUPPORTED.", 2)
687  endif
688 
689  kgds = 0
690  call gdt_to_gds(gfld%igdtnum, gfld%igdtmpl, gfld%igdtlen, kgds, i_input, j_input, res)
691 
692  ip1_input = i_input + 1
693  jp1_input = j_input + 1
694 
695  allocate(rlat(i_input,j_input))
696  allocate(rlon(i_input,j_input))
697  allocate(rlat_diff(i_input,j_input))
698  allocate(rlon_diff(i_input,j_input))
699  allocate(xpts(i_input,j_input))
700  allocate(ypts(i_input,j_input))
701  allocate(rlat_corner(ip1_input,jp1_input))
702  allocate(rlon_corner(ip1_input,jp1_input))
703  allocate(xpts_corner(ip1_input,jp1_input))
704  allocate(ypts_corner(ip1_input,jp1_input))
705 
706  do j = 1, j_input
707  do i = 1, i_input
708  xpts(i,j) = float(i)
709  ypts(i,j) = float(j)
710  enddo
711  enddo
712 
713  print*,"- COMPUTE GRID CELL CENTER COORDINATES."
714  call gdswzd(kgds,1,(i_input*j_input),-9999.,xpts,ypts,rlon,rlat,nret)
715 
716  if (nret /= (i_input*j_input)) then
717  call error_handler("GDSWZD RETURNED WRONG NUMBER OF POINTS.", 2)
718  endif
719 
720  deallocate(xpts, ypts)
721 
722  do j = 1, jp1_input
723  do i = 1, ip1_input
724  xpts_corner(i,j) = float(i) - 0.5
725  ypts_corner(i,j) = float(j) - 0.5
726  enddo
727  enddo
728 
729  print*,"- COMPUTE GRID CELL CORNER COORDINATES."
730  call gdswzd(kgds,1,(ip1_input*jp1_input),-9999.,xpts_corner,ypts_corner,rlon_corner,rlat_corner,nret)
731 
732  if (nret /= (ip1_input*jp1_input)) then
733  call error_handler("GDSWZD RETURNED WRONG NUMBER OF POINTS.", 2)
734  endif
735 
736  deallocate(xpts_corner, ypts_corner)
737 
738  if (gfld%igdtnum == 0) then ! gfs lat/lon data
739 
740  print*,"- CALL GridCreate1PeriDim FOR INPUT GRID."
741 
742  polekindflag(1:2) = esmf_polekind_monopole
743 
744  input_grid = esmf_gridcreate1peridim(minindex=(/1,1/), &
745  maxindex=(/i_input,j_input/), &
746  polekindflag=polekindflag, &
747  periodicdim=1, &
748  poledim=2, &
749  coordsys=esmf_coordsys_sph_deg, &
750  regdecomp=(/1,npets/), &
751  indexflag=esmf_index_global, rc=rc)
752 
753  else
754 
755  print*,"- CALL GridCreateNoPeriDim FOR INPUT GRID."
756 
757  input_grid = esmf_gridcreatenoperidim(maxindex=(/i_input,j_input/), &
758  indexflag=esmf_index_global, &
759  rc=rc)
760 
761  endif
762 
763  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
764  call error_handler("IN GridCreate1PeriDim", rc)
765 
766  print*,"- CALL FieldCreate FOR INPUT GRID LATITUDE."
767  latitude_input_grid = esmf_fieldcreate(input_grid, &
768  typekind=esmf_typekind_r8, &
769  staggerloc=esmf_staggerloc_center, &
770  name="input_grid_latitude", rc=rc)
771  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
772  call error_handler("IN FieldCreate", rc)
773 
774  print*,"- CALL FieldCreate FOR INPUT GRID LONGITUDE."
775  longitude_input_grid = esmf_fieldcreate(input_grid, &
776  typekind=esmf_typekind_r8, &
777  staggerloc=esmf_staggerloc_center, &
778  name="input_grid_longitude", rc=rc)
779  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
780  call error_handler("IN FieldCreate", rc)
781 
782  allocate(latitude(i_input,j_input))
783  allocate(longitude(i_input,j_input))
784 
785  latitude = rlat
786  longitude = rlon
787 
788  deallocate (rlat, rlon)
789 
790  print*,"- CALL FieldScatter FOR INPUT GRID LONGITUDE."
791  call esmf_fieldscatter(longitude_input_grid, longitude, rootpet=0, rc=rc)
792  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
793  call error_handler("IN FieldScatter", rc)
794 
795  print*,"- CALL FieldScatter FOR INPUT GRID LATITUDE."
796  call esmf_fieldscatter(latitude_input_grid, latitude, rootpet=0, rc=rc)
797  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
798  call error_handler("IN FieldScatter", rc)
799 
800  print*,"- CALL GridAddCoord FOR INPUT GRID."
801  call esmf_gridaddcoord(input_grid, &
802  staggerloc=esmf_staggerloc_center, rc=rc)
803  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
804  call error_handler("IN GridAddCoord", rc)
805 
806  print*,"- CALL GridGetCoord FOR INPUT GRID X-COORD."
807  nullify(lon_src_ptr)
808  call esmf_gridgetcoord(input_grid, &
809  staggerloc=esmf_staggerloc_center, &
810  coorddim=1, &
811  farrayptr=lon_src_ptr, rc=rc)
812  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
813  call error_handler("IN GridGetCoord", rc)
814 
815  print*,"- CALL GridGetCoord FOR INPUT GRID Y-COORD."
816  nullify(lat_src_ptr)
817  call esmf_gridgetcoord(input_grid, &
818  staggerloc=esmf_staggerloc_center, &
819  coorddim=2, &
820  computationallbound=clb, &
821  computationalubound=cub, &
822  farrayptr=lat_src_ptr, rc=rc)
823  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
824  call error_handler("IN GridGetCoord", rc)
825 
826  do j = clb(2), cub(2)
827  do i = clb(1), cub(1)
828  lon_src_ptr(i,j) = longitude(i,j)
829  if (lon_src_ptr(i,j) > 360.0_esmf_kind_r8) lon_src_ptr(i,j) = lon_src_ptr(i,j) - 360.0_esmf_kind_r8
830  lat_src_ptr(i,j) = latitude(i,j)
831  enddo
832  enddo
833 
834  deallocate(latitude, longitude)
835 
836  allocate(latitude_corner(ip1_input,jp1_input))
837  allocate(longitude_corner(ip1_input,jp1_input))
838 
839  latitude_corner = rlat_corner
840  longitude_corner = rlon_corner
841 
842  deallocate (rlat_corner, rlon_corner)
843 
844  print*,"- CALL GridAddCoord FOR INPUT GRID."
845  call esmf_gridaddcoord(input_grid, &
846  staggerloc=esmf_staggerloc_corner, rc=rc)
847  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
848  call error_handler("IN GridAddCoord", rc)
849 
850  print*,"- CALL GridGetCoord FOR INPUT GRID X-COORD."
851  nullify(lon_corner_src_ptr)
852  call esmf_gridgetcoord(input_grid, &
853  staggerloc=esmf_staggerloc_corner, &
854  coorddim=1, &
855  farrayptr=lon_corner_src_ptr, rc=rc)
856  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
857  call error_handler("IN GridGetCoord", rc)
858 
859  print*,"- CALL GridGetCoord FOR INPUT GRID Y-COORD."
860  nullify(lat_corner_src_ptr)
861  call esmf_gridgetcoord(input_grid, &
862  staggerloc=esmf_staggerloc_corner, &
863  coorddim=2, &
864  computationallbound=clb, &
865  computationalubound=cub, &
866  farrayptr=lat_corner_src_ptr, rc=rc)
867  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
868  call error_handler("IN GridGetCoord", rc)
869 
870  do j = clb(2), cub(2)
871  do i = clb(1), cub(1)
872  lon_corner_src_ptr(i,j) = longitude_corner(i,j)
873  if (lon_corner_src_ptr(i,j) > 360.0_esmf_kind_r8) lon_corner_src_ptr(i,j) = lon_corner_src_ptr(i,j) - 360.0_esmf_kind_r8
874  lat_corner_src_ptr(i,j) = latitude_corner(i,j)
875  enddo
876  enddo
877 
878  deallocate(latitude_corner, longitude_corner)
879 
880  end subroutine define_input_grid_grib2
881 
887  subroutine define_target_grid(localpet, npets)
889  use netcdf
893  nsoill_out
894 
895  implicit none
896 
897  integer, intent(in) :: localpet, npets
898 
899  character(len=500) :: the_file
900 
901  integer :: error, ncid, extra
902  integer :: id_tiles
903  integer :: id_dim, id_grid_tiles
904  integer :: tile
905  integer, allocatable :: decomptile(:,:)
906  integer(esmf_kind_i8), allocatable :: landmask_one_tile(:,:)
907  integer(esmf_kind_i8), allocatable :: seamask_one_tile(:,:)
908 
909  real(esmf_kind_r8), allocatable :: latitude_one_tile(:,:)
910  real(esmf_kind_r8), allocatable :: latitude_s_one_tile(:,:)
911  real(esmf_kind_r8), allocatable :: latitude_w_one_tile(:,:)
912  real(esmf_kind_r8), allocatable :: longitude_one_tile(:,:)
913  real(esmf_kind_r8), allocatable :: longitude_s_one_tile(:,:)
914  real(esmf_kind_r8), allocatable :: longitude_w_one_tile(:,:)
915  real(esmf_kind_r8), allocatable :: terrain_one_tile(:,:)
916 
918 
919  print*,'- OPEN TARGET GRID MOSAIC FILE: ',trim(mosaic_file_target_grid)
920  error=nf90_open(trim(mosaic_file_target_grid),nf90_nowrite,ncid)
921  call netcdf_err(error, 'opening grid mosaic file')
922 
923  print*,"- READ NUMBER OF TILES"
924  error=nf90_inq_dimid(ncid, 'ntiles', id_tiles)
925  call netcdf_err(error, 'reading ntile id')
926  error=nf90_inquire_dimension(ncid,id_tiles,len=num_tiles_target_grid)
927  call netcdf_err(error, 'reading ntiles')
928  error=nf90_inq_varid(ncid, 'gridtiles', id_grid_tiles)
929  call netcdf_err(error, 'reading gridtiles id')
931  tiles_target_grid="NULL"
932  print*,"- READ TILE NAMES"
933  error=nf90_get_var(ncid, id_grid_tiles, tiles_target_grid)
934  call netcdf_err(error, 'reading gridtiles')
935 
936  error = nf90_close(ncid)
937 
938  print*,'- NUMBER OF TILES, TARGET MODEL GRID IS ', num_tiles_target_grid
939 
940  if (mod(npets,num_tiles_target_grid) /= 0) then
941  call error_handler("MUST RUN WITH TASK COUNT THAT IS A MULTIPLE OF # OF TILES.", 1)
942  endif
943 
944 !-----------------------------------------------------------------------
945 ! Get the model grid specs and land mask from the orography files.
946 !-----------------------------------------------------------------------
947 
948  the_file = trim(orog_dir_target_grid) // trim(orog_files_target_grid(1))
949 
950  print*,'- OPEN FIRST TARGET GRID OROGRAPHY FILE: ',trim(the_file)
951  error=nf90_open(trim(the_file),nf90_nowrite,ncid)
952  call netcdf_err(error, 'opening orography file')
953  print*,"- READ GRID DIMENSIONS"
954  error=nf90_inq_dimid(ncid, 'lon', id_dim)
955  call netcdf_err(error, 'reading lon id')
956  error=nf90_inquire_dimension(ncid,id_dim,len=i_target)
957  call netcdf_err(error, 'reading lon')
958  error=nf90_inq_dimid(ncid, 'lat', id_dim)
959  call netcdf_err(error, 'reading lat id')
960  error=nf90_inquire_dimension(ncid,id_dim,len=j_target)
961  call netcdf_err(error, 'reading lat')
962  error = nf90_close(ncid)
963 
964  print*,"- I/J DIMENSIONS OF THE TARGET GRID TILES ", i_target, j_target
965 
966  ip1_target = i_target + 1
967  jp1_target = j_target + 1
968 
969 !-----------------------------------------------------------------------
970 ! Create ESMF grid object for the model grid.
971 !-----------------------------------------------------------------------
972 
973  extra = npets / num_tiles_target_grid
974 
975  allocate(decomptile(2,num_tiles_target_grid))
976 
977  do tile = 1, num_tiles_target_grid
978  decomptile(:,tile)=(/1,extra/)
979  enddo
980 
981  print*,"- CALL GridCreateMosaic FOR TARGET GRID"
982  target_grid = esmf_gridcreatemosaic(filename=trim(mosaic_file_target_grid), &
983  regdecompptile=decomptile, &
984  staggerloclist=(/esmf_staggerloc_center, esmf_staggerloc_corner, &
985  esmf_staggerloc_edge1, esmf_staggerloc_edge2/), &
986  indexflag=esmf_index_global, &
987  tilefilepath=trim(orog_dir_target_grid), rc=error)
988  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
989  call error_handler("IN GridCreateMosaic", error)
990 
991 !-----------------------------------------------------------------------
992 ! Set target model landmask (1 - land, 0 - not land) and
993 ! seamask (1 - non-land, 0 -land). Read lat/lon on target grid.
994 !-----------------------------------------------------------------------
995 
996  print*,"- CALL FieldCreate FOR TARGET GRID LANDMASK."
997  landmask_target_grid = esmf_fieldcreate(target_grid, &
998  typekind=esmf_typekind_i8, &
999  staggerloc=esmf_staggerloc_center, &
1000  name="target_grid_landmask", rc=error)
1001  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1002  call error_handler("IN FieldCreate", error)
1003 
1004  print*,"- CALL FieldCreate FOR TARGET GRID SEAMASK."
1005  seamask_target_grid = esmf_fieldcreate(target_grid, &
1006  typekind=esmf_typekind_i8, &
1007  staggerloc=esmf_staggerloc_center, &
1008  name="target_grid_seamask", rc=error)
1009  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1010  call error_handler("IN FieldCreate", error)
1011 
1012  print*,"- CALL FieldCreate FOR TARGET GRID LATITUDE."
1013  latitude_target_grid = esmf_fieldcreate(target_grid, &
1014  typekind=esmf_typekind_r8, &
1015  staggerloc=esmf_staggerloc_center, &
1016  name="target_grid_latitude", rc=error)
1017  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1018  call error_handler("IN FieldCreate", error)
1019 
1020  print*,"- CALL FieldCreate FOR TARGET GRID LATITUDE_S."
1021  latitude_s_target_grid = esmf_fieldcreate(target_grid, &
1022  typekind=esmf_typekind_r8, &
1023  staggerloc=esmf_staggerloc_edge2, &
1024  name="target_grid_latitude_s", rc=error)
1025  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1026  call error_handler("IN FieldCreate", error)
1027 
1028  print*,"- CALL FieldCreate FOR TARGET GRID LATITUDE_W."
1029  latitude_w_target_grid = esmf_fieldcreate(target_grid, &
1030  typekind=esmf_typekind_r8, &
1031  staggerloc=esmf_staggerloc_edge1, &
1032  name="target_grid_latitude_w", &
1033  rc=error)
1034  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1035  call error_handler("IN FieldCreate", error)
1036 
1037  print*,"- CALL FieldCreate FOR TARGET GRID LONGITUDE."
1038  longitude_target_grid = esmf_fieldcreate(target_grid, &
1039  typekind=esmf_typekind_r8, &
1040  staggerloc=esmf_staggerloc_center, &
1041  name="target_grid_longitude", &
1042  rc=error)
1043  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1044  call error_handler("IN FieldCreate", error)
1045 
1046  print*,"- CALL FieldCreate FOR TARGET GRID LONGITUDE_S."
1047  longitude_s_target_grid = esmf_fieldcreate(target_grid, &
1048  typekind=esmf_typekind_r8, &
1049  staggerloc=esmf_staggerloc_edge2, &
1050  name="target_grid_longitude_s", &
1051  rc=error)
1052  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1053  call error_handler("IN FieldCreate", error)
1054 
1055  print*,"- CALL FieldCreate FOR TARGET GRID LONGITUDE_W."
1056  longitude_w_target_grid = esmf_fieldcreate(target_grid, &
1057  typekind=esmf_typekind_r8, &
1058  staggerloc=esmf_staggerloc_edge1, &
1059  name="target_grid_longitude_w", &
1060  rc=error)
1061  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1062  call error_handler("IN FieldCreate", error)
1063 
1064  print*,"- CALL FieldCreate FOR TARGET GRID TERRAIN."
1065  terrain_target_grid = esmf_fieldcreate(target_grid, &
1066  typekind=esmf_typekind_r8, &
1067  staggerloc=esmf_staggerloc_center, &
1068  name="target_grid_terrain", &
1069  rc=error)
1070  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1071  call error_handler("IN FieldCreate", error)
1072 
1073  if (localpet == 0) then
1074  allocate(landmask_one_tile(i_target,j_target))
1075  allocate(seamask_one_tile(i_target,j_target))
1076  allocate(latitude_one_tile(i_target,j_target))
1077  allocate(latitude_s_one_tile(i_target,jp1_target))
1078  allocate(latitude_w_one_tile(ip1_target,j_target))
1079  allocate(longitude_one_tile(i_target,j_target))
1080  allocate(longitude_s_one_tile(i_target,jp1_target))
1081  allocate(longitude_w_one_tile(ip1_target,j_target))
1082  allocate(terrain_one_tile(i_target,j_target))
1083  else
1084  allocate(landmask_one_tile(0,0))
1085  allocate(seamask_one_tile(0,0))
1086  allocate(longitude_one_tile(0,0))
1087  allocate(longitude_s_one_tile(0,0))
1088  allocate(longitude_w_one_tile(0,0))
1089  allocate(latitude_one_tile(0,0))
1090  allocate(latitude_s_one_tile(0,0))
1091  allocate(latitude_w_one_tile(0,0))
1092  allocate(terrain_one_tile(0,0))
1093  endif
1094 
1095  do tile = 1, num_tiles_target_grid
1096  if (localpet == 0) then
1097  the_file = trim(orog_dir_target_grid) // trim(orog_files_target_grid(tile))
1098  call get_model_mask_terrain(trim(the_file), i_target, j_target, landmask_one_tile, &
1099  terrain_one_tile)
1100  seamask_one_tile = 0
1101  where(landmask_one_tile == 0) seamask_one_tile = 1
1103  i_target, j_target, ip1_target, jp1_target, latitude_one_tile, &
1104  latitude_s_one_tile, latitude_w_one_tile, longitude_one_tile, &
1105  longitude_s_one_tile, longitude_w_one_tile)
1106  endif
1107  print*,"- CALL FieldScatter FOR TARGET GRID LANDMASK. TILE IS: ", tile
1108  call esmf_fieldscatter(landmask_target_grid, landmask_one_tile, rootpet=0, tile=tile, rc=error)
1109  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1110  call error_handler("IN FieldScatter", error)
1111  print*,"- CALL FieldScatter FOR TARGET GRID SEAMASK. TILE IS: ", tile
1112  call esmf_fieldscatter(seamask_target_grid, seamask_one_tile, rootpet=0, tile=tile, rc=error)
1113  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1114  call error_handler("IN FieldScatter", error)
1115  print*,"- CALL FieldScatter FOR TARGET GRID LONGITUDE. TILE IS: ", tile
1116  call esmf_fieldscatter(longitude_target_grid, longitude_one_tile, rootpet=0, tile=tile, rc=error)
1117  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1118  call error_handler("IN FieldScatter", error)
1119  print*,"- CALL FieldScatter FOR TARGET GRID LONGITUDE_S. TILE IS: ", tile
1120  call esmf_fieldscatter(longitude_s_target_grid, longitude_s_one_tile, rootpet=0, tile=tile, rc=error)
1121  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1122  call error_handler("IN FieldScatter", error)
1123  print*,"- CALL FieldScatter FOR TARGET GRID LONGITUDE_W. TILE IS: ", tile
1124  call esmf_fieldscatter(longitude_w_target_grid, longitude_w_one_tile, rootpet=0, tile=tile, rc=error)
1125  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1126  call error_handler("IN FieldScatter", error)
1127  print*,"- CALL FieldScatter FOR TARGET GRID LATITUDE. TILE IS: ", tile
1128  call esmf_fieldscatter(latitude_target_grid, latitude_one_tile, rootpet=0, tile=tile, rc=error)
1129  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1130  call error_handler("IN FieldScatter", error)
1131  print*,"- CALL FieldScatter FOR TARGET GRID LATITUDE_S. TILE IS: ", tile
1132  call esmf_fieldscatter(latitude_s_target_grid, latitude_s_one_tile, rootpet=0, tile=tile, rc=error)
1133  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1134  call error_handler("IN FieldScatter", error)
1135  print*,"- CALL FieldScatter FOR TARGET GRID LATITUDE_W. TILE IS: ", tile
1136  call esmf_fieldscatter(latitude_w_target_grid, latitude_w_one_tile, rootpet=0, tile=tile, rc=error)
1137  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1138  call error_handler("IN FieldScatter", error)
1139  print*,"- CALL FieldScatter FOR TARGET GRID TERRAIN. TILE IS: ", tile
1140  call esmf_fieldscatter(terrain_target_grid, terrain_one_tile, rootpet=0, tile=tile, rc=error)
1141  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1142  call error_handler("IN FieldScatter", error)
1143  enddo
1144 
1145  deallocate(landmask_one_tile)
1146  deallocate(seamask_one_tile)
1147  deallocate(longitude_one_tile)
1148  deallocate(longitude_s_one_tile)
1149  deallocate(longitude_w_one_tile)
1150  deallocate(latitude_one_tile)
1151  deallocate(latitude_s_one_tile)
1152  deallocate(latitude_w_one_tile)
1153  deallocate(terrain_one_tile)
1154 
1155  end subroutine define_target_grid
1156 
1175  subroutine get_model_latlons(mosaic_file, orog_dir, num_tiles, tile, &
1176  i_tile, j_tile, ip1_tile, jp1_tile, &
1177  latitude, latitude_s, latitude_w, &
1178  longitude, longitude_s, longitude_w)
1180  use netcdf
1181 
1182  implicit none
1183 
1184  character(len=*), intent(in) :: mosaic_file, orog_dir
1185 
1186  integer, intent(in) :: num_tiles, tile
1187  integer, intent(in) :: i_tile, j_tile
1188  integer, intent(in) :: ip1_tile, jp1_tile
1189 
1190  real(esmf_kind_r8), intent(out) :: latitude(i_tile, j_tile)
1191  real(esmf_kind_r8), intent(out) :: latitude_s(i_tile, jp1_tile)
1192  real(esmf_kind_r8), intent(out) :: latitude_w(ip1_tile, j_tile)
1193  real(esmf_kind_r8), intent(out) :: longitude(i_tile, j_tile)
1194  real(esmf_kind_r8), intent(out) :: longitude_s(i_tile, jp1_tile)
1195  real(esmf_kind_r8), intent(out) :: longitude_w(ip1_tile, j_tile)
1196 
1197  character(len=50) :: grid_files(num_tiles)
1198  character(len=255) :: grid_file
1199 
1200  integer :: error, id_var, ncid
1201  integer :: id_dim, nxp, nyp, i, j, ii, jj
1202 
1203  real(esmf_kind_r8), allocatable :: tmpvar(:,:)
1204 
1205  print*,"- READ MODEL GRID FILE"
1206 
1207  print*,'- OPEN MOSAIC FILE: ', trim(mosaic_file)
1208  error=nf90_open(trim(mosaic_file), nf90_nowrite, ncid)
1209  call netcdf_err(error, 'opening mosaic file')
1210 
1211  print*,"- READ GRID FILE NAMES"
1212  error=nf90_inq_varid(ncid, 'gridfiles', id_var)
1213  call netcdf_err(error, 'reading gridfiles id')
1214  error=nf90_get_var(ncid, id_var, grid_files)
1215  call netcdf_err(error, 'reading gridfiles')
1216 
1217  error = nf90_close(ncid)
1218 
1219  grid_file = trim(orog_dir) // trim(grid_files(tile))
1220 
1221  print*,'- OPEN GRID FILE: ', trim(grid_file)
1222  error=nf90_open(trim(grid_file), nf90_nowrite, ncid)
1223  call netcdf_err(error, 'opening grid file')
1224 
1225  print*,'- READ NXP ID'
1226  error=nf90_inq_dimid(ncid, 'nxp', id_dim)
1227  call netcdf_err(error, 'reading nxp id')
1228 
1229  print*,'- READ NXP'
1230  error=nf90_inquire_dimension(ncid,id_dim,len=nxp)
1231  call netcdf_err(error, 'reading nxp')
1232 
1233  print*,'- READ NYP ID'
1234  error=nf90_inq_dimid(ncid, 'nyp', id_dim)
1235  call netcdf_err(error, 'reading nyp id')
1236 
1237  print*,'- READ NYP'
1238  error=nf90_inquire_dimension(ncid,id_dim,len=nyp)
1239  call netcdf_err(error, 'reading nyp')
1240 
1241  if ((nxp/2 /= i_tile) .or. (nyp/2 /= j_tile)) then
1242  call error_handler("DIMENSION MISMATCH IN GRID FILE.", 1)
1243  endif
1244 
1245  allocate(tmpvar(nxp,nyp))
1246 
1247  print*,'- READ LONGITUDE ID'
1248  error=nf90_inq_varid(ncid, 'x', id_var)
1249  call netcdf_err(error, 'reading longitude id')
1250 
1251  print*,'- READ LONGITUDE'
1252  error=nf90_get_var(ncid, id_var, tmpvar)
1253  call netcdf_err(error, 'reading longitude')
1254 
1255  do j = 1, j_tile
1256  do i = 1, i_tile
1257  ii = 2*i
1258  jj = 2*j
1259  longitude(i,j) = tmpvar(ii,jj)
1260  enddo
1261  enddo
1262 
1263  do j = 1, jp1_tile
1264  do i = 1, i_tile
1265  ii = 2*i
1266  jj = (2*j) - 1
1267  longitude_s(i,j) = tmpvar(ii,jj)
1268  enddo
1269  enddo
1270 
1271  do j = 1, j_tile
1272  do i = 1, ip1_tile
1273  ii = (2*i) - 1
1274  jj = 2*j
1275  longitude_w(i,j) = tmpvar(ii,jj)
1276  enddo
1277  enddo
1278 
1279  print*,'- READ LATITUDE ID'
1280  error=nf90_inq_varid(ncid, 'y', id_var)
1281  call netcdf_err(error, 'reading latitude id')
1282 
1283  print*,'- READ LATIITUDE'
1284  error=nf90_get_var(ncid, id_var, tmpvar)
1285  call netcdf_err(error, 'reading latitude')
1286 
1287  do j = 1, j_tile
1288  do i = 1, i_tile
1289  ii = 2*i
1290  jj = 2*j
1291  latitude(i,j) = tmpvar(ii,jj)
1292  enddo
1293  enddo
1294 
1295  do j = 1, jp1_tile
1296  do i = 1, i_tile
1297  ii = 2*i
1298  jj = (2*j) - 1
1299  latitude_s(i,j) = tmpvar(ii,jj)
1300  enddo
1301  enddo
1302 
1303  do j = 1, j_tile
1304  do i = 1, ip1_tile
1305  ii = (2*i) - 1
1306  jj = 2*j
1307  latitude_w(i,j) = tmpvar(ii,jj)
1308  enddo
1309  enddo
1310 
1311  deallocate(tmpvar)
1312 
1313  error = nf90_close(ncid)
1314 
1315  end subroutine get_model_latlons
1316 
1326  subroutine get_model_mask_terrain(orog_file, idim, jdim, mask, terrain)
1328  use netcdf
1329 
1330  implicit none
1331 
1332  character(len=*), intent(in) :: orog_file
1333 
1334  integer, intent(in) :: idim, jdim
1335  integer(esmf_kind_i8), intent(out) :: mask(idim,jdim)
1336 
1337  real(esmf_kind_i8), intent(out) :: terrain(idim,jdim)
1338 
1339  integer :: error, lat, lon
1340  integer :: ncid, id_dim, id_var
1341 
1342  real(kind=4), allocatable :: dummy(:,:)
1343 
1344  print*,"- READ MODEL LAND MASK FILE"
1345 
1346  print*,'- OPEN LAND MASK FILE: ', orog_file
1347  error=nf90_open(orog_file,nf90_nowrite,ncid)
1348  call netcdf_err(error, 'opening land mask file')
1349 
1350  print*,"- READ I-DIMENSION"
1351  error=nf90_inq_dimid(ncid, 'lon', id_dim)
1352  call netcdf_err(error, 'reading idim id')
1353  error=nf90_inquire_dimension(ncid,id_dim,len=lon)
1354  call netcdf_err(error, 'reading idim')
1355 
1356  print*,"- READ J-DIMENSION"
1357  error=nf90_inq_dimid(ncid, 'lat', id_dim)
1358  call netcdf_err(error, 'reading jdim id')
1359  error=nf90_inquire_dimension(ncid,id_dim,len=lat)
1360  call netcdf_err(error, 'reading jdim')
1361 
1362  print*,"- I/J DIMENSIONS: ", lon, lat
1363 
1364  if ((lon /= idim) .or. (lat /= jdim)) then
1365  call error_handler("MISMATCH IN DIMENSIONS.", 1)
1366  endif
1367 
1368  allocate(dummy(idim,jdim))
1369 
1370  print*,"- READ LAND MASK"
1371  error=nf90_inq_varid(ncid, 'slmsk', id_var)
1372  call netcdf_err(error, 'reading slmsk id')
1373  error=nf90_get_var(ncid, id_var, dummy)
1374  call netcdf_err(error, 'reading slmsk')
1375  mask = nint(dummy)
1376 
1377  print*,"- READ RAW OROGRAPHY."
1378  error=nf90_inq_varid(ncid, 'orog_raw', id_var)
1379  call netcdf_err(error, 'reading orog_raw id')
1380  error=nf90_get_var(ncid, id_var, dummy)
1381  call netcdf_err(error, 'reading orog_raw')
1382  terrain = dummy
1383 
1384  error = nf90_close(ncid)
1385 
1386  deallocate (dummy)
1387 
1388  end subroutine get_model_mask_terrain
1389 
1395  implicit none
1396 
1397  integer :: rc
1398 
1399  print*,"- DESTROY MODEL DATA."
1400 
1401  call esmf_fielddestroy(latitude_input_grid,rc=rc)
1402  call esmf_fielddestroy(longitude_input_grid,rc=rc)
1403  if (esmf_fieldiscreated(latitude_s_input_grid)) then
1404  call esmf_fielddestroy(latitude_s_input_grid, rc=rc)
1405  endif
1406  if (esmf_fieldiscreated(latitude_w_input_grid)) then
1407  call esmf_fielddestroy(latitude_w_input_grid, rc=rc)
1408  endif
1409  if (esmf_fieldiscreated(longitude_s_input_grid)) then
1410  call esmf_fielddestroy(longitude_s_input_grid, rc=rc)
1411  endif
1412  if (esmf_fieldiscreated(longitude_w_input_grid)) then
1413  call esmf_fielddestroy(longitude_w_input_grid, rc=rc)
1414  endif
1415  call esmf_fielddestroy(landmask_target_grid, rc=rc)
1416  call esmf_fielddestroy(latitude_target_grid, rc=rc)
1417  if (esmf_fieldiscreated(latitude_s_target_grid)) then
1418  call esmf_fielddestroy(latitude_s_target_grid, rc=rc)
1419  endif
1420  if (esmf_fieldiscreated(latitude_w_target_grid)) then
1421  call esmf_fielddestroy(latitude_w_target_grid, rc=rc)
1422  endif
1423  call esmf_fielddestroy(longitude_target_grid, rc=rc)
1424  if (esmf_fieldiscreated(longitude_s_target_grid)) then
1425  call esmf_fielddestroy(longitude_s_target_grid, rc=rc)
1426  endif
1427  if (esmf_fieldiscreated(longitude_w_target_grid)) then
1428  call esmf_fielddestroy(longitude_w_target_grid, rc=rc)
1429  endif
1430  call esmf_fielddestroy(seamask_target_grid, rc=rc)
1431  call esmf_fielddestroy(terrain_target_grid, rc=rc)
1432  call esmf_griddestroy(input_grid, rc=rc)
1433  call esmf_griddestroy(target_grid, rc=rc)
1434 
1435  end subroutine cleanup_input_target_grid_data
1436 
1448  subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
1450  implicit none
1451 
1452  integer, intent(in ) :: igdtnum, igdtlen, igdstmpl(igdtlen)
1453  integer, intent( out) :: kgds(200), ni, nj
1454  integer :: iscale
1455 
1456  real, intent( out) :: res
1457 
1458  kgds=0
1459 
1460  if (igdtnum.eq.32769) then ! rot lat/lon b grid
1461 
1462  iscale=igdstmpl(10)*igdstmpl(11)
1463  if (iscale == 0) iscale = 1e6
1464  kgds(1)=205 ! oct 6, rotated lat/lon for Non-E
1465  ! Stagger grid
1466  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
1467  ni = kgds(2)
1468  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
1469  nj = kgds(3)
1470  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of
1471  ! 1st grid point
1472  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of
1473  ! 1st grid point
1474 
1475  kgds(6)=0 ! oct 17, resolution and component flags
1476  if (igdstmpl(1)==2 ) kgds(6)=64
1477  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
1478  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
1479 
1480  kgds(7)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 18-20,
1481  ! Lat of cent of rotation
1482  kgds(8)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 21-23,
1483  ! Lon of cent of rotation
1484  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*1000.) ! octs 24-25,
1485  ! Di
1486  kgds(10)=nint(float(igdstmpl(18))/float(iscale)*1000.) ! octs 26-27,
1487  ! Dj
1488 
1489  kgds(11) = 0 ! oct 28, scan mode
1490  if (btest(igdstmpl(19),7)) kgds(11) = 128
1491  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
1492  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
1493 
1494  kgds(12)=nint(float(igdstmpl(20))/float(iscale)*1000.) ! octs 29-31, Lat of
1495  ! last grid point
1496  kgds(13)=nint(float(igdstmpl(21))/float(iscale)*1000.) ! octs 32-34, Lon of
1497  ! last grid point
1498 
1499  kgds(19)=0 ! oct 4, # vert coordinate parameters
1500  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
1501 
1502  res = ((float(kgds(9)) / 1000.0) + (float(kgds(10)) / 1000.0)) &
1503  * 0.5 * 111.0
1504 
1505  elseif(igdtnum==30) then
1506 
1507  kgds(1)=3 ! oct 6, lambert conformal
1508  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
1509  ni = kgds(2)
1510  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
1511  nj = kgds(3)
1512 
1513  iscale = 1e6
1514  kgds(4) = nint(float(igdstmpl(10))/1000.0)
1515  kgds(5) = nint(float(igdstmpl(11))/1000.0)
1516 
1517  kgds(6)=0 ! oct 17, resolution and component flags
1518  if (igdstmpl(1)==2 ) kgds(6)=64
1519  if ( btest(igdstmpl(12),4).OR.btest(igdstmpl(12),5) ) kgds(6)=kgds(6)+128
1520  if ( btest(igdstmpl(12),3) ) kgds(6)=kgds(6)+8
1521 
1522  kgds(7) = nint(float(igdstmpl(14))/1000.0)
1523  kgds(8) = nint(float(igdstmpl(15))/1000.0)
1524  kgds(9) = nint(float(igdstmpl(16))/1000.0)
1525  kgds(10) = 0
1526 
1527  kgds(11) = 0 ! oct 28, scan mode
1528  if (btest(igdstmpl(18),7)) kgds(11) = 128
1529  if (btest(igdstmpl(18),6)) kgds(11) = kgds(11) + 64
1530  if (btest(igdstmpl(18),5)) kgds(11) = kgds(11) + 32
1531 
1532  kgds(12) = nint(float(igdstmpl(19))/1000.0)
1533  kgds(13) = nint(float(igdstmpl(20))/1000.0)
1534  kgds(14) = -90
1535  kgds(15) = 0
1536 
1537  elseif(igdtnum==0) then ! lat/lon grid
1538 
1539  iscale=igdstmpl(10)*igdstmpl(11)
1540  if (iscale == 0) iscale = 1e6
1541  kgds(1)=0 ! oct 6, data representation type.
1542  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
1543  ni = kgds(2)
1544  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
1545  nj = kgds(3)
1546  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of 1st grid point
1547  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of 1st grid point
1548 
1549  kgds(6)=0 ! oct 17, resolution and component flags
1550  if (igdstmpl(1)==2 ) kgds(6)=64
1551  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
1552  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
1553 
1554  kgds(7)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 18-20, Lat of last grid point
1555  kgds(8)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 21-23, Lon of last grid point
1556  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*1000.) ! octs 24-25, "i" resolution.
1557  kgds(10)=nint(float(igdstmpl(18))/float(iscale)*1000.) ! octs 26-27, "j" resolution.
1558 
1559  kgds(11) = 0 ! oct 28, scan mode
1560  if (btest(igdstmpl(19),7)) kgds(11) = 128
1561  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
1562  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
1563 
1564  kgds(12)=0 ! octs 29-32, reserved
1565  kgds(19)=0 ! oct 4, # vert coordinate parameters
1566  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
1567 
1568  else
1569 
1570  call error_handler("UNRECOGNIZED INPUT GRID TYPE ", 1)
1571 
1572  endif
1573 
1574  end subroutine gdt_to_gds
1575 
1576  end module model_grid
integer, public j_target
j dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:40
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public num_tiles_target_grid
Number of tiles, target grid.
Definition: model_grid.F90:49
+
subroutine, public cleanup_input_target_grid_data
Deallocate all esmf grid objects.
+
integer, public lsoil_target
Number of soil layers, target grid.
Definition: model_grid.F90:25
+
integer, public ip1_input
i_input plus 1
Definition: model_grid.F90:33
+
type(esmf_field), public longitude_w_target_grid
longitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:90
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
subroutine define_input_grid_mosaic(localpet, npets)
Define input grid for tiled data using the &#39;mosaic&#39;, &#39;grid&#39; and orography files.
Definition: model_grid.F90:402
+
integer, public jp1_input
j_input plus 1
Definition: model_grid.F90:35
+
integer, public nsoill_out
Number of soil levels desired in the output data.
+
type(esmf_field), public longitude_s_target_grid
longitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:87
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
type(esmf_field), public latitude_input_grid
latitude of grid center, input grid
Definition: model_grid.F90:57
+
type(esmf_field), public latitude_target_grid
latitude of grid center, target grid
Definition: model_grid.F90:77
+
integer, public i_target
i dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:37
+
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.
+
integer, public num_tiles_input_grid
Number of tiles, input grid.
Definition: model_grid.F90:47
+
type(esmf_field), public latitude_s_target_grid
latitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:79
+
type(esmf_field), public latitude_w_input_grid
latitude of &#39;west&#39; edge of grid box, input grid
Definition: model_grid.F90:67
+
type(esmf_grid), public target_grid
target grid esmf grid object.
Definition: model_grid.F90:54
+
logical, public convert_sfc
Convert sfc data when true.
+
character(len=500), public orog_dir_target_grid
Directory containing the target grid orography files.
+
character(len=500), dimension(6), public orog_files_input_grid
Input grid orography files.
+
subroutine get_model_mask_terrain(orog_file, idim, jdim, mask, terrain)
Read the model land mask and terrain for a single tile from the orography file.
+
type(esmf_field), public latitude_w_target_grid
latitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:82
+
character(len=500), public orog_dir_input_grid
Directory containing the input grid orography files.
+
type(esmf_field), public landmask_target_grid
land mask target grid - &#39;1&#39; land; &#39;0&#39; non-land
Definition: model_grid.F90:74
+
character(len=500), public mosaic_file_target_grid
Target grid mosaic file.
+
character(len=500), public mosaic_file_input_grid
Input grid mosaic file.
+
type(esmf_field), public longitude_w_input_grid
longitude of &#39;west&#39; edge of grid box, input grid
Definition: model_grid.F90:70
+
character(len=500), dimension(6), public atm_files_input_grid
File names of input atmospheric data.
+
type(esmf_field), public latitude_s_input_grid
latitude of &#39;south&#39; edge of grid box, input grid
Definition: model_grid.F90:61
+
subroutine, public define_target_grid(localpet, npets)
Setup the esmf grid object for the target grid.
Definition: model_grid.F90:888
+
character(len=500), dimension(6), public orog_files_target_grid
Target grid orography files.
+
type(esmf_field), public longitude_s_input_grid
longitude of &#39;south&#39; edge of grid box, input grid
Definition: model_grid.F90:64
+
logical, public convert_atm
Convert atmospheric data when true.
+
type(esmf_field), public longitude_target_grid
longitude of grid center, target grid
Definition: model_grid.F90:85
+
subroutine, public define_input_grid(localpet, npets)
Driver routine to setup the esmf grid object for the input grid.
Definition: model_grid.F90:117
+
type(esmf_grid), public input_grid
input grid esmf grid object
Definition: model_grid.F90:52
+
character(len=500), public data_dir_input_grid
Directory containing input atm or sfc files.
+
subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
Convert the GRIB2 grid description template to to the GRIB1 grid description section.
+
character(len=50), public input_grid_type
map projection of input grid
Definition: model_grid.F90:21
+
integer, public ip1_target
ip1_target plus 1
Definition: model_grid.F90:43
+
character(len=25), public input_type
Input data type:
+
type(esmf_field), public terrain_target_grid
terrain height target grid
Definition: model_grid.F90:96
+
character(len=5), dimension(:), allocatable, public tiles_target_grid
Tile names of target grid.
Definition: model_grid.F90:19
+
type(esmf_field), public longitude_input_grid
longitude of grid center, input grid
Definition: model_grid.F90:59
+
character(len=500), public grib2_file_input_grid
REQUIRED.
+
type(esmf_field), public seamask_target_grid
sea mask target grid - &#39;1&#39; non-land; &#39;0&#39; land
Definition: model_grid.F90:93
+
subroutine define_input_grid_gaussian(npets)
Define grid object for input data on global gaussian grids.
Definition: model_grid.F90:148
+
character(len=500), dimension(6), public sfc_files_input_grid
File names containing input surface data.
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
subroutine define_input_grid_grib2(npets)
Define input grid object for grib2 input data.
Definition: model_grid.F90:615
+
integer, public jp1_target
jp1_target plus 1
Definition: model_grid.F90:45
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaceatm__input__data.html b/ver-1.11.0/chgres_cube/namespaceatm__input__data.html new file mode 100644 index 000000000..544d4b1a3 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaceatm__input__data.html @@ -0,0 +1,1137 @@ + + + + + + + +chgres_cube: atm_input_data Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atm_input_data Module Reference
+
+
+ +

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_nemsio_file (localpet)
 Read input grid atmospheric fv3 gaussian nemsio files. More...
 
subroutine read_input_atm_gaussian_netcdf_file (localpet)
 Read fv3 netcdf gaussian history file. More...
 
subroutine read_input_atm_gfs_gaussian_nemsio_file (localpet)
 Read input atmospheric data from spectral gfs (global gaussian in nemsio format. More...
 
subroutine read_input_atm_gfs_sigio_file (localpet)
 Read input atmospheric data from spectral gfs (old sigio format). 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...
 
+

Detailed Description

+

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.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ calcalpha_rotlatlon()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + +
[in]latgridgrid latitudes
[in]longridgrid longitudes
[in]cenlatcenter latitude
[in]cenloncenter longitude
[out]alphagrid rotation angle
+
+
+
Author
Larissa Reames
+ +

Definition at line 3244 of file atm_input_data.F90.

+ +

References model_grid::i_input, and model_grid::j_input.

+ +

Referenced by read_winds().

+ +
+
+ +

◆ cleanup_input_atm_data()

+ +
+
+ + + + + + + +
subroutine, public atm_input_data::cleanup_input_atm_data ()
+
+ +

Free up memory associated with atm data.

+
Author
George Gayno NCEP/EMC
+ +

Definition at line 3283 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().

+ +
+
+ +

◆ convert_winds_to_xyz()

+ + + +

◆ gridrot()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine atm_input_data::gridrot (real(esmf_kind_r4), intent(in) lov,
real(esmf_kind_r4), intent(in) latin1,
real(esmf_kind_r4), intent(in) latin2,
real(esmf_kind_r8), dimension(i_input,j_input), intent(in) lon,
real(esmf_kind_r4), dimension(i_input,j_input), intent(inout) rot 
)
+
+private
+
+ +

Compute grid rotation angle for non-latlon grids.

+
Note
The original gridrot subroutine was specific to polar stereographic grids. We need to compute it for Lambert Conformal grids. So we need lat1,lat2. This follows the ncl_ncarg source code: ncl_ncarg-6.6.2/ni/src/ncl/GetGrids.c
+
Parameters
+ + + + + + +
[in]lovorientation angle
[in]latin1first tangent latitude
[in]latin2second tangent latitude
[in]lonlongitude
[in,out]rotrotation angle
+
+
+
Author
Larissa Reames
+ +

Definition at line 3203 of file atm_input_data.F90.

+ +

References model_grid::i_input, and model_grid::j_input.

+ +

Referenced by read_winds().

+ +
+
+ +

◆ init_atm_esmf_fields()

+ + + +

◆ read_input_atm_data()

+ +
+
+ + + + + + + + +
subroutine, public atm_input_data::read_input_atm_data (integer, intent(in) localpet)
+
+ +

Read input grid atmospheric data driver.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 78 of file atm_input_data.F90.

+ +

References program_setup::input_type, read_input_atm_gaussian_nemsio_file(), read_input_atm_gaussian_netcdf_file(), read_input_atm_gfs_gaussian_nemsio_file(), read_input_atm_gfs_sigio_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().

+ +

Referenced by atmosphere::atmosphere_driver().

+ +
+
+ +

◆ read_input_atm_gaussian_nemsio_file()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_gaussian_nemsio_file (integer, intent(in) localpet)
+
+private
+
+
+ +

◆ read_input_atm_gaussian_netcdf_file()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_gaussian_netcdf_file (integer, intent(in) localpet)
+
+private
+
+ +

Read fv3 netcdf gaussian history file.

+

Each task reads a horizontal slice.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1296 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().

+ +
+
+ +

◆ read_input_atm_gfs_gaussian_nemsio_file()

+ +
+
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_gfs_gaussian_nemsio_file (integer, intent(in) localpet)
+
+ +

Read input atmospheric data from spectral gfs (global gaussian in nemsio format.

+

Starting July 19, 2017).

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 501 of file atm_input_data.F90.

+ +

References program_setup::atm_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dzdt_input_grid, model_grid::i_input, init_atm_esmf_fields(), 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().

+ +
+
+ +

◆ read_input_atm_gfs_sigio_file()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_gfs_sigio_file (integer, intent(in) localpet)
+
+private
+
+ +

Read input atmospheric data from spectral gfs (old sigio format).

+
Note
Format used prior to July 19, 2017.
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 262 of file atm_input_data.F90.

+ +

References program_setup::atm_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dzdt_input_grid, model_grid::i_input, init_atm_esmf_fields(), 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().

+ +
+
+ +

◆ read_input_atm_grib2_file()

+ +
+
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_grib2_file (integer, intent(in) localpet)
+
+
+ +

◆ read_input_atm_restart_file()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atm_input_data::read_input_atm_restart_file (integer, intent(in) localpet)
+
+private
+
+ +

Read input grid fv3 atmospheric data 'warm' restart files.

+
Note
Routine reads tiled files in parallel. Tile 1 is read by localpet 0; tile 2 by localpet 1, etc. The number of pets must be equal to or greater than the number of tiled files.
+ Logic only tested with global input data of six tiles.
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1037 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().

+ +
+
+ +

◆ read_input_atm_tiled_history_file()

+ +
+
+ + + + + + + + +
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.

+
Note
Routine reads tiled files in parallel. Tile 1 is read by localpet 0; tile 2 by localpet 1, etc. The number of pets must be equal to or greater than the number of tiled files.
+
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1680 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().

+ +
+
+ +

◆ read_winds()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + + +
[in,out]uu-component wind
[in,out]vv-component wind
[in]localpetESMF local persistent execution thread
[in]octet_23Section 4/Octet 23 - Type of first fixed surface.
[in]rlevsArray of atmospheric level values
[in]lugbLogical unit number of GRIB2 file.
[in]pdt_numProduct definition template number.
+
+
+
Author
Larissa Reames
+ +

Definition at line 2938 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().

+ +
+
+

Variable Documentation

+ +

◆ dpres_input_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atm_input_data::dpres_input_grid
+
+private
+
+
+ +

◆ dzdt_input_grid

+ + + +

◆ lev_input

+ + + +

◆ levp1_input

+ + + +

◆ pres_input_grid

+ + + +

◆ ps_input_grid

+ + + +

◆ slevs

+ +
+
+ + + + + +
+ + + + +
character(len=50), dimension(:), allocatable, private atm_input_data::slevs
+
+private
+
+ +

The atmospheric levels in the GRIB2 input file.

+ +

Definition at line 65 of file atm_input_data.F90.

+ +

Referenced by read_input_atm_grib2_file(), and read_winds().

+ +
+
+ +

◆ temp_input_grid

+ + + +

◆ terrain_input_grid

+ + + +

◆ tracers_input_grid

+ + + +

◆ u_input_grid

+ + + +

◆ v_input_grid

+ + + +

◆ xwind_input_grid

+ +
+
+ + + + +
type(esmf_field), public atm_input_data::xwind_input_grid
+
+ +

x-component wind

+ +

Definition at line 57 of file atm_input_data.F90.

+ +

Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), convert_winds_to_xyz(), and init_atm_esmf_fields().

+ +
+
+ +

◆ ywind_input_grid

+ +
+
+ + + + +
type(esmf_field), public atm_input_data::ywind_input_grid
+
+ +

y-component wind

+ +

Definition at line 58 of file atm_input_data.F90.

+ +

Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), convert_winds_to_xyz(), and init_atm_esmf_fields().

+ +
+
+ +

◆ zwind_input_grid

+ +
+
+ + + + +
type(esmf_field), public atm_input_data::zwind_input_grid
+
+ +

z-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().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaceatmosphere.html b/ver-1.11.0/chgres_cube/namespaceatmosphere.html new file mode 100644 index 000000000..9d534d9a2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaceatmosphere.html @@ -0,0 +1,1722 @@ + + + + + + + +chgres_cube: atmosphere Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atmosphere Module Reference
+
+
+ +

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...
 
+

Detailed Description

+

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.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ atmosphere_driver()

+ +
+
+ + + + + + + + +
subroutine, public atmosphere::atmosphere_driver (integer, intent(in) localpet)
+
+ +

Driver routine to process for atmospheric fields.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno
+ +

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, 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().

+ +
+
+ +

◆ cleanup_all_target_atm_data()

+ +
+
+ + + + + +
+ + + + + + + +
subroutine atmosphere::cleanup_all_target_atm_data ()
+
+private
+
+
+ +

◆ cleanup_target_atm_b4adj_data()

+ +
+
+ + + + + +
+ + + + + + + +
subroutine atmosphere::cleanup_target_atm_b4adj_data ()
+
+private
+
+
+ +

◆ compute_zh()

+ + + +

◆ convert_winds_to_uv()

+ + + +

◆ create_atm_b4adj_esmf_fields()

+ +
+
+ + + + + + + +
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.

+
Author
George Gayno
+ +

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().

+ +
+
+ +

◆ create_atm_esmf_fields()

+ + + +

◆ horiz_interp_thomp_mp_climo()

+ + + +

◆ newpr1()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atmosphere::newpr1 (integer, intent(in) localpet)
+
+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-

    +
  • PRGMMR: Henry Juang ORG: W/NMC23 DATE: 2005-04-11
    + - PRGMMR: Fanglin Yang ORG: W/NMC23 DATE: 2006-11-28
    + - PRGMMR: S. Moorthi ORG: NCEP/EMC DATE: 2006-12-12
    + - PRGMMR: S. Moorthi ORG: NCEP/EMC DATE: 2007-01-02
    + INPUT ARGUMENT LIST:
    + IM INTEGER NUMBER OF POINTS TO COMPUTE
    + KM INTEGER NUMBER OF LEVELS
    + IDVC INTEGER VERTICAL COORDINATE ID
    + (1 FOR SIGMA AND 2 FOR HYBRID)
    + IDSL INTEGER TYPE OF SIGMA STRUCTURE
    + (1 FOR PHILLIPS OR 2 FOR MEAN)
    + NVCOORD INTEGER NUMBER OF VERTICAL COORDINATES
    + VCOORD REAL (KM+1,NVCOORD) VERTICAL COORDINATE VALUES
    + FOR IDVC=1, NVCOORD=1: SIGMA INTERFACE
    + FOR IDVC=2, NVCOORD=2: HYBRID INTERFACE A AND B
    + FOR IDVC=3, NVCOORD=3: JUANG GENERAL HYBRID INTERFACE AK REAL (KM+1) HYBRID INTERFACE A
    + BK REAL (KM+1) HYBRID INTERFACE B
    + PS REAL (IX) SURFACE PRESSURE (PA)
    + OUTPUT ARGUMENT LIST:
    + PM REAL (IX,KM) MID-LAYER PRESSURE (PA)
    + DP REAL (IX,KM) LAYER DELTA PRESSURE (PA)
  • +
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
+
Author
Hann Ming Henry Juang, Juang, Fanglin Yang, S. Moorthi
+ +

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().

+ +
+
+ +

◆ newps()

+ +
+
+ + + + + +
+ + + + + + + + +
subroutine atmosphere::newps (integer, intent(in) localpet)
+
+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:

    +
  • 91-10-31 mark iredell
  • +
  • 2018-apr adapt for fv3. george gayno
  • +
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
Mark Iredell, George Gayno
+
Date
92-10-31
+ +

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().

+ +
+
+ +

◆ read_vcoord_info()

+ +
+
+ + + + + + + +
subroutine, public atmosphere::read_vcoord_info ()
+
+ +

Reads model vertical coordinate definition file (as specified by namelist variable vcoord_file_target_grid).

+
Author
George Gayno
+ +

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().

+ +
+
+ +

◆ RSEARCH()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine atmosphere::RSEARCH (integer, intent(in) IM,
integer, intent(in) KM1,
integer, intent(in) IXZ1,
integer, intent(in) KXZ1,
real(esmf_kind_r8), dimension(1+(im-1)*ixz1+(km1-1)*kxz1), intent(in) Z1,
integer, intent(in) KM2,
integer, intent(in) IXZ2,
integer, intent(in) KXZ2,
real(esmf_kind_r8), dimension(1+(im-1)*ixz2+(km2-1)*kxz2), intent(in) Z2,
integer, intent(in) IXL2,
integer, intent(in) KXL2,
integer, dimension(1+(im-1)*ixl2+(km2-1)*kxl2), intent(out) L2 
)
+
+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.

+
Parameters
+ + + + + + + + + + + + + +
[in]iminteger number of sequences to search
+
[in]km1integer number of points in each sequence
+
[in]ixz1integer sequence skip number for z1
+
[in]kxz1integer point skip number for z1
+
[in]z1real (1+(im-1)*ixz1+(km1-1)*kxz1)
+ sequence values to search
+ (z1 must be monotonic in either direction)
+
[in]km2integer number of points to search for
+ in each respective sequence
+
[in]ixz2integer sequence skip number for z2
+
[in]kxz2integer point skip number for z2
+
[in]z2real (1+(im-1)*ixz2+(km2-1)*kxz2)
+ set of values to search for
+ (z2 need not be monotonic)
+
[in]ixl2integer sequence skip number for l2
+
[in]kxl2integer point skip number for l2
+
[out]l2integer (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))
+
+
+
+
Author
Mark Iredell
+
Date
98-05-01
+ +

Definition at line 2221 of file atmosphere.F90.

+ +
+
+ +

◆ 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
+

Parameters
+ + + + + + + + + + + + + + + + + + + +
[in]iminteger number of columns
+
[in]ixz1integer column skip number for z1
+
[in]ixq1integer column skip number for q1
+
[in]ixz2integer column skip number for z2
+
[in]ixq2integer column skip number for q2
+
[in]nminteger number of fields per column
+
[in]nxq1integer field skip number for q1
+
[in]nxq2integer field skip number for q2
+
[in]km1integer number of input points
+
[in]kxz1integer point skip number for z1
+
[in]kxq1integer point skip number for q1
+
[in]z1real (1+(im-1)*ixz1+(km1-1)*kxz1)
+ input coordinate values in which to interpolate
+ (z1 must be strictly monotonic in either direction)
+
[in]q1real (1+(im-1)*ixq1+(km1-1)*kxq1+(nm-1)*nxq1)
+ input fields to interpolate
+
[in]km2integer number of output points
+
[in]kxz2integer point skip number for z2
+
[in]kxq2integer point skip number for q2
+
[in]z2real (1+(im-1)*ixz2+(km2-1)*kxz2)
+ output coordinate values to which to interpolate
+ (z2 need not be monotonic)
+
[out]q2real (1+(im-1)*ixq2+(km2-1)*kxq2+(nm-1)*nxq2)
+ output interpolated fields
+
+
+
+
Author
Mark Iredell
+
Date
98-05-01
+ +

Definition at line 2028 of file atmosphere.F90.

+ +
+
+ +

◆ VINTG()

+ +
+
+ + + + + +
+ + + + + + + +
subroutine atmosphere::VINTG ()
+
+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.

+
Author
Mark Iredell
+
Date
92-10-31
+ +

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, 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.

+ +
+
+ +

◆ VINTG_THOMP_MP_CLIMO()

+ +
+
+ + + + + +
+ + + + + + + +
subroutine atmosphere::VINTG_THOMP_MP_CLIMO ()
+
+private
+
+ +

Vertically interpolate atmospheric fields to target FV3 grid.

+

Vertically interpolate thompson microphysics climo tracers to the target model levels.

+
Author
George Gayno
+ +

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, and thomp_pres_climo_b4adj_target_grid.

+ +
+
+ +

◆ VINTG_WAM()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine atmosphere::VINTG_WAM (integer, intent(in) YEAR,
integer, intent(in) MONTH,
integer, intent(in) DAY,
integer, intent(in) HOUR,
character(*), intent(in) PF 
)
+
+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.

+
Parameters
+ + + + + + +
[in]yearinitial year
[in]monthinitial month
[in]dayinitial day
[in]hourinitial hour
[in]pfpath to MSIS2.1 parm file
+
+
+
Author
Hann-Ming Henry Juang NCEP/EMC
+ +

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.

+ +
+
+

Variable Documentation

+ +

◆ dzdt_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::dzdt_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ pres_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::pres_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ pres_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::pres_target_grid
+
+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().

+ +
+
+ +

◆ ps_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::ps_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ qnifa_climo_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::qnifa_climo_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ qnwfa_climo_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::qnwfa_climo_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ temp_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::temp_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ terrain_interp_to_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::terrain_interp_to_target_grid
+
+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().

+ +
+
+ +

◆ thomp_pres_climo_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::thomp_pres_climo_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ tracers_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field), dimension(:), allocatable atmosphere::tracers_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ xwind_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::xwind_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ xwind_s_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::xwind_s_target_grid
+
+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().

+ +
+
+ +

◆ xwind_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::xwind_target_grid
+
+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().

+ +
+
+ +

◆ xwind_w_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::xwind_w_target_grid
+
+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().

+ +
+
+ +

◆ ywind_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::ywind_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ ywind_s_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::ywind_s_target_grid
+
+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().

+ +
+
+ +

◆ ywind_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::ywind_target_grid
+
+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().

+ +
+
+ +

◆ ywind_w_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::ywind_w_target_grid
+
+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().

+ +
+
+ +

◆ zwind_b4adj_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::zwind_b4adj_target_grid
+
+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().

+ +
+
+ +

◆ zwind_s_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::zwind_s_target_grid
+
+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().

+ +
+
+ +

◆ zwind_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::zwind_target_grid
+
+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().

+ +
+
+ +

◆ zwind_w_target_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) atmosphere::zwind_w_target_grid
+
+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().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaceatmosphere__target__data.html b/ver-1.11.0/chgres_cube/namespaceatmosphere__target__data.html new file mode 100644 index 000000000..d37c8d5f4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaceatmosphere__target__data.html @@ -0,0 +1,520 @@ + + + + + + + +chgres_cube: atmosphere_target_data Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
atmosphere_target_data Module Reference
+
+
+ +

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...
 
+

Detailed Description

+

Module to hold variables and ESMF fields associated with the target grid atmospheric data.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ cleanup_atmosphere_target_data()

+ +
+
+ + + + + + + +
subroutine, public atmosphere_target_data::cleanup_atmosphere_target_data ()
+
+
+

Variable Documentation

+ +

◆ delp_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::delp_target_grid
+
+
+ +

◆ dzdt_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::dzdt_target_grid
+
+
+ +

◆ lev_target

+ + + +

◆ levp1_target

+ +
+
+ + + + +
integer, public atmosphere_target_data::levp1_target
+
+
+ +

◆ nvcoord_target

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ ps_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::ps_target_grid
+
+
+ +

◆ qnifa_climo_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::qnifa_climo_target_grid
+
+
+ +

◆ qnwfa_climo_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::qnwfa_climo_target_grid
+
+
+ +

◆ temp_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::temp_target_grid
+
+
+ +

◆ tracers_target_grid

+ +
+
+ + + + +
type(esmf_field), dimension(:), allocatable, public atmosphere_target_data::tracers_target_grid
+
+
+ +

◆ u_s_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::u_s_target_grid
+
+
+ +

◆ u_w_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::u_w_target_grid
+
+
+ +

◆ v_s_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::v_s_target_grid
+
+
+ +

◆ v_w_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::v_w_target_grid
+
+
+ +

◆ vcoord_target

+ +
+
+ + + + +
real(esmf_kind_r8), dimension(:,:), allocatable, public atmosphere_target_data::vcoord_target
+
+
+ +

◆ zh_target_grid

+ +
+
+ + + + +
type(esmf_field), public atmosphere_target_data::zh_target_grid
+
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacegrib2__util.html b/ver-1.11.0/chgres_cube/namespacegrib2__util.html new file mode 100644 index 000000000..6ae2c1247 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacegrib2__util.html @@ -0,0 +1,344 @@ + + + + + + + +chgres_cube: grib2_util Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
grib2_util Module Reference
+
+
+ +

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...
 
+

Detailed Description

+

Utilities for use when reading grib2 data.

+

This module contains routines to:

    +
  • convert from RH to specific humidity
  • +
  • convert from omega to dzdt.
  • +
+

George Gayno NCEP/EMC

+

Function/Subroutine Documentation

+ +

◆ convert_omega()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + +
[in,out]omegaon input, vertical velocity on output
[in]ppressure
[in]ttemperature
[in]qspecific humidity
[in]clblower bounds of indices processed by this mpi task
[in]cubupper bounds of indices processed by this mpi task
+
+
+
Author
Larissa Reames
+
+Jeff Beck
+ +

Definition at line 218 of file grib2_util.F90.

+ +

Referenced by atm_input_data::read_input_atm_grib2_file().

+ +
+
+ +

◆ fpvsnew()

+ +
+
+ + + + + + + + +
elemental real function, public grib2_util::fpvsnew (real(esmf_kind_r8), intent(in) t)
+
+ +

Compute saturation vapor pressure.

+
Parameters
+ + +
[in]ttemperature in Kelvin
+
+
+
Returns
fpvsnew Saturation vapor pressure
+
Author
N Phillips w/NMC2X2
+
+
Date
30 dec 82
+ +

Definition at line 136 of file grib2_util.F90.

+ +

Referenced by rh2spfh_gfs().

+ +
+
+ +

◆ rh2spfh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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)

+
Parameters
+ + + + +
[in,out]rh_sphumrel humidity (%) on input. spec hum (kg/kg) on output.
[in]ppressure in Pa
[in]ttemperature
+
+
+
Author
Larissa Reames
+
+Jeff Beck
+ +

Definition at line 38 of file grib2_util.F90.

+ +

Referenced by atm_input_data::read_input_atm_grib2_file().

+ +
+
+ +

◆ rh2spfh_gfs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + +
[in,out]rh_sphumrel humidity on input. spec hum on output.
[in]ppressure in Pa
[in]ttemperature
+
+
+
Author
Jili Dong NCEP/EMC
+ +

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().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers.html b/ver-1.11.0/chgres_cube/namespacemembers.html new file mode 100644 index 000000000..7d6391132 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers.html @@ -0,0 +1,137 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- a -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_b.html b/ver-1.11.0/chgres_cube/namespacemembers_b.html new file mode 100644 index 000000000..305560edd --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_b.html @@ -0,0 +1,110 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- b -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_c.html b/ver-1.11.0/chgres_cube/namespacemembers_c.html new file mode 100644 index 000000000..14206d857 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_c.html @@ -0,0 +1,209 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- c -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_d.html b/ver-1.11.0/chgres_cube/namespacemembers_d.html new file mode 100644 index 000000000..65efea8ad --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_d.html @@ -0,0 +1,149 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- d -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_dup.js b/ver-1.11.0/chgres_cube/namespacemembers_dup.js new file mode 100644 index 000000000..2c33bb4aa --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_dup.js @@ -0,0 +1,28 @@ +var namespacemembers_dup = +[ + [ "a", "namespacemembers.html", null ], + [ "b", "namespacemembers_b.html", null ], + [ "c", "namespacemembers_c.html", null ], + [ "d", "namespacemembers_d.html", null ], + [ "e", "namespacemembers_e.html", null ], + [ "f", "namespacemembers_f.html", null ], + [ "g", "namespacemembers_g.html", null ], + [ "h", "namespacemembers_h.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "j", "namespacemembers_j.html", null ], + [ "l", "namespacemembers_l.html", null ], + [ "m", "namespacemembers_m.html", null ], + [ "n", "namespacemembers_n.html", null ], + [ "o", "namespacemembers_o.html", null ], + [ "p", "namespacemembers_p.html", null ], + [ "q", "namespacemembers_q.html", null ], + [ "r", "namespacemembers_r.html", null ], + [ "s", "namespacemembers_s.html", null ], + [ "t", "namespacemembers_t.html", null ], + [ "u", "namespacemembers_u.html", null ], + [ "v", "namespacemembers_v.html", null ], + [ "w", "namespacemembers_w.html", null ], + [ "x", "namespacemembers_x.html", null ], + [ "y", "namespacemembers_y.html", null ], + [ "z", "namespacemembers_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/namespacemembers_e.html b/ver-1.11.0/chgres_cube/namespacemembers_e.html new file mode 100644 index 000000000..3bae30eb0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_e.html @@ -0,0 +1,107 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- e -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_f.html b/ver-1.11.0/chgres_cube/namespacemembers_f.html new file mode 100644 index 000000000..14555e6f1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_f.html @@ -0,0 +1,134 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- f -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_func.html b/ver-1.11.0/chgres_cube/namespacemembers_func.html new file mode 100644 index 000000000..a503a17dd --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_func.html @@ -0,0 +1,377 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- n -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_g.html b/ver-1.11.0/chgres_cube/namespacemembers_g.html new file mode 100644 index 000000000..cad96ba5e --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_g.html @@ -0,0 +1,131 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- g -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_h.html b/ver-1.11.0/chgres_cube/namespacemembers_h.html new file mode 100644 index 000000000..042856573 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_h.html @@ -0,0 +1,116 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- h -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_i.html b/ver-1.11.0/chgres_cube/namespacemembers_i.html new file mode 100644 index 000000000..f31968247 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_i.html @@ -0,0 +1,140 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- i -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_j.html b/ver-1.11.0/chgres_cube/namespacemembers_j.html new file mode 100644 index 000000000..b59a6c72c --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_j.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- j -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_l.html b/ver-1.11.0/chgres_cube/namespacemembers_l.html new file mode 100644 index 000000000..7a1c39ce9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_l.html @@ -0,0 +1,167 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- l -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_m.html b/ver-1.11.0/chgres_cube/namespacemembers_m.html new file mode 100644 index 000000000..0440cfb8b --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_m.html @@ -0,0 +1,137 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- m -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_n.html b/ver-1.11.0/chgres_cube/namespacemembers_n.html new file mode 100644 index 000000000..fc9e9da92 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_n.html @@ -0,0 +1,134 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- n -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_o.html b/ver-1.11.0/chgres_cube/namespacemembers_o.html new file mode 100644 index 000000000..d39e254b7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_o.html @@ -0,0 +1,116 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- o -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_p.html b/ver-1.11.0/chgres_cube/namespacemembers_p.html new file mode 100644 index 000000000..12bf6a827 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_p.html @@ -0,0 +1,122 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- p -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_q.html b/ver-1.11.0/chgres_cube/namespacemembers_q.html new file mode 100644 index 000000000..8dd40533c --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_q.html @@ -0,0 +1,131 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- q -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_r.html b/ver-1.11.0/chgres_cube/namespacemembers_r.html new file mode 100644 index 000000000..bd72be15f --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_r.html @@ -0,0 +1,176 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- r -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_s.html b/ver-1.11.0/chgres_cube/namespacemembers_s.html new file mode 100644 index 000000000..3fb9c870c --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_s.html @@ -0,0 +1,173 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- s -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_t.html b/ver-1.11.0/chgres_cube/namespacemembers_t.html new file mode 100644 index 000000000..9d4a69a8d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_t.html @@ -0,0 +1,176 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- t -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_u.html b/ver-1.11.0/chgres_cube/namespacemembers_u.html new file mode 100644 index 000000000..fdb80dab8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_u.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- u -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_v.html b/ver-1.11.0/chgres_cube/namespacemembers_v.html new file mode 100644 index 000000000..4fbf844b7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_v.html @@ -0,0 +1,146 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- v -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars.html b/ver-1.11.0/chgres_cube/namespacemembers_vars.html new file mode 100644 index 000000000..aec24c4e8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars.html @@ -0,0 +1,128 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars.js b/ver-1.11.0/chgres_cube/namespacemembers_vars.js new file mode 100644 index 000000000..1ad3481bd --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars.js @@ -0,0 +1,28 @@ +var namespacemembers_vars = +[ + [ "a", "namespacemembers_vars.html", null ], + [ "b", "namespacemembers_vars_b.html", null ], + [ "c", "namespacemembers_vars_c.html", null ], + [ "d", "namespacemembers_vars_d.html", null ], + [ "e", "namespacemembers_vars_e.html", null ], + [ "f", "namespacemembers_vars_f.html", null ], + [ "g", "namespacemembers_vars_g.html", null ], + [ "h", "namespacemembers_vars_h.html", null ], + [ "i", "namespacemembers_vars_i.html", null ], + [ "j", "namespacemembers_vars_j.html", null ], + [ "l", "namespacemembers_vars_l.html", null ], + [ "m", "namespacemembers_vars_m.html", null ], + [ "n", "namespacemembers_vars_n.html", null ], + [ "o", "namespacemembers_vars_o.html", null ], + [ "p", "namespacemembers_vars_p.html", null ], + [ "q", "namespacemembers_vars_q.html", null ], + [ "r", "namespacemembers_vars_r.html", null ], + [ "s", "namespacemembers_vars_s.html", null ], + [ "t", "namespacemembers_vars_t.html", null ], + [ "u", "namespacemembers_vars_u.html", null ], + [ "v", "namespacemembers_vars_v.html", null ], + [ "w", "namespacemembers_vars_w.html", null ], + [ "x", "namespacemembers_vars_x.html", null ], + [ "y", "namespacemembers_vars_y.html", null ], + [ "z", "namespacemembers_vars_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_b.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_b.html new file mode 100644 index 000000000..01e43cfb0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_b.html @@ -0,0 +1,110 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_c.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_c.html new file mode 100644 index 000000000..539baaf88 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_c.html @@ -0,0 +1,140 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_d.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_d.html new file mode 100644 index 000000000..5d3ce34fb --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_d.html @@ -0,0 +1,134 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_e.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_e.html new file mode 100644 index 000000000..fc764357d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_e.html @@ -0,0 +1,107 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_f.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_f.html new file mode 100644 index 000000000..99bcd2d91 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_f.html @@ -0,0 +1,128 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_g.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_g.html new file mode 100644 index 000000000..2c06e4ebe --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_g.html @@ -0,0 +1,113 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_h.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_h.html new file mode 100644 index 000000000..d3c6b457f --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_h.html @@ -0,0 +1,113 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_i.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_i.html new file mode 100644 index 000000000..de468face --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_i.html @@ -0,0 +1,131 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_j.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_j.html new file mode 100644 index 000000000..9e670d0db --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_j.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_l.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_l.html new file mode 100644 index 000000000..d6af3f18d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_l.html @@ -0,0 +1,167 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_m.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_m.html new file mode 100644 index 000000000..e9890e178 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_m.html @@ -0,0 +1,137 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_n.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_n.html new file mode 100644 index 000000000..724c8f146 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_n.html @@ -0,0 +1,125 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_o.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_o.html new file mode 100644 index 000000000..226c7bb46 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_o.html @@ -0,0 +1,116 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_p.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_p.html new file mode 100644 index 000000000..25ffd7abc --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_p.html @@ -0,0 +1,122 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_q.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_q.html new file mode 100644 index 000000000..8370e12b8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_q.html @@ -0,0 +1,128 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_r.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_r.html new file mode 100644 index 000000000..e474e6c6e --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_r.html @@ -0,0 +1,116 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_s.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_s.html new file mode 100644 index 000000000..c1e028b6d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_s.html @@ -0,0 +1,161 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_t.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_t.html new file mode 100644 index 000000000..f29e1ddcd --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_t.html @@ -0,0 +1,173 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_u.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_u.html new file mode 100644 index 000000000..46f4f7484 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_u.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_v.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_v.html new file mode 100644 index 000000000..720d04133 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_v.html @@ -0,0 +1,137 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_w.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_w.html new file mode 100644 index 000000000..f9ff492fb --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_w.html @@ -0,0 +1,122 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_x.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_x.html new file mode 100644 index 000000000..30ac46ef9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_x.html @@ -0,0 +1,140 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- x -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_y.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_y.html new file mode 100644 index 000000000..4fdccb685 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_y.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- y -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_vars_z.html b/ver-1.11.0/chgres_cube/namespacemembers_vars_z.html new file mode 100644 index 000000000..c9533c5e0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_vars_z.html @@ -0,0 +1,131 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- z -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_w.html b/ver-1.11.0/chgres_cube/namespacemembers_w.html new file mode 100644 index 000000000..e27f47357 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_w.html @@ -0,0 +1,122 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- w -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_x.html b/ver-1.11.0/chgres_cube/namespacemembers_x.html new file mode 100644 index 000000000..a4e5b0c2a --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_x.html @@ -0,0 +1,140 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- x -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_y.html b/ver-1.11.0/chgres_cube/namespacemembers_y.html new file mode 100644 index 000000000..ecd6853e6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_y.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- y -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemembers_z.html b/ver-1.11.0/chgres_cube/namespacemembers_z.html new file mode 100644 index 000000000..afa7a893d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemembers_z.html @@ -0,0 +1,131 @@ + + + + + + + +chgres_cube: Module Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented module members with links to the modules they belong to:
+ +

- z -

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacemodel__grid.html b/ver-1.11.0/chgres_cube/namespacemodel__grid.html new file mode 100644 index 000000000..22c5d483f --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacemodel__grid.html @@ -0,0 +1,1349 @@ + + + + + + + +chgres_cube: model_grid Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
model_grid Module Reference
+
+
+ +

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)
 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 landmask_target_grid
 land mask target grid - '1' land; '0' 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' non-land; '0' 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...
 
+

Detailed Description

+

Sets up the ESMF grid objects for the input data grid and target FV3 grid.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ cleanup_input_target_grid_data()

+ +
+
+ + + + + + + +
subroutine, public model_grid::cleanup_input_target_grid_data ()
+
+
+ +

◆ define_input_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + +
[in]localpetESMF local persistent execution thread
[in]npetsNumber of persistent execution threads
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 117 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().

+ +
+
+ +

◆ define_input_grid_gaussian()

+ +
+
+ + + + + + + + +
subroutine model_grid::define_input_grid_gaussian (integer, intent(in) npets)
+
+ +

Define grid object for input data on global gaussian grids.

+

Recognized file formats:

    +
  • fv3gfs nemsio
  • +
  • spectral gfs nemsio (starting July 19, 2017)
  • +
  • spectral gfs sigio (prior to July 19, 2017)
  • +
  • spectral gfs sfcio (prior to July 19, 2017)
  • +
+
Parameters
+ + +
[in]npetsNumber of persistent execution threads.
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 148 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().

+ +
+
+ +

◆ define_input_grid_grib2()

+ +
+
+ + + + + + + + +
subroutine model_grid::define_input_grid_grib2 (integer, intent(in) npets)
+
+ +

Define input grid object for grib2 input data.

+
Parameters
+ + +
[in]npetsNumber of persistent execution threads
+
+
+
Author
Larissa Reames
+
+Jeff Beck
+
+George Gayno
+ +

Definition at line 615 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().

+ +
+
+ +

◆ define_input_grid_mosaic()

+ +
+
+ + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + +
localpetESMF local persistent execution thread
npetsTotal number of persistent execution threads
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 402 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().

+ +
+
+ +

◆ define_target_grid()

+ +
+
+ + + + + + + + + + + + + + + + + + +
subroutine, public model_grid::define_target_grid (integer, intent(in) localpet,
integer, intent(in) npets 
)
+
+
+ +

◆ gdt_to_gds()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine model_grid::gdt_to_gds (integer, intent(in) igdtnum,
integer, dimension(igdtlen), intent(in) igdstmpl,
integer, intent(in) igdtlen,
integer, dimension(200), intent(out) kgds,
integer, intent(out) ni,
integer, intent(out) nj,
real, intent(out) res 
)
+
+private
+
+ +

Convert the GRIB2 grid description template to to the GRIB1 grid description section.

+
Parameters
+ + + + + + + + +
[in]igdtnumGRIB2 grid description template number.
[in]igdstmplLength of grib2 grid description template.
[in]igdtlenArray of GRIB2 grid description template octets.
[out]kgdsArray of GRIB1 grid description octets.
[out]niI-dimension of grid.
[out]njJ-dimension of grid.
[out]resResolution of grid in km.
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1449 of file model_grid.F90.

+ +

Referenced by define_input_grid_grib2().

+ +
+
+ +

◆ get_model_latlons()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + + + + + + + + + +
[in]mosaic_fileThe mosaic file associated with the 'grid' files.
[in]orog_dirDirectory containing the 'grid' and orography files.
[in]num_tilesTotal number of tiles
[in]tileTile 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]latitudegrid box center latitude
[out]latitude_slatitude of 'south' edge of grid box
[out]latitude_wlatitude of 'west' edge of grid box
[out]longitudegrid box center longitude
[out]longitude_slongitude of 'south' edge of grid box
[out]longitude_wlongitude of 'west' edge of grid box
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1179 of file model_grid.F90.

+ +

Referenced by define_input_grid_mosaic(), and define_target_grid().

+ +
+
+ +

◆ get_model_mask_terrain()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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 
)
+
+ +

Read the model land mask and terrain for a single tile from the orography file.

+
Parameters
+ + + + + + +
[in]orog_filePath/name of orography file
[in]idim"i" dimension of tile
[in]jdim"j" dimension of tile
[out]maskland mask of tile
[out]terrainterrain height of tile
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1327 of file model_grid.F90.

+ +

Referenced by define_target_grid().

+ +
+
+

Variable Documentation

+ +

◆ i_input

+ + + +

◆ i_target

+ +
+
+ + + + +
integer, public model_grid::i_target
+
+
+ +

◆ input_grid

+ + + +

◆ input_grid_type

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ ip1_input

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ ip1_target

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ j_input

+ + + +

◆ j_target

+ +
+
+ + + + +
integer, public model_grid::j_target
+
+
+ +

◆ jp1_input

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ jp1_target

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ landmask_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::landmask_target_grid
+
+
+ +

◆ latitude_input_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::latitude_input_grid
+
+
+ +

◆ latitude_s_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ latitude_s_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::latitude_s_target_grid
+
+ +

latitude of 'south' edge of grid box, target grid

+ +

Definition at line 79 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().

+ +
+
+ +

◆ latitude_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::latitude_target_grid
+
+
+ +

◆ latitude_w_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ latitude_w_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::latitude_w_target_grid
+
+ +

latitude of 'west' edge of grid box, target grid

+ +

Definition at line 82 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().

+ +
+
+ +

◆ longitude_input_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::longitude_input_grid
+
+
+ +

◆ longitude_s_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ longitude_s_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::longitude_s_target_grid
+
+ +

longitude of 'south' edge of grid box, target grid

+ +

Definition at line 87 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().

+ +
+
+ +

◆ longitude_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::longitude_target_grid
+
+ +

longitude of grid center, target grid

+ +

Definition at line 85 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().

+ +
+
+ +

◆ longitude_w_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ longitude_w_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::longitude_w_target_grid
+
+ +

longitude of 'west' edge of grid box, target grid

+ +

Definition at line 90 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().

+ +
+
+ +

◆ lsoil_target

+ +
+
+ + + + +
integer, public model_grid::lsoil_target = 4
+
+
+ +

◆ num_tiles_input_grid

+ + + +

◆ num_tiles_target_grid

+ +
+
+ + + + +
integer, public model_grid::num_tiles_target_grid
+
+
+ +

◆ seamask_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::seamask_target_grid
+
+ +

sea mask target grid - '1' non-land; '0' land

+ +

Definition at line 93 of file model_grid.F90.

+ +

Referenced by cleanup_input_target_grid_data(), define_target_grid(), and surface::interp().

+ +
+
+ +

◆ target_grid

+ + + +

◆ terrain_target_grid

+ +
+
+ + + + +
type(esmf_field), public model_grid::terrain_target_grid
+
+ +

terrain height target grid

+ +

Definition at line 96 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().

+ +
+
+ +

◆ tiles_target_grid

+ +
+
+ + + + +
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().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaceprogram__setup.html b/ver-1.11.0/chgres_cube/namespaceprogram__setup.html new file mode 100644 index 000000000..87abb3483 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaceprogram__setup.html @@ -0,0 +1,1892 @@ + + + + + + + +chgres_cube: program_setup Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
program_setup Module Reference
+
+
+ +

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=6), 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...
 
+

Detailed Description

+

This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ calc_soil_params()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine program_setup::calc_soil_params (integer, intent(in) num_soil_cats,
real, intent(in) smlow,
real, intent(in) smhigh,
real, dimension(num_soil_cats), intent(in) satdk,
real, dimension(num_soil_cats), intent(in) maxsmc,
real, dimension(num_soil_cats), intent(in) bb,
real, dimension(num_soil_cats), intent(in) satpsi,
real, dimension(num_soil_cats), intent(out) satdw,
real, dimension(num_soil_cats), intent(out) refsmc,
real, dimension(num_soil_cats), intent(out) drysmc,
real, dimension(num_soil_cats), intent(out) wltsmc 
)
+
+private
+
+ +

Compute soil parameters.

+

These will be used to rescale soil moisture differences in soil type between the input grid and target model grid.

+
Parameters
+ + + + + + + + + + + + +
[in]num_soil_catsnumber of soil type categories
[in]smlowreference parameter for wltsmc
[in]smhighreference parameter for refsmc
[in]satdksaturated soil moisture hydraulic conductivity
[in]maxsmcmaximum soil moisture (porosity)
[in]bbsoil 'b' parameter
[in]satpsisaturated soil potential
[out]satdwsaturated soil diffusivity/conductivity coefficient
[out]refsmconset of soil moisture stress (field capacity)
[out]drysmcair dry soil moisture limit
[out]wltsmcplant soil moisture wilting point
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 678 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver().

+ +
+
+ +

◆ 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.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 517 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().

+ +
+
+ +

◆ get_var_cond()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + +
[in]var_nametable variable name to search for
[out]this_miss_var_methodthe method used to replace missing data
[out]this_miss_var_valuethe value used to replace missing data
[out]this_field_var_namename of variable in output file. not currently implemented.
[out]locvariable table location index
+
+
+
Author
Larissa Reames
+
+Jeff Beck
+ +

Definition at line 447 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().

+ +
+
+ +

◆ read_setup_namelist()

+ + + +

◆ read_varmap()

+ +
+
+ + + + + + + +
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:

    +
  • set_to_fill
  • +
  • skip
  • +
  • stop
  • +
+

The var_type is one of:

    +
  • T - tracer.
  • +
  • D - variables processed by atmosphere subroutine that are not tracers.
  • +
  • S - variables processed by surface subroutine that are not tracers.
  • +
+
Author
Larissa Reames
+
+Jeff Beck
+ +

Definition at line 376 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().

+ +
+
+

Variable Documentation

+ +

◆ atm_core_files_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ atm_files_input_grid

+ +
+
+ + + + +
character(len=500), dimension(6), public program_setup::atm_files_input_grid = "NULL"
+
+
+ +

◆ atm_tracer_files_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ atm_weight_file

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ bb_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::bb_target
+
+ +

Soil 'b' parameter, target grid.

+ +

Definition at line 136 of file program_setup.F90.

+ +

Referenced by surface::calc_liq_soil_moisture(), and calc_soil_params_driver().

+ +
+
+ +

◆ chgres_var_names

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ convert_atm

+ +
+
+ + + + +
logical, public program_setup::convert_atm = .false.
+
+ +

Convert atmospheric data when true.

+ +

Definition at line 95 of file program_setup.F90.

+ +

Referenced by chgres(), model_grid::define_input_grid_gaussian(), and read_setup_namelist().

+ +
+
+ +

◆ convert_nst

+ +
+
+ + + + +
logical, public program_setup::convert_nst = .false.
+
+
+ +

◆ convert_sfc

+ +
+
+ + + + +
logical, public program_setup::convert_sfc = .false.
+
+ +

Convert sfc 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().

+ +
+
+ +

◆ cres_target_grid

+ +
+
+ + + + +
character(len=6), 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().

+ +
+
+ +

◆ cycle_day

+ +
+
+ + + + +
integer, public program_setup::cycle_day = -999
+
+
+ +

◆ cycle_hour

+ +
+
+ + + + +
integer, public program_setup::cycle_hour = -999
+
+
+ +

◆ cycle_mon

+ +
+
+ + + + +
integer, public program_setup::cycle_mon = -999
+
+
+ +

◆ cycle_year

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ data_dir_input_grid

+ + + +

◆ drysmc_input

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::drysmc_input
+
+ +

Air dry soil moisture content input grid.

+ +

Definition at line 128 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ drysmc_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::drysmc_target
+
+ +

Air dry soil moisture content target grid.

+ +

Definition at line 129 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ external_model

+ +
+
+ + + + +
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". 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().

+ +
+
+ +

◆ field_var_names

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ fix_dir_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ geogrid_file_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ grib2_file_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ halo_blend

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ halo_bndy

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ input_type

+ +
+
+ + + + +
character(len=25), public program_setup::input_type ="restart"
+
+ +

Input data type:

+
    +
  • "restart" for fv3 tiled warm restart files (netcdf).
  • +
  • "history" for fv3 tiled history files (netcdf).
  • +
  • "gaussian_nemsio" for fv3 gaussian nemsio files;
  • +
  • "gaussian_netcdf" for fv3 gaussian netcdf files.
  • +
  • "grib2" for grib2 files.
  • +
  • "gfs_gaussian_nemsio" for spectral gfs gaussian nemsio files
  • +
  • "gfs_sigio" for spectral gfs gfs sigio/sfcio files.
  • +
+ +

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_nemsio_file(), 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().

+ +
+
+ +

◆ lai_from_climo

+ +
+
+ + + + +
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 120 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().

+ +
+
+ +

◆ max_tracers

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ maxsmc_input

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::maxsmc_input
+
+ +

Maximum 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().

+ +
+
+ +

◆ maxsmc_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::maxsmc_target
+
+ +

Maximum soil moisture content target grid.

+ +

Definition at line 131 of file program_setup.F90.

+ +

Referenced by surface::calc_liq_soil_moisture(), calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ minmax_vgfrc_from_climo

+ +
+
+ + + + +
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 116 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().

+ +
+
+ +

◆ missing_var_methods

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ missing_var_values

+ +
+
+ + + + +
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 138 of file program_setup.F90.

+ +

Referenced by get_var_cond(), and read_varmap().

+ +
+
+ +

◆ mosaic_file_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ mosaic_file_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ nsoill_out

+ +
+
+ + + + +
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 93 of file program_setup.F90.

+ +

Referenced by model_grid::define_target_grid(), and read_setup_namelist().

+ +
+
+ +

◆ nst_files_input_grid

+ +
+
+ + + + +
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_nemsio_file(), and read_setup_namelist().

+ +
+
+ +

◆ num_tracers

+ + + +

◆ num_tracers_input

+ + + +

◆ orog_dir_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ orog_dir_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ orog_files_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ orog_files_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ read_from_input

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ refsmc_input

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::refsmc_input
+
+ +

Reference soil moisture content input grid (onset of soil moisture stress).

+ +

Definition at line 132 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ refsmc_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::refsmc_target
+
+ +

Reference soil moisture content target grid (onset of soil moisture stress).

+ +

Definition at line 133 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ regional

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ satpsi_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::satpsi_target
+
+ +

Saturated soil potential, target grid.

+ +

Definition at line 137 of file program_setup.F90.

+ +

Referenced by surface::calc_liq_soil_moisture(), and calc_soil_params_driver().

+ +
+
+ +

◆ sfc_files_input_grid

+ + + +

◆ sotyp_from_climo

+ +
+
+ + + + +
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 106 of file program_setup.F90.

+ +

Referenced by surface::interp(), sfc_input_data::read_input_sfc_grib2_file(), and read_setup_namelist().

+ +
+
+ +

◆ tg3_from_soil

+ +
+
+ + + + +
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 123 of file program_setup.F90.

+ +

Referenced by surface::interp(), and read_setup_namelist().

+ +
+
+ +

◆ thomp_mp_climo_file

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ tracers

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ tracers_input

+ +
+
+ + + + +
character(len=20), dimension(max_tracers), public program_setup::tracers_input ="NULL"
+
+
+ +

◆ use_thomp_mp_climo

+ +
+
+ + + + +
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 126 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().

+ +
+
+ +

◆ varmap_file

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ vcoord_file_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ vgfrc_from_climo

+ +
+
+ + + + +
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 111 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().

+ +
+
+ +

◆ vgtyp_from_climo

+ +
+
+ + + + +
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 102 of file program_setup.F90.

+ +

Referenced by surface::interp(), sfc_input_data::read_input_sfc_grib2_file(), and read_setup_namelist().

+ +
+
+ +

◆ wam_cold_start

+ +
+
+ + + + +
logical, public program_setup::wam_cold_start = .false.
+
+ +

When true, cold start for whole atmosphere model.

+ +

Definition at line 98 of file program_setup.F90.

+ +

Referenced by atmosphere::atmosphere_driver(), and read_setup_namelist().

+ +
+
+ +

◆ wam_parm_file

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ wltsmc_input

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::wltsmc_input
+
+ +

Plant wilting point soil moisture content input grid.

+ +

Definition at line 134 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+ +

◆ wltsmc_target

+ +
+
+ + + + +
real, dimension(:), allocatable, public program_setup::wltsmc_target
+
+ +

Plant wilting point soil moisture content target grid.

+ +

Definition at line 135 of file program_setup.F90.

+ +

Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaces.html b/ver-1.11.0/chgres_cube/namespaces.html new file mode 100644 index 000000000..a6fb763be --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaces.html @@ -0,0 +1,119 @@ + + + + + + + +chgres_cube: Modules List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Modules List
+
+
+
Here is a list of all documented modules with brief descriptions:
+ + + + + + + + + + + + +
 Natm_input_dataRead atmospheric data on the input grid
 NatmosphereProcess atmospheric fields
 Natmosphere_target_dataModule to hold variables and ESMF fields associated with the target grid atmospheric data
 Ngrib2_utilUtilities for use when reading grib2 data
 Nmodel_gridSets up the ESMF grid objects for the input data grid and target FV3 grid
 Nprogram_setupThis module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters
 Nsearch_utilReplace undefined values with a valid value
 Nstatic_dataReads static surface climatological data for the target FV3 grid (such as soil type and vegetation type)
 NsurfaceProcess surface and nst fields
 Nsurface_target_dataModule to hold ESMF fields associated with the target grid surface data
 Nthompson_mp_climo_dataModule to read the Thompson climatological MP data file and set up the associated esmf field and grid objects
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespaces_dup.js b/ver-1.11.0/chgres_cube/namespaces_dup.js new file mode 100644 index 000000000..faae3f842 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespaces_dup.js @@ -0,0 +1,14 @@ +var namespaces_dup = +[ + [ "atm_input_data", "namespaceatm__input__data.html", null ], + [ "atmosphere", "namespaceatmosphere.html", null ], + [ "atmosphere_target_data", "namespaceatmosphere__target__data.html", null ], + [ "grib2_util", "namespacegrib2__util.html", null ], + [ "model_grid", "namespacemodel__grid.html", null ], + [ "program_setup", "namespaceprogram__setup.html", null ], + [ "search_util", "namespacesearch__util.html", null ], + [ "static_data", "namespacestatic__data.html", null ], + [ "surface", "namespacesurface.html", null ], + [ "surface_target_data", "namespacesurface__target__data.html", null ], + [ "thompson_mp_climo_data", "namespacethompson__mp__climo__data.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/namespacesearch__util.html b/ver-1.11.0/chgres_cube/namespacesearch__util.html new file mode 100644 index 000000000..ad74be08d --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacesearch__util.html @@ -0,0 +1,266 @@ + + + + + + + +chgres_cube: search_util Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
search_util Module Reference
+
+
+ +

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...
 
+

Detailed Description

+

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.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ search()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + + + + +
[in,out]fieldOn input/output, surface data with undefined/no undefined values.
[in]maskland-mask of surface data.
[in]idim'i' dimension of tile
[in]jdim'j' dimension of tile
[in]tiletile number
[in]field_numsurface field number
[in]latitudelatitude of the surface data
[in]terrain_landterrain height
[in]soilt_climoclimatological soil type
+
+
+
Author
George Gayno NCEP/EMC
+ +

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().

+ +
+
+ +

◆ sst_guess()

+ +
+
+ + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + +
[in]latitudeLatitude in decimal degrees
[out]sstDefault SST in Kelvin
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 235 of file search_util.F90.

+ +

Referenced by search().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacestatic__data.html b/ver-1.11.0/chgres_cube/namespacestatic__data.html new file mode 100644 index 000000000..44822585e --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacestatic__data.html @@ -0,0 +1,623 @@ + + + + + + + +chgres_cube: static_data Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
static_data Module Reference
+
+
+ +

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, 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...
 
+

Detailed Description

+

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.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ cleanup_static_fields()

+ +
+
+ + + + + + + +
subroutine, public static_data::cleanup_static_fields ()
+
+
+ +

◆ create_static_fields()

+ +
+
+ + + + + + + +
subroutine, public static_data::create_static_fields ()
+
+
+ +

◆ get_static_fields()

+ +
+
+ + + + + + + + +
subroutine, public static_data::get_static_fields (integer, intent(in) localpet)
+
+
+ +

◆ read_static_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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(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.

+
Parameters
+ + + + + + + + +
[in]fieldthe name of the surface field to be processed
[in]i_targetthe "i" dimension of the target model tile
[in]j_targetthe "j" dimension of the target model tile
[in]tilethe tile number of be processed
[out]data_one_tilethe processed surface data on the tile
[out]max_data_one_tilefor fields with multiple time periods, the max yearly value on the tile
+
[out]min_data_one_tilefor fields with multiple time periods, the min yearly value on the tile
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 264 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().

+ +
+
+

Variable Documentation

+ +

◆ alnsf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ alnwf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ alvsf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ alvwf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ facsf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ facwf_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ max_veg_greenness_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ min_veg_greenness_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ mxsno_albedo_target_grid

+ +
+
+ + + + +
type(esmf_field), public static_data::mxsno_albedo_target_grid
+
+
+ +

◆ slope_type_target_grid

+ +
+
+ + + + +
type(esmf_field), public static_data::slope_type_target_grid
+
+
+ +

◆ soil_type_target_grid

+ +
+
+ + + + +
type(esmf_field), public static_data::soil_type_target_grid
+
+
+ +

◆ substrate_temp_target_grid

+ +
+
+ + + + +
type(esmf_field), public static_data::substrate_temp_target_grid
+
+
+ +

◆ veg_greenness_target_grid

+ +
+
+ + + + +
type(esmf_field), public static_data::veg_greenness_target_grid
+
+
+ +

◆ veg_type_target_grid

+ + +
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacesurface.html b/ver-1.11.0/chgres_cube/namespacesurface.html new file mode 100644 index 000000000..01b60d560 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacesurface.html @@ -0,0 +1,1109 @@ + + + + + + + +chgres_cube: surface Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface Module Reference
+
+
+ +

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 before output. 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 land and sea ice. 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...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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...
 
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...
 
+

Detailed Description

+

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.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ adjust_soil_levels()

+ +
+
+ + + + + + + + +
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.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
Larissa Reames
+
+Jeff Beck
+ +

Definition at line 2028 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().

+ +
+
+ +

◆ adjust_soilt_for_terrain()

+ +
+
+ + + + + + + +
subroutine surface::adjust_soilt_for_terrain ()
+
+ +

Adjust soil temperature for changes in terrain height between the input and target grids.

+
Author
George Gayno NOAA/EMC
+ +

Definition at line 1952 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().

+ +
+
+ +

◆ calc_liq_soil_moisture()

+ +
+
+ + + + + + + +
subroutine surface::calc_liq_soil_moisture ()
+
+
+ +

◆ cleanup_all_target_sfc_data()

+ +
+
+ + + + + + + +
subroutine surface::cleanup_all_target_sfc_data ()
+
+ +

Free up memory once the target grid surface fields are no longer needed.

+
Author
George Gayno NOAA/EMC
+ +

Definition at line 3429 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().

+ +
+
+ +

◆ create_nst_esmf_fields()

+ + + +

◆ create_surface_esmf_fields()

+ + + +

◆ FRH2O()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + +
[in]tkelvTemperature (Kelvin)
[in]smcTotal soil moisture content (volumetric)
[in]sh2OLiquid soil moisture content (volumetric)
[in]smcmaxSaturation soil moisture content
[in]bexpSoil type "b" parameter
[in]psisSaturated soil matric potential
+
+
+
Returns
frh2O Supercooled liquid water content
+
Author
George Gayno NOAA/EMC
+
Date
2005-05-20
+ +

Definition at line 1646 of file surface.F90.

+ +

References blim, frz_h2o, grav, and hlice.

+ +
+
+ +

◆ ij_to_i_j()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + +
[in]ijthe 1d index
[in]itilei-dimension of the tile
[in]jtilej-dimension of the tile
[out]ithe "i" index
[out]jthe "j" index
+
+
+
Author
George Gayno NOAA/EMC
+ +

Definition at line 3136 of file surface.F90.

+ +

Referenced by interp(), and regrid_many().

+ +
+
+ +

◆ interp()

+ +
+
+ + + + + + + + +
subroutine, public surface::interp (integer, intent(in) localpet)
+
+ +

Horizontally interpolate surface fields from input to target FV3 grid using esmf routines.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NOAA/EMC
+ +

Definition at line 249 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::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_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, 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_target_grid, surface_target_data::z_c_target_grid, and surface_target_data::zm_target_grid.

+ +

Referenced by surface_driver().

+ +
+
+ +

◆ nst_land_fill()

+ + + +

◆ qc_check()

+ + + +

◆ regrid_many()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + + +
[in]bundle_preESMF fieldBundle on input grid
[in]bundle_postESMF fieldBundle on target grid
[in]num_fieldNumber of fields in target field pointer
[in,out]routeRoute handle to saved ESMF regridding instructions
[in]dozeroLogical 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)
+
+
+
Author
Larissa Reames, OU CIMMS/NOAA/NSSL
+ +

Definition at line 3172 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().

+ +
+
+ +

◆ rescale_soil_moisture()

+ +
+
+ + + + + + + +
subroutine surface::rescale_soil_moisture ()
+
+
+ +

◆ roughness()

+ +
+
+ + + + + + + +
subroutine surface::roughness ()
+
+ +

Set roughness length at land and sea ice.

+

At land, roughness is set from a lookup table based on the vegetation type. At sea ice, roughness is set to 1 cm.

+
Author
George Gayno NOAA/EMC
+ +

Definition at line 2144 of file surface.F90.

+ +

References model_grid::landmask_target_grid, static_data::veg_type_target_grid, and surface_target_data::z0_target_grid.

+ +

Referenced by surface_driver().

+ +
+
+ +

◆ search_many()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+
Parameters
+ + + + + + + + + + +
[in]num_fieldNumber of fields to process.
[in,out]bundle_targetESMF FieldBundle holding target fields to search
[in]tileCurrent cubed sphere tile.
[in,out]search_numsArray length num_field holding search field numbers corresponding to each field provided for searching.
[in]localpetESMF 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 3317 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().

+ +
+
+ +

◆ surface_driver()

+ +
+
+ + + + + + + + +
subroutine, public surface::surface_driver (integer, intent(in) localpet)
+
+
+

Variable Documentation

+ +

◆ blim

+ +
+
+ + + + + +
+ + + + +
real, parameter, private surface::blim = 5.5
+
+private
+
+ +

soil 'b' parameter limit

+ +

Definition at line 69 of file surface.F90.

+ +

Referenced by calc_liq_soil_moisture(), and FRH2O().

+ +
+
+ +

◆ frz_h2o

+ +
+
+ + + + + +
+ + + + +
real, parameter, private surface::frz_h2o = 273.15
+
+private
+
+ +

melting pt water

+ +

Definition at line 71 of file surface.F90.

+ +

Referenced by calc_liq_soil_moisture(), and FRH2O().

+ +
+
+ +

◆ frz_ice

+ +
+
+ + + + + +
+ + + + +
real, parameter, private surface::frz_ice = 271.21
+
+private
+
+ +

melting pt sea ice

+ +

Definition at line 73 of file surface.F90.

+ +

Referenced by qc_check().

+ +
+
+ +

◆ grav

+ +
+
+ + + + + +
+ + + + +
real, parameter, private surface::grav = 9.81
+
+private
+
+ +

gravity

+ +

Definition at line 75 of file surface.F90.

+ +

Referenced by calc_liq_soil_moisture(), and FRH2O().

+ +
+
+ +

◆ hlice

+ +
+
+ + + + + +
+ + + + +
real, parameter, private surface::hlice = 3.335E5
+
+private
+
+ +

latent heat of fusion

+ +

Definition at line 77 of file surface.F90.

+ +

Referenced by calc_liq_soil_moisture(), and FRH2O().

+ +
+
+ +

◆ soil_type_from_input_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) surface::soil_type_from_input_grid
+
+private
+
+ +

soil type interpolated from input grid

+ +

Definition at line 59 of file surface.F90.

+ +

Referenced by cleanup_all_target_sfc_data(), create_surface_esmf_fields(), interp(), and rescale_soil_moisture().

+ +
+
+ +

◆ terrain_from_input_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) surface::terrain_from_input_grid
+
+private
+
+ +

terrain height interpolated from input grid

+ +

Definition at line 62 of file surface.F90.

+ +

Referenced by adjust_soilt_for_terrain(), cleanup_all_target_sfc_data(), create_surface_esmf_fields(), and interp().

+ +
+
+ +

◆ terrain_from_input_grid_land

+ +
+
+ + + + + +
+ + + + +
type(esmf_field) surface::terrain_from_input_grid_land
+
+private
+
+ +

terrain height interpolated from input grid at all land points

+ +

Definition at line 65 of file surface.F90.

+ +

Referenced by cleanup_all_target_sfc_data(), and interp().

+ +
+
+ +

◆ veg_type_landice_target

+ +
+
+ + + + + +
+ + + + +
integer, parameter surface::veg_type_landice_target = 15
+
+private
+
+ +

Vegetation type category that defines permanent land ice points.

+

The Noah LSM land ice physics are applied at these points.

+ +

Definition at line 53 of file surface.F90.

+ +

Referenced by adjust_soilt_for_terrain(), calc_liq_soil_moisture(), interp(), qc_check(), and rescale_soil_moisture().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacesurface.js b/ver-1.11.0/chgres_cube/namespacesurface.js new file mode 100644 index 000000000..d6cb2257c --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacesurface.js @@ -0,0 +1,5 @@ +var namespacesurface = +[ + [ "realptr_2d", "structsurface_1_1realptr__2d.html", "structsurface_1_1realptr__2d" ], + [ "realptr_3d", "structsurface_1_1realptr__3d.html", "structsurface_1_1realptr__3d" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/namespacesurface__target__data.html b/ver-1.11.0/chgres_cube/namespacesurface__target__data.html new file mode 100644 index 000000000..313d4636b --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacesurface__target__data.html @@ -0,0 +1,1033 @@ + + + + + + + +chgres_cube: surface_target_data Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface_target_data Module Reference
+
+
+ +

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 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_target_grid
 Physical snow depth. More...
 
type(esmf_field), public snow_liq_equiv_target_grid
 Liquid equivalent snow depth. 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 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_target_grid
 Roughness length. 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...
 
+

Detailed Description

+

Module to hold ESMF fields associated with the target grid surface data.

+
Author
George Gayno NCEP/EMC
+

Function/Subroutine Documentation

+ +

◆ cleanup_target_nst_data()

+ +
+
+ + + + + + + +
subroutine, public surface_target_data::cleanup_target_nst_data ()
+
+
+ +

◆ cleanup_target_sfc_data()

+ +
+
+ + + + + + + +
subroutine, public surface_target_data::cleanup_target_sfc_data ()
+
+
+

Variable Documentation

+ +

◆ c_0_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::c_0_target_grid
+
+ +

Coefficient 1 to calculate d(tz)/d(ts).

+ +

Definition at line 62 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().

+ +
+
+ +

◆ c_d_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::c_d_target_grid
+
+ +

Coefficient 2 to calculate d(tz)/d(ts).

+ +

Definition at line 60 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().

+ +
+
+ +

◆ canopy_mc_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::canopy_mc_target_grid
+
+
+ +

◆ d_conv_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::d_conv_target_grid
+
+
+ +

◆ dt_cool_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::dt_cool_target_grid
+
+
+ +

◆ f10m_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ ffmm_target_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ ifd_target_grid

+ +
+
+ + + + +
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 68 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().

+ +
+
+ +

◆ lai_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::lai_target_grid
+
+
+ +

◆ q2m_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::q2m_target_grid
+
+
+ +

◆ qrain_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::qrain_target_grid
+
+
+ +

◆ seaice_depth_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::seaice_depth_target_grid
+
+
+ +

◆ seaice_fract_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::seaice_fract_target_grid
+
+
+ +

◆ seaice_skin_temp_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::seaice_skin_temp_target_grid
+
+
+ +

◆ skin_temp_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::skin_temp_target_grid
+
+
+ +

◆ snow_depth_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::snow_depth_target_grid
+
+
+ +

◆ snow_liq_equiv_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::snow_liq_equiv_target_grid
+
+
+ +

◆ soil_temp_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::soil_temp_target_grid
+
+
+ +

◆ soilm_liq_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::soilm_liq_target_grid
+
+
+ +

◆ soilm_tot_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::soilm_tot_target_grid
+
+
+ +

◆ srflag_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::srflag_target_grid
+
+
+ +

◆ t2m_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::t2m_target_grid
+
+
+ +

◆ tprcp_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::tprcp_target_grid
+
+
+ +

◆ tref_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::tref_target_grid
+
+
+ +

◆ ustar_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::ustar_target_grid
+
+
+ +

◆ w_0_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::w_0_target_grid
+
+ +

Coefficient 3 to calculate d(tz)/d(ts).

+ +

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().

+ +
+
+ +

◆ w_d_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::w_d_target_grid
+
+ +

Coefficient 4 to calculate d(tz)/d(ts).

+ +

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().

+ +
+
+ +

◆ xs_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xs_target_grid
+
+ +

Salinity content in diurnal thermocline layer.

+ +

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(), and write_data::write_fv3_sfc_data_netcdf().

+ +
+
+ +

◆ xt_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xt_target_grid
+
+ +

Heat content in diurnal thermocline layer.

+ +

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().

+ +
+
+ +

◆ xtts_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xtts_target_grid
+
+
+ +

◆ xu_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xu_target_grid
+
+ +

u-current content in diurnal thermocline layer.

+ +

Definition at line 85 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().

+ +
+
+ +

◆ xv_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xv_target_grid
+
+ +

v-current content in diurnal thermocline layer.

+ +

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().

+ +
+
+ +

◆ xz_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xz_target_grid
+
+
+ +

◆ xzts_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::xzts_target_grid
+
+
+ +

◆ z0_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::z0_target_grid
+
+
+ +

◆ z_c_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::z_c_target_grid
+
+
+ +

◆ zm_target_grid

+ +
+
+ + + + +
type(esmf_field), public surface_target_data::zm_target_grid
+
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/namespacethompson__mp__climo__data.html b/ver-1.11.0/chgres_cube/namespacethompson__mp__climo__data.html new file mode 100644 index 000000000..84f264724 --- /dev/null +++ b/ver-1.11.0/chgres_cube/namespacethompson__mp__climo__data.html @@ -0,0 +1,366 @@ + + + + + + + +chgres_cube: thompson_mp_climo_data Module Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
thompson_mp_climo_data Module Reference
+
+
+ +

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...
 
+

Detailed Description

+

Module to read the Thompson climatological MP data file and set up the associated esmf field and grid objects.

+
Author
George Gayno NOAA/EMC
+

Function/Subroutine Documentation

+ +

◆ cleanup_thomp_mp_climo_input_data()

+ +
+
+ + + + + + + +
subroutine, public thompson_mp_climo_data::cleanup_thomp_mp_climo_input_data ()
+
+ +

Free up memory associated with this module.

+
Author
George Gayno NOAA/EMC
+ +

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().

+ +
+
+ +

◆ read_thomp_mp_climo_data()

+ +
+
+ + + + + + + +
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.

+
Author
George Gayno NOAA/EMC
+ +

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().

+ +
+
+

Variable Documentation

+ +

◆ i_thomp_mp_climo

+ +
+
+ + + + + +
+ + + + +
integer thompson_mp_climo_data::i_thomp_mp_climo
+
+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().

+ +
+
+ +

◆ j_thomp_mp_climo

+ +
+
+ + + + + +
+ + + + +
integer thompson_mp_climo_data::j_thomp_mp_climo
+
+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().

+ +
+
+ +

◆ lev_thomp_mp_climo

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ qnifa_climo_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ qnwfa_climo_input_grid

+ +
+
+ + + + +
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().

+ +
+
+ +

◆ thomp_mp_climo_grid

+ +
+
+ + + + + +
+ + + + +
type(esmf_grid) thompson_mp_climo_data::thomp_mp_climo_grid
+
+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().

+ +
+
+ +

◆ thomp_pres_climo_input_grid

+ +
+
+ + + + +
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().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/nav_f.png b/ver-1.11.0/chgres_cube/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/nav_g.png b/ver-1.11.0/chgres_cube/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/nst_input_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
nst_input_data.F90 File Reference
+
+
+ +

Read NST surface data from NEMSIO and NetCDF files. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public nst_input_data::cleanup_input_nst_data
 Free up memory associated with nst data. More...
 
subroutine, public nst_input_data::read_input_nst_data (localpet)
 Driver to read input grid nst data. More...
 
subroutine nst_input_data::read_input_nst_nemsio_file (localpet)
 Read input grid nst data from fv3 gaussian nemsio history file or spectral GFS nemsio file. More...
 
subroutine nst_input_data::read_input_nst_netcdf_file (localpet)
 Read nst data from these netcdf formatted fv3 files: tiled history, tiled warm restart, and gaussian history. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field), public nst_input_data::c_0_input_grid
 Coefficient 1 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public nst_input_data::c_d_input_grid
 Coefficient 2 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public nst_input_data::d_conv_input_grid
 Thickness of free convectionlayer. More...
 
type(esmf_field), public nst_input_data::dt_cool_input_grid
 Sub-layer cooling amount. More...
 
type(esmf_field), public nst_input_data::ifd_input_grid
 Model mode index. More...
 
type(esmf_field), public nst_input_data::qrain_input_grid
 Sensible heat flux due torainfall. More...
 
type(esmf_field), public nst_input_data::tref_input_grid
 Reference temperature. More...
 
type(esmf_field), public nst_input_data::w_0_input_grid
 Coefficient 3 to calculated(tz)/d(ts) More...
 
type(esmf_field), public nst_input_data::w_d_input_grid
 Coefficient 4 to calculated(tz)/d(ts) More...
 
type(esmf_field), public nst_input_data::xs_input_grid
 Salinity content in diurnalthermocline layer. More...
 
type(esmf_field), public nst_input_data::xt_input_grid
 Heat content in diurnalthermocline layer. More...
 
type(esmf_field), public nst_input_data::xtts_input_grid
 d(xt)/d(ts) More...
 
type(esmf_field), public nst_input_data::xu_input_grid
 u-current content in diurnalthermocline layer More...
 
type(esmf_field), public nst_input_data::xv_input_grid
 v-current content in diurnalthermocline layer More...
 
type(esmf_field), public nst_input_data::xz_input_grid
 Diurnal thermocline layerthickness. More...
 
type(esmf_field), public nst_input_data::xzts_input_grid
 d(xz)/d(ts) More...
 
type(esmf_field), public nst_input_data::z_c_input_grid
 Sub-layer cooling thickness. More...
 
type(esmf_field), public nst_input_data::zm_input_grid
 Oceanic mixed layer depth. More...
 
+

Detailed Description

+

Read NST surface data from NEMSIO and NetCDF files.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file nst_input_data.F90.

+

Function/Subroutine Documentation

+ +

◆ cleanup_input_nst_data()

+ +
+
+ + + + + + + +
subroutine, public nst_input_data::cleanup_input_nst_data ()
+
+ +

Free up memory associated with nst data.

+
Author
George Gayno NCEP/EMC
+ +

Definition at line 783 of file nst_input_data.F90.

+ +
+
+ +

◆ read_input_nst_data()

+ +
+
+ + + + + + + + +
subroutine, public nst_input_data::read_input_nst_data (integer, intent(in) localpet)
+
+ +

Driver to read input grid nst data.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 68 of file nst_input_data.F90.

+ +

References model_grid::input_grid, and program_setup::input_type.

+ +
+
+ +

◆ read_input_nst_nemsio_file()

+ +
+
+ + + + + + + + +
subroutine nst_input_data::read_input_nst_nemsio_file (integer, intent(in) localpet)
+
+ +

Read input grid nst data from fv3 gaussian nemsio history file or spectral GFS nemsio file.

+
Note
The spectral GFS nst data is in a separate file from the surface data. The fv3 surface and nst data are in a single file.
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 515 of file nst_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, program_setup::input_type, model_grid::j_input, program_setup::nst_files_input_grid, and program_setup::sfc_files_input_grid.

+ +
+
+ +

◆ read_input_nst_netcdf_file()

+ +
+
+ + + + + + + + +
subroutine nst_input_data::read_input_nst_netcdf_file (integer, intent(in) localpet)
+
+ +

Read nst data from these netcdf formatted fv3 files: tiled history, tiled warm restart, and gaussian history.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 231 of file nst_input_data.F90.

+ +

References model_grid::i_input, program_setup::input_type, model_grid::j_input, and model_grid::num_tiles_input_grid.

+ +
+
+

Variable Documentation

+ +

◆ c_0_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::c_0_input_grid
+
+ +

Coefficient 1 to calculate d(tz)/d(ts)

+ +

Definition at line 39 of file nst_input_data.F90.

+ +
+
+ +

◆ c_d_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::c_d_input_grid
+
+ +

Coefficient 2 to calculate d(tz)/d(ts)

+ +

Definition at line 38 of file nst_input_data.F90.

+ +
+
+ +

◆ d_conv_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::d_conv_input_grid
+
+ +

Thickness of free convectionlayer.

+ +

Definition at line 40 of file nst_input_data.F90.

+ +
+
+ +

◆ dt_cool_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::dt_cool_input_grid
+
+ +

Sub-layer cooling amount.

+ +

Definition at line 41 of file nst_input_data.F90.

+ +
+
+ +

◆ ifd_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::ifd_input_grid
+
+ +

Model mode index.

+

0-diurnalmodel not started; 1-diurnal model

+ +

Definition at line 42 of file nst_input_data.F90.

+ +
+
+ +

◆ qrain_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::qrain_input_grid
+
+ +

Sensible heat flux due torainfall.

+ +

Definition at line 45 of file nst_input_data.F90.

+ +
+
+ +

◆ tref_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::tref_input_grid
+
+ +

Reference temperature.

+ +

Definition at line 46 of file nst_input_data.F90.

+ +
+
+ +

◆ w_0_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::w_0_input_grid
+
+ +

Coefficient 3 to calculated(tz)/d(ts)

+ +

Definition at line 48 of file nst_input_data.F90.

+ +
+
+ +

◆ w_d_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::w_d_input_grid
+
+ +

Coefficient 4 to calculated(tz)/d(ts)

+ +

Definition at line 47 of file nst_input_data.F90.

+ +
+
+ +

◆ xs_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xs_input_grid
+
+ +

Salinity content in diurnalthermocline layer.

+ +

Definition at line 49 of file nst_input_data.F90.

+ +
+
+ +

◆ xt_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xt_input_grid
+
+ +

Heat content in diurnalthermocline layer.

+ +

Definition at line 50 of file nst_input_data.F90.

+ +
+
+ +

◆ xtts_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xtts_input_grid
+
+ +

d(xt)/d(ts)

+ +

Definition at line 54 of file nst_input_data.F90.

+ +
+
+ +

◆ xu_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xu_input_grid
+
+ +

u-current content in diurnalthermocline layer

+ +

Definition at line 51 of file nst_input_data.F90.

+ +
+
+ +

◆ xv_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xv_input_grid
+
+ +

v-current content in diurnalthermocline layer

+ +

Definition at line 52 of file nst_input_data.F90.

+ +
+
+ +

◆ xz_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xz_input_grid
+
+ +

Diurnal thermocline layerthickness.

+ +

Definition at line 53 of file nst_input_data.F90.

+ +
+
+ +

◆ xzts_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::xzts_input_grid
+
+ +

d(xz)/d(ts)

+ +

Definition at line 55 of file nst_input_data.F90.

+ +
+
+ +

◆ z_c_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::z_c_input_grid
+
+ +

Sub-layer cooling thickness.

+ +

Definition at line 56 of file nst_input_data.F90.

+ +
+
+ +

◆ zm_input_grid

+ +
+
+ + + + +
type(esmf_field), public nst_input_data::zm_input_grid
+
+ +

Oceanic mixed layer depth.

+ +

Definition at line 57 of file nst_input_data.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/nst__input__data_8F90.js b/ver-1.11.0/chgres_cube/nst__input__data_8F90.js new file mode 100644 index 000000000..b8f2b5292 --- /dev/null +++ b/ver-1.11.0/chgres_cube/nst__input__data_8F90.js @@ -0,0 +1,25 @@ +var nst__input__data_8F90 = +[ + [ "cleanup_input_nst_data", "nst__input__data_8F90.html#afe3aba15f31e50b82b2cd81098ba8be9", null ], + [ "read_input_nst_data", "nst__input__data_8F90.html#a9168217eeeec07d66ac22b4198460e6a", null ], + [ "read_input_nst_nemsio_file", "nst__input__data_8F90.html#a5549881aea4aa677398ef80c2c23b411", null ], + [ "read_input_nst_netcdf_file", "nst__input__data_8F90.html#a267924ce4aa91a7a68aae0608deae551", null ], + [ "c_0_input_grid", "nst__input__data_8F90.html#a51a9411ad2bf39e64bfb86e80e5d0192", null ], + [ "c_d_input_grid", "nst__input__data_8F90.html#af934359a24245374fc4e9ded1d7a6986", null ], + [ "d_conv_input_grid", "nst__input__data_8F90.html#abb2ede9bd20773beb48375d47a63de97", null ], + [ "dt_cool_input_grid", "nst__input__data_8F90.html#a6c2b098be33b3a36323db2e866535cb0", null ], + [ "ifd_input_grid", "nst__input__data_8F90.html#af5d2ba98b040bea77126139b28536865", null ], + [ "qrain_input_grid", "nst__input__data_8F90.html#ac047a00e880f7a04887d24f44ce3f5c5", null ], + [ "tref_input_grid", "nst__input__data_8F90.html#af09bdba948e5e05afd3683082bf3cc84", null ], + [ "w_0_input_grid", "nst__input__data_8F90.html#a3ab40e05c65d1bd13d09e38ebff5561d", null ], + [ "w_d_input_grid", "nst__input__data_8F90.html#a9d681aef02753f1d9c4103b276bd7c66", null ], + [ "xs_input_grid", "nst__input__data_8F90.html#a67c47ce1eaa1962c649944770966a45d", null ], + [ "xt_input_grid", "nst__input__data_8F90.html#a6f10c59080b31980a70314f529543bfb", null ], + [ "xtts_input_grid", "nst__input__data_8F90.html#acf675dbcc6d86c2a5fecdb4be702187a", null ], + [ "xu_input_grid", "nst__input__data_8F90.html#adf8e8b7cc61e016b5f7819f65abc3db7", null ], + [ "xv_input_grid", "nst__input__data_8F90.html#a002dfc0d24fe130047e15a63ad4f7faa", null ], + [ "xz_input_grid", "nst__input__data_8F90.html#a4087b03e710014ecfbd02f2ac6fe3884", null ], + [ "xzts_input_grid", "nst__input__data_8F90.html#a245e4c81e6916acea328ab18261a3ae6", null ], + [ "z_c_input_grid", "nst__input__data_8F90.html#a023a1b4eda6033258064dfd4002abdb7", null ], + [ "zm_input_grid", "nst__input__data_8F90.html#af9abe19d53fd1dfd64a2c84c3f85ef98", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/nst__input__data_8F90_source.html b/ver-1.11.0/chgres_cube/nst__input__data_8F90_source.html new file mode 100644 index 000000000..c0d796535 --- /dev/null +++ b/ver-1.11.0/chgres_cube/nst__input__data_8F90_source.html @@ -0,0 +1,117 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/nst_input_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
nst_input_data.F90
+
+
+Go to the documentation of this file.
1 module nst_input_data
5 
15  use esmf
16  use netcdf
17  use nemsio_module
18 
19  use program_setup, only : data_dir_input_grid, &
23 
24  use model_grid, only : input_grid, &
25  i_input, j_input, &
28 
29  use sfc_input_data, only : lsoil_input, &
30  read_fv3_grid_data_netcdf, &
31  landsea_mask_input_grid
32 
33  use utilities, only : error_handler
34  implicit none
35 
36 ! Fields associated with the nst model.
37 
38  type(esmf_field), public :: c_d_input_grid
39  type(esmf_field), public :: c_0_input_grid
40  type(esmf_field), public :: d_conv_input_grid
41  type(esmf_field), public :: dt_cool_input_grid
42  type(esmf_field), public :: ifd_input_grid
44  !started.
45  type(esmf_field), public :: qrain_input_grid
46  type(esmf_field), public :: tref_input_grid
47  type(esmf_field), public :: w_d_input_grid
48  type(esmf_field), public :: w_0_input_grid
49  type(esmf_field), public :: xs_input_grid
50  type(esmf_field), public :: xt_input_grid
51  type(esmf_field), public :: xu_input_grid
52  type(esmf_field), public :: xv_input_grid
53  type(esmf_field), public :: xz_input_grid
54  type(esmf_field), public :: xtts_input_grid
55  type(esmf_field), public :: xzts_input_grid
56  type(esmf_field), public :: z_c_input_grid
57  type(esmf_field), public :: zm_input_grid
58 
59  public :: read_input_nst_data
60  public :: cleanup_input_nst_data
61 
62  contains
67  subroutine read_input_nst_data(localpet)
68 
69  implicit none
70 
71  integer, intent(in) :: localpet
72 
73  integer :: rc
74 
75  print*,"- READ INPUT GRID NST DATA."
76 
77  print*,"- CALL FieldCreate FOR INPUT GRID C_D."
78  c_d_input_grid = esmf_fieldcreate(input_grid, &
79  typekind=esmf_typekind_r8, &
80  staggerloc=esmf_staggerloc_center, rc=rc)
81  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
82  call error_handler("IN FieldCreate", rc)
83 
84  print*,"- CALL FieldCreate FOR INPUT GRID C_0."
85  c_0_input_grid = esmf_fieldcreate(input_grid, &
86  typekind=esmf_typekind_r8, &
87  staggerloc=esmf_staggerloc_center, rc=rc)
88  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
89  call error_handler("IN FieldCreate", rc)
90 
91  print*,"- CALL FieldCreate FOR INPUT GRID D_CONV."
92  d_conv_input_grid = esmf_fieldcreate(input_grid, &
93  typekind=esmf_typekind_r8, &
94  staggerloc=esmf_staggerloc_center, rc=rc)
95  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
96  call error_handler("IN FieldCreate", rc)
97 
98  print*,"- CALL FieldCreate FOR INPUT GRID DT_COOL."
99  dt_cool_input_grid = esmf_fieldcreate(input_grid, &
100  typekind=esmf_typekind_r8, &
101  staggerloc=esmf_staggerloc_center, rc=rc)
102  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
103  call error_handler("IN FieldCreate", rc)
104 
105  print*,"- CALL FieldCreate FOR INPUT GRID IFD."
106  ifd_input_grid = esmf_fieldcreate(input_grid, &
107  typekind=esmf_typekind_r8, &
108  staggerloc=esmf_staggerloc_center, rc=rc)
109  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
110  call error_handler("IN FieldCreate", rc)
111 
112  print*,"- CALL FieldCreate FOR INPUT GRID QRAIN."
113  qrain_input_grid = esmf_fieldcreate(input_grid, &
114  typekind=esmf_typekind_r8, &
115  staggerloc=esmf_staggerloc_center, rc=rc)
116  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
117  call error_handler("IN FieldCreate", rc)
118 
119  print*,"- CALL FieldCreate FOR INPUT GRID TREF."
120  tref_input_grid = esmf_fieldcreate(input_grid, &
121  typekind=esmf_typekind_r8, &
122  staggerloc=esmf_staggerloc_center, rc=rc)
123  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
124  call error_handler("IN FieldCreate", rc)
125 
126  print*,"- CALL FieldCreate FOR INPUT GRID W_D."
127  w_d_input_grid = esmf_fieldcreate(input_grid, &
128  typekind=esmf_typekind_r8, &
129  staggerloc=esmf_staggerloc_center, rc=rc)
130  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
131  call error_handler("IN FieldCreate", rc)
132 
133  print*,"- CALL FieldCreate FOR INPUT GRID W_0."
134  w_0_input_grid = esmf_fieldcreate(input_grid, &
135  typekind=esmf_typekind_r8, &
136  staggerloc=esmf_staggerloc_center, rc=rc)
137  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
138  call error_handler("IN FieldCreate", rc)
139 
140  print*,"- CALL FieldCreate FOR INPUT GRID XS."
141  xs_input_grid = esmf_fieldcreate(input_grid, &
142  typekind=esmf_typekind_r8, &
143  staggerloc=esmf_staggerloc_center, rc=rc)
144  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
145  call error_handler("IN FieldCreate", rc)
146 
147  print*,"- CALL FieldCreate FOR INPUT GRID XT."
148  xt_input_grid = esmf_fieldcreate(input_grid, &
149  typekind=esmf_typekind_r8, &
150  staggerloc=esmf_staggerloc_center, rc=rc)
151  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
152  call error_handler("IN FieldCreate", rc)
153 
154  print*,"- CALL FieldCreate FOR INPUT GRID XU."
155  xu_input_grid = esmf_fieldcreate(input_grid, &
156  typekind=esmf_typekind_r8, &
157  staggerloc=esmf_staggerloc_center, rc=rc)
158  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
159  call error_handler("IN FieldCreate", rc)
160 
161  print*,"- CALL FieldCreate FOR INPUT GRID XV."
162  xv_input_grid = esmf_fieldcreate(input_grid, &
163  typekind=esmf_typekind_r8, &
164  staggerloc=esmf_staggerloc_center, rc=rc)
165  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
166  call error_handler("IN FieldCreate", rc)
167 
168  print*,"- CALL FieldCreate FOR INPUT GRID XZ."
169  xz_input_grid = esmf_fieldcreate(input_grid, &
170  typekind=esmf_typekind_r8, &
171  staggerloc=esmf_staggerloc_center, rc=rc)
172  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
173  call error_handler("IN FieldCreate", rc)
174 
175  print*,"- CALL FieldCreate FOR INPUT GRID XTTS."
176  xtts_input_grid = esmf_fieldcreate(input_grid, &
177  typekind=esmf_typekind_r8, &
178  staggerloc=esmf_staggerloc_center, rc=rc)
179  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
180  call error_handler("IN FieldCreate", rc)
181 
182  print*,"- CALL FieldCreate FOR INPUT GRID XZTS."
183  xzts_input_grid = esmf_fieldcreate(input_grid, &
184  typekind=esmf_typekind_r8, &
185  staggerloc=esmf_staggerloc_center, rc=rc)
186  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
187  call error_handler("IN FieldCreate", rc)
188 
189  print*,"- CALL FieldCreate FOR INPUT GRID Z_C."
190  z_c_input_grid = esmf_fieldcreate(input_grid, &
191  typekind=esmf_typekind_r8, &
192  staggerloc=esmf_staggerloc_center, rc=rc)
193  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
194  call error_handler("IN FieldCreate", rc)
195 
196  print*,"- CALL FieldCreate FOR INPUT GRID ZM."
197  zm_input_grid = esmf_fieldcreate(input_grid, &
198  typekind=esmf_typekind_r8, &
199  staggerloc=esmf_staggerloc_center, rc=rc)
200  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
201  call error_handler("IN FieldCreate", rc)
202 
203 !--------------------------------------------------------------------------
204 ! Read input grid nst data from a fv3 gaussian nemsio history file or
205 ! spectral GFS nemsio file.
206 !--------------------------------------------------------------------------
207 
208  if (trim(input_type) == "gaussian_nemsio" .or. trim(input_type) == "gfs_gaussian_nemsio") then
209 
210  call read_input_nst_nemsio_file(localpet)
211 
212 !---------------------------------------------------------------------------
213 ! Read nst data from these netcdf formatted fv3 files: tiled history,
214 ! tiled warm restart, and gaussian history.
215 !---------------------------------------------------------------------------
216 
217  else
218 
219  call read_input_nst_netcdf_file(localpet)
220 
221  endif
222 
223  end subroutine read_input_nst_data
224 
230  subroutine read_input_nst_netcdf_file(localpet)
232  implicit none
233 
234  integer, intent(in) :: localpet
235 
236  character(len=10) :: field
237 
238  integer :: rc, tile
239 
240  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
241 
242  if (localpet == 0) then
243  allocate(data_one_tile(i_input,j_input))
244  else
245  allocate(data_one_tile(0,0))
246  endif
247 
248  tile_loop : do tile = 1, num_tiles_input_grid
249 
250 ! c_d
251 
252  if (localpet == 0) then
253  if (trim(input_type) == "restart") then
254  field='c_d'
255  else
256  field='cd'
257  endif
258  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
259  lsoil_input, sfcdata=data_one_tile)
260  endif
261 
262  print*,"- CALL FieldScatter FOR INPUT C_D"
263  call esmf_fieldscatter(c_d_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
264  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
265  call error_handler("IN FieldScatter", rc)
266 
267 ! c_0
268 
269  if (localpet == 0) then
270  if (trim(input_type) == "restart") then
271  field='c_0'
272  else
273  field='c0'
274  endif
275  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
276  lsoil_input, sfcdata=data_one_tile)
277  endif
278 
279  print*,"- CALL FieldScatter FOR INPUT C_0"
280  call esmf_fieldscatter(c_0_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
281  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
282  call error_handler("IN FieldScatter", rc)
283 
284 ! d_conv
285 
286  if (localpet == 0) then
287  if (trim(input_type) == "restart") then
288  field='d_conv'
289  else
290  field='dconv'
291  endif
292  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
293  lsoil_input, sfcdata=data_one_tile)
294  endif
295 
296  print*,"- CALL FieldScatter FOR INPUT D_CONV."
297  call esmf_fieldscatter(d_conv_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
298  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
299  call error_handler("IN FieldScatter", rc)
300 
301 ! dt_cool
302 
303  if (localpet == 0) then
304  if (trim(input_type) == "restart") then
305  field='dt_cool'
306  else
307  field='dtcool'
308  endif
309  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
310  lsoil_input, sfcdata=data_one_tile)
311  endif
312 
313  print*,"- CALL FieldScatter FOR INPUT DT_COOL."
314  call esmf_fieldscatter(dt_cool_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
315  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
316  call error_handler("IN FieldScatter", rc)
317 
318 ! ifd - xu li said initialize to '1'.
319 
320  if (localpet == 0) then
321  data_one_tile = 1.0
322  endif
323 
324  print*,"- CALL FieldScatter FOR INPUT IFD."
325  call esmf_fieldscatter(ifd_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
326  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
327  call error_handler("IN FieldScatter", rc)
328 
329 ! qrain
330 
331  if (localpet == 0) then
332  call read_fv3_grid_data_netcdf('qrain', tile, i_input, j_input, &
333  lsoil_input, sfcdata=data_one_tile)
334  endif
335 
336  print*,"- CALL FieldScatter FOR INPUT QRAIN."
337  call esmf_fieldscatter(qrain_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
338  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
339  call error_handler("IN FieldScatter", rc)
340 
341 ! tref
342 
343  if (localpet == 0) then
344  call read_fv3_grid_data_netcdf('tref', tile, i_input, j_input, &
345  lsoil_input, sfcdata=data_one_tile)
346  endif
347 
348  print*,"- CALL FieldScatter FOR INPUT TREF"
349  call esmf_fieldscatter(tref_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
350  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
351  call error_handler("IN FieldScatter", rc)
352 
353 ! w_d
354 
355  if (localpet == 0) then
356  if (trim(input_type) == "restart") then
357  field='w_d'
358  else
359  field='wd'
360  endif
361  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
362  lsoil_input, sfcdata=data_one_tile)
363  endif
364 
365  print*,"- CALL FieldScatter FOR INPUT W_D"
366  call esmf_fieldscatter(w_d_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
367  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
368  call error_handler("IN FieldScatter", rc)
369 
370 ! w_0
371 
372  if (localpet == 0) then
373  if (trim(input_type) == "restart") then
374  field='w_0'
375  else
376  field='w0'
377  endif
378  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
379  lsoil_input, sfcdata=data_one_tile)
380  endif
381 
382  print*,"- CALL FieldScatter FOR INPUT W_0"
383  call esmf_fieldscatter(w_0_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
384  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
385  call error_handler("IN FieldScatter", rc)
386 
387 ! xs
388 
389  if (localpet == 0) then
390  call read_fv3_grid_data_netcdf('xs', tile, i_input, j_input, &
391  lsoil_input, sfcdata=data_one_tile)
392  endif
393 
394  print*,"- CALL FieldScatter FOR INPUT XS"
395  call esmf_fieldscatter(xs_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
396  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
397  call error_handler("IN FieldScatter", rc)
398 
399 ! xt
400 
401  if (localpet == 0) then
402  call read_fv3_grid_data_netcdf('xt', tile, i_input, j_input, &
403  lsoil_input, sfcdata=data_one_tile)
404  endif
405 
406  print*,"- CALL FieldScatter FOR INPUT XT"
407  call esmf_fieldscatter(xt_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
408  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
409  call error_handler("IN FieldScatter", rc)
410 
411 ! xu
412 
413  if (localpet == 0) then
414  call read_fv3_grid_data_netcdf('xu', tile, i_input, j_input, &
415  lsoil_input, sfcdata=data_one_tile)
416  endif
417 
418  print*,"- CALL FieldScatter FOR INPUT XU"
419  call esmf_fieldscatter(xu_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
420  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
421  call error_handler("IN FieldScatter", rc)
422 
423 ! xv
424 
425  if (localpet == 0) then
426  call read_fv3_grid_data_netcdf('xv', tile, i_input, j_input, &
427  lsoil_input, sfcdata=data_one_tile)
428  endif
429 
430  print*,"- CALL FieldScatter FOR INPUT XV"
431  call esmf_fieldscatter(xv_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
432  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
433  call error_handler("IN FieldScatter", rc)
434 
435 ! xz
436 
437  if (localpet == 0) then
438  call read_fv3_grid_data_netcdf('xz', tile, i_input, j_input, &
439  lsoil_input, sfcdata=data_one_tile)
440  endif
441 
442  print*,"- CALL FieldScatter FOR INPUT XZ"
443  call esmf_fieldscatter(xz_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
444  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
445  call error_handler("IN FieldScatter", rc)
446 
447 ! xtts
448 
449  if (localpet == 0) then
450  call read_fv3_grid_data_netcdf('xtts', tile, i_input, j_input, &
451  lsoil_input, sfcdata=data_one_tile)
452  endif
453 
454  print*,"- CALL FieldScatter FOR INPUT XTTS"
455  call esmf_fieldscatter(xtts_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
456  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
457  call error_handler("IN FieldScatter", rc)
458 
459 ! xzts
460 
461  if (localpet == 0) then
462  call read_fv3_grid_data_netcdf('xzts', tile, i_input, j_input, &
463  lsoil_input, sfcdata=data_one_tile)
464  endif
465 
466  print*,"- CALL FieldScatter FOR INPUT XZTS"
467  call esmf_fieldscatter(xzts_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
468  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
469  call error_handler("IN FieldScatter", rc)
470 
471 ! z_c
472 
473  if (localpet == 0) then
474  if (trim(input_type) == "restart") then
475  field='z_c'
476  else
477  field='zc'
478  endif
479  call read_fv3_grid_data_netcdf(trim(field), tile, i_input, j_input, &
480  lsoil_input, sfcdata=data_one_tile)
481  endif
482 
483  print*,"- CALL FieldScatter FOR INPUT Z_C"
484  call esmf_fieldscatter(z_c_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
485  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
486  call error_handler("IN FieldScatter", rc)
487 
488 ! zm - Not used yet. Xu li said set to '0'.
489 
490  if (localpet == 0) then
491  data_one_tile = 0.0
492  endif
493 
494  print*,"- CALL FieldScatter FOR INPUT ZM"
495  call esmf_fieldscatter(zm_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
496  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
497  call error_handler("IN FieldScatter", rc)
498 
499  enddo tile_loop
500 
501  deallocate(data_one_tile)
502 
503  end subroutine read_input_nst_netcdf_file
504 
514  subroutine read_input_nst_nemsio_file(localpet)
516  implicit none
517 
518  integer, intent(in) :: localpet
519 
520  character(len=300) :: the_file
521 
522  integer :: rc
523 
524  real(nemsio_realkind), allocatable :: dummy(:)
525  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
526 
527  type(nemsio_gfile) :: gfile
528 
529  if (trim(input_type) == "gfs_gaussian_nemsio") then ! spectral gfs nemsio in
530  ! separate file.
531  the_file = trim(data_dir_input_grid) // "/" // trim(nst_files_input_grid)
532  else
533  the_file = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
534  endif
535 
536  print*,"- READ NST DATA FROM: ", trim(the_file)
537 
538  if (localpet == 0) then
539  allocate(dummy(i_input*j_input))
540  allocate(dummy2d(i_input,j_input))
541  call nemsio_open(gfile, the_file, "read", iret=rc)
542  else
543  allocate(dummy(0))
544  allocate(dummy2d(0,0))
545  endif
546 
547  if (localpet == 0) then
548  print*,"- READ TREF"
549  call nemsio_readrecv(gfile, "tref", "sfc", 1, dummy, 0, iret=rc)
550  if (rc /= 0) call error_handler("READING TREF.", rc)
551  dummy2d = reshape(dummy, (/i_input,j_input/))
552  print*,'tref ',maxval(dummy2d),minval(dummy2d)
553  endif
554 
555  print*,"- CALL FieldScatter FOR INPUT TREF."
556  call esmf_fieldscatter(tref_input_grid, dummy2d, rootpet=0, rc=rc)
557  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
558  call error_handler("IN FieldScatter", rc)
559 
560  if (localpet == 0) then
561  print*,"- READ CD"
562  call nemsio_readrecv(gfile, "cd", "sfc", 1, dummy, 0, iret=rc)
563  if (rc /= 0) call error_handler("READING CD.", rc)
564  dummy2d = reshape(dummy, (/i_input,j_input/))
565  print*,'cd ',maxval(dummy2d),minval(dummy2d)
566  endif
567 
568  print*,"- CALL FieldScatter FOR INPUT C_D."
569  call esmf_fieldscatter(c_d_input_grid, dummy2d, rootpet=0, rc=rc)
570  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
571  call error_handler("IN FieldScatter", rc)
572 
573  if (localpet == 0) then
574  print*,"- READ C0"
575  call nemsio_readrecv(gfile, "c0", "sfc", 1, dummy, 0, iret=rc)
576  if (rc /= 0) call error_handler("READING C0.", rc)
577  dummy2d = reshape(dummy, (/i_input,j_input/))
578  print*,'c0 ',maxval(dummy2d),minval(dummy2d)
579  endif
580 
581  print*,"- CALL FieldScatter FOR INPUT C_0."
582  call esmf_fieldscatter(c_0_input_grid, dummy2d, rootpet=0, rc=rc)
583  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
584  call error_handler("IN FieldScatter", rc)
585 
586  if (localpet == 0) then
587  print*,"- READ DCONV"
588  call nemsio_readrecv(gfile, "dconv", "sfc", 1, dummy, 0, iret=rc)
589  if (rc /= 0) call error_handler("READING DCONV.", rc)
590  dummy2d = reshape(dummy, (/i_input,j_input/))
591  print*,'dconv ',maxval(dummy2d),minval(dummy2d)
592  endif
593 
594  print*,"- CALL FieldScatter FOR INPUT D_CONV."
595  call esmf_fieldscatter(d_conv_input_grid, dummy2d, rootpet=0, rc=rc)
596  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
597  call error_handler("IN FieldScatter", rc)
598 
599  if (localpet == 0) then
600  print*,"- READ DTCOOL"
601  call nemsio_readrecv(gfile, "dtcool", "sfc", 1, dummy, 0, iret=rc)
602  if (rc /= 0) call error_handler("READING DTCOOL.", rc)
603  dummy2d = reshape(dummy, (/i_input,j_input/))
604  print*,'dtcool ',maxval(dummy2d),minval(dummy2d)
605  endif
606 
607  print*,"- CALL FieldScatter FOR INPUT DT_COOL."
608  call esmf_fieldscatter(dt_cool_input_grid, dummy2d, rootpet=0, rc=rc)
609  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
610  call error_handler("IN FieldScatter", rc)
611 
612  if (localpet == 0) then
613  dummy2d = 1.0 ! IFD not in file. Set to '1' per Xu Li.
614  endif
615 
616  print*,"- CALL FieldScatter FOR INPUT IFD."
617  call esmf_fieldscatter(ifd_input_grid, dummy2d, rootpet=0, rc=rc)
618  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
619  call error_handler("IN FieldScatter", rc)
620 
621  if (localpet == 0) then
622  print*,"- READ QRAIN"
623  call nemsio_readrecv(gfile, "qrain", "sfc", 1, dummy, 0, iret=rc)
624  if (rc /= 0) call error_handler("READING QRAIN.", rc)
625  dummy2d = reshape(dummy, (/i_input,j_input/))
626  print*,'qrain ',maxval(dummy2d),minval(dummy2d)
627  endif
628 
629  print*,"- CALL FieldScatter FOR INPUT QRAIN."
630  call esmf_fieldscatter(qrain_input_grid, dummy2d, rootpet=0, rc=rc)
631  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
632  call error_handler("IN FieldScatter", rc)
633 
634  if (localpet == 0) then
635  print*,"- READ WD"
636  call nemsio_readrecv(gfile, "wd", "sfc", 1, dummy, 0, iret=rc)
637  if (rc /= 0) call error_handler("READING WD.", rc)
638  dummy2d = reshape(dummy, (/i_input,j_input/))
639  print*,'wd ',maxval(dummy2d),minval(dummy2d)
640  endif
641 
642  print*,"- CALL FieldScatter FOR INPUT WD."
643  call esmf_fieldscatter(w_d_input_grid, dummy2d, rootpet=0, rc=rc)
644  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
645  call error_handler("IN FieldScatter", rc)
646 
647  if (localpet == 0) then
648  print*,"- READ W0"
649  call nemsio_readrecv(gfile, "w0", "sfc", 1, dummy, 0, iret=rc)
650  if (rc /= 0) call error_handler("READING W0.", rc)
651  dummy2d = reshape(dummy, (/i_input,j_input/))
652  print*,'w0 ',maxval(dummy2d),minval(dummy2d)
653  endif
654 
655  print*,"- CALL FieldScatter FOR INPUT W0."
656  call esmf_fieldscatter(w_0_input_grid, dummy2d, rootpet=0, rc=rc)
657  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
658  call error_handler("IN FieldScatter", rc)
659 
660  if (localpet == 0) then
661  print*,"- READ XS"
662  call nemsio_readrecv(gfile, "xs", "sfc", 1, dummy, 0, iret=rc)
663  if (rc /= 0) call error_handler("READING XS.", rc)
664  dummy2d = reshape(dummy, (/i_input,j_input/))
665  print*,'xs ',maxval(dummy2d),minval(dummy2d)
666  endif
667 
668  print*,"- CALL FieldScatter FOR INPUT XS."
669  call esmf_fieldscatter(xs_input_grid, dummy2d, rootpet=0, rc=rc)
670  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
671  call error_handler("IN FieldScatter", rc)
672 
673  if (localpet == 0) then
674  print*,"- READ XT"
675  call nemsio_readrecv(gfile, "xt", "sfc", 1, dummy, 0, iret=rc)
676  if (rc /= 0) call error_handler("READING XT.", rc)
677  dummy2d = reshape(dummy, (/i_input,j_input/))
678  print*,'xt ',maxval(dummy2d),minval(dummy2d)
679  endif
680 
681  print*,"- CALL FieldScatter FOR INPUT XT."
682  call esmf_fieldscatter(xt_input_grid, dummy2d, rootpet=0, rc=rc)
683  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
684  call error_handler("IN FieldScatter", rc)
685 
686  if (localpet == 0) then
687  print*,"- READ XU"
688  call nemsio_readrecv(gfile, "xu", "sfc", 1, dummy, 0, iret=rc)
689  if (rc /= 0) call error_handler("READING XU.", rc)
690  dummy2d = reshape(dummy, (/i_input,j_input/))
691  print*,'xu ',maxval(dummy2d),minval(dummy2d)
692  endif
693 
694  print*,"- CALL FieldScatter FOR INPUT XU."
695  call esmf_fieldscatter(xu_input_grid, dummy2d, rootpet=0, rc=rc)
696  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
697  call error_handler("IN FieldScatter", rc)
698 
699  if (localpet == 0) then
700  print*,"- READ XV"
701  call nemsio_readrecv(gfile, "xv", "sfc", 1, dummy, 0, iret=rc)
702  if (rc /= 0) call error_handler("READING XV.", rc)
703  dummy2d = reshape(dummy, (/i_input,j_input/))
704  print*,'xv ',maxval(dummy2d),minval(dummy2d)
705  endif
706 
707  print*,"- CALL FieldScatter FOR INPUT XV."
708  call esmf_fieldscatter(xv_input_grid, dummy2d, rootpet=0, rc=rc)
709  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
710  call error_handler("IN FieldScatter", rc)
711 
712  if (localpet == 0) then
713  print*,"- READ XZ"
714  call nemsio_readrecv(gfile, "xz", "sfc", 1, dummy, 0, iret=rc)
715  if (rc /= 0) call error_handler("READING XZ.", rc)
716  dummy2d = reshape(dummy, (/i_input,j_input/))
717  print*,'xz ',maxval(dummy2d),minval(dummy2d)
718  endif
719 
720  print*,"- CALL FieldScatter FOR INPUT XZ."
721  call esmf_fieldscatter(xz_input_grid, dummy2d, rootpet=0, rc=rc)
722  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
723  call error_handler("IN FieldScatter", rc)
724 
725  if (localpet == 0) then
726  print*,"- READ XTTS"
727  call nemsio_readrecv(gfile, "xtts", "sfc", 1, dummy, 0, iret=rc)
728  if (rc /= 0) call error_handler("READING XTTS.", rc)
729  dummy2d = reshape(dummy, (/i_input,j_input/))
730  print*,'xtts ',maxval(dummy2d),minval(dummy2d)
731  endif
732 
733  print*,"- CALL FieldScatter FOR INPUT XTTS."
734  call esmf_fieldscatter(xtts_input_grid, dummy2d, rootpet=0, rc=rc)
735  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
736  call error_handler("IN FieldScatter", rc)
737 
738  if (localpet == 0) then
739  print*,"- READ XZTS"
740  call nemsio_readrecv(gfile, "xzts", "sfc", 1, dummy, 0, iret=rc)
741  if (rc /= 0) call error_handler("READING XZTS.", rc)
742  dummy2d = reshape(dummy, (/i_input,j_input/))
743  print*,'xzts ',maxval(dummy2d),minval(dummy2d)
744  endif
745 
746  print*,"- CALL FieldScatter FOR INPUT XZTS."
747  call esmf_fieldscatter(xzts_input_grid, dummy2d, rootpet=0, rc=rc)
748  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
749  call error_handler("IN FieldScatter", rc)
750 
751  if (localpet == 0) then
752  print*,"- READ ZC"
753  call nemsio_readrecv(gfile, "zc", "sfc", 1, dummy, 0, iret=rc)
754  if (rc /= 0) call error_handler("READING ZC.", rc)
755  dummy2d = reshape(dummy, (/i_input,j_input/))
756  print*,'zc ',maxval(dummy2d),minval(dummy2d)
757  endif
758 
759  print*,"- CALL FieldScatter FOR INPUT Z_C."
760  call esmf_fieldscatter(z_c_input_grid, dummy2d, rootpet=0, rc=rc)
761  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
762  call error_handler("IN FieldScatter", rc)
763 
764  if (localpet == 0) then
765  dummy2d = 0.0 ! zm not used yet. Set to zero per Xu Li.
766  endif
767 
768  print*,"- CALL FieldScatter FOR INPUT ZM."
769  call esmf_fieldscatter(zm_input_grid, dummy2d, rootpet=0, rc=rc)
770  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
771  call error_handler("IN FieldScatter", rc)
772 
773  deallocate(dummy, dummy2d)
774 
775  if (localpet == 0) call nemsio_close(gfile)
776 
777  end subroutine read_input_nst_nemsio_file
778 
782  subroutine cleanup_input_nst_data
784  implicit none
785 
786  integer :: rc
787 
788  print*,'- DESTROY NST INPUT DATA.'
789 
790  call esmf_fielddestroy(landsea_mask_input_grid, rc=rc)
791  call esmf_fielddestroy(c_d_input_grid, rc=rc)
792  call esmf_fielddestroy(c_0_input_grid, rc=rc)
793  call esmf_fielddestroy(d_conv_input_grid, rc=rc)
794  call esmf_fielddestroy(dt_cool_input_grid, rc=rc)
795  call esmf_fielddestroy(ifd_input_grid, rc=rc)
796  call esmf_fielddestroy(qrain_input_grid, rc=rc)
797  call esmf_fielddestroy(tref_input_grid, rc=rc)
798  call esmf_fielddestroy(w_d_input_grid, rc=rc)
799  call esmf_fielddestroy(w_0_input_grid, rc=rc)
800  call esmf_fielddestroy(xs_input_grid, rc=rc)
801  call esmf_fielddestroy(xt_input_grid, rc=rc)
802  call esmf_fielddestroy(xu_input_grid, rc=rc)
803  call esmf_fielddestroy(xv_input_grid, rc=rc)
804  call esmf_fielddestroy(xz_input_grid, rc=rc)
805  call esmf_fielddestroy(xtts_input_grid, rc=rc)
806  call esmf_fielddestroy(xzts_input_grid, rc=rc)
807  call esmf_fielddestroy(z_c_input_grid, rc=rc)
808  call esmf_fielddestroy(zm_input_grid, rc=rc)
809 
810  end subroutine cleanup_input_nst_data
811 
812  end module nst_input_data
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
character(len=500), public nst_files_input_grid
File name of input nst data.
+
integer, public ip1_input
i_input plus 1
Definition: model_grid.F90:33
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
integer, public jp1_input
j_input plus 1
Definition: model_grid.F90:35
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
integer, public num_tiles_input_grid
Number of tiles, input grid.
Definition: model_grid.F90:47
+
type(esmf_grid), public input_grid
input grid esmf grid object
Definition: model_grid.F90:52
+
character(len=500), public data_dir_input_grid
Directory containing input atm or sfc files.
+
character(len=25), public input_type
Input data type:
+
character(len=500), dimension(6), public sfc_files_input_grid
File names containing input surface data.
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/open.png b/ver-1.11.0/chgres_cube/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/program_setup.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
program_setup.F90 File Reference
+
+
+ +

Set up program execution. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  program_setup
 This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters.
 
+ + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine program_setup::calc_soil_params (num_soil_cats, smlow, smhigh, satdk, maxsmc, bb, satpsi, satdw, refsmc, drysmc, wltsmc)
 Compute soil parameters. More...
 
subroutine, public program_setup::calc_soil_params_driver (localpet)
 Driver routine to compute soil parameters for each soil type. More...
 
subroutine, public program_setup::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 program_setup::read_setup_namelist (filename)
 Reads program configuration namelist. More...
 
subroutine, public program_setup::read_varmap
 Reads the variable mapping table, which is required for initializing with GRIB2 data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

character(len=500), dimension(7), public program_setup::atm_core_files_input_grid = "NULL"
 File names of input atmospheric restart core files. More...
 
character(len=500), dimension(6), public program_setup::atm_files_input_grid = "NULL"
 File names of input atmospheric data. More...
 
character(len=500), dimension(6), public program_setup::atm_tracer_files_input_grid = "NULL"
 File names of input atmospheric restart tracer files. More...
 
character(len=500), public program_setup::atm_weight_file ="NULL"
 File containing pre-computed weights to horizontally interpolate atmospheric fields. More...
 
real, dimension(:), allocatable, public program_setup::bb_target
 Soil 'b' parameter, target grid. More...
 
character(len=20), dimension(:), allocatable, public program_setup::chgres_var_names
 Varmap table variable name as recognized by this program. More...
 
logical, public program_setup::convert_atm = .false.
 Convert atmospheric data when true. More...
 
logical, public program_setup::convert_nst = .false.
 Convert nst data when true. More...
 
logical, public program_setup::convert_sfc = .false.
 Convert sfc data when true. More...
 
character(len=6), public program_setup::cres_target_grid = "NULL"
 Target grid resolution, i.e., C768. More...
 
integer, public program_setup::cycle_day = -999
 Cycle day. More...
 
integer, public program_setup::cycle_hour = -999
 Cycle hour. More...
 
integer, public program_setup::cycle_mon = -999
 Cycle month. More...
 
integer, public program_setup::cycle_year = -999
 Cycle year. More...
 
character(len=500), public program_setup::data_dir_input_grid = "NULL"
 Directory containing input atm or sfc files. More...
 
real, dimension(:), allocatable, public program_setup::drysmc_input
 Air dry soil moisture content input grid. More...
 
real, dimension(:), allocatable, public program_setup::drysmc_target
 Air dry soil moisture content target grid. More...
 
character(len=20), public program_setup::external_model ="GFS"
 The model that the input data is derived from. More...
 
character(len=20), dimension(:), allocatable, public program_setup::field_var_names
 The GRIB2 variable name in the varmap table. More...
 
character(len=500), public program_setup::fix_dir_target_grid = "NULL"
 Directory containing target grid pre-computed fixed data (ex: soil type). More...
 
character(len=500), public program_setup::geogrid_file_input_grid = "NULL"
 Name of "geogrid" file, which contains static surface fields on the input grid. More...
 
character(len=500), public program_setup::grib2_file_input_grid = "NULL"
 REQUIRED. More...
 
integer, public program_setup::halo_blend = 0
 Number of row/cols of blending halo, where model tendencies and lateral boundary tendencies are applied. More...
 
integer, public program_setup::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 program_setup::input_type ="restart"
 Input data type: More...
 
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. More...
 
integer, parameter, public program_setup::max_tracers =100
 Maximum number of atmospheric tracers processed. More...
 
real, dimension(:), allocatable, public program_setup::maxsmc_input
 Maximum soil moisture content input grid. More...
 
real, dimension(:), allocatable, public program_setup::maxsmc_target
 Maximum soil moisture content target grid. More...
 
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. More...
 
character(len=20), dimension(:), allocatable, public program_setup::missing_var_methods
 Method to replace missing GRIB2 input records. More...
 
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. More...
 
character(len=500), public program_setup::mosaic_file_input_grid = "NULL"
 Input grid mosaic file. More...
 
character(len=500), public program_setup::mosaic_file_target_grid = "NULL"
 Target grid mosaic file. More...
 
integer, public program_setup::nsoill_out = 4
 Number of soil levels desired in the output data. More...
 
character(len=500), public program_setup::nst_files_input_grid = "NULL"
 File name of input nst data. More...
 
integer, public program_setup::num_tracers
 Number of atmospheric tracers to be processed. More...
 
integer, public program_setup::num_tracers_input
 Number of atmospheric tracers in input file. More...
 
character(len=500), public program_setup::orog_dir_input_grid = "NULL"
 Directory containing the input grid orography files. More...
 
character(len=500), public program_setup::orog_dir_target_grid = "NULL"
 Directory containing the target grid orography files. More...
 
character(len=500), dimension(6), public program_setup::orog_files_input_grid = "NULL"
 Input grid orography files. More...
 
character(len=500), dimension(6), public program_setup::orog_files_target_grid = "NULL"
 Target grid orography files. More...
 
logical, dimension(:), allocatable, public program_setup::read_from_input
 When false, variable was not read from GRIB2 input file. More...
 
real, dimension(:), allocatable, public program_setup::refsmc_input
 Reference soil moisture content input grid (onset of soil moisture stress). More...
 
real, dimension(:), allocatable, public program_setup::refsmc_target
 Reference soil moisture content target grid (onset of soil moisture stress). More...
 
integer, public program_setup::regional = 0
 For regional target grids. More...
 
real, dimension(:), allocatable, public program_setup::satpsi_target
 Saturated soil potential, target grid. More...
 
character(len=500), dimension(6), public program_setup::sfc_files_input_grid = "NULL"
 File names containing input surface data. More...
 
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. More...
 
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. More...
 
character(len=500), public program_setup::thomp_mp_climo_file = "NULL"
 Path/name to the Thompson MP climatology file. More...
 
character(len=20), dimension(max_tracers), public program_setup::tracers ="NULL"
 Name of each atmos tracer to be processed. More...
 
character(len=20), dimension(max_tracers), public program_setup::tracers_input ="NULL"
 Name of each atmos tracer record in the input file. More...
 
logical, public program_setup::use_thomp_mp_climo =.false.
 When true, read and process Thompson MP climatological tracers. More...
 
character(len=500), public program_setup::varmap_file = "NULL"
 REQUIRED. More...
 
character(len=500), public program_setup::vcoord_file_target_grid = "NULL"
 Vertical coordinate definition file. More...
 
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. More...
 
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. More...
 
logical, public program_setup::wam_cold_start = .false.
 When true, cold start for whole atmosphere model. More...
 
character(len=500), public program_setup::wam_parm_file ="msis21.parm"
 Full path to msis21.parm for WAM initialization. More...
 
real, dimension(:), allocatable, public program_setup::wltsmc_input
 Plant wilting point soil moisture content input grid. More...
 
real, dimension(:), allocatable, public program_setup::wltsmc_target
 Plant wilting point soil moisture content target grid. More...
 
+

Detailed Description

+

Set up program execution.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file program_setup.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/program__setup_8F90.js b/ver-1.11.0/chgres_cube/program__setup_8F90.js new file mode 100644 index 000000000..085c8d0a3 --- /dev/null +++ b/ver-1.11.0/chgres_cube/program__setup_8F90.js @@ -0,0 +1,70 @@ +var program__setup_8F90 = +[ + [ "calc_soil_params", "program__setup_8F90.html#a3a454a5d7e276f0665145023993bf338", null ], + [ "calc_soil_params_driver", "program__setup_8F90.html#abd7579c405f8e7aef79aeb4bb6b574ac", null ], + [ "get_var_cond", "program__setup_8F90.html#aa1aa0e7ed8df76be6db0a0ab964756f3", null ], + [ "read_setup_namelist", "program__setup_8F90.html#a34de94770b10be0f4975b63813ddbe8d", null ], + [ "read_varmap", "program__setup_8F90.html#a8cb781f9243350c2658fc2a74a0bfe82", null ], + [ "atm_core_files_input_grid", "program__setup_8F90.html#a4ae247bd098f03d56ced018458e8aa80", null ], + [ "atm_files_input_grid", "program__setup_8F90.html#ac207b427c9a9436611682217ba8ea49e", null ], + [ "atm_tracer_files_input_grid", "program__setup_8F90.html#a238a812773da9bfe54964f40e8529891", null ], + [ "atm_weight_file", "program__setup_8F90.html#ad0fadfbe4232b55e05a87f0044193290", null ], + [ "bb_target", "program__setup_8F90.html#ab72166ef093181118b706b0c8d9680da", null ], + [ "chgres_var_names", "program__setup_8F90.html#a774028ea61ef16c070de132942d132e0", null ], + [ "convert_atm", "program__setup_8F90.html#acbdcf36483fb5f4df0671b0c0ea7fb56", null ], + [ "convert_nst", "program__setup_8F90.html#aecb79f4fe5bc6e738cde100c9e2aa654", null ], + [ "convert_sfc", "program__setup_8F90.html#a9976c028dd266aeafe391a15c93c69aa", null ], + [ "cres_target_grid", "program__setup_8F90.html#afb1a0aace6f3f9dedaf8a53b4847f41f", null ], + [ "cycle_day", "program__setup_8F90.html#aaf0e825f9aa8cffe8c0035079ac12bb0", null ], + [ "cycle_hour", "program__setup_8F90.html#ac5f0577071c1c98ce380d51b397bffbe", null ], + [ "cycle_mon", "program__setup_8F90.html#a98f420b05c47203e45300d1a65d948e6", null ], + [ "cycle_year", "program__setup_8F90.html#aff95ceb3ac2eb7fb6809acdbb75771dd", null ], + [ "data_dir_input_grid", "program__setup_8F90.html#ad2880ceb89e38d54187a66b001fa783b", null ], + [ "drysmc_input", "program__setup_8F90.html#a18f1a7322646b504db970b47e131e42c", null ], + [ "drysmc_target", "program__setup_8F90.html#abcd1bcc5c560893e6524aff26bbb54a4", null ], + [ "external_model", "program__setup_8F90.html#aeb876c8fe55456458771ff3cbc86ad14", null ], + [ "field_var_names", "program__setup_8F90.html#a628f7be5aa35f0a20cd4e84598bfa7e7", null ], + [ "fix_dir_target_grid", "program__setup_8F90.html#ad68e3574b23454ea791501813c6063f7", null ], + [ "geogrid_file_input_grid", "program__setup_8F90.html#a0c9b8f64a9bc2872a5cf70ee0c97c5f5", null ], + [ "grib2_file_input_grid", "program__setup_8F90.html#a3060fbdb680807d9360c64ccd2d9855a", null ], + [ "halo_blend", "program__setup_8F90.html#a8063773d67ffc944f7471e6fe82e510b", null ], + [ "halo_bndy", "program__setup_8F90.html#aa2af8669f8b4e8275287ef10b2cbc9a8", null ], + [ "input_type", "program__setup_8F90.html#ad9cad7ceebd839cb675081cc01b7bb76", null ], + [ "lai_from_climo", "program__setup_8F90.html#a85264610be92f55f65062b22df35a04b", null ], + [ "max_tracers", "program__setup_8F90.html#a1e0554fe16f40cb04c261d6d706e0590", null ], + [ "maxsmc_input", "program__setup_8F90.html#aaaf6c9fec89a42c1eeef58627ee75161", null ], + [ "maxsmc_target", "program__setup_8F90.html#a943991a14e371cba21a6198ea154ea8f", null ], + [ "minmax_vgfrc_from_climo", "program__setup_8F90.html#afe1e8a28060f5dd88fd1738bfca0a33c", null ], + [ "missing_var_methods", "program__setup_8F90.html#aab225cf6422d3962e283bf3124d78ff9", null ], + [ "missing_var_values", "program__setup_8F90.html#a1059532d74293e5a62bca42e783992aa", null ], + [ "mosaic_file_input_grid", "program__setup_8F90.html#a8f48c2a86a201e890140ba255f235e19", null ], + [ "mosaic_file_target_grid", "program__setup_8F90.html#a87272b81090f1ec24acf3d417a4a0df2", null ], + [ "nsoill_out", "program__setup_8F90.html#ab00a20499ebc164b63c484864a14d185", null ], + [ "nst_files_input_grid", "program__setup_8F90.html#a61ce62b449d1d0a096e8339b63f0bd87", null ], + [ "num_tracers", "program__setup_8F90.html#a539f60d15e53a303d938db95e8d8a98b", null ], + [ "num_tracers_input", "program__setup_8F90.html#a1aca4bf2de945568e4968338e2e51426", null ], + [ "orog_dir_input_grid", "program__setup_8F90.html#a1be9ccab8a35f168bcbfdf9c5a222a45", null ], + [ "orog_dir_target_grid", "program__setup_8F90.html#a7399d25dfd372508d36eb5f6605cfb95", null ], + [ "orog_files_input_grid", "program__setup_8F90.html#a377c50042036e5bb66eb6961dd6f011e", null ], + [ "orog_files_target_grid", "program__setup_8F90.html#a347c8473bf53672f02913c93a050ea7a", null ], + [ "read_from_input", "program__setup_8F90.html#a1ffec9219f0a5e00b4c285f62904eca7", null ], + [ "refsmc_input", "program__setup_8F90.html#a25ee473921ebbc73e186a538b4592073", null ], + [ "refsmc_target", "program__setup_8F90.html#a491b74f2a85be77f3c0c2051044f0aa6", null ], + [ "regional", "program__setup_8F90.html#a46f3ccd75736f06244e9110197e424f2", null ], + [ "satpsi_target", "program__setup_8F90.html#acbfd03fbdfd369b859cd851342b024da", null ], + [ "sfc_files_input_grid", "program__setup_8F90.html#a1ac8f9f39991ff6eda54d9189661900d", null ], + [ "sotyp_from_climo", "program__setup_8F90.html#ad6b23f6d8cacb48240a2afd72ff1d5ef", null ], + [ "tg3_from_soil", "program__setup_8F90.html#a49d72c7fb6a118e7f558cb5543b76ccf", null ], + [ "thomp_mp_climo_file", "program__setup_8F90.html#a8712b252b9407a7e8034c78e1f61614c", null ], + [ "tracers", "program__setup_8F90.html#a4e934ac801fd213f8f422e5e9bb83568", null ], + [ "tracers_input", "program__setup_8F90.html#ac4c19c8b8a7b17c398fa07ac85b31546", null ], + [ "use_thomp_mp_climo", "program__setup_8F90.html#a6f53159282cadb12b9c881d901ce0699", null ], + [ "varmap_file", "program__setup_8F90.html#abda8846e5ea6470172073df7ad528171", null ], + [ "vcoord_file_target_grid", "program__setup_8F90.html#af00a42c8dcd1d98cb4e152e5e7fdfe4c", null ], + [ "vgfrc_from_climo", "program__setup_8F90.html#a8caa284c1052597bed42205d1cac0339", null ], + [ "vgtyp_from_climo", "program__setup_8F90.html#ad85f196d847aa9ac1edaa07d4377cc72", null ], + [ "wam_cold_start", "program__setup_8F90.html#a975eb110cebfc2491c4773cb53cd85c7", null ], + [ "wam_parm_file", "program__setup_8F90.html#a497c9dd0f9c405c839bed2dfc491eafb", null ], + [ "wltsmc_input", "program__setup_8F90.html#a4a0cb4c7fd9eb848647e59a6d20d9fd6", null ], + [ "wltsmc_target", "program__setup_8F90.html#a40f629a2883fb6000377db3bc8088db5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/program__setup_8F90_source.html b/ver-1.11.0/chgres_cube/program__setup_8F90_source.html new file mode 100644 index 000000000..c0e6b4eb5 --- /dev/null +++ b/ver-1.11.0/chgres_cube/program__setup_8F90_source.html @@ -0,0 +1,173 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/program_setup.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
program_setup.F90
+
+
+Go to the documentation of this file.
1 
4 
9  module program_setup
10 
11  use esmf
12  use utilities, only : error_handler, to_lower
13 
14  implicit none
15 
16  private
17 
18  character(len=500), public :: varmap_file = "NULL"
19  character(len=500), public :: atm_files_input_grid(6) = "NULL"
23  character(len=500), public :: atm_core_files_input_grid(7) = "NULL"
24  character(len=500), public :: atm_tracer_files_input_grid(6) = "NULL"
25  character(len=500), public :: data_dir_input_grid = "NULL"
26  character(len=500), public :: fix_dir_target_grid = "NULL"
27  character(len=500), public :: mosaic_file_input_grid = "NULL"
28  character(len=500), public :: mosaic_file_target_grid = "NULL"
29  character(len=500), public :: nst_files_input_grid = "NULL"
30  character(len=500), public :: grib2_file_input_grid = "NULL"
31  character(len=500), public :: geogrid_file_input_grid = "NULL"
34  character(len=500), public :: orog_dir_input_grid = "NULL"
35  character(len=500), public :: orog_files_input_grid(6) = "NULL"
36  character(len=500), public :: orog_dir_target_grid = "NULL"
37  character(len=500), public :: orog_files_target_grid(6) = "NULL"
38  character(len=500), public :: sfc_files_input_grid(6) = "NULL"
39  character(len=500), public :: vcoord_file_target_grid = "NULL"
40  character(len=500), public :: thomp_mp_climo_file= "NULL"
41  character(len=6), public :: cres_target_grid = "NULL"
42  character(len=500), public :: atm_weight_file="NULL"
43  character(len=25), public :: input_type="restart"
57  character(len=20), public :: external_model="GFS"
58 
59  integer, parameter, public :: max_tracers=100
60  integer, public :: num_tracers
61  integer, public :: num_tracers_input
62 
63  logical, allocatable, public :: read_from_input(:)
65 
66  character(len=20), public :: tracers(max_tracers)="NULL"
72  character(len=20), public :: tracers_input(max_tracers)="NULL"
77  character(len=20), allocatable, public :: missing_var_methods(:)
79  character(len=20), allocatable, public :: chgres_var_names(:)
81  character(len=20), allocatable, public :: field_var_names(:)
82 
83  character(len=500), public :: wam_parm_file="msis21.parm"
84 
85  integer, public :: cycle_year = -999
86  integer, public :: cycle_mon = -999
87  integer, public :: cycle_day = -999
88  integer, public :: cycle_hour = -999
89  integer, public :: regional = 0
91  integer, public :: halo_bndy = 0
92  integer, public :: halo_blend = 0
93  integer, public :: nsoill_out = 4
94 
95  logical, public :: convert_atm = .false.
96  logical, public :: convert_nst = .false.
97  logical, public :: convert_sfc = .false.
98  logical, public :: wam_cold_start = .false.
99 
100  ! Options for replacing vegetation/soil type, veg fraction, and lai with data from the grib2 file
101  ! Default is to use climatology instead
102  logical, public :: vgtyp_from_climo = .true.
106  logical, public :: sotyp_from_climo = .true.
111  logical, public :: vgfrc_from_climo = .true.
115 
116  logical, public :: minmax_vgfrc_from_climo = .true.
120  logical, public :: lai_from_climo = .true.
123  logical, public :: tg3_from_soil = .false.
126  logical, public :: use_thomp_mp_climo=.false.
127 
128  real, allocatable, public :: drysmc_input(:)
129  real, allocatable, public :: drysmc_target(:)
130  real, allocatable, public :: maxsmc_input(:)
131  real, allocatable, public :: maxsmc_target(:)
132  real, allocatable, public :: refsmc_input(:)
133  real, allocatable, public :: refsmc_target(:)
134  real, allocatable, public :: wltsmc_input(:)
135  real, allocatable, public :: wltsmc_target(:)
136  real, allocatable, public :: bb_target(:)
137  real, allocatable, public :: satpsi_target(:)
138  real(kind=esmf_kind_r4), allocatable, public :: missing_var_values(:)
140 
141  public :: read_setup_namelist
142  public :: calc_soil_params_driver
143  public :: read_varmap
144  public :: get_var_cond
145 
146  contains
147 
153  subroutine read_setup_namelist(filename)
154  implicit none
155 
156  character(len=*), intent(in), optional :: filename
157  character(len=250), allocatable :: filename_to_use
158 
159  integer :: is, ie, ierr
160 
161 
162  namelist /config/ varmap_file, &
182  wam_cold_start, &
188  regional, input_type, &
189  external_model, &
190  wam_parm_file, &
192  tracers_input, &
193  halo_bndy, &
194  halo_blend, &
195  nsoill_out, &
197 
198  print*,"- READ SETUP NAMELIST"
199 
200  if (present(filename)) then
201  filename_to_use = filename
202  else
203  filename_to_use = "./fort.41"
204  endif
205 
206  open(41, file=trim(filename_to_use), iostat=ierr)
207  if (ierr /= 0) call error_handler("OPENING SETUP NAMELIST.", ierr)
208  read(41, nml=config, iostat=ierr)
209  if (ierr /= 0) call error_handler("READING SETUP NAMELIST.", ierr)
210  close (41)
211 
212  call to_lower(input_type)
213 
216 
217 !-------------------------------------------------------------------------
218 ! Determine CRES of target grid from the name of the mosaic file.
219 !-------------------------------------------------------------------------
220 
221  is = index(mosaic_file_target_grid, "/", .true.)
222  ie = index(mosaic_file_target_grid, "mosaic") - 1
223 
224  if (is == 0 .or. ie == 0) then
225  call error_handler("CANT DETERMINE CRES FROM MOSAIC FILE.", 1)
226  endif
227 
229 
230  if (.not. convert_sfc .and. .not. convert_atm) then
231  call error_handler("MUST CONVERT EITHER AN ATM OR SFC FILE.", 1)
232  endif
233 
234 !-------------------------------------------------------------------------
235 ! Flag for processing stand-alone regional grid. When '1',
236 ! remove halo from atmospheric and surface data and output
237 ! atmospheric lateral boundary condition file. When '2',
238 ! create lateral boundary file only. When '0' (the default),
239 ! process normally as a global grid.
240 !-------------------------------------------------------------------------
241 
242  if (regional > 0) then
243  print*,"- PROCESSING A REGIONAL NEST WITH A BOUNDARY HALO OF ",halo_bndy
244  print*,"- PROCESSING A REGIONAL NEST WITH A BLENDING HALO OF ",halo_blend
245  else
246  halo_bndy = 0
247  halo_blend = 0
248  endif
249 
250  num_tracers = 0
251  do is = 1, max_tracers
252  if (trim(tracers(is)) == "NULL") exit
254  print*,"- TRACER NAME IN OUTPUT FILE ", trim(tracers(is))
255  enddo
256 
258  do is = 1, max_tracers
259  if (trim(tracers_input(is)) == "NULL") exit
261  print*,"- TRACER NAME IN INPUT FILE ", trim(tracers_input(is))
262  enddo
263 
264 !-------------------------------------------------------------------------
265 ! Ensure spo, spo2, and spo3 in tracers list if wam ic is on
266 !-------------------------------------------------------------------------
267 
268  if( wam_cold_start ) then
269  ierr=3
270  do is = 1, num_tracers
271  if(trim(tracers(is)) == "spo" ) ierr = ierr - 1
272  if(trim(tracers(is)) == "spo2" ) ierr = ierr - 1
273  if(trim(tracers(is)) == "spo3" ) ierr = ierr - 1
274  enddo
275  if (ierr /= 0) then
276  print*,"-ERROR: spo, spo2, and spo3 should be in tracers namelist"
277  call error_handler("WAM TRACER NAMELIST.", ierr)
278  endif
279  print*,"- WAM COLDSTART OPTION IS TURNED ON."
280  endif
281 
282 !-------------------------------------------------------------------------
283 ! Ensure program recognizes the input data type.
284 !-------------------------------------------------------------------------
285 
286  select case (trim(input_type))
287  case ("restart")
288  print*,'- INPUT DATA FROM FV3 TILED RESTART FILES.'
289  case ("history")
290  print*,'- INPUT DATA FROM FV3 TILED HISTORY FILES.'
291  case ("gaussian_nemsio")
292  print*,'- INPUT DATA FROM FV3 GAUSSIAN NEMSIO FILE.'
293  case ("gfs_gaussian_nemsio")
294  print*,'- INPUT DATA FROM SPECTRAL GFS GAUSSIAN NEMSIO FILE.'
295  case ("gfs_sigio")
296  print*,'- INPUT DATA FROM SPECTRAL GFS SIGIO/SFCIO FILE.'
297  case ("gaussian_netcdf")
298  print*,'- INPUT DATA FROM FV3 GAUSSIAN NETCDF FILE.'
299  case ("grib2")
300  print*,'- INPUT DATA FROM A GRIB2 FILE'
301  case default
302  call error_handler("UNRECOGNIZED INPUT DATA TYPE.", 1)
303  end select
304 
305 !-------------------------------------------------------------------------
306 ! Ensure proper file variable provided for grib2 input
307 !-------------------------------------------------------------------------
308 
309  if (trim(input_type) == "grib2") then
310  if (trim(grib2_file_input_grid) == "NULL" .or. trim(grib2_file_input_grid) == "") then
311  call error_handler("FOR GRIB2 DATA, PLEASE PROVIDE GRIB2_FILE_INPUT_GRID", 1)
312  endif
313  endif
314 
315  !-------------------------------------------------------------------------
316 ! For grib2 input, warn about possibly unsupported external model types
317 !-------------------------------------------------------------------------
318 
319  if (trim(input_type) == "grib2") then
320  if (.not. any((/character(4)::"GFS","NAM","RAP","HRRR"/)==trim(external_model))) then
321  call error_handler( "KNOWN SUPPORTED external_model INPUTS ARE GFS, NAM, RAP, AND HRRR. " // &
322  "IF YOU WISH TO PROCESS GRIB2 DATA FROM ANOTHER MODEL, YOU MAY ATTEMPT TO DO SO AT YOUR OWN RISK. " // &
323  "ONE WAY TO DO THIS IS PROVIDE NAM FOR external_model AS IT IS A RELATIVELY STRAIGHT-" // &
324  "FORWARD REGIONAL GRIB2 FILE. YOU MAY ALSO COMMENT OUT THIS ERROR MESSAGE IN " // &
325  "program_setup.f90 LINE 389. NO GUARANTEE IS PROVIDED THAT THE CODE WILL WORK OR "// &
326  "THAT THE RESULTING DATA WILL BE CORRECT OR WORK WITH THE ATMOSPHERIC MODEL.", 1)
327  endif
328  endif
329 
330 !-------------------------------------------------------------------------
331 ! For grib2 hrrr input without geogrid file input, warn that soil moisture interpolation
332 ! will be less accurate
333 !-------------------------------------------------------------------------
334 
335  if (trim(input_type) == "grib2" .and. trim(external_model)=="HRRR") then
336  if (trim(geogrid_file_input_grid) == "NULL" .or. trim(grib2_file_input_grid) == "") then
337  print*, "HRRR DATA DOES NOT CONTAIN SOIL TYPE INFORMATION. WITHOUT"
338  print*, "GEOGRID_FILE_INPUT_GRID SPECIFIED, SOIL MOISTURE INTERPOLATION MAY BE LESS ACCURATE."
339  endif
340  endif
341 
342  if (trim(thomp_mp_climo_file) /= "NULL") then
343  use_thomp_mp_climo=.true.
344  print*,"- WILL PROCESS CLIMO THOMPSON MP TRACERS FROM FILE: ", trim(thomp_mp_climo_file)
345  endif
346 
347  return
348 
349  end subroutine read_setup_namelist
350 
375 subroutine read_varmap
377  implicit none
378 
379  integer :: istat, k, nvars
380  character(len=500) :: line
381  character(len=20),allocatable :: var_type(:)
382 
383  if (trim(input_type) == "grib2") then
384 
385  print*,"OPEN VARIABLE MAPPING FILE: ", trim(varmap_file)
386  open(14, file=trim(varmap_file), form='formatted', iostat=istat)
387  if (istat /= 0) then
388  call error_handler("OPENING VARIABLE MAPPING FILE", istat)
389  endif
390 
392  nvars = 0
393 
394  !Loop over lines of file to count the number of variables
395  do
396  read(14, '(A)', iostat=istat) line !chgres_var_names_tmp(k)!, field_var_names(k) , &
397  ! missing_var_methods(k), missing_var_values(k), var_type(k)
398  if (istat/=0) exit
399  if ( trim(line) .eq. '' ) cycle
400  nvars = nvars+1
401  enddo
402  if ( nvars == 0) call error_handler("VARMAP FILE IS EMPTY.", -1)
403 
404  allocate(chgres_var_names(nvars))
405  allocate(field_var_names(nvars))
406  allocate(missing_var_methods(nvars))
407  allocate(missing_var_values(nvars))
408  allocate(read_from_input(nvars))
409  allocate(var_type(nvars))
410 
411  read_from_input(:) = .true.
412  rewind(14)
413  do k = 1,nvars
414  read(14, *, iostat=istat) chgres_var_names(k), field_var_names(k) , &
415  missing_var_methods(k), missing_var_values(k), var_type(k)
416  if (istat /= 0) call error_handler("READING VARIABLE MAPPING FILE", istat)
417  if(trim(var_type(k))=='T') then
420  if ((trim(chgres_var_names(k)) == "ice_aero" .or. trim(chgres_var_names(k)) == "liq_aero") .and. &
421  trim(thomp_mp_climo_file) .ne. "NULL" .and. trim(input_type) == "grib2") then
422  call error_handler("VARMAP TABLE CONTAINS TRACER ENTRIES FOR THOMPSON AEROSOLS liq_aero or "// &
423  "ice_aero. REMOVE THESE ENTRIES OR REMOVE THE NAMELIST ENTRY FOR "// &
424  "thomp_mp_climo_file AND TRY AGAIN.",1)
425  endif
426  endif
427  enddo
428  close(14)
430  endif
431 end subroutine read_varmap
432 
445 subroutine get_var_cond(var_name,this_miss_var_method,this_miss_var_value, &
446  this_field_var_name, loc)
447 
448  implicit none
449  character(len=20), intent(in) :: var_name
450 
451  character(len=20), optional, intent(out) :: this_miss_var_method, &
452  this_field_var_name
453  real(esmf_kind_r4), optional, intent(out):: this_miss_var_value
454 
455  integer, optional, intent(out) :: loc
456 
457  integer :: i, tmp(size(missing_var_methods))
458 
459  i=0
460 
461  tmp(:)=0
462  where(chgres_var_names==var_name) tmp=1
463 
464  i = maxloc(merge(1.,0.,chgres_var_names == var_name),dim=1) !findloc(chgres_var_names,var_name)
465  print*, i
466  if (maxval(tmp).eq.0) then
467  print*, "WARNING: NO ENTRY FOR ", trim(var_name), " IN VARMAP TABLE. WILL SKIP " // &
468  "VARIABLE IF NOT FOUND IN EXTERNAL MODEL FILE"
469 
470  if(present(this_miss_var_method)) this_miss_var_method = "skip"
471  if(present(this_miss_var_value)) this_miss_var_value = -9999.9_esmf_kind_r4
472  if(present(this_field_var_name)) this_field_var_name = "NULL"
473  if(present(loc)) loc = 9999
474  else
475  if(present(this_miss_var_method)) this_miss_var_method = missing_var_methods(i)
476  if(present(this_miss_var_value)) this_miss_var_value = missing_var_values(i)
477  if(present(this_field_var_name)) this_field_var_name = field_var_names(i)
478  if(present(loc)) loc = i
479  endif
480 
481 end subroutine get_var_cond
482 
516  subroutine calc_soil_params_driver(localpet)
518  implicit none
519 
520  integer, intent(in) :: localpet
521 
522  integer, parameter :: num_statsgo = 16
523  real, parameter :: smlow_statsgo = 0.5
524  real, parameter :: smhigh_statsgo = 6.0
525 
526 ! zobler soil type used by spectral gfs prior to June 2017.
527  integer, parameter :: num_zobler = 9
528  real, parameter :: smlow_zobler = 0.5
529  real, parameter :: smhigh_zobler = 6.0
530 
531  integer :: num_soil_cats
532 
533  real :: bb_statsgo(num_statsgo)
534  real :: maxsmc_statsgo(num_statsgo)
535  real :: satdk_statsgo(num_statsgo)
536  real :: satpsi_statsgo(num_statsgo)
537 
538  real :: bb_zobler(num_zobler)
539  real :: maxsmc_zobler(num_zobler)
540  real :: satdk_zobler(num_zobler)
541  real :: satpsi_zobler(num_zobler)
542 
543  real, allocatable :: bb(:)
544  real :: smlow, smhigh
545  real, allocatable :: satdk(:)
546  real, allocatable :: satpsi(:)
547  real, allocatable :: satdw(:)
548 
549 ! using stasgo table
550  data bb_statsgo /4.05, 4.26, 4.74, 5.33, 5.33, 5.25, &
551  6.77, 8.72, 8.17, 10.73, 10.39, 11.55, &
552  5.25, -9.99, 4.05, 4.26/
553 
554  data maxsmc_statsgo /0.395, 0.421, 0.434, 0.476, 0.476, 0.439, &
555  0.404, 0.464, 0.465, 0.406, 0.468, 0.457, &
556  0.464, -9.99, 0.200, 0.421/
557 
558  data satdk_statsgo /1.7600e-4, 1.4078e-5, 5.2304e-6, 2.8089e-6, 2.8089e-6, &
559  3.3770e-6, 4.4518e-6, 2.0348e-6, 2.4464e-6, 7.2199e-6, &
560  1.3444e-6, 9.7384e-7, 3.3770e-6, -9.99, 1.4078e-5, &
561  1.4078e-5/
562 
563  data satpsi_statsgo /0.0350, 0.0363, 0.1413, 0.7586, 0.7586, 0.3548, &
564  0.1349, 0.6166, 0.2630, 0.0977, 0.3236, 0.4677, &
565  0.3548, -9.99, 0.0350, 0.0363/
566 
567  data bb_zobler /4.26, 8.72, 11.55, 4.74, 10.73, 8.17, &
568  6.77, 5.25, 4.26/
569 
570  data maxsmc_zobler /0.421, 0.464, 0.468, 0.434, 0.406, 0.465, &
571  0.404, 0.439, 0.421/
572 
573  data satdk_zobler /1.41e-5, 0.20e-5, 0.10e-5, 0.52e-5, 0.72e-5, &
574  0.25e-5, 0.45e-5, 0.34e-5, 1.41e-5/
575 
576  data satpsi_zobler /0.040, 0.620, 0.470, 0.140, 0.100, 0.260, &
577  0.140, 0.360, 0.040/
578 
579 !-------------------------------------------------------------------------
580 ! Compute soil parameters for the input grid.
581 !-------------------------------------------------------------------------
582 
583  select case (trim(input_type))
584  case ("gfs_sigio")
585  print*,'- INPUT GRID USED ZOBLER SOIL TYPES.'
586  num_soil_cats = num_zobler
587  case default
588  print*,'- INPUT GRID USED STATSGO SOIL TYPES.'
589  num_soil_cats = num_statsgo
590  end select
591 
592  allocate(maxsmc_input(num_soil_cats))
593  allocate(wltsmc_input(num_soil_cats))
594  allocate(drysmc_input(num_soil_cats))
595  allocate(refsmc_input(num_soil_cats))
596  allocate(bb(num_soil_cats))
597  allocate(satdk(num_soil_cats))
598  allocate(satpsi(num_soil_cats))
599  allocate(satdw(num_soil_cats))
600 
601  select case (trim(input_type))
602  case ("gfs_sigio")
603  smlow = smlow_zobler
604  smhigh = smhigh_zobler
605  maxsmc_input = maxsmc_zobler
606  bb = bb_zobler
607  satdk = satdk_zobler
608  satpsi = satpsi_zobler
609  case default
610  smlow = smlow_statsgo
611  smhigh = smhigh_statsgo
612  maxsmc_input = maxsmc_statsgo
613  bb = bb_statsgo
614  satdk = satdk_statsgo
615  satpsi = satpsi_statsgo
616  end select
617 
618  call calc_soil_params(num_soil_cats, smlow, smhigh, satdk, maxsmc_input, &
619  bb, satpsi, satdw, refsmc_input, drysmc_input, wltsmc_input)
620 
621  deallocate(bb, satdk, satpsi, satdw)
622 
623  if (localpet == 0) print*,'maxsmc input grid ',maxsmc_input
624  if (localpet == 0) print*,'wltsmc input grid ',wltsmc_input
625 
626 !-------------------------------------------------------------------------
627 ! Compute soil parameters for the target grid.
628 !-------------------------------------------------------------------------
629 
630  print*,'- TARGET GRID USEING STATSGO SOIL TYPES.'
631 
632  num_soil_cats = num_statsgo
633 
634  allocate(maxsmc_target(num_soil_cats))
635  allocate(wltsmc_target(num_soil_cats))
636  allocate(drysmc_target(num_soil_cats))
637  allocate(refsmc_target(num_soil_cats))
638  allocate(bb_target(num_soil_cats))
639  allocate(satpsi_target(num_soil_cats))
640  allocate(satdk(num_soil_cats))
641  allocate(satdw(num_soil_cats))
642 
643  smlow = smlow_statsgo
644  smhigh = smhigh_statsgo
645  maxsmc_target = maxsmc_statsgo
646  bb_target = bb_statsgo
647  satdk = satdk_statsgo
648  satpsi_target = satpsi_statsgo
649 
650  call calc_soil_params(num_soil_cats, smlow, smhigh, satdk, maxsmc_target, &
652 
653  deallocate(satdk, satdw)
654 
655  if (localpet == 0) print*,'maxsmc target grid ',maxsmc_target
656  if (localpet == 0) print*,'wltsmc input grid ',wltsmc_target
657 
658  end subroutine calc_soil_params_driver
659 
676  subroutine calc_soil_params(num_soil_cats, smlow, smhigh, satdk, &
677  maxsmc, bb, satpsi, satdw, refsmc, drysmc, wltsmc)
679  implicit none
680 
681  integer, intent(in) :: num_soil_cats
682 
683  real, intent(in) :: smlow, smhigh
684  real, intent(in) :: bb(num_soil_cats)
685  real, intent(in) :: maxsmc(num_soil_cats)
686  real, intent(in) :: satdk(num_soil_cats)
687  real, intent(in) :: satpsi(num_soil_cats)
688 
689  real, intent(out) :: satdw(num_soil_cats)
690  real, intent(out) :: refsmc(num_soil_cats)
691  real, intent(out) :: drysmc(num_soil_cats)
692  real, intent(out) :: wltsmc(num_soil_cats)
693 
694  integer :: i
695 
696  real :: refsmc1
697  real :: wltsmc1
698 
699  satdw = 0.0
700  refsmc = 0.0
701  wltsmc = 0.0
702  drysmc = 0.0
703 
704  do i = 1, num_soil_cats
705 
706  if (maxsmc(i) > 0.0) then
707 
708  satdw(i) = bb(i)*satdk(i)*(satpsi(i)/maxsmc(i))
709  refsmc1 = maxsmc(i)*(5.79e-9/satdk(i)) **(1.0/(2.0*bb(i)+3.0))
710  refsmc(i) = refsmc1 + (maxsmc(i)-refsmc1) / smhigh
711  wltsmc1 = maxsmc(i) * (200.0/satpsi(i))**(-1.0/bb(i))
712  wltsmc(i) = wltsmc1 - smlow * wltsmc1
713 
714 !----------------------------------------------------------------------
715 ! CURRENT VERSION DRYSMC VALUES THAT EQUATE TO WLTSMC.
716 ! FUTURE VERSION COULD LET DRYSMC BE INDEPENDENTLY SET VIA NAMELIST.
717 !----------------------------------------------------------------------
718 
719  drysmc(i) = wltsmc(i)
720 
721  end if
722 
723  END DO
724 
725  end subroutine calc_soil_params
726 
727  end module program_setup
character(len=500), public fix_dir_target_grid
Directory containing target grid pre-computed fixed data (ex: soil type).
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
character(len=500), dimension(6), public atm_tracer_files_input_grid
File names of input atmospheric restart tracer files.
+
integer, public num_tracers_input
Number of atmospheric tracers in input file.
+
character(len=500), public nst_files_input_grid
File name of input nst data.
+
character(len=500), public varmap_file
REQUIRED.
+
real, dimension(:), allocatable, public wltsmc_input
Plant wilting point soil moisture content input grid.
+
integer, public cycle_mon
Cycle month.
+
logical, public lai_from_climo
If false, interpolate leaf area index from the input data to the target grid instead of using data fr...
+
character(len=6), public cres_target_grid
Target grid resolution, i.e., C768.
+
integer, public regional
For regional target grids.
+
character(len=20), dimension(max_tracers), public tracers
Name of each atmos tracer to be processed.
+
real, dimension(:), allocatable, public satpsi_target
Saturated soil potential, target grid.
+
real, dimension(:), allocatable, public maxsmc_input
Maximum soil moisture content input grid.
+
integer, public cycle_year
Cycle year.
+
integer, public nsoill_out
Number of soil levels desired in the output data.
+
character(len=20), dimension(max_tracers), public tracers_input
Name of each atmos tracer record in the input file.
+
real, dimension(:), allocatable, public bb_target
Soil &#39;b&#39; parameter, target grid.
+
subroutine, public read_varmap
Reads the variable mapping table, which is required for initializing with GRIB2 data.
+
integer, public halo_bndy
Number of row/cols of lateral halo, where pure lateral bndy conditions are applied (regional target g...
+
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.
+
logical, public sotyp_from_climo
If false, interpolate soil type from the input data to the target grid instead of using data from sta...
+
integer, public cycle_day
Cycle day.
+
logical, public minmax_vgfrc_from_climo
If false, interpolate min/max vegetation fraction from the input data to the target grid instead of u...
+
character(len=500), public thomp_mp_climo_file
Path/name to the Thompson MP climatology file.
+
character(len=20), dimension(:), allocatable, public missing_var_methods
Method to replace missing GRIB2 input records.
+
logical, public convert_sfc
Convert sfc data when true.
+
character(len=500), public orog_dir_target_grid
Directory containing the target grid orography files.
+
character(len=500), dimension(6), public orog_files_input_grid
Input grid orography files.
+
character(len=20), dimension(:), allocatable, public chgres_var_names
Varmap table variable name as recognized by this program.
+
character(len=20), public external_model
The model that the input data is derived from.
+
character(len=500), public orog_dir_input_grid
Directory containing the input grid orography files.
+
logical, public wam_cold_start
When true, cold start for whole atmosphere model.
+
subroutine calc_soil_params(num_soil_cats, smlow, smhigh, satdk, maxsmc, bb, satpsi, satdw, refsmc, drysmc, wltsmc)
Compute soil parameters.
+
character(len=500), public mosaic_file_target_grid
Target grid mosaic file.
+
character(len=500), public mosaic_file_input_grid
Input grid mosaic file.
+
logical, public convert_nst
Convert nst data when true.
+
character(len=500), dimension(6), public atm_files_input_grid
File names of input atmospheric data.
+
character(len=500), public vcoord_file_target_grid
Vertical coordinate definition file.
+
character(len=500), dimension(6), public orog_files_target_grid
Target grid orography files.
+
logical, public tg3_from_soil
If false, use lowest level soil temperature for the base soil temperature instead of using data from ...
+
character(len=20), dimension(:), allocatable, public field_var_names
The GRIB2 variable name in the varmap table.
+
logical, public convert_atm
Convert atmospheric data when true.
+
integer, parameter, public max_tracers
Maximum number of atmospheric tracers processed.
+
real, dimension(:), allocatable, public drysmc_input
Air dry soil moisture content input grid.
+
character(len=500), public geogrid_file_input_grid
Name of "geogrid" file, which contains static surface fields on the input grid.
+
real, dimension(:), allocatable, public wltsmc_target
Plant wilting point soil moisture content target grid.
+
character(len=500), public atm_weight_file
File containing pre-computed weights to horizontally interpolate atmospheric fields.
+
logical, public vgfrc_from_climo
If false, interpolate vegetation fraction from the input data to the target grid instead of using dat...
+
subroutine, public read_setup_namelist(filename)
Reads program configuration namelist.
+
subroutine, public calc_soil_params_driver(localpet)
Driver routine to compute soil parameters for each soil type.
+
character(len=500), public data_dir_input_grid
Directory containing input atm or sfc files.
+
character(len=25), public input_type
Input data type:
+
character(len=500), dimension(7), public atm_core_files_input_grid
File names of input atmospheric restart core files.
+
integer, public num_tracers
Number of atmospheric tracers to be processed.
+
real, dimension(:), allocatable, public refsmc_target
Reference soil moisture content target grid (onset of soil moisture stress).
+
character(len=500), public wam_parm_file
Full path to msis21.parm for WAM initialization.
+
character(len=500), public grib2_file_input_grid
REQUIRED.
+
logical, public use_thomp_mp_climo
When true, read and process Thompson MP climatological tracers.
+
logical, public vgtyp_from_climo
If false, interpolate vegetation type from the input data to the target grid instead of using data fr...
+
integer, public cycle_hour
Cycle hour.
+
logical, dimension(:), allocatable, public read_from_input
When false, variable was not read from GRIB2 input file.
+
real(kind=esmf_kind_r4), dimension(:), allocatable, public missing_var_values
If input GRIB2 record is missing, the variable is set to this value.
+
integer, public halo_blend
Number of row/cols of blending halo, where model tendencies and lateral boundary tendencies are appli...
+
character(len=500), dimension(6), public sfc_files_input_grid
File names containing input surface data.
+
real, dimension(:), allocatable, public refsmc_input
Reference soil moisture content input grid (onset of soil moisture stress).
+
real, dimension(:), allocatable, public maxsmc_target
Maximum soil moisture content target grid.
+
real, dimension(:), allocatable, public drysmc_target
Air dry soil moisture content target grid.
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/resize.js b/ver-1.11.0/chgres_cube/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/chgres_cube/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/chgres_cube/search/all_0.html b/ver-1.11.0/chgres_cube/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_0.js b/ver-1.11.0/chgres_cube/search/all_0.js new file mode 100644 index 000000000..66007eea3 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['adjust_5fsoil_5flevels',['adjust_soil_levels',['../namespacesurface.html#ae4bf53bef0b16e89d6344df2b6aa1888',1,'surface']]], + ['adjust_5fsoilt_5ffor_5fterrain',['adjust_soilt_for_terrain',['../namespacesurface.html#a7592ccae34fbacf04fe5f69ffac4aeb6',1,'surface']]], + ['alnsf_5ftarget_5fgrid',['alnsf_target_grid',['../namespacestatic__data.html#a75974bdb40579172b8c79eba07ac9936',1,'static_data']]], + ['alnwf_5ftarget_5fgrid',['alnwf_target_grid',['../namespacestatic__data.html#ab38fa25b331399e5a4fffe055d7a5323',1,'static_data']]], + ['alvsf_5ftarget_5fgrid',['alvsf_target_grid',['../namespacestatic__data.html#a6ac14b1f23dd4cdc858efbb48afd556f',1,'static_data']]], + ['alvwf_5ftarget_5fgrid',['alvwf_target_grid',['../namespacestatic__data.html#a1f4db719e9b6b3247600b7d3213e89b4',1,'static_data']]], + ['atm_5fcore_5ffiles_5finput_5fgrid',['atm_core_files_input_grid',['../namespaceprogram__setup.html#a4ae247bd098f03d56ced018458e8aa80',1,'program_setup']]], + ['atm_5ffiles_5finput_5fgrid',['atm_files_input_grid',['../namespaceprogram__setup.html#ac207b427c9a9436611682217ba8ea49e',1,'program_setup']]], + ['atm_5finput_5fdata',['atm_input_data',['../namespaceatm__input__data.html',1,'']]], + ['atm_5finput_5fdata_2ef90',['atm_input_data.F90',['../atm__input__data_8F90.html',1,'']]], + ['atm_5ftracer_5ffiles_5finput_5fgrid',['atm_tracer_files_input_grid',['../namespaceprogram__setup.html#a238a812773da9bfe54964f40e8529891',1,'program_setup']]], + ['atm_5fweight_5ffile',['atm_weight_file',['../namespaceprogram__setup.html#ad0fadfbe4232b55e05a87f0044193290',1,'program_setup']]], + ['atmosphere',['atmosphere',['../namespaceatmosphere.html',1,'']]], + ['atmosphere_2ef90',['atmosphere.F90',['../atmosphere_8F90.html',1,'']]], + ['atmosphere_5fdriver',['atmosphere_driver',['../namespaceatmosphere.html#a79bac062052ba98de5baa9ea854410fe',1,'atmosphere']]], + ['atmosphere_5ftarget_5fdata',['atmosphere_target_data',['../namespaceatmosphere__target__data.html',1,'']]], + ['atmosphere_5ftarget_5fdata_2ef90',['atmosphere_target_data.F90',['../atmosphere__target__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_1.html b/ver-1.11.0/chgres_cube/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_1.js b/ver-1.11.0/chgres_cube/search/all_1.js new file mode 100644 index 000000000..4bb684d1e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bb_5ftarget',['bb_target',['../namespaceprogram__setup.html#ab72166ef093181118b706b0c8d9680da',1,'program_setup']]], + ['blim',['blim',['../namespacesurface.html#a8504e69c586b0d22fd77f08056996bec',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_10.html b/ver-1.11.0/chgres_cube/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_10.js b/ver-1.11.0/chgres_cube/search/all_10.js new file mode 100644 index 000000000..1df96803b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_10.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['read_5ffrom_5finput',['read_from_input',['../namespaceprogram__setup.html#a1ffec9219f0a5e00b4c285f62904eca7',1,'program_setup']]], + ['read_5ffv3_5fgrid_5fdata_5fnetcdf',['READ_FV3_GRID_DATA_NETCDF',['../sfc__input__data_8F90.html#a6c873511baf197c0f7766a28fc99c229',1,'sfc_input_data']]], + ['read_5fgrib_5fsoil',['read_grib_soil',['../sfc__input__data_8F90.html#aceae825b0d75b9702e89065ccec45ea9',1,'sfc_input_data']]], + ['read_5finput_5fatm_5fdata',['read_input_atm_data',['../namespaceatm__input__data.html#ae81beb7035413010a27c9cd30c1599ab',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgaussian_5fnemsio_5ffile',['read_input_atm_gaussian_nemsio_file',['../namespaceatm__input__data.html#a5036243fe27266911f42b4b3284e0be1',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgaussian_5fnetcdf_5ffile',['read_input_atm_gaussian_netcdf_file',['../namespaceatm__input__data.html#af0df614e570fb2d35809a47db2db9d77',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgfs_5fgaussian_5fnemsio_5ffile',['read_input_atm_gfs_gaussian_nemsio_file',['../namespaceatm__input__data.html#ac3d51a1e727ec4409ef6dc9470def416',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgfs_5fsigio_5ffile',['read_input_atm_gfs_sigio_file',['../namespaceatm__input__data.html#a50775c3b526de0bb83059bebae880268',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgrib2_5ffile',['read_input_atm_grib2_file',['../namespaceatm__input__data.html#a48943f2cba1d578cd67bc1c975e33c09',1,'atm_input_data']]], + ['read_5finput_5fatm_5frestart_5ffile',['read_input_atm_restart_file',['../namespaceatm__input__data.html#ad9722b22f0f8e0cbc6ab9bf8f1769399',1,'atm_input_data']]], + ['read_5finput_5fatm_5ftiled_5fhistory_5ffile',['read_input_atm_tiled_history_file',['../namespaceatm__input__data.html#aa7e9e23821a9f812b7739efc01bb47fe',1,'atm_input_data']]], + ['read_5finput_5fnst_5fdata',['read_input_nst_data',['../nst__input__data_8F90.html#a9168217eeeec07d66ac22b4198460e6a',1,'nst_input_data']]], + ['read_5finput_5fnst_5fnemsio_5ffile',['read_input_nst_nemsio_file',['../nst__input__data_8F90.html#a5549881aea4aa677398ef80c2c23b411',1,'nst_input_data']]], + ['read_5finput_5fnst_5fnetcdf_5ffile',['read_input_nst_netcdf_file',['../nst__input__data_8F90.html#a267924ce4aa91a7a68aae0608deae551',1,'nst_input_data']]], + ['read_5finput_5fsfc_5fdata',['read_input_sfc_data',['../sfc__input__data_8F90.html#ae01d5f3faabaa3265a9a7b58c5f293a6',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgaussian_5fnemsio_5ffile',['read_input_sfc_gaussian_nemsio_file',['../sfc__input__data_8F90.html#ae79d45d8048e52cf743e33c2a4db210f',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgfs_5fgaussian_5fnemsio_5ffile',['read_input_sfc_gfs_gaussian_nemsio_file',['../sfc__input__data_8F90.html#a8f877b90f19963141ee962b3889571ab',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgfs_5fsfcio_5ffile',['read_input_sfc_gfs_sfcio_file',['../sfc__input__data_8F90.html#af7e2da3d0544e1475a35a7693b98281f',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgrib2_5ffile',['read_input_sfc_grib2_file',['../sfc__input__data_8F90.html#aeb5cae5fb449f7c79de2b3e7739175b3',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fnetcdf_5ffile',['read_input_sfc_netcdf_file',['../sfc__input__data_8F90.html#a7ce3b47776d4a2bbf4bfb732fa3780a2',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5frestart_5ffile',['read_input_sfc_restart_file',['../sfc__input__data_8F90.html#a48402d66b80ad2a80418be526eadabc5',1,'sfc_input_data']]], + ['read_5fsetup_5fnamelist',['read_setup_namelist',['../namespaceprogram__setup.html#a34de94770b10be0f4975b63813ddbe8d',1,'program_setup']]], + ['read_5fstatic_5ffile',['read_static_file',['../namespacestatic__data.html#aff2a5a5fa372950e606431e9ee777e65',1,'static_data']]], + ['read_5fthomp_5fmp_5fclimo_5fdata',['read_thomp_mp_climo_data',['../namespacethompson__mp__climo__data.html#a92a071650b2c4368ae233ac8b85783b4',1,'thompson_mp_climo_data']]], + ['read_5fvarmap',['read_varmap',['../namespaceprogram__setup.html#a8cb781f9243350c2658fc2a74a0bfe82',1,'program_setup']]], + ['read_5fvcoord_5finfo',['read_vcoord_info',['../namespaceatmosphere.html#a599eba98c80c6385ff414a999f90e58c',1,'atmosphere']]], + ['read_5fwinds',['read_winds',['../namespaceatm__input__data.html#a545b9ea8ac234861f75db0313b3e151e',1,'atm_input_data']]], + ['realptr_5f2d',['realptr_2d',['../structsurface_1_1realptr__2d.html',1,'surface']]], + ['realptr_5f3d',['realptr_3d',['../structsurface_1_1realptr__3d.html',1,'surface']]], + ['refsmc_5finput',['refsmc_input',['../namespaceprogram__setup.html#a25ee473921ebbc73e186a538b4592073',1,'program_setup']]], + ['refsmc_5ftarget',['refsmc_target',['../namespaceprogram__setup.html#a491b74f2a85be77f3c0c2051044f0aa6',1,'program_setup']]], + ['regional',['regional',['../namespaceprogram__setup.html#a46f3ccd75736f06244e9110197e424f2',1,'program_setup']]], + ['regrid_5fmany',['regrid_many',['../namespacesurface.html#a5c687bf7da96c3c512b13a6a7eab4b99',1,'surface']]], + ['rescale_5fsoil_5fmoisture',['rescale_soil_moisture',['../namespacesurface.html#a63fb2a0ed00bdec5e4f0b3360a5709a6',1,'surface']]], + ['rh2spfh',['rh2spfh',['../namespacegrib2__util.html#ab4a2b2171e318712bd819dffa1648fa0',1,'grib2_util']]], + ['rh2spfh_5fgfs',['rh2spfh_gfs',['../namespacegrib2__util.html#ac4d873e3a137ec2abcaeb7f735b021ae',1,'grib2_util']]], + ['roughness',['roughness',['../namespacesurface.html#ab18f8cebd46379b7b81a69829326eed0',1,'surface']]], + ['rsearch',['RSEARCH',['../namespaceatmosphere.html#a1793890ef3e504c7c6cadb96e11f70d5',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_11.html b/ver-1.11.0/chgres_cube/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_11.js b/ver-1.11.0/chgres_cube/search/all_11.js new file mode 100644 index 000000000..ba97275a6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_11.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['satpsi_5ftarget',['satpsi_target',['../namespaceprogram__setup.html#acbfd03fbdfd369b859cd851342b024da',1,'program_setup']]], + ['seaice_5fdepth_5finput_5fgrid',['seaice_depth_input_grid',['../sfc__input__data_8F90.html#a5e40ecb3e2fd650812e4a94afe890291',1,'sfc_input_data']]], + ['seaice_5fdepth_5ftarget_5fgrid',['seaice_depth_target_grid',['../namespacesurface__target__data.html#a87ef0089b12975b9996f9f2f195a8fc4',1,'surface_target_data']]], + ['seaice_5ffract_5finput_5fgrid',['seaice_fract_input_grid',['../sfc__input__data_8F90.html#aaf0bae249b613e7274c0afae94e8bf37',1,'sfc_input_data']]], + ['seaice_5ffract_5ftarget_5fgrid',['seaice_fract_target_grid',['../namespacesurface__target__data.html#a8619aa99b6c5eef897f7d3444a7aef28',1,'surface_target_data']]], + ['seaice_5fskin_5ftemp_5finput_5fgrid',['seaice_skin_temp_input_grid',['../sfc__input__data_8F90.html#a5fe492be5389928913ee7e160d519ec9',1,'sfc_input_data']]], + ['seaice_5fskin_5ftemp_5ftarget_5fgrid',['seaice_skin_temp_target_grid',['../namespacesurface__target__data.html#a931f6effdfab16836f7ab66c7c03e364',1,'surface_target_data']]], + ['seamask_5ftarget_5fgrid',['seamask_target_grid',['../namespacemodel__grid.html#ac603676e21495133afd160bf36c70068',1,'model_grid']]], + ['search',['search',['../namespacesearch__util.html#a4a511a55b3ce58a03cc053d19cecc458',1,'search_util']]], + ['search_5fmany',['search_many',['../namespacesurface.html#afc2c63e91ef5af4cefca13d9673d4acc',1,'surface']]], + ['search_5futil',['search_util',['../namespacesearch__util.html',1,'']]], + ['search_5futil_2ef90',['search_util.F90',['../search__util_8F90.html',1,'']]], + ['sfc_5ffiles_5finput_5fgrid',['sfc_files_input_grid',['../namespaceprogram__setup.html#a1ac8f9f39991ff6eda54d9189661900d',1,'program_setup']]], + ['sfc_5finput_5fdata_2ef90',['sfc_input_data.F90',['../sfc__input__data_8F90.html',1,'']]], + ['skin_5ftemp_5finput_5fgrid',['skin_temp_input_grid',['../sfc__input__data_8F90.html#a61be4121ae93ad25bed1e3d6368f4bd6',1,'sfc_input_data']]], + ['skin_5ftemp_5ftarget_5fgrid',['skin_temp_target_grid',['../namespacesurface__target__data.html#a07844c6c9c70781989b6e643623bcb04',1,'surface_target_data']]], + ['slevs',['slevs',['../namespaceatm__input__data.html#ae4e241c9343c9c48bff785779aaa579e',1,'atm_input_data']]], + ['slope_5ftype_5ftarget_5fgrid',['slope_type_target_grid',['../namespacestatic__data.html#a5ed8a6491553f66888bccd0c1e0b91bb',1,'static_data']]], + ['snow_5fdepth_5finput_5fgrid',['snow_depth_input_grid',['../sfc__input__data_8F90.html#aa50bd77b69a20bc2a23f7b4714f7f169',1,'sfc_input_data']]], + ['snow_5fdepth_5ftarget_5fgrid',['snow_depth_target_grid',['../namespacesurface__target__data.html#a18d3f0577eca62f1d145e194ec36c56d',1,'surface_target_data']]], + ['snow_5fliq_5fequiv_5finput_5fgrid',['snow_liq_equiv_input_grid',['../sfc__input__data_8F90.html#a5f5ee0e7cc3c48412ec6fefb24af7b09',1,'sfc_input_data']]], + ['snow_5fliq_5fequiv_5ftarget_5fgrid',['snow_liq_equiv_target_grid',['../namespacesurface__target__data.html#abb85698100b0a90e0460f35cbe26d641',1,'surface_target_data']]], + ['soil_5ftemp_5finput_5fgrid',['soil_temp_input_grid',['../sfc__input__data_8F90.html#a0d70ca0aef86729f21896705948eb242',1,'sfc_input_data']]], + ['soil_5ftemp_5ftarget_5fgrid',['soil_temp_target_grid',['../namespacesurface__target__data.html#aeb82ec1225cbb734aa22a869599b7a0c',1,'surface_target_data']]], + ['soil_5ftype_5ffrom_5finput_5fgrid',['soil_type_from_input_grid',['../namespacesurface.html#a2150daf83b917a49662ed6473e8e5097',1,'surface']]], + ['soil_5ftype_5finput_5fgrid',['soil_type_input_grid',['../sfc__input__data_8F90.html#aadcca0688b8a6470902a0a1937ae3708',1,'sfc_input_data']]], + ['soil_5ftype_5ftarget_5fgrid',['soil_type_target_grid',['../namespacestatic__data.html#afeeddfcf73c80599aa773770314a0bd1',1,'static_data']]], + ['soilm_5fliq_5finput_5fgrid',['soilm_liq_input_grid',['../sfc__input__data_8F90.html#a2594e8fbd6c2228c7963b820c3446c3c',1,'sfc_input_data']]], + ['soilm_5fliq_5ftarget_5fgrid',['soilm_liq_target_grid',['../namespacesurface__target__data.html#a9000f8cf2d0c717846a6a2bfc3651e82',1,'surface_target_data']]], + ['soilm_5ftot_5finput_5fgrid',['soilm_tot_input_grid',['../sfc__input__data_8F90.html#a65a014a55a08e3e439ebe6ec238ac2cf',1,'sfc_input_data']]], + ['soilm_5ftot_5ftarget_5fgrid',['soilm_tot_target_grid',['../namespacesurface__target__data.html#a7a65fcefb1e2cd01cc934a3cd7c69e10',1,'surface_target_data']]], + ['sotyp_5ffrom_5fclimo',['sotyp_from_climo',['../namespaceprogram__setup.html#ad6b23f6d8cacb48240a2afd72ff1d5ef',1,'program_setup']]], + ['srflag_5finput_5fgrid',['srflag_input_grid',['../sfc__input__data_8F90.html#a08c0a47498901872edbdec10a8569c48',1,'sfc_input_data']]], + ['srflag_5ftarget_5fgrid',['srflag_target_grid',['../namespacesurface__target__data.html#ae1176ee763ee9dcec7878f8549bbf87b',1,'surface_target_data']]], + ['sst_5fguess',['sst_guess',['../namespacesearch__util.html#a5f5cd2507060bc834d1fd8a08a4c31ba',1,'search_util']]], + ['static_5fdata',['static_data',['../namespacestatic__data.html',1,'']]], + ['static_5fdata_2ef90',['static_data.F90',['../static__data_8F90.html',1,'']]], + ['substrate_5ftemp_5ftarget_5fgrid',['substrate_temp_target_grid',['../namespacestatic__data.html#a4dfed22f54d51ff598ae12a208cb197c',1,'static_data']]], + ['surface',['surface',['../namespacesurface.html',1,'']]], + ['surface_2ef90',['surface.F90',['../surface_8F90.html',1,'']]], + ['surface_5fdriver',['surface_driver',['../namespacesurface.html#a0707121ff6af9350608125b1750e32f5',1,'surface']]], + ['surface_5ftarget_5fdata',['surface_target_data',['../namespacesurface__target__data.html',1,'']]], + ['surface_5ftarget_5fdata_2ef90',['surface_target_data.F90',['../surface__target__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_12.html b/ver-1.11.0/chgres_cube/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_12.js b/ver-1.11.0/chgres_cube/search/all_12.js new file mode 100644 index 000000000..53ca69d72 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_12.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['t2m_5finput_5fgrid',['t2m_input_grid',['../sfc__input__data_8F90.html#a19167890b3605aadb0bdb853cfbf5004',1,'sfc_input_data']]], + ['t2m_5ftarget_5fgrid',['t2m_target_grid',['../namespacesurface__target__data.html#a732de7ef3ee7ea52fafd47a7946caff2',1,'surface_target_data']]], + ['target_5fgrid',['target_grid',['../namespacemodel__grid.html#a85499183cbbb666cbabd138c77374fd9',1,'model_grid']]], + ['temp_5fb4adj_5ftarget_5fgrid',['temp_b4adj_target_grid',['../namespaceatmosphere.html#a55d40bda2f827e9ed21c40d4e676e85a',1,'atmosphere']]], + ['temp_5finput_5fgrid',['temp_input_grid',['../namespaceatm__input__data.html#a2fd9eb8eca479332cb88f6bec5bd2219',1,'atm_input_data']]], + ['temp_5ftarget_5fgrid',['temp_target_grid',['../namespaceatmosphere__target__data.html#aa39186f2a0ad85ae3f028b627da49b70',1,'atmosphere_target_data']]], + ['terp3',['TERP3',['../namespaceatmosphere.html#a2ae6fde0c278c9987858325248a2f3b5',1,'atmosphere']]], + ['terrain_5ffrom_5finput_5fgrid',['terrain_from_input_grid',['../namespacesurface.html#ab770243d8fd686d14b4eaec335eb7b15',1,'surface']]], + ['terrain_5ffrom_5finput_5fgrid_5fland',['terrain_from_input_grid_land',['../namespacesurface.html#a6dde2acec84877a91162b4bcf795373e',1,'surface']]], + ['terrain_5finput_5fgrid',['terrain_input_grid',['../namespaceatm__input__data.html#a4fa1ba60b3ab9f4585eff220de7f7237',1,'atm_input_data']]], + ['terrain_5finterp_5fto_5ftarget_5fgrid',['terrain_interp_to_target_grid',['../namespaceatmosphere.html#a5f58f056700160a14d63f714f159d602',1,'atmosphere']]], + ['terrain_5ftarget_5fgrid',['terrain_target_grid',['../namespacemodel__grid.html#a82acb90fe22c5b4a5d27f95f1fe5a17a',1,'model_grid']]], + ['tg3_5ffrom_5fsoil',['tg3_from_soil',['../namespaceprogram__setup.html#a49d72c7fb6a118e7f558cb5543b76ccf',1,'program_setup']]], + ['thomp_5fmp_5fclimo_5ffile',['thomp_mp_climo_file',['../namespaceprogram__setup.html#a8712b252b9407a7e8034c78e1f61614c',1,'program_setup']]], + ['thomp_5fmp_5fclimo_5fgrid',['thomp_mp_climo_grid',['../namespacethompson__mp__climo__data.html#a425db5926a07c6a424bdf6b51a6bd8d2',1,'thompson_mp_climo_data']]], + ['thomp_5fpres_5fclimo_5fb4adj_5ftarget_5fgrid',['thomp_pres_climo_b4adj_target_grid',['../namespaceatmosphere.html#aafe6ca3fd7ee7dc74023c56c7e2f4e07',1,'atmosphere']]], + ['thomp_5fpres_5fclimo_5finput_5fgrid',['thomp_pres_climo_input_grid',['../namespacethompson__mp__climo__data.html#a8e3f63f7487a4a397dec4e425c76c46b',1,'thompson_mp_climo_data']]], + ['thompson_5fmp_5fclimo_5fdata',['thompson_mp_climo_data',['../namespacethompson__mp__climo__data.html',1,'']]], + ['thompson_5fmp_5fclimo_5fdata_2ef90',['thompson_mp_climo_data.F90',['../thompson__mp__climo__data_8F90.html',1,'']]], + ['tiles_5ftarget_5fgrid',['tiles_target_grid',['../namespacemodel__grid.html#ad41e7ee2c45f8ee4004c836433b715eb',1,'model_grid']]], + ['to_5flower',['to_lower',['../utils_8F90.html#a8a6f35583bd6c103031a9328be4c7b6a',1,'utilities']]], + ['to_5fupper',['to_upper',['../utils_8F90.html#ae164531a53081bf0e1bc30579c8ba1b1',1,'utilities']]], + ['tprcp_5finput_5fgrid',['tprcp_input_grid',['../sfc__input__data_8F90.html#ab188728c07383d49c120992562760799',1,'sfc_input_data']]], + ['tprcp_5ftarget_5fgrid',['tprcp_target_grid',['../namespacesurface__target__data.html#a62b810f8a70f347404549cbb4b1f8c12',1,'surface_target_data']]], + ['tracers',['tracers',['../namespaceprogram__setup.html#a4e934ac801fd213f8f422e5e9bb83568',1,'program_setup']]], + ['tracers_5fb4adj_5ftarget_5fgrid',['tracers_b4adj_target_grid',['../namespaceatmosphere.html#ad1b787f0c8c092265db64ea501ee1015',1,'atmosphere']]], + ['tracers_5finput',['tracers_input',['../namespaceprogram__setup.html#ac4c19c8b8a7b17c398fa07ac85b31546',1,'program_setup']]], + ['tracers_5finput_5fgrid',['tracers_input_grid',['../namespaceatm__input__data.html#a756505eb6868536f71558fdbb1c4fb77',1,'atm_input_data']]], + ['tracers_5ftarget_5fgrid',['tracers_target_grid',['../namespaceatmosphere__target__data.html#aa49b6bf6d3ecc231d11a3937180c785a',1,'atmosphere_target_data']]], + ['tref_5finput_5fgrid',['tref_input_grid',['../nst__input__data_8F90.html#af09bdba948e5e05afd3683082bf3cc84',1,'nst_input_data']]], + ['tref_5ftarget_5fgrid',['tref_target_grid',['../namespacesurface__target__data.html#a371c77a5af72827af0e3796ca8ab9d6a',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_13.html b/ver-1.11.0/chgres_cube/search/all_13.html new file mode 100644 index 000000000..04f66e2fe --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_13.js b/ver-1.11.0/chgres_cube/search/all_13.js new file mode 100644 index 000000000..29e8183ce --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_13.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['u_5finput_5fgrid',['u_input_grid',['../namespaceatm__input__data.html#a51d4d356554796e850432af8ca90b1f0',1,'atm_input_data']]], + ['u_5fs_5ftarget_5fgrid',['u_s_target_grid',['../namespaceatmosphere__target__data.html#a28e45bf409f3c513650629f0286f74fd',1,'atmosphere_target_data']]], + ['u_5fw_5ftarget_5fgrid',['u_w_target_grid',['../namespaceatmosphere__target__data.html#a9ed417f30cf022e3d7e5e54a94b1a46d',1,'atmosphere_target_data']]], + ['use_5fthomp_5fmp_5fclimo',['use_thomp_mp_climo',['../namespaceprogram__setup.html#a6f53159282cadb12b9c881d901ce0699',1,'program_setup']]], + ['ustar_5finput_5fgrid',['ustar_input_grid',['../sfc__input__data_8F90.html#a453890953640dee513cca7294be9f464',1,'sfc_input_data']]], + ['ustar_5ftarget_5fgrid',['ustar_target_grid',['../namespacesurface__target__data.html#ac7b2ef2f989e875ac2b913152a29f746',1,'surface_target_data']]], + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_14.html b/ver-1.11.0/chgres_cube/search/all_14.html new file mode 100644 index 000000000..285f34bd2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_14.js b/ver-1.11.0/chgres_cube/search/all_14.js new file mode 100644 index 000000000..890a55396 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_14.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['v_5finput_5fgrid',['v_input_grid',['../namespaceatm__input__data.html#aaa4196ca1738565c877f41c551bf581d',1,'atm_input_data']]], + ['v_5fs_5ftarget_5fgrid',['v_s_target_grid',['../namespaceatmosphere__target__data.html#a7367b2dd6da625d0e9a1a4f2d527b556',1,'atmosphere_target_data']]], + ['v_5fw_5ftarget_5fgrid',['v_w_target_grid',['../namespaceatmosphere__target__data.html#ae8edaa88be7b0f1954d64d53abd608d0',1,'atmosphere_target_data']]], + ['varmap_5ffile',['varmap_file',['../namespaceprogram__setup.html#abda8846e5ea6470172073df7ad528171',1,'program_setup']]], + ['vcoord_5ffile_5ftarget_5fgrid',['vcoord_file_target_grid',['../namespaceprogram__setup.html#af00a42c8dcd1d98cb4e152e5e7fdfe4c',1,'program_setup']]], + ['vcoord_5ftarget',['vcoord_target',['../namespaceatmosphere__target__data.html#afc618635f7de13c229fb2b45c1f5c89c',1,'atmosphere_target_data']]], + ['veg_5fgreenness_5finput_5fgrid',['veg_greenness_input_grid',['../sfc__input__data_8F90.html#ad69b49304a255ebe70c967c8de0d1c54',1,'sfc_input_data']]], + ['veg_5fgreenness_5ftarget_5fgrid',['veg_greenness_target_grid',['../namespacestatic__data.html#a0267b3ac33e89ea79114bcf20ba512b2',1,'static_data']]], + ['veg_5ftype_5finput_5fgrid',['veg_type_input_grid',['../sfc__input__data_8F90.html#aaa1eff819567c6129c994a6a3d3fbd6b',1,'sfc_input_data']]], + ['veg_5ftype_5flandice_5finput',['veg_type_landice_input',['../sfc__input__data_8F90.html#a9a51f66fdf4ab52fc5cc11618abb78bf',1,'sfc_input_data']]], + ['veg_5ftype_5flandice_5ftarget',['veg_type_landice_target',['../namespacesurface.html#a7aedcff2da595ef7aac69152edbdfa64',1,'surface']]], + ['veg_5ftype_5ftarget_5fgrid',['veg_type_target_grid',['../namespacestatic__data.html#a0bd92f571dd7db7c2893b1c08527988c',1,'static_data']]], + ['vgfrc_5ffrom_5fclimo',['vgfrc_from_climo',['../namespaceprogram__setup.html#a8caa284c1052597bed42205d1cac0339',1,'program_setup']]], + ['vgtyp_5ffrom_5fclimo',['vgtyp_from_climo',['../namespaceprogram__setup.html#ad85f196d847aa9ac1edaa07d4377cc72',1,'program_setup']]], + ['vintg',['VINTG',['../namespaceatmosphere.html#a75294095ace0bcf1be8d215e5fdb5b23',1,'atmosphere']]], + ['vintg_5fthomp_5fmp_5fclimo',['VINTG_THOMP_MP_CLIMO',['../namespaceatmosphere.html#aa1c919a13ca76fbbb05dffce7a052c2a',1,'atmosphere']]], + ['vintg_5fwam',['VINTG_WAM',['../namespaceatmosphere.html#a8d9dc31ed0f13897f3f4b1b44777b0cf',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_15.html b/ver-1.11.0/chgres_cube/search/all_15.html new file mode 100644 index 000000000..0ed74e012 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_15.js b/ver-1.11.0/chgres_cube/search/all_15.js new file mode 100644 index 000000000..f43f7a937 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_15.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['w_5f0_5finput_5fgrid',['w_0_input_grid',['../nst__input__data_8F90.html#a3ab40e05c65d1bd13d09e38ebff5561d',1,'nst_input_data']]], + ['w_5f0_5ftarget_5fgrid',['w_0_target_grid',['../namespacesurface__target__data.html#ab0bd1816adbd330a77f2b9b86e32524f',1,'surface_target_data']]], + ['w_5fd_5finput_5fgrid',['w_d_input_grid',['../nst__input__data_8F90.html#a9d681aef02753f1d9c4103b276bd7c66',1,'nst_input_data']]], + ['w_5fd_5ftarget_5fgrid',['w_d_target_grid',['../namespacesurface__target__data.html#a4d92daaf7872c21034cfadf2e2435914',1,'surface_target_data']]], + ['wam_5fclimo_5fdata_2ef90',['wam_climo_data.f90',['../wam__climo__data_8f90.html',1,'']]], + ['wam_5fcold_5fstart',['wam_cold_start',['../namespaceprogram__setup.html#a975eb110cebfc2491c4773cb53cd85c7',1,'program_setup']]], + ['wam_5fparm_5ffile',['wam_parm_file',['../namespaceprogram__setup.html#a497c9dd0f9c405c839bed2dfc491eafb',1,'program_setup']]], + ['wltsmc_5finput',['wltsmc_input',['../namespaceprogram__setup.html#a4a0cb4c7fd9eb848647e59a6d20d9fd6',1,'program_setup']]], + ['wltsmc_5ftarget',['wltsmc_target',['../namespaceprogram__setup.html#a40f629a2883fb6000377db3bc8088db5',1,'program_setup']]], + ['write_5fdata_2ef90',['write_data.F90',['../write__data_8F90.html',1,'']]], + ['write_5ffv3_5fatm_5fbndy_5fdata_5fnetcdf',['write_fv3_atm_bndy_data_netcdf',['../write__data_8F90.html#aa38f7cbcabbd61e0fddf1ffda9e2b678',1,'write_data']]], + ['write_5ffv3_5fatm_5fdata_5fnetcdf',['write_fv3_atm_data_netcdf',['../write__data_8F90.html#a05d382fbbf34728dc4661872a2ba66a1',1,'write_data']]], + ['write_5ffv3_5fatm_5fheader_5fnetcdf',['write_fv3_atm_header_netcdf',['../write__data_8F90.html#a5a40bf4c58b659fd52bd46320caba2d8',1,'write_data']]], + ['write_5ffv3_5fsfc_5fdata_5fnetcdf',['write_fv3_sfc_data_netcdf',['../write__data_8F90.html#ac9b8e34a9a55d39277651a218d41b321',1,'write_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_16.html b/ver-1.11.0/chgres_cube/search/all_16.html new file mode 100644 index 000000000..696f02520 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_16.js b/ver-1.11.0/chgres_cube/search/all_16.js new file mode 100644 index 000000000..c1a7b5c90 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_16.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['xs_5finput_5fgrid',['xs_input_grid',['../nst__input__data_8F90.html#a67c47ce1eaa1962c649944770966a45d',1,'nst_input_data']]], + ['xs_5ftarget_5fgrid',['xs_target_grid',['../namespacesurface__target__data.html#a3da203846228c49cb2a7c9d6b5c2a92b',1,'surface_target_data']]], + ['xt_5finput_5fgrid',['xt_input_grid',['../nst__input__data_8F90.html#a6f10c59080b31980a70314f529543bfb',1,'nst_input_data']]], + ['xt_5ftarget_5fgrid',['xt_target_grid',['../namespacesurface__target__data.html#af3be3ce9b803381efb01758c8272b134',1,'surface_target_data']]], + ['xtts_5finput_5fgrid',['xtts_input_grid',['../nst__input__data_8F90.html#acf675dbcc6d86c2a5fecdb4be702187a',1,'nst_input_data']]], + ['xtts_5ftarget_5fgrid',['xtts_target_grid',['../namespacesurface__target__data.html#a895d73cfc745f1d5ff9c9e1f1bb8617f',1,'surface_target_data']]], + ['xu_5finput_5fgrid',['xu_input_grid',['../nst__input__data_8F90.html#adf8e8b7cc61e016b5f7819f65abc3db7',1,'nst_input_data']]], + ['xu_5ftarget_5fgrid',['xu_target_grid',['../namespacesurface__target__data.html#a2afb5157b56617d1a1e699bfa9bdc4f4',1,'surface_target_data']]], + ['xv_5finput_5fgrid',['xv_input_grid',['../nst__input__data_8F90.html#a002dfc0d24fe130047e15a63ad4f7faa',1,'nst_input_data']]], + ['xv_5ftarget_5fgrid',['xv_target_grid',['../namespacesurface__target__data.html#aa5b820a5fee4dd98118efa5c384d5675',1,'surface_target_data']]], + ['xwind_5fb4adj_5ftarget_5fgrid',['xwind_b4adj_target_grid',['../namespaceatmosphere.html#a35d8e90b1cd9cf4fc607c8f6b99c7d7a',1,'atmosphere']]], + ['xwind_5finput_5fgrid',['xwind_input_grid',['../namespaceatm__input__data.html#a542b1160c5f872263938bacfee0b7361',1,'atm_input_data']]], + ['xwind_5fs_5ftarget_5fgrid',['xwind_s_target_grid',['../namespaceatmosphere.html#a60f36fb1ec55f30a6394f68c94b21f08',1,'atmosphere']]], + ['xwind_5ftarget_5fgrid',['xwind_target_grid',['../namespaceatmosphere.html#aa95032cc53053d34f7ab0f9c46f7714c',1,'atmosphere']]], + ['xwind_5fw_5ftarget_5fgrid',['xwind_w_target_grid',['../namespaceatmosphere.html#a8761cafd77d853c4452ab9778ab695c8',1,'atmosphere']]], + ['xz_5finput_5fgrid',['xz_input_grid',['../nst__input__data_8F90.html#a4087b03e710014ecfbd02f2ac6fe3884',1,'nst_input_data']]], + ['xz_5ftarget_5fgrid',['xz_target_grid',['../namespacesurface__target__data.html#a944da5499c9a548ac3978bf28454c1f4',1,'surface_target_data']]], + ['xzts_5finput_5fgrid',['xzts_input_grid',['../nst__input__data_8F90.html#a245e4c81e6916acea328ab18261a3ae6',1,'nst_input_data']]], + ['xzts_5ftarget_5fgrid',['xzts_target_grid',['../namespacesurface__target__data.html#aaa012f9e950d7aebf20e484e64f346bb',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_17.html b/ver-1.11.0/chgres_cube/search/all_17.html new file mode 100644 index 000000000..f1e14b635 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_17.js b/ver-1.11.0/chgres_cube/search/all_17.js new file mode 100644 index 000000000..2e2e1b375 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_17.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ywind_5fb4adj_5ftarget_5fgrid',['ywind_b4adj_target_grid',['../namespaceatmosphere.html#a31ecc77bf689378ffc10a4c7024fcbb7',1,'atmosphere']]], + ['ywind_5finput_5fgrid',['ywind_input_grid',['../namespaceatm__input__data.html#aad0fa7d30aed9c516b94914bcd2d7801',1,'atm_input_data']]], + ['ywind_5fs_5ftarget_5fgrid',['ywind_s_target_grid',['../namespaceatmosphere.html#a0fcd709b3b967ed1ab970754d2eb25b8',1,'atmosphere']]], + ['ywind_5ftarget_5fgrid',['ywind_target_grid',['../namespaceatmosphere.html#a61fb3af50dce106e4bd077286d4d286c',1,'atmosphere']]], + ['ywind_5fw_5ftarget_5fgrid',['ywind_w_target_grid',['../namespaceatmosphere.html#a284051984d4daa275f0b9c1181389704',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_18.html b/ver-1.11.0/chgres_cube/search/all_18.html new file mode 100644 index 000000000..2a0090254 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_18.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_18.js b/ver-1.11.0/chgres_cube/search/all_18.js new file mode 100644 index 000000000..02060a506 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_18.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['z0_5finput_5fgrid',['z0_input_grid',['../sfc__input__data_8F90.html#a8561ff11eb9b94ccbd579995bb9967db',1,'sfc_input_data']]], + ['z0_5ftarget_5fgrid',['z0_target_grid',['../namespacesurface__target__data.html#a4886e70b112ad7918f5d824e6c344851',1,'surface_target_data']]], + ['z_5fc_5finput_5fgrid',['z_c_input_grid',['../nst__input__data_8F90.html#a023a1b4eda6033258064dfd4002abdb7',1,'nst_input_data']]], + ['z_5fc_5ftarget_5fgrid',['z_c_target_grid',['../namespacesurface__target__data.html#afb801817257c7643eb36c126d41b4174',1,'surface_target_data']]], + ['zh_5ftarget_5fgrid',['zh_target_grid',['../namespaceatmosphere__target__data.html#a9587b2eb709966d8651640ba404fb4da',1,'atmosphere_target_data']]], + ['zm_5finput_5fgrid',['zm_input_grid',['../nst__input__data_8F90.html#af9abe19d53fd1dfd64a2c84c3f85ef98',1,'nst_input_data']]], + ['zm_5ftarget_5fgrid',['zm_target_grid',['../namespacesurface__target__data.html#a73521e5c6e097524d2966e3fdf9e4d9c',1,'surface_target_data']]], + ['zwind_5fb4adj_5ftarget_5fgrid',['zwind_b4adj_target_grid',['../namespaceatmosphere.html#ab0b883e8e5652f0c85cc713f9c40c20f',1,'atmosphere']]], + ['zwind_5finput_5fgrid',['zwind_input_grid',['../namespaceatm__input__data.html#a34e522f4cea6c96e6a9bd2b89355494d',1,'atm_input_data']]], + ['zwind_5fs_5ftarget_5fgrid',['zwind_s_target_grid',['../namespaceatmosphere.html#a1893b4f281a29f1e0bfc5ba8c2100473',1,'atmosphere']]], + ['zwind_5ftarget_5fgrid',['zwind_target_grid',['../namespaceatmosphere.html#a01f02494455b087d89f35b7050952384',1,'atmosphere']]], + ['zwind_5fw_5ftarget_5fgrid',['zwind_w_target_grid',['../namespaceatmosphere.html#ac3eb0927b891b8f20681fc713f0b8061',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_2.html b/ver-1.11.0/chgres_cube/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_2.js b/ver-1.11.0/chgres_cube/search/all_2.js new file mode 100644 index 000000000..8678e0d8c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_2.js @@ -0,0 +1,48 @@ +var searchData= +[ + ['c_5f0_5finput_5fgrid',['c_0_input_grid',['../nst__input__data_8F90.html#a51a9411ad2bf39e64bfb86e80e5d0192',1,'nst_input_data']]], + ['c_5f0_5ftarget_5fgrid',['c_0_target_grid',['../namespacesurface__target__data.html#a657e74c6e004cf9e07531fe00dca2a13',1,'surface_target_data']]], + ['c_5fd_5finput_5fgrid',['c_d_input_grid',['../nst__input__data_8F90.html#af934359a24245374fc4e9ded1d7a6986',1,'nst_input_data']]], + ['c_5fd_5ftarget_5fgrid',['c_d_target_grid',['../namespacesurface__target__data.html#adce56c4dec7394d858591d80bf4a870e',1,'surface_target_data']]], + ['calc_5fliq_5fsoil_5fmoisture',['calc_liq_soil_moisture',['../namespacesurface.html#ac5e2bc59e4d2fa0c063c0dff2d059111',1,'surface']]], + ['calc_5fsoil_5fparams',['calc_soil_params',['../namespaceprogram__setup.html#a3a454a5d7e276f0665145023993bf338',1,'program_setup']]], + ['calc_5fsoil_5fparams_5fdriver',['calc_soil_params_driver',['../namespaceprogram__setup.html#abd7579c405f8e7aef79aeb4bb6b574ac',1,'program_setup']]], + ['calcalpha_5frotlatlon',['calcalpha_rotlatlon',['../namespaceatm__input__data.html#a51cca8f975601a1b1150c2f4d18847aa',1,'atm_input_data']]], + ['canopy_5fmc_5finput_5fgrid',['canopy_mc_input_grid',['../sfc__input__data_8F90.html#ac0e9f9bb04765ba7f0494bad423a432d',1,'sfc_input_data']]], + ['canopy_5fmc_5ftarget_5fgrid',['canopy_mc_target_grid',['../namespacesurface__target__data.html#a563521ef40680a2abec0d24ca15c11a9',1,'surface_target_data']]], + ['check_5fcnwat',['check_cnwat',['../utils_8F90.html#a87bd260adf1a2dbe0f7854a51fdc76fb',1,'utilities']]], + ['check_5fsoilt',['check_soilt',['../utils_8F90.html#ae1086b84163bee323fd34e6dda323cd7',1,'utilities']]], + ['chgres',['chgres',['../chgres_8F90.html#ad344b0a3c44aec05c1d3d8170d5527b1',1,'chgres.F90']]], + ['chgres_2ef90',['chgres.F90',['../chgres_8F90.html',1,'']]], + ['chgres_5fvar_5fnames',['chgres_var_names',['../namespaceprogram__setup.html#a774028ea61ef16c070de132942d132e0',1,'program_setup']]], + ['cleanup_5fall_5ftarget_5fatm_5fdata',['cleanup_all_target_atm_data',['../namespaceatmosphere.html#aef1da0871469093e31a1e0d7a2174151',1,'atmosphere']]], + ['cleanup_5fall_5ftarget_5fsfc_5fdata',['cleanup_all_target_sfc_data',['../namespacesurface.html#a7d2198fe7684f6f0da6f35863f90e931',1,'surface']]], + ['cleanup_5fatmosphere_5ftarget_5fdata',['cleanup_atmosphere_target_data',['../namespaceatmosphere__target__data.html#a0e92ff8cac8681bc267468783024ba95',1,'atmosphere_target_data']]], + ['cleanup_5finput_5fatm_5fdata',['cleanup_input_atm_data',['../namespaceatm__input__data.html#a9cb9a7c1cc8d4adfb3607fcc42e68e8c',1,'atm_input_data']]], + ['cleanup_5finput_5fnst_5fdata',['cleanup_input_nst_data',['../nst__input__data_8F90.html#afe3aba15f31e50b82b2cd81098ba8be9',1,'nst_input_data']]], + ['cleanup_5finput_5fsfc_5fdata',['cleanup_input_sfc_data',['../sfc__input__data_8F90.html#a15c06f360d6072e63bd1109985d203c2',1,'sfc_input_data']]], + ['cleanup_5finput_5ftarget_5fgrid_5fdata',['cleanup_input_target_grid_data',['../namespacemodel__grid.html#a200bf9a04e0664c70a004ef2e4684f68',1,'model_grid']]], + ['cleanup_5fstatic_5ffields',['cleanup_static_fields',['../namespacestatic__data.html#a3a6ad318f4d11ae68a6f33dc2fbc6ffc',1,'static_data']]], + ['cleanup_5ftarget_5fatm_5fb4adj_5fdata',['cleanup_target_atm_b4adj_data',['../namespaceatmosphere.html#a5c8ce1e6155790ac7638002aa96a6076',1,'atmosphere']]], + ['cleanup_5ftarget_5fnst_5fdata',['cleanup_target_nst_data',['../namespacesurface__target__data.html#a7579bed4bee3e50b057b913f9f08f391',1,'surface_target_data']]], + ['cleanup_5ftarget_5fsfc_5fdata',['cleanup_target_sfc_data',['../namespacesurface__target__data.html#ae691e61976b33b8d07f166e3297cf7f1',1,'surface_target_data']]], + ['cleanup_5fthomp_5fmp_5fclimo_5finput_5fdata',['cleanup_thomp_mp_climo_input_data',['../namespacethompson__mp__climo__data.html#a50ac430a78518b0963e23517cba243bb',1,'thompson_mp_climo_data']]], + ['compute_5fzh',['compute_zh',['../namespaceatmosphere.html#a70694e8d634701fdfea61d171f1204e3',1,'atmosphere']]], + ['convert_5fatm',['convert_atm',['../namespaceprogram__setup.html#acbdcf36483fb5f4df0671b0c0ea7fb56',1,'program_setup']]], + ['convert_5fnst',['convert_nst',['../namespaceprogram__setup.html#aecb79f4fe5bc6e738cde100c9e2aa654',1,'program_setup']]], + ['convert_5fomega',['convert_omega',['../namespacegrib2__util.html#ab6b929a42b20e3a5dbef3b30024f1c43',1,'grib2_util']]], + ['convert_5fsfc',['convert_sfc',['../namespaceprogram__setup.html#a9976c028dd266aeafe391a15c93c69aa',1,'program_setup']]], + ['convert_5fwinds_5fto_5fuv',['convert_winds_to_uv',['../namespaceatmosphere.html#ad92390d2e15b6f6ae0fed71aec81d59b',1,'atmosphere']]], + ['convert_5fwinds_5fto_5fxyz',['convert_winds_to_xyz',['../namespaceatm__input__data.html#a538a770a36fda1271efee63a5e29a510',1,'atm_input_data']]], + ['create_5fatm_5fb4adj_5fesmf_5ffields',['create_atm_b4adj_esmf_fields',['../namespaceatmosphere.html#a67a8ac36ae3346e7697cc649ce6d7c8c',1,'atmosphere']]], + ['create_5fatm_5fesmf_5ffields',['create_atm_esmf_fields',['../namespaceatmosphere.html#a02995fb2860e5b1df218feea4a8d3534',1,'atmosphere']]], + ['create_5fnst_5fesmf_5ffields',['create_nst_esmf_fields',['../namespacesurface.html#a0072f75a8c94bd12bc0e84d392cec723',1,'surface']]], + ['create_5fstatic_5ffields',['create_static_fields',['../namespacestatic__data.html#aeb4ec10a3aa09ae6fae0d5fd4dad5ad6',1,'static_data']]], + ['create_5fsurface_5fesmf_5ffields',['create_surface_esmf_fields',['../namespacesurface.html#a0eeed6bc8807704d095c5356d5026518',1,'surface']]], + ['cres_5ftarget_5fgrid',['cres_target_grid',['../namespaceprogram__setup.html#afb1a0aace6f3f9dedaf8a53b4847f41f',1,'program_setup']]], + ['cycle_5fday',['cycle_day',['../namespaceprogram__setup.html#aaf0e825f9aa8cffe8c0035079ac12bb0',1,'program_setup']]], + ['cycle_5fhour',['cycle_hour',['../namespaceprogram__setup.html#ac5f0577071c1c98ce380d51b397bffbe',1,'program_setup']]], + ['cycle_5fmon',['cycle_mon',['../namespaceprogram__setup.html#a98f420b05c47203e45300d1a65d948e6',1,'program_setup']]], + ['cycle_5fyear',['cycle_year',['../namespaceprogram__setup.html#aff95ceb3ac2eb7fb6809acdbb75771dd',1,'program_setup']]], + ['chgres_5fcube',['chgres_cube',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_3.html b/ver-1.11.0/chgres_cube/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_3.js b/ver-1.11.0/chgres_cube/search/all_3.js new file mode 100644 index 000000000..642f98d2a --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_3.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['d_5fconv_5finput_5fgrid',['d_conv_input_grid',['../nst__input__data_8F90.html#abb2ede9bd20773beb48375d47a63de97',1,'nst_input_data']]], + ['d_5fconv_5ftarget_5fgrid',['d_conv_target_grid',['../namespacesurface__target__data.html#a9dae2d4c09b0786528422bac68e26cff',1,'surface_target_data']]], + ['data_5fdir_5finput_5fgrid',['data_dir_input_grid',['../namespaceprogram__setup.html#ad2880ceb89e38d54187a66b001fa783b',1,'program_setup']]], + ['define_5finput_5fgrid',['define_input_grid',['../namespacemodel__grid.html#a36c0033acb111e2ec5c8132ed0fa0199',1,'model_grid']]], + ['define_5finput_5fgrid_5fgaussian',['define_input_grid_gaussian',['../namespacemodel__grid.html#a38100494e868340aac0afcac251e7ff4',1,'model_grid']]], + ['define_5finput_5fgrid_5fgrib2',['define_input_grid_grib2',['../namespacemodel__grid.html#a86f8d9a686ecf5e7170e441a7e41a641',1,'model_grid']]], + ['define_5finput_5fgrid_5fmosaic',['define_input_grid_mosaic',['../namespacemodel__grid.html#a805584a781fcc2ac74c551e72c787a05',1,'model_grid']]], + ['define_5ftarget_5fgrid',['define_target_grid',['../namespacemodel__grid.html#a0d0ed99ee8dd8353bf13ab47074eebb1',1,'model_grid']]], + ['delp_5ftarget_5fgrid',['delp_target_grid',['../namespaceatmosphere__target__data.html#ad2b54e148600b9347a98a105640be5ed',1,'atmosphere_target_data']]], + ['dint2p',['DINT2P',['../utils_8F90.html#a5d8a15ebaf1abc477eb75a9316da19e6',1,'utilities']]], + ['dpres_5finput_5fgrid',['dpres_input_grid',['../namespaceatm__input__data.html#a95498f5c7bceb0be3f4935f54c19800a',1,'atm_input_data']]], + ['drysmc_5finput',['drysmc_input',['../namespaceprogram__setup.html#a18f1a7322646b504db970b47e131e42c',1,'program_setup']]], + ['drysmc_5ftarget',['drysmc_target',['../namespaceprogram__setup.html#abcd1bcc5c560893e6524aff26bbb54a4',1,'program_setup']]], + ['dt_5fcool_5finput_5fgrid',['dt_cool_input_grid',['../nst__input__data_8F90.html#a6c2b098be33b3a36323db2e866535cb0',1,'nst_input_data']]], + ['dt_5fcool_5ftarget_5fgrid',['dt_cool_target_grid',['../namespacesurface__target__data.html#aab2bffb07c245bb48b915825c47c6538',1,'surface_target_data']]], + ['dzdt_5fb4adj_5ftarget_5fgrid',['dzdt_b4adj_target_grid',['../namespaceatmosphere.html#aa2ebcdf275c5929227a4ab39e5580b34',1,'atmosphere']]], + ['dzdt_5finput_5fgrid',['dzdt_input_grid',['../namespaceatm__input__data.html#a56de20f783cf67f2ce935c72c6df08a2',1,'atm_input_data']]], + ['dzdt_5ftarget_5fgrid',['dzdt_target_grid',['../namespaceatmosphere__target__data.html#a73a8de0a94f2eb3bcbc7f21da0f990f2',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_4.html b/ver-1.11.0/chgres_cube/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_4.js b/ver-1.11.0/chgres_cube/search/all_4.js new file mode 100644 index 000000000..7447a0e4d --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['error_5fhandler',['error_handler',['../utils_8F90.html#a880983c1fd6c2efccdca6191fce95d31',1,'utilities']]], + ['external_5fmodel',['external_model',['../namespaceprogram__setup.html#aeb876c8fe55456458771ff3cbc86ad14',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_5.html b/ver-1.11.0/chgres_cube/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_5.js b/ver-1.11.0/chgres_cube/search/all_5.js new file mode 100644 index 000000000..015f8f544 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['f10m_5finput_5fgrid',['f10m_input_grid',['../sfc__input__data_8F90.html#a4eac4f508f9b4236b0b9e0912188b387',1,'sfc_input_data']]], + ['f10m_5ftarget_5fgrid',['f10m_target_grid',['../namespacesurface__target__data.html#aa90c1ec2d09dd77b23744a45c762d63c',1,'surface_target_data']]], + ['facsf_5ftarget_5fgrid',['facsf_target_grid',['../namespacestatic__data.html#a8893a2723547f5bcc8e2b5b609ec9f0c',1,'static_data']]], + ['facwf_5ftarget_5fgrid',['facwf_target_grid',['../namespacestatic__data.html#a8ad3327f9ff91d1bbf5d28d375303f49',1,'static_data']]], + ['ffmm_5finput_5fgrid',['ffmm_input_grid',['../sfc__input__data_8F90.html#ade0151e6fbd7aaf9c9241209d8c5664e',1,'sfc_input_data']]], + ['ffmm_5ftarget_5fgrid',['ffmm_target_grid',['../namespacesurface__target__data.html#a6a65acd6b187aeee89ef1493f19736c7',1,'surface_target_data']]], + ['field_5fvar_5fnames',['field_var_names',['../namespaceprogram__setup.html#a628f7be5aa35f0a20cd4e84598bfa7e7',1,'program_setup']]], + ['fix_5fdir_5ftarget_5fgrid',['fix_dir_target_grid',['../namespaceprogram__setup.html#ad68e3574b23454ea791501813c6063f7',1,'program_setup']]], + ['fpvsnew',['fpvsnew',['../namespacegrib2__util.html#a014ba8acc9b41fc25ccb40c9bd2900d3',1,'grib2_util']]], + ['frh2o',['FRH2O',['../namespacesurface.html#abcfbbcd2986ac73e0d883b2441fe94a3',1,'surface']]], + ['frz_5fh2o',['frz_h2o',['../namespacesurface.html#a38ac050f3afcffb171ecaca67f4338c6',1,'surface']]], + ['frz_5fice',['frz_ice',['../namespacesurface.html#a8c9df7d4a32c856503c625212b2f2fe4',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_6.html b/ver-1.11.0/chgres_cube/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_6.js b/ver-1.11.0/chgres_cube/search/all_6.js new file mode 100644 index 000000000..c90f12f61 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_6.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['gdt_5fto_5fgds',['gdt_to_gds',['../namespacemodel__grid.html#ac6b71e97768b663de2fcce75426b499e',1,'model_grid']]], + ['geogrid_5ffile_5finput_5fgrid',['geogrid_file_input_grid',['../namespaceprogram__setup.html#a0c9b8f64a9bc2872a5cf70ee0c97c5f5',1,'program_setup']]], + ['get_5fmodel_5flatlons',['get_model_latlons',['../namespacemodel__grid.html#aa0556c652763c8b6310abfee5bb48032',1,'model_grid']]], + ['get_5fmodel_5fmask_5fterrain',['get_model_mask_terrain',['../namespacemodel__grid.html#a4860abf33f2f55ecd58fb5728df2c455',1,'model_grid']]], + ['get_5fstatic_5ffields',['get_static_fields',['../namespacestatic__data.html#aa310502eb6a2d97f82fb41196b00f4d7',1,'static_data']]], + ['get_5fvar_5fcond',['get_var_cond',['../namespaceprogram__setup.html#aa1aa0e7ed8df76be6db0a0ab964756f3',1,'program_setup']]], + ['gettemp',['gettemp',['../wam__climo__data_8f90.html#a6ccdccbc94bdcfab5909907dd077f6dc',1,'wam_climo_data.f90']]], + ['ghp8',['ghp8',['../wam__climo__data_8f90.html#a00ec74c638da395fd3976b33720207a6',1,'wam_climo_data.f90']]], + ['grav',['grav',['../namespacesurface.html#a0d020b9469b9e3dd472fa76b0c4ded06',1,'surface']]], + ['grib2_5ffile_5finput_5fgrid',['grib2_file_input_grid',['../namespaceprogram__setup.html#a3060fbdb680807d9360c64ccd2d9855a',1,'program_setup']]], + ['grib2_5futil',['grib2_util',['../namespacegrib2__util.html',1,'']]], + ['grib2_5futil_2ef90',['grib2_util.F90',['../grib2__util_8F90.html',1,'']]], + ['gridrot',['gridrot',['../namespaceatm__input__data.html#a955d043afabaa621cebd6e0bb1851f48',1,'atm_input_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_7.html b/ver-1.11.0/chgres_cube/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_7.js b/ver-1.11.0/chgres_cube/search/all_7.js new file mode 100644 index 000000000..b82ebb8a1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['halo_5fblend',['halo_blend',['../namespaceprogram__setup.html#a8063773d67ffc944f7471e6fe82e510b',1,'program_setup']]], + ['halo_5fbndy',['halo_bndy',['../namespaceprogram__setup.html#aa2af8669f8b4e8275287ef10b2cbc9a8',1,'program_setup']]], + ['handle_5fgrib_5ferror',['handle_grib_error',['../utils_8F90.html#abe5a05b2f04a8f449d7fd380ec3e1e8e',1,'utilities']]], + ['hlice',['hlice',['../namespacesurface.html#af4df26877e3d05576cc7cd54ec22c204',1,'surface']]], + ['horiz_5finterp_5fthomp_5fmp_5fclimo',['horiz_interp_thomp_mp_climo',['../namespaceatmosphere.html#a38c65833316fd634cb4c3a20daf1d42a',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_8.html b/ver-1.11.0/chgres_cube/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_8.js b/ver-1.11.0/chgres_cube/search/all_8.js new file mode 100644 index 000000000..5c47411b6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_8.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['i_5finput',['i_input',['../namespacemodel__grid.html#a82f65a209ac509f7b875033a11c8f732',1,'model_grid']]], + ['i_5ftarget',['i_target',['../namespacemodel__grid.html#a367ce0e39d8f4d24ea6a09c3e75d3162',1,'model_grid']]], + ['i_5fthomp_5fmp_5fclimo',['i_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#aaf3901f6b3b2f1948f6d7f2a951258ed',1,'thompson_mp_climo_data']]], + ['icet_5fdefault',['icet_default',['../sfc__input__data_8F90.html#a90e0c16da2aadc846385abc42b6d2328',1,'sfc_input_data']]], + ['ifd_5finput_5fgrid',['ifd_input_grid',['../nst__input__data_8F90.html#af5d2ba98b040bea77126139b28536865',1,'nst_input_data']]], + ['ifd_5ftarget_5fgrid',['ifd_target_grid',['../namespacesurface__target__data.html#acb8177f2bb7ba31fff58eb253f11e0e6',1,'surface_target_data']]], + ['ij_5fto_5fi_5fj',['ij_to_i_j',['../namespacesurface.html#a7a2257539e521c7e72bd2b3c76f72044',1,'surface']]], + ['init_5fatm_5fesmf_5ffields',['init_atm_esmf_fields',['../namespaceatm__input__data.html#a5f7d910189f475a311bcbaa9e9c0a400',1,'atm_input_data']]], + ['init_5fsfc_5fesmf_5ffields',['init_sfc_esmf_fields',['../sfc__input__data_8F90.html#a7c5bf6dd923917390b3eae8799d35557',1,'sfc_input_data']]], + ['input_5fgrid',['input_grid',['../namespacemodel__grid.html#a6fe7dceafaecb43b88c95581c8bef5f7',1,'model_grid']]], + ['input_5fgrid_5ftype',['input_grid_type',['../namespacemodel__grid.html#aac1f2077acd32917f36682691dbd2529',1,'model_grid']]], + ['input_5ftype',['input_type',['../namespaceprogram__setup.html#ad9cad7ceebd839cb675081cc01b7bb76',1,'program_setup']]], + ['interp',['interp',['../namespacesurface.html#ae8b708efb5c1abfda4a2efc48bef83dd',1,'surface']]], + ['ip1_5finput',['ip1_input',['../namespacemodel__grid.html#a14b39337a9ccda16ca348f21a6a608b3',1,'model_grid']]], + ['ip1_5ftarget',['ip1_target',['../namespacemodel__grid.html#af9c1b283e8c80dd9f704c8427db4d085',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_9.html b/ver-1.11.0/chgres_cube/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_9.js b/ver-1.11.0/chgres_cube/search/all_9.js new file mode 100644 index 000000000..f8ea6a9e6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['j_5finput',['j_input',['../namespacemodel__grid.html#aefd7c70cce6c5f470c80ee7ba0553b1e',1,'model_grid']]], + ['j_5ftarget',['j_target',['../namespacemodel__grid.html#ae4008286f17a2f603da7de655c555a21',1,'model_grid']]], + ['j_5fthomp_5fmp_5fclimo',['j_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#a1d84f17788791eb428a10712857de1a2',1,'thompson_mp_climo_data']]], + ['jp1_5finput',['jp1_input',['../namespacemodel__grid.html#a80d6893328bfe9c715534573177bcad1',1,'model_grid']]], + ['jp1_5ftarget',['jp1_target',['../namespacemodel__grid.html#ae8dcbca4234f1074860ebde7012b5c85',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_a.html b/ver-1.11.0/chgres_cube/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_a.js b/ver-1.11.0/chgres_cube/search/all_a.js new file mode 100644 index 000000000..f0473ab52 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_a.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['lai_5ffrom_5fclimo',['lai_from_climo',['../namespaceprogram__setup.html#a85264610be92f55f65062b22df35a04b',1,'program_setup']]], + ['lai_5finput_5fgrid',['lai_input_grid',['../sfc__input__data_8F90.html#a41eba5f4cde1c339df6a3007ecbf69a7',1,'sfc_input_data']]], + ['lai_5ftarget_5fgrid',['lai_target_grid',['../namespacesurface__target__data.html#a668e84f353bfed4dfa817315b7737b32',1,'surface_target_data']]], + ['landmask_5ftarget_5fgrid',['landmask_target_grid',['../namespacemodel__grid.html#a6afab6cbbba792a2ea872922f95d6feb',1,'model_grid']]], + ['landsea_5fmask_5finput_5fgrid',['landsea_mask_input_grid',['../sfc__input__data_8F90.html#afad2ac86ec055e02accad016e4f3e27f',1,'sfc_input_data']]], + ['latitude_5finput_5fgrid',['latitude_input_grid',['../namespacemodel__grid.html#a0f1a11da8a184d13bd08017cc004d5ae',1,'model_grid']]], + ['latitude_5fs_5finput_5fgrid',['latitude_s_input_grid',['../namespacemodel__grid.html#a914f3c0bf95631eb1d50b3cb6b67ac2a',1,'model_grid']]], + ['latitude_5fs_5ftarget_5fgrid',['latitude_s_target_grid',['../namespacemodel__grid.html#afab4f0f662e0baa4526361ec0ae521c7',1,'model_grid']]], + ['latitude_5ftarget_5fgrid',['latitude_target_grid',['../namespacemodel__grid.html#a2116a7a5b8705b34f2c66af39d811072',1,'model_grid']]], + ['latitude_5fw_5finput_5fgrid',['latitude_w_input_grid',['../namespacemodel__grid.html#ade9cc9af8fe2eeb8d55f705b4f9cf8db',1,'model_grid']]], + ['latitude_5fw_5ftarget_5fgrid',['latitude_w_target_grid',['../namespacemodel__grid.html#a50df9e05c2198a873bc0178dd1b4668b',1,'model_grid']]], + ['lev_5finput',['lev_input',['../namespaceatm__input__data.html#aab8e581b6cbf6f84d4b694286f9f405d',1,'atm_input_data']]], + ['lev_5ftarget',['lev_target',['../namespaceatmosphere__target__data.html#ab08174d64f085a53ab9c20978ed1d108',1,'atmosphere_target_data']]], + ['lev_5fthomp_5fmp_5fclimo',['lev_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#a970d00615bea70ba6284e9df400286e4',1,'thompson_mp_climo_data']]], + ['levp1_5finput',['levp1_input',['../namespaceatm__input__data.html#ad6467da1897e2226ad31f66fa89eaf8f',1,'atm_input_data']]], + ['levp1_5ftarget',['levp1_target',['../namespaceatmosphere__target__data.html#a87edc87067aacbcf6ee67168646404fb',1,'atmosphere_target_data']]], + ['longitude_5finput_5fgrid',['longitude_input_grid',['../namespacemodel__grid.html#a24aecc78c27241525d39f504b1c211c5',1,'model_grid']]], + ['longitude_5fs_5finput_5fgrid',['longitude_s_input_grid',['../namespacemodel__grid.html#a8bbf374eb9c7cdfb0dadd07f5d52ab2e',1,'model_grid']]], + ['longitude_5fs_5ftarget_5fgrid',['longitude_s_target_grid',['../namespacemodel__grid.html#af13ff8dcabc000d295d8b75f44dd710d',1,'model_grid']]], + ['longitude_5ftarget_5fgrid',['longitude_target_grid',['../namespacemodel__grid.html#abdfd0325317286c1dcbe0ccfdf6ee4d1',1,'model_grid']]], + ['longitude_5fw_5finput_5fgrid',['longitude_w_input_grid',['../namespacemodel__grid.html#a9d22b9cf2b11fe380fead036a530a2a0',1,'model_grid']]], + ['longitude_5fw_5ftarget_5fgrid',['longitude_w_target_grid',['../namespacemodel__grid.html#a727e94df683ca38a029276509efa2d1e',1,'model_grid']]], + ['lsoil_5finput',['lsoil_input',['../sfc__input__data_8F90.html#a6852cf0648f10b014b19cd5a337d4fe9',1,'sfc_input_data']]], + ['lsoil_5ftarget',['lsoil_target',['../namespacemodel__grid.html#aebe8f265a30b1af1177d42a02049d279',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_b.html b/ver-1.11.0/chgres_cube/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_b.js b/ver-1.11.0/chgres_cube/search/all_b.js new file mode 100644 index 000000000..b89fead53 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_b.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['max_5ftracers',['max_tracers',['../namespaceprogram__setup.html#a1e0554fe16f40cb04c261d6d706e0590',1,'program_setup']]], + ['max_5fveg_5fgreenness_5finput_5fgrid',['max_veg_greenness_input_grid',['../sfc__input__data_8F90.html#a8b0b6fabb358db81fb8c99003fae4a7a',1,'sfc_input_data']]], + ['max_5fveg_5fgreenness_5ftarget_5fgrid',['max_veg_greenness_target_grid',['../namespacestatic__data.html#abadfd2da54f59d65b8f4a25f53ead74b',1,'static_data']]], + ['maxsmc_5finput',['maxsmc_input',['../namespaceprogram__setup.html#aaaf6c9fec89a42c1eeef58627ee75161',1,'program_setup']]], + ['maxsmc_5ftarget',['maxsmc_target',['../namespaceprogram__setup.html#a943991a14e371cba21a6198ea154ea8f',1,'program_setup']]], + ['min_5fveg_5fgreenness_5finput_5fgrid',['min_veg_greenness_input_grid',['../sfc__input__data_8F90.html#a230bf97be0e80e6558d8e8880e69e42a',1,'sfc_input_data']]], + ['min_5fveg_5fgreenness_5ftarget_5fgrid',['min_veg_greenness_target_grid',['../namespacestatic__data.html#aa9768580be3932356fecde427d5bfa52',1,'static_data']]], + ['minmax_5fvgfrc_5ffrom_5fclimo',['minmax_vgfrc_from_climo',['../namespaceprogram__setup.html#afe1e8a28060f5dd88fd1738bfca0a33c',1,'program_setup']]], + ['missing_5fvar_5fmethods',['missing_var_methods',['../namespaceprogram__setup.html#aab225cf6422d3962e283bf3124d78ff9',1,'program_setup']]], + ['missing_5fvar_5fvalues',['missing_var_values',['../namespaceprogram__setup.html#a1059532d74293e5a62bca42e783992aa',1,'program_setup']]], + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]], + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]], + ['mosaic_5ffile_5finput_5fgrid',['mosaic_file_input_grid',['../namespaceprogram__setup.html#a8f48c2a86a201e890140ba255f235e19',1,'program_setup']]], + ['mosaic_5ffile_5ftarget_5fgrid',['mosaic_file_target_grid',['../namespaceprogram__setup.html#a87272b81090f1ec24acf3d417a4a0df2',1,'program_setup']]], + ['mxsno_5falbedo_5ftarget_5fgrid',['mxsno_albedo_target_grid',['../namespacestatic__data.html#acbd7129a9c4dbe1fec09bd7f8fec9acd',1,'static_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_c.html b/ver-1.11.0/chgres_cube/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_c.js b/ver-1.11.0/chgres_cube/search/all_c.js new file mode 100644 index 000000000..5885c47ba --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['netcdf_5ferr',['netcdf_err',['../utils_8F90.html#a7de511c01f6bde6e69343d11aca654c9',1,'utilities']]], + ['newpr1',['newpr1',['../namespaceatmosphere.html#a449da9a0abe3032a16345f130761b9d2',1,'atmosphere']]], + ['newps',['newps',['../namespaceatmosphere.html#a5b202a3c172ff40138e91a1bf3194c75',1,'atmosphere']]], + ['nsoill_5fout',['nsoill_out',['../namespaceprogram__setup.html#ab00a20499ebc164b63c484864a14d185',1,'program_setup']]], + ['nst_5ffiles_5finput_5fgrid',['nst_files_input_grid',['../namespaceprogram__setup.html#a61ce62b449d1d0a096e8339b63f0bd87',1,'program_setup']]], + ['nst_5finput_5fdata_2ef90',['nst_input_data.F90',['../nst__input__data_8F90.html',1,'']]], + ['nst_5fland_5ffill',['nst_land_fill',['../namespacesurface.html#a37509f4fa66fcf75ee97f82cb99927b9',1,'surface']]], + ['num_5ftiles_5finput_5fgrid',['num_tiles_input_grid',['../namespacemodel__grid.html#ad5a0922adf7266e1f3a84b9c6b4cb0a3',1,'model_grid']]], + ['num_5ftiles_5ftarget_5fgrid',['num_tiles_target_grid',['../namespacemodel__grid.html#a3ef9fce75c3c775bfbc0f3758adc9ab5',1,'model_grid']]], + ['num_5ftracers',['num_tracers',['../namespaceprogram__setup.html#a539f60d15e53a303d938db95e8d8a98b',1,'program_setup']]], + ['num_5ftracers_5finput',['num_tracers_input',['../namespaceprogram__setup.html#a1aca4bf2de945568e4968338e2e51426',1,'program_setup']]], + ['nvcoord_5ftarget',['nvcoord_target',['../namespaceatmosphere__target__data.html#a9948156fdd760009a18825699e798d17',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_d.html b/ver-1.11.0/chgres_cube/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_d.js b/ver-1.11.0/chgres_cube/search/all_d.js new file mode 100644 index 000000000..a64872de2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['orog_5fdir_5finput_5fgrid',['orog_dir_input_grid',['../namespaceprogram__setup.html#a1be9ccab8a35f168bcbfdf9c5a222a45',1,'program_setup']]], + ['orog_5fdir_5ftarget_5fgrid',['orog_dir_target_grid',['../namespaceprogram__setup.html#a7399d25dfd372508d36eb5f6605cfb95',1,'program_setup']]], + ['orog_5ffiles_5finput_5fgrid',['orog_files_input_grid',['../namespaceprogram__setup.html#a377c50042036e5bb66eb6961dd6f011e',1,'program_setup']]], + ['orog_5ffiles_5ftarget_5fgrid',['orog_files_target_grid',['../namespaceprogram__setup.html#a347c8473bf53672f02913c93a050ea7a',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_e.html b/ver-1.11.0/chgres_cube/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_e.js b/ver-1.11.0/chgres_cube/search/all_e.js new file mode 100644 index 000000000..b249c0cba --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['p',['p',['../structsurface_1_1realptr__2d.html#a8a75163487be30796f0e9623d3bdd0bf',1,'surface::realptr_2d::p()'],['../structsurface_1_1realptr__3d.html#aacdc1c26baef9f3b7d0ab829ad23a6f2',1,'surface::realptr_3d::p()']]], + ['pres_5fb4adj_5ftarget_5fgrid',['pres_b4adj_target_grid',['../namespaceatmosphere.html#a429afd90f6a61146dbbf51b325d2eb2c',1,'atmosphere']]], + ['pres_5finput_5fgrid',['pres_input_grid',['../namespaceatm__input__data.html#a5f44924ecec3e08a8660aef4d1b2072b',1,'atm_input_data']]], + ['pres_5ftarget_5fgrid',['pres_target_grid',['../namespaceatmosphere.html#a3dc2d3c32b33b6ade7deb0cc4b16cbb9',1,'atmosphere']]], + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]], + ['program_5fsetup_2ef90',['program_setup.F90',['../program__setup_8F90.html',1,'']]], + ['ps_5fb4adj_5ftarget_5fgrid',['ps_b4adj_target_grid',['../namespaceatmosphere.html#a7059de7ec72c92d6ef0ca8ff0aef56d3',1,'atmosphere']]], + ['ps_5finput_5fgrid',['ps_input_grid',['../namespaceatm__input__data.html#a8d85e121cb4ddeb66179cad680156d96',1,'atm_input_data']]], + ['ps_5ftarget_5fgrid',['ps_target_grid',['../namespaceatmosphere__target__data.html#a605db1d33dbfc96bd51c360fe1201e29',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/all_f.html b/ver-1.11.0/chgres_cube/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/all_f.js b/ver-1.11.0/chgres_cube/search/all_f.js new file mode 100644 index 000000000..150174ad1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/all_f.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['q2m_5finput_5fgrid',['q2m_input_grid',['../sfc__input__data_8F90.html#ad29e208daec39420518f184da4cc4b58',1,'sfc_input_data']]], + ['q2m_5ftarget_5fgrid',['q2m_target_grid',['../namespacesurface__target__data.html#a3b79eda082d09d7d12f76e588f9ddbad',1,'surface_target_data']]], + ['qc_5fcheck',['qc_check',['../namespacesurface.html#a232ef616dae3429cdd609b34ed59dcb1',1,'surface']]], + ['qnifa_5fclimo_5fb4adj_5ftarget_5fgrid',['qnifa_climo_b4adj_target_grid',['../namespaceatmosphere.html#ae32652c7830afbfd567ea5e2c52038fe',1,'atmosphere']]], + ['qnifa_5fclimo_5finput_5fgrid',['qnifa_climo_input_grid',['../namespacethompson__mp__climo__data.html#a4312b55ea121b9c515619b06e80cf2c3',1,'thompson_mp_climo_data']]], + ['qnifa_5fclimo_5ftarget_5fgrid',['qnifa_climo_target_grid',['../namespaceatmosphere__target__data.html#ababa05266975d9c3a42e98fd79e2bc18',1,'atmosphere_target_data']]], + ['qnwfa_5fclimo_5fb4adj_5ftarget_5fgrid',['qnwfa_climo_b4adj_target_grid',['../namespaceatmosphere.html#aea2936574cdb0e6bc6e29d8c6c420c51',1,'atmosphere']]], + ['qnwfa_5fclimo_5finput_5fgrid',['qnwfa_climo_input_grid',['../namespacethompson__mp__climo__data.html#a6a074322beb120491a9cac33db176369',1,'thompson_mp_climo_data']]], + ['qnwfa_5fclimo_5ftarget_5fgrid',['qnwfa_climo_target_grid',['../namespaceatmosphere__target__data.html#ab4c66671eb081387995e185351612f19',1,'atmosphere_target_data']]], + ['qrain_5finput_5fgrid',['qrain_input_grid',['../nst__input__data_8F90.html#ac047a00e880f7a04887d24f44ce3f5c5',1,'nst_input_data']]], + ['qrain_5ftarget_5fgrid',['qrain_target_grid',['../namespacesurface__target__data.html#a602f3db6fcf746e1edc2faa3ff87b22b',1,'surface_target_data']]], + ['quicksort',['quicksort',['../utils_8F90.html#a3b3f015cc68280f8c0f524b797b56842',1,'utilities']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/classes_0.html b/ver-1.11.0/chgres_cube/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/classes_0.js b/ver-1.11.0/chgres_cube/search/classes_0.js new file mode 100644 index 000000000..5b8811895 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['realptr_5f2d',['realptr_2d',['../structsurface_1_1realptr__2d.html',1,'surface']]], + ['realptr_5f3d',['realptr_3d',['../structsurface_1_1realptr__3d.html',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/close.png b/ver-1.11.0/chgres_cube/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/search/files_0.html b/ver-1.11.0/chgres_cube/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_0.js b/ver-1.11.0/chgres_cube/search/files_0.js new file mode 100644 index 000000000..60ba25f9d --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['atm_5finput_5fdata_2ef90',['atm_input_data.F90',['../atm__input__data_8F90.html',1,'']]], + ['atmosphere_2ef90',['atmosphere.F90',['../atmosphere_8F90.html',1,'']]], + ['atmosphere_5ftarget_5fdata_2ef90',['atmosphere_target_data.F90',['../atmosphere__target__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_1.html b/ver-1.11.0/chgres_cube/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_1.js b/ver-1.11.0/chgres_cube/search/files_1.js new file mode 100644 index 000000000..410185da7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['chgres_2ef90',['chgres.F90',['../chgres_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_2.html b/ver-1.11.0/chgres_cube/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_2.js b/ver-1.11.0/chgres_cube/search/files_2.js new file mode 100644 index 000000000..52eabbd7b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grib2_5futil_2ef90',['grib2_util.F90',['../grib2__util_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_3.html b/ver-1.11.0/chgres_cube/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_3.js b/ver-1.11.0/chgres_cube/search/files_3.js new file mode 100644 index 000000000..54f982849 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_4.html b/ver-1.11.0/chgres_cube/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_4.js b/ver-1.11.0/chgres_cube/search/files_4.js new file mode 100644 index 000000000..851f71a03 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nst_5finput_5fdata_2ef90',['nst_input_data.F90',['../nst__input__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_5.html b/ver-1.11.0/chgres_cube/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_5.js b/ver-1.11.0/chgres_cube/search/files_5.js new file mode 100644 index 000000000..2b65279dd --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup_2ef90',['program_setup.F90',['../program__setup_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_6.html b/ver-1.11.0/chgres_cube/search/files_6.html new file mode 100644 index 000000000..98fc6666c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_6.js b/ver-1.11.0/chgres_cube/search/files_6.js new file mode 100644 index 000000000..23dc440dd --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['search_5futil_2ef90',['search_util.F90',['../search__util_8F90.html',1,'']]], + ['sfc_5finput_5fdata_2ef90',['sfc_input_data.F90',['../sfc__input__data_8F90.html',1,'']]], + ['static_5fdata_2ef90',['static_data.F90',['../static__data_8F90.html',1,'']]], + ['surface_2ef90',['surface.F90',['../surface_8F90.html',1,'']]], + ['surface_5ftarget_5fdata_2ef90',['surface_target_data.F90',['../surface__target__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_7.html b/ver-1.11.0/chgres_cube/search/files_7.html new file mode 100644 index 000000000..49507dedb --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_7.js b/ver-1.11.0/chgres_cube/search/files_7.js new file mode 100644 index 000000000..fad12c989 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['thompson_5fmp_5fclimo_5fdata_2ef90',['thompson_mp_climo_data.F90',['../thompson__mp__climo__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_8.html b/ver-1.11.0/chgres_cube/search/files_8.html new file mode 100644 index 000000000..12c6630be --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_8.js b/ver-1.11.0/chgres_cube/search/files_8.js new file mode 100644 index 000000000..be5261352 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/files_9.html b/ver-1.11.0/chgres_cube/search/files_9.html new file mode 100644 index 000000000..cabcae2f8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/files_9.js b/ver-1.11.0/chgres_cube/search/files_9.js new file mode 100644 index 000000000..0238aee0a --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wam_5fclimo_5fdata_2ef90',['wam_climo_data.f90',['../wam__climo__data_8f90.html',1,'']]], + ['write_5fdata_2ef90',['write_data.F90',['../write__data_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_0.html b/ver-1.11.0/chgres_cube/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_0.js b/ver-1.11.0/chgres_cube/search/functions_0.js new file mode 100644 index 000000000..94bde3455 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['adjust_5fsoil_5flevels',['adjust_soil_levels',['../namespacesurface.html#ae4bf53bef0b16e89d6344df2b6aa1888',1,'surface']]], + ['adjust_5fsoilt_5ffor_5fterrain',['adjust_soilt_for_terrain',['../namespacesurface.html#a7592ccae34fbacf04fe5f69ffac4aeb6',1,'surface']]], + ['atmosphere_5fdriver',['atmosphere_driver',['../namespaceatmosphere.html#a79bac062052ba98de5baa9ea854410fe',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_1.html b/ver-1.11.0/chgres_cube/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_1.js b/ver-1.11.0/chgres_cube/search/functions_1.js new file mode 100644 index 000000000..d4aac0d4e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_1.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['calc_5fliq_5fsoil_5fmoisture',['calc_liq_soil_moisture',['../namespacesurface.html#ac5e2bc59e4d2fa0c063c0dff2d059111',1,'surface']]], + ['calc_5fsoil_5fparams',['calc_soil_params',['../namespaceprogram__setup.html#a3a454a5d7e276f0665145023993bf338',1,'program_setup']]], + ['calc_5fsoil_5fparams_5fdriver',['calc_soil_params_driver',['../namespaceprogram__setup.html#abd7579c405f8e7aef79aeb4bb6b574ac',1,'program_setup']]], + ['calcalpha_5frotlatlon',['calcalpha_rotlatlon',['../namespaceatm__input__data.html#a51cca8f975601a1b1150c2f4d18847aa',1,'atm_input_data']]], + ['check_5fcnwat',['check_cnwat',['../utils_8F90.html#a87bd260adf1a2dbe0f7854a51fdc76fb',1,'utilities']]], + ['check_5fsoilt',['check_soilt',['../utils_8F90.html#ae1086b84163bee323fd34e6dda323cd7',1,'utilities']]], + ['chgres',['chgres',['../chgres_8F90.html#ad344b0a3c44aec05c1d3d8170d5527b1',1,'chgres.F90']]], + ['cleanup_5fall_5ftarget_5fatm_5fdata',['cleanup_all_target_atm_data',['../namespaceatmosphere.html#aef1da0871469093e31a1e0d7a2174151',1,'atmosphere']]], + ['cleanup_5fall_5ftarget_5fsfc_5fdata',['cleanup_all_target_sfc_data',['../namespacesurface.html#a7d2198fe7684f6f0da6f35863f90e931',1,'surface']]], + ['cleanup_5fatmosphere_5ftarget_5fdata',['cleanup_atmosphere_target_data',['../namespaceatmosphere__target__data.html#a0e92ff8cac8681bc267468783024ba95',1,'atmosphere_target_data']]], + ['cleanup_5finput_5fatm_5fdata',['cleanup_input_atm_data',['../namespaceatm__input__data.html#a9cb9a7c1cc8d4adfb3607fcc42e68e8c',1,'atm_input_data']]], + ['cleanup_5finput_5fnst_5fdata',['cleanup_input_nst_data',['../nst__input__data_8F90.html#afe3aba15f31e50b82b2cd81098ba8be9',1,'nst_input_data']]], + ['cleanup_5finput_5fsfc_5fdata',['cleanup_input_sfc_data',['../sfc__input__data_8F90.html#a15c06f360d6072e63bd1109985d203c2',1,'sfc_input_data']]], + ['cleanup_5finput_5ftarget_5fgrid_5fdata',['cleanup_input_target_grid_data',['../namespacemodel__grid.html#a200bf9a04e0664c70a004ef2e4684f68',1,'model_grid']]], + ['cleanup_5fstatic_5ffields',['cleanup_static_fields',['../namespacestatic__data.html#a3a6ad318f4d11ae68a6f33dc2fbc6ffc',1,'static_data']]], + ['cleanup_5ftarget_5fatm_5fb4adj_5fdata',['cleanup_target_atm_b4adj_data',['../namespaceatmosphere.html#a5c8ce1e6155790ac7638002aa96a6076',1,'atmosphere']]], + ['cleanup_5ftarget_5fnst_5fdata',['cleanup_target_nst_data',['../namespacesurface__target__data.html#a7579bed4bee3e50b057b913f9f08f391',1,'surface_target_data']]], + ['cleanup_5ftarget_5fsfc_5fdata',['cleanup_target_sfc_data',['../namespacesurface__target__data.html#ae691e61976b33b8d07f166e3297cf7f1',1,'surface_target_data']]], + ['cleanup_5fthomp_5fmp_5fclimo_5finput_5fdata',['cleanup_thomp_mp_climo_input_data',['../namespacethompson__mp__climo__data.html#a50ac430a78518b0963e23517cba243bb',1,'thompson_mp_climo_data']]], + ['compute_5fzh',['compute_zh',['../namespaceatmosphere.html#a70694e8d634701fdfea61d171f1204e3',1,'atmosphere']]], + ['convert_5fomega',['convert_omega',['../namespacegrib2__util.html#ab6b929a42b20e3a5dbef3b30024f1c43',1,'grib2_util']]], + ['convert_5fwinds_5fto_5fuv',['convert_winds_to_uv',['../namespaceatmosphere.html#ad92390d2e15b6f6ae0fed71aec81d59b',1,'atmosphere']]], + ['convert_5fwinds_5fto_5fxyz',['convert_winds_to_xyz',['../namespaceatm__input__data.html#a538a770a36fda1271efee63a5e29a510',1,'atm_input_data']]], + ['create_5fatm_5fb4adj_5fesmf_5ffields',['create_atm_b4adj_esmf_fields',['../namespaceatmosphere.html#a67a8ac36ae3346e7697cc649ce6d7c8c',1,'atmosphere']]], + ['create_5fatm_5fesmf_5ffields',['create_atm_esmf_fields',['../namespaceatmosphere.html#a02995fb2860e5b1df218feea4a8d3534',1,'atmosphere']]], + ['create_5fnst_5fesmf_5ffields',['create_nst_esmf_fields',['../namespacesurface.html#a0072f75a8c94bd12bc0e84d392cec723',1,'surface']]], + ['create_5fstatic_5ffields',['create_static_fields',['../namespacestatic__data.html#aeb4ec10a3aa09ae6fae0d5fd4dad5ad6',1,'static_data']]], + ['create_5fsurface_5fesmf_5ffields',['create_surface_esmf_fields',['../namespacesurface.html#a0eeed6bc8807704d095c5356d5026518',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_2.html b/ver-1.11.0/chgres_cube/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_2.js b/ver-1.11.0/chgres_cube/search/functions_2.js new file mode 100644 index 000000000..30a1cb2e6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['define_5finput_5fgrid',['define_input_grid',['../namespacemodel__grid.html#a36c0033acb111e2ec5c8132ed0fa0199',1,'model_grid']]], + ['define_5finput_5fgrid_5fgaussian',['define_input_grid_gaussian',['../namespacemodel__grid.html#a38100494e868340aac0afcac251e7ff4',1,'model_grid']]], + ['define_5finput_5fgrid_5fgrib2',['define_input_grid_grib2',['../namespacemodel__grid.html#a86f8d9a686ecf5e7170e441a7e41a641',1,'model_grid']]], + ['define_5finput_5fgrid_5fmosaic',['define_input_grid_mosaic',['../namespacemodel__grid.html#a805584a781fcc2ac74c551e72c787a05',1,'model_grid']]], + ['define_5ftarget_5fgrid',['define_target_grid',['../namespacemodel__grid.html#a0d0ed99ee8dd8353bf13ab47074eebb1',1,'model_grid']]], + ['dint2p',['DINT2P',['../utils_8F90.html#a5d8a15ebaf1abc477eb75a9316da19e6',1,'utilities']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_3.html b/ver-1.11.0/chgres_cube/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_3.js b/ver-1.11.0/chgres_cube/search/functions_3.js new file mode 100644 index 000000000..7594e2896 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_5fhandler',['error_handler',['../utils_8F90.html#a880983c1fd6c2efccdca6191fce95d31',1,'utilities']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_4.html b/ver-1.11.0/chgres_cube/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_4.js b/ver-1.11.0/chgres_cube/search/functions_4.js new file mode 100644 index 000000000..4d1f59454 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fpvsnew',['fpvsnew',['../namespacegrib2__util.html#a014ba8acc9b41fc25ccb40c9bd2900d3',1,'grib2_util']]], + ['frh2o',['FRH2O',['../namespacesurface.html#abcfbbcd2986ac73e0d883b2441fe94a3',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_5.html b/ver-1.11.0/chgres_cube/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_5.js b/ver-1.11.0/chgres_cube/search/functions_5.js new file mode 100644 index 000000000..907d3099c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['gdt_5fto_5fgds',['gdt_to_gds',['../namespacemodel__grid.html#ac6b71e97768b663de2fcce75426b499e',1,'model_grid']]], + ['get_5fmodel_5flatlons',['get_model_latlons',['../namespacemodel__grid.html#aa0556c652763c8b6310abfee5bb48032',1,'model_grid']]], + ['get_5fmodel_5fmask_5fterrain',['get_model_mask_terrain',['../namespacemodel__grid.html#a4860abf33f2f55ecd58fb5728df2c455',1,'model_grid']]], + ['get_5fstatic_5ffields',['get_static_fields',['../namespacestatic__data.html#aa310502eb6a2d97f82fb41196b00f4d7',1,'static_data']]], + ['get_5fvar_5fcond',['get_var_cond',['../namespaceprogram__setup.html#aa1aa0e7ed8df76be6db0a0ab964756f3',1,'program_setup']]], + ['gettemp',['gettemp',['../wam__climo__data_8f90.html#a6ccdccbc94bdcfab5909907dd077f6dc',1,'wam_climo_data.f90']]], + ['ghp8',['ghp8',['../wam__climo__data_8f90.html#a00ec74c638da395fd3976b33720207a6',1,'wam_climo_data.f90']]], + ['gridrot',['gridrot',['../namespaceatm__input__data.html#a955d043afabaa621cebd6e0bb1851f48',1,'atm_input_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_6.html b/ver-1.11.0/chgres_cube/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_6.js b/ver-1.11.0/chgres_cube/search/functions_6.js new file mode 100644 index 000000000..024ebf6d2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['handle_5fgrib_5ferror',['handle_grib_error',['../utils_8F90.html#abe5a05b2f04a8f449d7fd380ec3e1e8e',1,'utilities']]], + ['horiz_5finterp_5fthomp_5fmp_5fclimo',['horiz_interp_thomp_mp_climo',['../namespaceatmosphere.html#a38c65833316fd634cb4c3a20daf1d42a',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_7.html b/ver-1.11.0/chgres_cube/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_7.js b/ver-1.11.0/chgres_cube/search/functions_7.js new file mode 100644 index 000000000..9f9b81793 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ij_5fto_5fi_5fj',['ij_to_i_j',['../namespacesurface.html#a7a2257539e521c7e72bd2b3c76f72044',1,'surface']]], + ['init_5fatm_5fesmf_5ffields',['init_atm_esmf_fields',['../namespaceatm__input__data.html#a5f7d910189f475a311bcbaa9e9c0a400',1,'atm_input_data']]], + ['init_5fsfc_5fesmf_5ffields',['init_sfc_esmf_fields',['../sfc__input__data_8F90.html#a7c5bf6dd923917390b3eae8799d35557',1,'sfc_input_data']]], + ['interp',['interp',['../namespacesurface.html#ae8b708efb5c1abfda4a2efc48bef83dd',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_8.html b/ver-1.11.0/chgres_cube/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_8.js b/ver-1.11.0/chgres_cube/search/functions_8.js new file mode 100644 index 000000000..a2ee73dd4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['netcdf_5ferr',['netcdf_err',['../utils_8F90.html#a7de511c01f6bde6e69343d11aca654c9',1,'utilities']]], + ['newpr1',['newpr1',['../namespaceatmosphere.html#a449da9a0abe3032a16345f130761b9d2',1,'atmosphere']]], + ['newps',['newps',['../namespaceatmosphere.html#a5b202a3c172ff40138e91a1bf3194c75',1,'atmosphere']]], + ['nst_5fland_5ffill',['nst_land_fill',['../namespacesurface.html#a37509f4fa66fcf75ee97f82cb99927b9',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_9.html b/ver-1.11.0/chgres_cube/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_9.js b/ver-1.11.0/chgres_cube/search/functions_9.js new file mode 100644 index 000000000..6d765f515 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qc_5fcheck',['qc_check',['../namespacesurface.html#a232ef616dae3429cdd609b34ed59dcb1',1,'surface']]], + ['quicksort',['quicksort',['../utils_8F90.html#a3b3f015cc68280f8c0f524b797b56842',1,'utilities']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_a.html b/ver-1.11.0/chgres_cube/search/functions_a.html new file mode 100644 index 000000000..3958eb7b9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_a.js b/ver-1.11.0/chgres_cube/search/functions_a.js new file mode 100644 index 000000000..2b723b105 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_a.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['read_5ffv3_5fgrid_5fdata_5fnetcdf',['READ_FV3_GRID_DATA_NETCDF',['../sfc__input__data_8F90.html#a6c873511baf197c0f7766a28fc99c229',1,'sfc_input_data']]], + ['read_5fgrib_5fsoil',['read_grib_soil',['../sfc__input__data_8F90.html#aceae825b0d75b9702e89065ccec45ea9',1,'sfc_input_data']]], + ['read_5finput_5fatm_5fdata',['read_input_atm_data',['../namespaceatm__input__data.html#ae81beb7035413010a27c9cd30c1599ab',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgaussian_5fnemsio_5ffile',['read_input_atm_gaussian_nemsio_file',['../namespaceatm__input__data.html#a5036243fe27266911f42b4b3284e0be1',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgaussian_5fnetcdf_5ffile',['read_input_atm_gaussian_netcdf_file',['../namespaceatm__input__data.html#af0df614e570fb2d35809a47db2db9d77',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgfs_5fgaussian_5fnemsio_5ffile',['read_input_atm_gfs_gaussian_nemsio_file',['../namespaceatm__input__data.html#ac3d51a1e727ec4409ef6dc9470def416',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgfs_5fsigio_5ffile',['read_input_atm_gfs_sigio_file',['../namespaceatm__input__data.html#a50775c3b526de0bb83059bebae880268',1,'atm_input_data']]], + ['read_5finput_5fatm_5fgrib2_5ffile',['read_input_atm_grib2_file',['../namespaceatm__input__data.html#a48943f2cba1d578cd67bc1c975e33c09',1,'atm_input_data']]], + ['read_5finput_5fatm_5frestart_5ffile',['read_input_atm_restart_file',['../namespaceatm__input__data.html#ad9722b22f0f8e0cbc6ab9bf8f1769399',1,'atm_input_data']]], + ['read_5finput_5fatm_5ftiled_5fhistory_5ffile',['read_input_atm_tiled_history_file',['../namespaceatm__input__data.html#aa7e9e23821a9f812b7739efc01bb47fe',1,'atm_input_data']]], + ['read_5finput_5fnst_5fdata',['read_input_nst_data',['../nst__input__data_8F90.html#a9168217eeeec07d66ac22b4198460e6a',1,'nst_input_data']]], + ['read_5finput_5fnst_5fnemsio_5ffile',['read_input_nst_nemsio_file',['../nst__input__data_8F90.html#a5549881aea4aa677398ef80c2c23b411',1,'nst_input_data']]], + ['read_5finput_5fnst_5fnetcdf_5ffile',['read_input_nst_netcdf_file',['../nst__input__data_8F90.html#a267924ce4aa91a7a68aae0608deae551',1,'nst_input_data']]], + ['read_5finput_5fsfc_5fdata',['read_input_sfc_data',['../sfc__input__data_8F90.html#ae01d5f3faabaa3265a9a7b58c5f293a6',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgaussian_5fnemsio_5ffile',['read_input_sfc_gaussian_nemsio_file',['../sfc__input__data_8F90.html#ae79d45d8048e52cf743e33c2a4db210f',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgfs_5fgaussian_5fnemsio_5ffile',['read_input_sfc_gfs_gaussian_nemsio_file',['../sfc__input__data_8F90.html#a8f877b90f19963141ee962b3889571ab',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgfs_5fsfcio_5ffile',['read_input_sfc_gfs_sfcio_file',['../sfc__input__data_8F90.html#af7e2da3d0544e1475a35a7693b98281f',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fgrib2_5ffile',['read_input_sfc_grib2_file',['../sfc__input__data_8F90.html#aeb5cae5fb449f7c79de2b3e7739175b3',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5fnetcdf_5ffile',['read_input_sfc_netcdf_file',['../sfc__input__data_8F90.html#a7ce3b47776d4a2bbf4bfb732fa3780a2',1,'sfc_input_data']]], + ['read_5finput_5fsfc_5frestart_5ffile',['read_input_sfc_restart_file',['../sfc__input__data_8F90.html#a48402d66b80ad2a80418be526eadabc5',1,'sfc_input_data']]], + ['read_5fsetup_5fnamelist',['read_setup_namelist',['../namespaceprogram__setup.html#a34de94770b10be0f4975b63813ddbe8d',1,'program_setup']]], + ['read_5fstatic_5ffile',['read_static_file',['../namespacestatic__data.html#aff2a5a5fa372950e606431e9ee777e65',1,'static_data']]], + ['read_5fthomp_5fmp_5fclimo_5fdata',['read_thomp_mp_climo_data',['../namespacethompson__mp__climo__data.html#a92a071650b2c4368ae233ac8b85783b4',1,'thompson_mp_climo_data']]], + ['read_5fvarmap',['read_varmap',['../namespaceprogram__setup.html#a8cb781f9243350c2658fc2a74a0bfe82',1,'program_setup']]], + ['read_5fvcoord_5finfo',['read_vcoord_info',['../namespaceatmosphere.html#a599eba98c80c6385ff414a999f90e58c',1,'atmosphere']]], + ['read_5fwinds',['read_winds',['../namespaceatm__input__data.html#a545b9ea8ac234861f75db0313b3e151e',1,'atm_input_data']]], + ['regrid_5fmany',['regrid_many',['../namespacesurface.html#a5c687bf7da96c3c512b13a6a7eab4b99',1,'surface']]], + ['rescale_5fsoil_5fmoisture',['rescale_soil_moisture',['../namespacesurface.html#a63fb2a0ed00bdec5e4f0b3360a5709a6',1,'surface']]], + ['rh2spfh',['rh2spfh',['../namespacegrib2__util.html#ab4a2b2171e318712bd819dffa1648fa0',1,'grib2_util']]], + ['rh2spfh_5fgfs',['rh2spfh_gfs',['../namespacegrib2__util.html#ac4d873e3a137ec2abcaeb7f735b021ae',1,'grib2_util']]], + ['roughness',['roughness',['../namespacesurface.html#ab18f8cebd46379b7b81a69829326eed0',1,'surface']]], + ['rsearch',['RSEARCH',['../namespaceatmosphere.html#a1793890ef3e504c7c6cadb96e11f70d5',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_b.html b/ver-1.11.0/chgres_cube/search/functions_b.html new file mode 100644 index 000000000..b99b702d2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_b.js b/ver-1.11.0/chgres_cube/search/functions_b.js new file mode 100644 index 000000000..24cf5d94b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['search',['search',['../namespacesearch__util.html#a4a511a55b3ce58a03cc053d19cecc458',1,'search_util']]], + ['search_5fmany',['search_many',['../namespacesurface.html#afc2c63e91ef5af4cefca13d9673d4acc',1,'surface']]], + ['sst_5fguess',['sst_guess',['../namespacesearch__util.html#a5f5cd2507060bc834d1fd8a08a4c31ba',1,'search_util']]], + ['surface_5fdriver',['surface_driver',['../namespacesurface.html#a0707121ff6af9350608125b1750e32f5',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_c.html b/ver-1.11.0/chgres_cube/search/functions_c.html new file mode 100644 index 000000000..3a33d874d --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_c.js b/ver-1.11.0/chgres_cube/search/functions_c.js new file mode 100644 index 000000000..dfa445c56 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['terp3',['TERP3',['../namespaceatmosphere.html#a2ae6fde0c278c9987858325248a2f3b5',1,'atmosphere']]], + ['to_5flower',['to_lower',['../utils_8F90.html#a8a6f35583bd6c103031a9328be4c7b6a',1,'utilities']]], + ['to_5fupper',['to_upper',['../utils_8F90.html#ae164531a53081bf0e1bc30579c8ba1b1',1,'utilities']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_d.html b/ver-1.11.0/chgres_cube/search/functions_d.html new file mode 100644 index 000000000..31b75b889 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_d.js b/ver-1.11.0/chgres_cube/search/functions_d.js new file mode 100644 index 000000000..e077804b7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vintg',['VINTG',['../namespaceatmosphere.html#a75294095ace0bcf1be8d215e5fdb5b23',1,'atmosphere']]], + ['vintg_5fthomp_5fmp_5fclimo',['VINTG_THOMP_MP_CLIMO',['../namespaceatmosphere.html#aa1c919a13ca76fbbb05dffce7a052c2a',1,'atmosphere']]], + ['vintg_5fwam',['VINTG_WAM',['../namespaceatmosphere.html#a8d9dc31ed0f13897f3f4b1b44777b0cf',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/functions_e.html b/ver-1.11.0/chgres_cube/search/functions_e.html new file mode 100644 index 000000000..cddb9bb58 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/functions_e.js b/ver-1.11.0/chgres_cube/search/functions_e.js new file mode 100644 index 000000000..ebf3e5fd5 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/functions_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['write_5ffv3_5fatm_5fbndy_5fdata_5fnetcdf',['write_fv3_atm_bndy_data_netcdf',['../write__data_8F90.html#aa38f7cbcabbd61e0fddf1ffda9e2b678',1,'write_data']]], + ['write_5ffv3_5fatm_5fdata_5fnetcdf',['write_fv3_atm_data_netcdf',['../write__data_8F90.html#a05d382fbbf34728dc4661872a2ba66a1',1,'write_data']]], + ['write_5ffv3_5fatm_5fheader_5fnetcdf',['write_fv3_atm_header_netcdf',['../write__data_8F90.html#a5a40bf4c58b659fd52bd46320caba2d8',1,'write_data']]], + ['write_5ffv3_5fsfc_5fdata_5fnetcdf',['write_fv3_sfc_data_netcdf',['../write__data_8F90.html#ac9b8e34a9a55d39277651a218d41b321',1,'write_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/mag_sel.png b/ver-1.11.0/chgres_cube/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/search/namespaces_0.html b/ver-1.11.0/chgres_cube/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_0.js b/ver-1.11.0/chgres_cube/search/namespaces_0.js new file mode 100644 index 000000000..60c20c0e2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['atm_5finput_5fdata',['atm_input_data',['../namespaceatm__input__data.html',1,'']]], + ['atmosphere',['atmosphere',['../namespaceatmosphere.html',1,'']]], + ['atmosphere_5ftarget_5fdata',['atmosphere_target_data',['../namespaceatmosphere__target__data.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/namespaces_1.html b/ver-1.11.0/chgres_cube/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_1.js b/ver-1.11.0/chgres_cube/search/namespaces_1.js new file mode 100644 index 000000000..05ca05f97 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grib2_5futil',['grib2_util',['../namespacegrib2__util.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/namespaces_2.html b/ver-1.11.0/chgres_cube/search/namespaces_2.html new file mode 100644 index 000000000..0a9167460 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_2.js b/ver-1.11.0/chgres_cube/search/namespaces_2.js new file mode 100644 index 000000000..e87d90956 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/namespaces_3.html b/ver-1.11.0/chgres_cube/search/namespaces_3.html new file mode 100644 index 000000000..9c35eb2f9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_3.js b/ver-1.11.0/chgres_cube/search/namespaces_3.js new file mode 100644 index 000000000..67e7696ea --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/namespaces_4.html b/ver-1.11.0/chgres_cube/search/namespaces_4.html new file mode 100644 index 000000000..381233203 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_4.js b/ver-1.11.0/chgres_cube/search/namespaces_4.js new file mode 100644 index 000000000..edeb1ecde --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['search_5futil',['search_util',['../namespacesearch__util.html',1,'']]], + ['static_5fdata',['static_data',['../namespacestatic__data.html',1,'']]], + ['surface',['surface',['../namespacesurface.html',1,'']]], + ['surface_5ftarget_5fdata',['surface_target_data',['../namespacesurface__target__data.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/namespaces_5.html b/ver-1.11.0/chgres_cube/search/namespaces_5.html new file mode 100644 index 000000000..46ddb254f --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/namespaces_5.js b/ver-1.11.0/chgres_cube/search/namespaces_5.js new file mode 100644 index 000000000..088cca0d2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/namespaces_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['thompson_5fmp_5fclimo_5fdata',['thompson_mp_climo_data',['../namespacethompson__mp__climo__data.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/nomatches.html b/ver-1.11.0/chgres_cube/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/ver-1.11.0/chgres_cube/search/pages_0.html b/ver-1.11.0/chgres_cube/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/pages_0.js b/ver-1.11.0/chgres_cube/search/pages_0.js new file mode 100644 index 000000000..f45c47160 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['chgres_5fcube',['chgres_cube',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/search.css b/ver-1.11.0/chgres_cube/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/chgres_cube/search/search.js b/ver-1.11.0/chgres_cube/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/search/search_r.png b/ver-1.11.0/chgres_cube/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_0.js b/ver-1.11.0/chgres_cube/search/variables_0.js new file mode 100644 index 000000000..9f8c5ddac --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['alnsf_5ftarget_5fgrid',['alnsf_target_grid',['../namespacestatic__data.html#a75974bdb40579172b8c79eba07ac9936',1,'static_data']]], + ['alnwf_5ftarget_5fgrid',['alnwf_target_grid',['../namespacestatic__data.html#ab38fa25b331399e5a4fffe055d7a5323',1,'static_data']]], + ['alvsf_5ftarget_5fgrid',['alvsf_target_grid',['../namespacestatic__data.html#a6ac14b1f23dd4cdc858efbb48afd556f',1,'static_data']]], + ['alvwf_5ftarget_5fgrid',['alvwf_target_grid',['../namespacestatic__data.html#a1f4db719e9b6b3247600b7d3213e89b4',1,'static_data']]], + ['atm_5fcore_5ffiles_5finput_5fgrid',['atm_core_files_input_grid',['../namespaceprogram__setup.html#a4ae247bd098f03d56ced018458e8aa80',1,'program_setup']]], + ['atm_5ffiles_5finput_5fgrid',['atm_files_input_grid',['../namespaceprogram__setup.html#ac207b427c9a9436611682217ba8ea49e',1,'program_setup']]], + ['atm_5ftracer_5ffiles_5finput_5fgrid',['atm_tracer_files_input_grid',['../namespaceprogram__setup.html#a238a812773da9bfe54964f40e8529891',1,'program_setup']]], + ['atm_5fweight_5ffile',['atm_weight_file',['../namespaceprogram__setup.html#ad0fadfbe4232b55e05a87f0044193290',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_1.html b/ver-1.11.0/chgres_cube/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_1.js b/ver-1.11.0/chgres_cube/search/variables_1.js new file mode 100644 index 000000000..4bb684d1e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bb_5ftarget',['bb_target',['../namespaceprogram__setup.html#ab72166ef093181118b706b0c8d9680da',1,'program_setup']]], + ['blim',['blim',['../namespacesurface.html#a8504e69c586b0d22fd77f08056996bec',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_10.html b/ver-1.11.0/chgres_cube/search/variables_10.html new file mode 100644 index 000000000..b62b717e9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_10.js b/ver-1.11.0/chgres_cube/search/variables_10.js new file mode 100644 index 000000000..cfa406769 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['read_5ffrom_5finput',['read_from_input',['../namespaceprogram__setup.html#a1ffec9219f0a5e00b4c285f62904eca7',1,'program_setup']]], + ['refsmc_5finput',['refsmc_input',['../namespaceprogram__setup.html#a25ee473921ebbc73e186a538b4592073',1,'program_setup']]], + ['refsmc_5ftarget',['refsmc_target',['../namespaceprogram__setup.html#a491b74f2a85be77f3c0c2051044f0aa6',1,'program_setup']]], + ['regional',['regional',['../namespaceprogram__setup.html#a46f3ccd75736f06244e9110197e424f2',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_11.html b/ver-1.11.0/chgres_cube/search/variables_11.html new file mode 100644 index 000000000..2ce8561a1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_11.js b/ver-1.11.0/chgres_cube/search/variables_11.js new file mode 100644 index 000000000..8f8d55379 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_11.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['satpsi_5ftarget',['satpsi_target',['../namespaceprogram__setup.html#acbfd03fbdfd369b859cd851342b024da',1,'program_setup']]], + ['seaice_5fdepth_5finput_5fgrid',['seaice_depth_input_grid',['../sfc__input__data_8F90.html#a5e40ecb3e2fd650812e4a94afe890291',1,'sfc_input_data']]], + ['seaice_5fdepth_5ftarget_5fgrid',['seaice_depth_target_grid',['../namespacesurface__target__data.html#a87ef0089b12975b9996f9f2f195a8fc4',1,'surface_target_data']]], + ['seaice_5ffract_5finput_5fgrid',['seaice_fract_input_grid',['../sfc__input__data_8F90.html#aaf0bae249b613e7274c0afae94e8bf37',1,'sfc_input_data']]], + ['seaice_5ffract_5ftarget_5fgrid',['seaice_fract_target_grid',['../namespacesurface__target__data.html#a8619aa99b6c5eef897f7d3444a7aef28',1,'surface_target_data']]], + ['seaice_5fskin_5ftemp_5finput_5fgrid',['seaice_skin_temp_input_grid',['../sfc__input__data_8F90.html#a5fe492be5389928913ee7e160d519ec9',1,'sfc_input_data']]], + ['seaice_5fskin_5ftemp_5ftarget_5fgrid',['seaice_skin_temp_target_grid',['../namespacesurface__target__data.html#a931f6effdfab16836f7ab66c7c03e364',1,'surface_target_data']]], + ['seamask_5ftarget_5fgrid',['seamask_target_grid',['../namespacemodel__grid.html#ac603676e21495133afd160bf36c70068',1,'model_grid']]], + ['sfc_5ffiles_5finput_5fgrid',['sfc_files_input_grid',['../namespaceprogram__setup.html#a1ac8f9f39991ff6eda54d9189661900d',1,'program_setup']]], + ['skin_5ftemp_5finput_5fgrid',['skin_temp_input_grid',['../sfc__input__data_8F90.html#a61be4121ae93ad25bed1e3d6368f4bd6',1,'sfc_input_data']]], + ['skin_5ftemp_5ftarget_5fgrid',['skin_temp_target_grid',['../namespacesurface__target__data.html#a07844c6c9c70781989b6e643623bcb04',1,'surface_target_data']]], + ['slevs',['slevs',['../namespaceatm__input__data.html#ae4e241c9343c9c48bff785779aaa579e',1,'atm_input_data']]], + ['slope_5ftype_5ftarget_5fgrid',['slope_type_target_grid',['../namespacestatic__data.html#a5ed8a6491553f66888bccd0c1e0b91bb',1,'static_data']]], + ['snow_5fdepth_5finput_5fgrid',['snow_depth_input_grid',['../sfc__input__data_8F90.html#aa50bd77b69a20bc2a23f7b4714f7f169',1,'sfc_input_data']]], + ['snow_5fdepth_5ftarget_5fgrid',['snow_depth_target_grid',['../namespacesurface__target__data.html#a18d3f0577eca62f1d145e194ec36c56d',1,'surface_target_data']]], + ['snow_5fliq_5fequiv_5finput_5fgrid',['snow_liq_equiv_input_grid',['../sfc__input__data_8F90.html#a5f5ee0e7cc3c48412ec6fefb24af7b09',1,'sfc_input_data']]], + ['snow_5fliq_5fequiv_5ftarget_5fgrid',['snow_liq_equiv_target_grid',['../namespacesurface__target__data.html#abb85698100b0a90e0460f35cbe26d641',1,'surface_target_data']]], + ['soil_5ftemp_5finput_5fgrid',['soil_temp_input_grid',['../sfc__input__data_8F90.html#a0d70ca0aef86729f21896705948eb242',1,'sfc_input_data']]], + ['soil_5ftemp_5ftarget_5fgrid',['soil_temp_target_grid',['../namespacesurface__target__data.html#aeb82ec1225cbb734aa22a869599b7a0c',1,'surface_target_data']]], + ['soil_5ftype_5ffrom_5finput_5fgrid',['soil_type_from_input_grid',['../namespacesurface.html#a2150daf83b917a49662ed6473e8e5097',1,'surface']]], + ['soil_5ftype_5finput_5fgrid',['soil_type_input_grid',['../sfc__input__data_8F90.html#aadcca0688b8a6470902a0a1937ae3708',1,'sfc_input_data']]], + ['soil_5ftype_5ftarget_5fgrid',['soil_type_target_grid',['../namespacestatic__data.html#afeeddfcf73c80599aa773770314a0bd1',1,'static_data']]], + ['soilm_5fliq_5finput_5fgrid',['soilm_liq_input_grid',['../sfc__input__data_8F90.html#a2594e8fbd6c2228c7963b820c3446c3c',1,'sfc_input_data']]], + ['soilm_5fliq_5ftarget_5fgrid',['soilm_liq_target_grid',['../namespacesurface__target__data.html#a9000f8cf2d0c717846a6a2bfc3651e82',1,'surface_target_data']]], + ['soilm_5ftot_5finput_5fgrid',['soilm_tot_input_grid',['../sfc__input__data_8F90.html#a65a014a55a08e3e439ebe6ec238ac2cf',1,'sfc_input_data']]], + ['soilm_5ftot_5ftarget_5fgrid',['soilm_tot_target_grid',['../namespacesurface__target__data.html#a7a65fcefb1e2cd01cc934a3cd7c69e10',1,'surface_target_data']]], + ['sotyp_5ffrom_5fclimo',['sotyp_from_climo',['../namespaceprogram__setup.html#ad6b23f6d8cacb48240a2afd72ff1d5ef',1,'program_setup']]], + ['srflag_5finput_5fgrid',['srflag_input_grid',['../sfc__input__data_8F90.html#a08c0a47498901872edbdec10a8569c48',1,'sfc_input_data']]], + ['srflag_5ftarget_5fgrid',['srflag_target_grid',['../namespacesurface__target__data.html#ae1176ee763ee9dcec7878f8549bbf87b',1,'surface_target_data']]], + ['substrate_5ftemp_5ftarget_5fgrid',['substrate_temp_target_grid',['../namespacestatic__data.html#a4dfed22f54d51ff598ae12a208cb197c',1,'static_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_12.html b/ver-1.11.0/chgres_cube/search/variables_12.html new file mode 100644 index 000000000..bba5857f5 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_12.js b/ver-1.11.0/chgres_cube/search/variables_12.js new file mode 100644 index 000000000..1d2fb6d94 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_12.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['t2m_5finput_5fgrid',['t2m_input_grid',['../sfc__input__data_8F90.html#a19167890b3605aadb0bdb853cfbf5004',1,'sfc_input_data']]], + ['t2m_5ftarget_5fgrid',['t2m_target_grid',['../namespacesurface__target__data.html#a732de7ef3ee7ea52fafd47a7946caff2',1,'surface_target_data']]], + ['target_5fgrid',['target_grid',['../namespacemodel__grid.html#a85499183cbbb666cbabd138c77374fd9',1,'model_grid']]], + ['temp_5fb4adj_5ftarget_5fgrid',['temp_b4adj_target_grid',['../namespaceatmosphere.html#a55d40bda2f827e9ed21c40d4e676e85a',1,'atmosphere']]], + ['temp_5finput_5fgrid',['temp_input_grid',['../namespaceatm__input__data.html#a2fd9eb8eca479332cb88f6bec5bd2219',1,'atm_input_data']]], + ['temp_5ftarget_5fgrid',['temp_target_grid',['../namespaceatmosphere__target__data.html#aa39186f2a0ad85ae3f028b627da49b70',1,'atmosphere_target_data']]], + ['terrain_5ffrom_5finput_5fgrid',['terrain_from_input_grid',['../namespacesurface.html#ab770243d8fd686d14b4eaec335eb7b15',1,'surface']]], + ['terrain_5ffrom_5finput_5fgrid_5fland',['terrain_from_input_grid_land',['../namespacesurface.html#a6dde2acec84877a91162b4bcf795373e',1,'surface']]], + ['terrain_5finput_5fgrid',['terrain_input_grid',['../namespaceatm__input__data.html#a4fa1ba60b3ab9f4585eff220de7f7237',1,'atm_input_data']]], + ['terrain_5finterp_5fto_5ftarget_5fgrid',['terrain_interp_to_target_grid',['../namespaceatmosphere.html#a5f58f056700160a14d63f714f159d602',1,'atmosphere']]], + ['terrain_5ftarget_5fgrid',['terrain_target_grid',['../namespacemodel__grid.html#a82acb90fe22c5b4a5d27f95f1fe5a17a',1,'model_grid']]], + ['tg3_5ffrom_5fsoil',['tg3_from_soil',['../namespaceprogram__setup.html#a49d72c7fb6a118e7f558cb5543b76ccf',1,'program_setup']]], + ['thomp_5fmp_5fclimo_5ffile',['thomp_mp_climo_file',['../namespaceprogram__setup.html#a8712b252b9407a7e8034c78e1f61614c',1,'program_setup']]], + ['thomp_5fmp_5fclimo_5fgrid',['thomp_mp_climo_grid',['../namespacethompson__mp__climo__data.html#a425db5926a07c6a424bdf6b51a6bd8d2',1,'thompson_mp_climo_data']]], + ['thomp_5fpres_5fclimo_5fb4adj_5ftarget_5fgrid',['thomp_pres_climo_b4adj_target_grid',['../namespaceatmosphere.html#aafe6ca3fd7ee7dc74023c56c7e2f4e07',1,'atmosphere']]], + ['thomp_5fpres_5fclimo_5finput_5fgrid',['thomp_pres_climo_input_grid',['../namespacethompson__mp__climo__data.html#a8e3f63f7487a4a397dec4e425c76c46b',1,'thompson_mp_climo_data']]], + ['tiles_5ftarget_5fgrid',['tiles_target_grid',['../namespacemodel__grid.html#ad41e7ee2c45f8ee4004c836433b715eb',1,'model_grid']]], + ['tprcp_5finput_5fgrid',['tprcp_input_grid',['../sfc__input__data_8F90.html#ab188728c07383d49c120992562760799',1,'sfc_input_data']]], + ['tprcp_5ftarget_5fgrid',['tprcp_target_grid',['../namespacesurface__target__data.html#a62b810f8a70f347404549cbb4b1f8c12',1,'surface_target_data']]], + ['tracers',['tracers',['../namespaceprogram__setup.html#a4e934ac801fd213f8f422e5e9bb83568',1,'program_setup']]], + ['tracers_5fb4adj_5ftarget_5fgrid',['tracers_b4adj_target_grid',['../namespaceatmosphere.html#ad1b787f0c8c092265db64ea501ee1015',1,'atmosphere']]], + ['tracers_5finput',['tracers_input',['../namespaceprogram__setup.html#ac4c19c8b8a7b17c398fa07ac85b31546',1,'program_setup']]], + ['tracers_5finput_5fgrid',['tracers_input_grid',['../namespaceatm__input__data.html#a756505eb6868536f71558fdbb1c4fb77',1,'atm_input_data']]], + ['tracers_5ftarget_5fgrid',['tracers_target_grid',['../namespaceatmosphere__target__data.html#aa49b6bf6d3ecc231d11a3937180c785a',1,'atmosphere_target_data']]], + ['tref_5finput_5fgrid',['tref_input_grid',['../nst__input__data_8F90.html#af09bdba948e5e05afd3683082bf3cc84',1,'nst_input_data']]], + ['tref_5ftarget_5fgrid',['tref_target_grid',['../namespacesurface__target__data.html#a371c77a5af72827af0e3796ca8ab9d6a',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_13.html b/ver-1.11.0/chgres_cube/search/variables_13.html new file mode 100644 index 000000000..c92cbcc31 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_13.js b/ver-1.11.0/chgres_cube/search/variables_13.js new file mode 100644 index 000000000..a87eae872 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['u_5finput_5fgrid',['u_input_grid',['../namespaceatm__input__data.html#a51d4d356554796e850432af8ca90b1f0',1,'atm_input_data']]], + ['u_5fs_5ftarget_5fgrid',['u_s_target_grid',['../namespaceatmosphere__target__data.html#a28e45bf409f3c513650629f0286f74fd',1,'atmosphere_target_data']]], + ['u_5fw_5ftarget_5fgrid',['u_w_target_grid',['../namespaceatmosphere__target__data.html#a9ed417f30cf022e3d7e5e54a94b1a46d',1,'atmosphere_target_data']]], + ['use_5fthomp_5fmp_5fclimo',['use_thomp_mp_climo',['../namespaceprogram__setup.html#a6f53159282cadb12b9c881d901ce0699',1,'program_setup']]], + ['ustar_5finput_5fgrid',['ustar_input_grid',['../sfc__input__data_8F90.html#a453890953640dee513cca7294be9f464',1,'sfc_input_data']]], + ['ustar_5ftarget_5fgrid',['ustar_target_grid',['../namespacesurface__target__data.html#ac7b2ef2f989e875ac2b913152a29f746',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_14.html b/ver-1.11.0/chgres_cube/search/variables_14.html new file mode 100644 index 000000000..2c4620438 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_14.js b/ver-1.11.0/chgres_cube/search/variables_14.js new file mode 100644 index 000000000..28d34ad0c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_14.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['v_5finput_5fgrid',['v_input_grid',['../namespaceatm__input__data.html#aaa4196ca1738565c877f41c551bf581d',1,'atm_input_data']]], + ['v_5fs_5ftarget_5fgrid',['v_s_target_grid',['../namespaceatmosphere__target__data.html#a7367b2dd6da625d0e9a1a4f2d527b556',1,'atmosphere_target_data']]], + ['v_5fw_5ftarget_5fgrid',['v_w_target_grid',['../namespaceatmosphere__target__data.html#ae8edaa88be7b0f1954d64d53abd608d0',1,'atmosphere_target_data']]], + ['varmap_5ffile',['varmap_file',['../namespaceprogram__setup.html#abda8846e5ea6470172073df7ad528171',1,'program_setup']]], + ['vcoord_5ffile_5ftarget_5fgrid',['vcoord_file_target_grid',['../namespaceprogram__setup.html#af00a42c8dcd1d98cb4e152e5e7fdfe4c',1,'program_setup']]], + ['vcoord_5ftarget',['vcoord_target',['../namespaceatmosphere__target__data.html#afc618635f7de13c229fb2b45c1f5c89c',1,'atmosphere_target_data']]], + ['veg_5fgreenness_5finput_5fgrid',['veg_greenness_input_grid',['../sfc__input__data_8F90.html#ad69b49304a255ebe70c967c8de0d1c54',1,'sfc_input_data']]], + ['veg_5fgreenness_5ftarget_5fgrid',['veg_greenness_target_grid',['../namespacestatic__data.html#a0267b3ac33e89ea79114bcf20ba512b2',1,'static_data']]], + ['veg_5ftype_5finput_5fgrid',['veg_type_input_grid',['../sfc__input__data_8F90.html#aaa1eff819567c6129c994a6a3d3fbd6b',1,'sfc_input_data']]], + ['veg_5ftype_5flandice_5finput',['veg_type_landice_input',['../sfc__input__data_8F90.html#a9a51f66fdf4ab52fc5cc11618abb78bf',1,'sfc_input_data']]], + ['veg_5ftype_5flandice_5ftarget',['veg_type_landice_target',['../namespacesurface.html#a7aedcff2da595ef7aac69152edbdfa64',1,'surface']]], + ['veg_5ftype_5ftarget_5fgrid',['veg_type_target_grid',['../namespacestatic__data.html#a0bd92f571dd7db7c2893b1c08527988c',1,'static_data']]], + ['vgfrc_5ffrom_5fclimo',['vgfrc_from_climo',['../namespaceprogram__setup.html#a8caa284c1052597bed42205d1cac0339',1,'program_setup']]], + ['vgtyp_5ffrom_5fclimo',['vgtyp_from_climo',['../namespaceprogram__setup.html#ad85f196d847aa9ac1edaa07d4377cc72',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_15.html b/ver-1.11.0/chgres_cube/search/variables_15.html new file mode 100644 index 000000000..c86a5fd61 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_15.js b/ver-1.11.0/chgres_cube/search/variables_15.js new file mode 100644 index 000000000..5a166865c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_15.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['w_5f0_5finput_5fgrid',['w_0_input_grid',['../nst__input__data_8F90.html#a3ab40e05c65d1bd13d09e38ebff5561d',1,'nst_input_data']]], + ['w_5f0_5ftarget_5fgrid',['w_0_target_grid',['../namespacesurface__target__data.html#ab0bd1816adbd330a77f2b9b86e32524f',1,'surface_target_data']]], + ['w_5fd_5finput_5fgrid',['w_d_input_grid',['../nst__input__data_8F90.html#a9d681aef02753f1d9c4103b276bd7c66',1,'nst_input_data']]], + ['w_5fd_5ftarget_5fgrid',['w_d_target_grid',['../namespacesurface__target__data.html#a4d92daaf7872c21034cfadf2e2435914',1,'surface_target_data']]], + ['wam_5fcold_5fstart',['wam_cold_start',['../namespaceprogram__setup.html#a975eb110cebfc2491c4773cb53cd85c7',1,'program_setup']]], + ['wam_5fparm_5ffile',['wam_parm_file',['../namespaceprogram__setup.html#a497c9dd0f9c405c839bed2dfc491eafb',1,'program_setup']]], + ['wltsmc_5finput',['wltsmc_input',['../namespaceprogram__setup.html#a4a0cb4c7fd9eb848647e59a6d20d9fd6',1,'program_setup']]], + ['wltsmc_5ftarget',['wltsmc_target',['../namespaceprogram__setup.html#a40f629a2883fb6000377db3bc8088db5',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_16.html b/ver-1.11.0/chgres_cube/search/variables_16.html new file mode 100644 index 000000000..f6bc6a058 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_16.js b/ver-1.11.0/chgres_cube/search/variables_16.js new file mode 100644 index 000000000..c1a7b5c90 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_16.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['xs_5finput_5fgrid',['xs_input_grid',['../nst__input__data_8F90.html#a67c47ce1eaa1962c649944770966a45d',1,'nst_input_data']]], + ['xs_5ftarget_5fgrid',['xs_target_grid',['../namespacesurface__target__data.html#a3da203846228c49cb2a7c9d6b5c2a92b',1,'surface_target_data']]], + ['xt_5finput_5fgrid',['xt_input_grid',['../nst__input__data_8F90.html#a6f10c59080b31980a70314f529543bfb',1,'nst_input_data']]], + ['xt_5ftarget_5fgrid',['xt_target_grid',['../namespacesurface__target__data.html#af3be3ce9b803381efb01758c8272b134',1,'surface_target_data']]], + ['xtts_5finput_5fgrid',['xtts_input_grid',['../nst__input__data_8F90.html#acf675dbcc6d86c2a5fecdb4be702187a',1,'nst_input_data']]], + ['xtts_5ftarget_5fgrid',['xtts_target_grid',['../namespacesurface__target__data.html#a895d73cfc745f1d5ff9c9e1f1bb8617f',1,'surface_target_data']]], + ['xu_5finput_5fgrid',['xu_input_grid',['../nst__input__data_8F90.html#adf8e8b7cc61e016b5f7819f65abc3db7',1,'nst_input_data']]], + ['xu_5ftarget_5fgrid',['xu_target_grid',['../namespacesurface__target__data.html#a2afb5157b56617d1a1e699bfa9bdc4f4',1,'surface_target_data']]], + ['xv_5finput_5fgrid',['xv_input_grid',['../nst__input__data_8F90.html#a002dfc0d24fe130047e15a63ad4f7faa',1,'nst_input_data']]], + ['xv_5ftarget_5fgrid',['xv_target_grid',['../namespacesurface__target__data.html#aa5b820a5fee4dd98118efa5c384d5675',1,'surface_target_data']]], + ['xwind_5fb4adj_5ftarget_5fgrid',['xwind_b4adj_target_grid',['../namespaceatmosphere.html#a35d8e90b1cd9cf4fc607c8f6b99c7d7a',1,'atmosphere']]], + ['xwind_5finput_5fgrid',['xwind_input_grid',['../namespaceatm__input__data.html#a542b1160c5f872263938bacfee0b7361',1,'atm_input_data']]], + ['xwind_5fs_5ftarget_5fgrid',['xwind_s_target_grid',['../namespaceatmosphere.html#a60f36fb1ec55f30a6394f68c94b21f08',1,'atmosphere']]], + ['xwind_5ftarget_5fgrid',['xwind_target_grid',['../namespaceatmosphere.html#aa95032cc53053d34f7ab0f9c46f7714c',1,'atmosphere']]], + ['xwind_5fw_5ftarget_5fgrid',['xwind_w_target_grid',['../namespaceatmosphere.html#a8761cafd77d853c4452ab9778ab695c8',1,'atmosphere']]], + ['xz_5finput_5fgrid',['xz_input_grid',['../nst__input__data_8F90.html#a4087b03e710014ecfbd02f2ac6fe3884',1,'nst_input_data']]], + ['xz_5ftarget_5fgrid',['xz_target_grid',['../namespacesurface__target__data.html#a944da5499c9a548ac3978bf28454c1f4',1,'surface_target_data']]], + ['xzts_5finput_5fgrid',['xzts_input_grid',['../nst__input__data_8F90.html#a245e4c81e6916acea328ab18261a3ae6',1,'nst_input_data']]], + ['xzts_5ftarget_5fgrid',['xzts_target_grid',['../namespacesurface__target__data.html#aaa012f9e950d7aebf20e484e64f346bb',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_17.html b/ver-1.11.0/chgres_cube/search/variables_17.html new file mode 100644 index 000000000..6a71407b9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_17.js b/ver-1.11.0/chgres_cube/search/variables_17.js new file mode 100644 index 000000000..2e2e1b375 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_17.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ywind_5fb4adj_5ftarget_5fgrid',['ywind_b4adj_target_grid',['../namespaceatmosphere.html#a31ecc77bf689378ffc10a4c7024fcbb7',1,'atmosphere']]], + ['ywind_5finput_5fgrid',['ywind_input_grid',['../namespaceatm__input__data.html#aad0fa7d30aed9c516b94914bcd2d7801',1,'atm_input_data']]], + ['ywind_5fs_5ftarget_5fgrid',['ywind_s_target_grid',['../namespaceatmosphere.html#a0fcd709b3b967ed1ab970754d2eb25b8',1,'atmosphere']]], + ['ywind_5ftarget_5fgrid',['ywind_target_grid',['../namespaceatmosphere.html#a61fb3af50dce106e4bd077286d4d286c',1,'atmosphere']]], + ['ywind_5fw_5ftarget_5fgrid',['ywind_w_target_grid',['../namespaceatmosphere.html#a284051984d4daa275f0b9c1181389704',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_18.html b/ver-1.11.0/chgres_cube/search/variables_18.html new file mode 100644 index 000000000..9f6ccdde7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_18.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_18.js b/ver-1.11.0/chgres_cube/search/variables_18.js new file mode 100644 index 000000000..02060a506 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_18.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['z0_5finput_5fgrid',['z0_input_grid',['../sfc__input__data_8F90.html#a8561ff11eb9b94ccbd579995bb9967db',1,'sfc_input_data']]], + ['z0_5ftarget_5fgrid',['z0_target_grid',['../namespacesurface__target__data.html#a4886e70b112ad7918f5d824e6c344851',1,'surface_target_data']]], + ['z_5fc_5finput_5fgrid',['z_c_input_grid',['../nst__input__data_8F90.html#a023a1b4eda6033258064dfd4002abdb7',1,'nst_input_data']]], + ['z_5fc_5ftarget_5fgrid',['z_c_target_grid',['../namespacesurface__target__data.html#afb801817257c7643eb36c126d41b4174',1,'surface_target_data']]], + ['zh_5ftarget_5fgrid',['zh_target_grid',['../namespaceatmosphere__target__data.html#a9587b2eb709966d8651640ba404fb4da',1,'atmosphere_target_data']]], + ['zm_5finput_5fgrid',['zm_input_grid',['../nst__input__data_8F90.html#af9abe19d53fd1dfd64a2c84c3f85ef98',1,'nst_input_data']]], + ['zm_5ftarget_5fgrid',['zm_target_grid',['../namespacesurface__target__data.html#a73521e5c6e097524d2966e3fdf9e4d9c',1,'surface_target_data']]], + ['zwind_5fb4adj_5ftarget_5fgrid',['zwind_b4adj_target_grid',['../namespaceatmosphere.html#ab0b883e8e5652f0c85cc713f9c40c20f',1,'atmosphere']]], + ['zwind_5finput_5fgrid',['zwind_input_grid',['../namespaceatm__input__data.html#a34e522f4cea6c96e6a9bd2b89355494d',1,'atm_input_data']]], + ['zwind_5fs_5ftarget_5fgrid',['zwind_s_target_grid',['../namespaceatmosphere.html#a1893b4f281a29f1e0bfc5ba8c2100473',1,'atmosphere']]], + ['zwind_5ftarget_5fgrid',['zwind_target_grid',['../namespaceatmosphere.html#a01f02494455b087d89f35b7050952384',1,'atmosphere']]], + ['zwind_5fw_5ftarget_5fgrid',['zwind_w_target_grid',['../namespaceatmosphere.html#ac3eb0927b891b8f20681fc713f0b8061',1,'atmosphere']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_2.html b/ver-1.11.0/chgres_cube/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_2.js b/ver-1.11.0/chgres_cube/search/variables_2.js new file mode 100644 index 000000000..d346266cb --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_2.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['c_5f0_5finput_5fgrid',['c_0_input_grid',['../nst__input__data_8F90.html#a51a9411ad2bf39e64bfb86e80e5d0192',1,'nst_input_data']]], + ['c_5f0_5ftarget_5fgrid',['c_0_target_grid',['../namespacesurface__target__data.html#a657e74c6e004cf9e07531fe00dca2a13',1,'surface_target_data']]], + ['c_5fd_5finput_5fgrid',['c_d_input_grid',['../nst__input__data_8F90.html#af934359a24245374fc4e9ded1d7a6986',1,'nst_input_data']]], + ['c_5fd_5ftarget_5fgrid',['c_d_target_grid',['../namespacesurface__target__data.html#adce56c4dec7394d858591d80bf4a870e',1,'surface_target_data']]], + ['canopy_5fmc_5finput_5fgrid',['canopy_mc_input_grid',['../sfc__input__data_8F90.html#ac0e9f9bb04765ba7f0494bad423a432d',1,'sfc_input_data']]], + ['canopy_5fmc_5ftarget_5fgrid',['canopy_mc_target_grid',['../namespacesurface__target__data.html#a563521ef40680a2abec0d24ca15c11a9',1,'surface_target_data']]], + ['chgres_5fvar_5fnames',['chgres_var_names',['../namespaceprogram__setup.html#a774028ea61ef16c070de132942d132e0',1,'program_setup']]], + ['convert_5fatm',['convert_atm',['../namespaceprogram__setup.html#acbdcf36483fb5f4df0671b0c0ea7fb56',1,'program_setup']]], + ['convert_5fnst',['convert_nst',['../namespaceprogram__setup.html#aecb79f4fe5bc6e738cde100c9e2aa654',1,'program_setup']]], + ['convert_5fsfc',['convert_sfc',['../namespaceprogram__setup.html#a9976c028dd266aeafe391a15c93c69aa',1,'program_setup']]], + ['cres_5ftarget_5fgrid',['cres_target_grid',['../namespaceprogram__setup.html#afb1a0aace6f3f9dedaf8a53b4847f41f',1,'program_setup']]], + ['cycle_5fday',['cycle_day',['../namespaceprogram__setup.html#aaf0e825f9aa8cffe8c0035079ac12bb0',1,'program_setup']]], + ['cycle_5fhour',['cycle_hour',['../namespaceprogram__setup.html#ac5f0577071c1c98ce380d51b397bffbe',1,'program_setup']]], + ['cycle_5fmon',['cycle_mon',['../namespaceprogram__setup.html#a98f420b05c47203e45300d1a65d948e6',1,'program_setup']]], + ['cycle_5fyear',['cycle_year',['../namespaceprogram__setup.html#aff95ceb3ac2eb7fb6809acdbb75771dd',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_3.html b/ver-1.11.0/chgres_cube/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_3.js b/ver-1.11.0/chgres_cube/search/variables_3.js new file mode 100644 index 000000000..14e54edf4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['d_5fconv_5finput_5fgrid',['d_conv_input_grid',['../nst__input__data_8F90.html#abb2ede9bd20773beb48375d47a63de97',1,'nst_input_data']]], + ['d_5fconv_5ftarget_5fgrid',['d_conv_target_grid',['../namespacesurface__target__data.html#a9dae2d4c09b0786528422bac68e26cff',1,'surface_target_data']]], + ['data_5fdir_5finput_5fgrid',['data_dir_input_grid',['../namespaceprogram__setup.html#ad2880ceb89e38d54187a66b001fa783b',1,'program_setup']]], + ['delp_5ftarget_5fgrid',['delp_target_grid',['../namespaceatmosphere__target__data.html#ad2b54e148600b9347a98a105640be5ed',1,'atmosphere_target_data']]], + ['dpres_5finput_5fgrid',['dpres_input_grid',['../namespaceatm__input__data.html#a95498f5c7bceb0be3f4935f54c19800a',1,'atm_input_data']]], + ['drysmc_5finput',['drysmc_input',['../namespaceprogram__setup.html#a18f1a7322646b504db970b47e131e42c',1,'program_setup']]], + ['drysmc_5ftarget',['drysmc_target',['../namespaceprogram__setup.html#abcd1bcc5c560893e6524aff26bbb54a4',1,'program_setup']]], + ['dt_5fcool_5finput_5fgrid',['dt_cool_input_grid',['../nst__input__data_8F90.html#a6c2b098be33b3a36323db2e866535cb0',1,'nst_input_data']]], + ['dt_5fcool_5ftarget_5fgrid',['dt_cool_target_grid',['../namespacesurface__target__data.html#aab2bffb07c245bb48b915825c47c6538',1,'surface_target_data']]], + ['dzdt_5fb4adj_5ftarget_5fgrid',['dzdt_b4adj_target_grid',['../namespaceatmosphere.html#aa2ebcdf275c5929227a4ab39e5580b34',1,'atmosphere']]], + ['dzdt_5finput_5fgrid',['dzdt_input_grid',['../namespaceatm__input__data.html#a56de20f783cf67f2ce935c72c6df08a2',1,'atm_input_data']]], + ['dzdt_5ftarget_5fgrid',['dzdt_target_grid',['../namespaceatmosphere__target__data.html#a73a8de0a94f2eb3bcbc7f21da0f990f2',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_4.html b/ver-1.11.0/chgres_cube/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_4.js b/ver-1.11.0/chgres_cube/search/variables_4.js new file mode 100644 index 000000000..6e39e9f88 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['external_5fmodel',['external_model',['../namespaceprogram__setup.html#aeb876c8fe55456458771ff3cbc86ad14',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_5.html b/ver-1.11.0/chgres_cube/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_5.js b/ver-1.11.0/chgres_cube/search/variables_5.js new file mode 100644 index 000000000..7606853ff --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_5.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['f10m_5finput_5fgrid',['f10m_input_grid',['../sfc__input__data_8F90.html#a4eac4f508f9b4236b0b9e0912188b387',1,'sfc_input_data']]], + ['f10m_5ftarget_5fgrid',['f10m_target_grid',['../namespacesurface__target__data.html#aa90c1ec2d09dd77b23744a45c762d63c',1,'surface_target_data']]], + ['facsf_5ftarget_5fgrid',['facsf_target_grid',['../namespacestatic__data.html#a8893a2723547f5bcc8e2b5b609ec9f0c',1,'static_data']]], + ['facwf_5ftarget_5fgrid',['facwf_target_grid',['../namespacestatic__data.html#a8ad3327f9ff91d1bbf5d28d375303f49',1,'static_data']]], + ['ffmm_5finput_5fgrid',['ffmm_input_grid',['../sfc__input__data_8F90.html#ade0151e6fbd7aaf9c9241209d8c5664e',1,'sfc_input_data']]], + ['ffmm_5ftarget_5fgrid',['ffmm_target_grid',['../namespacesurface__target__data.html#a6a65acd6b187aeee89ef1493f19736c7',1,'surface_target_data']]], + ['field_5fvar_5fnames',['field_var_names',['../namespaceprogram__setup.html#a628f7be5aa35f0a20cd4e84598bfa7e7',1,'program_setup']]], + ['fix_5fdir_5ftarget_5fgrid',['fix_dir_target_grid',['../namespaceprogram__setup.html#ad68e3574b23454ea791501813c6063f7',1,'program_setup']]], + ['frz_5fh2o',['frz_h2o',['../namespacesurface.html#a38ac050f3afcffb171ecaca67f4338c6',1,'surface']]], + ['frz_5fice',['frz_ice',['../namespacesurface.html#a8c9df7d4a32c856503c625212b2f2fe4',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_6.html b/ver-1.11.0/chgres_cube/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_6.js b/ver-1.11.0/chgres_cube/search/variables_6.js new file mode 100644 index 000000000..a566bec0a --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['geogrid_5ffile_5finput_5fgrid',['geogrid_file_input_grid',['../namespaceprogram__setup.html#a0c9b8f64a9bc2872a5cf70ee0c97c5f5',1,'program_setup']]], + ['grav',['grav',['../namespacesurface.html#a0d020b9469b9e3dd472fa76b0c4ded06',1,'surface']]], + ['grib2_5ffile_5finput_5fgrid',['grib2_file_input_grid',['../namespaceprogram__setup.html#a3060fbdb680807d9360c64ccd2d9855a',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_7.html b/ver-1.11.0/chgres_cube/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_7.js b/ver-1.11.0/chgres_cube/search/variables_7.js new file mode 100644 index 000000000..60bbfc27b --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['halo_5fblend',['halo_blend',['../namespaceprogram__setup.html#a8063773d67ffc944f7471e6fe82e510b',1,'program_setup']]], + ['halo_5fbndy',['halo_bndy',['../namespaceprogram__setup.html#aa2af8669f8b4e8275287ef10b2cbc9a8',1,'program_setup']]], + ['hlice',['hlice',['../namespacesurface.html#af4df26877e3d05576cc7cd54ec22c204',1,'surface']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_8.html b/ver-1.11.0/chgres_cube/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_8.js b/ver-1.11.0/chgres_cube/search/variables_8.js new file mode 100644 index 000000000..2ce5bba5c --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_8.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['i_5finput',['i_input',['../namespacemodel__grid.html#a82f65a209ac509f7b875033a11c8f732',1,'model_grid']]], + ['i_5ftarget',['i_target',['../namespacemodel__grid.html#a367ce0e39d8f4d24ea6a09c3e75d3162',1,'model_grid']]], + ['i_5fthomp_5fmp_5fclimo',['i_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#aaf3901f6b3b2f1948f6d7f2a951258ed',1,'thompson_mp_climo_data']]], + ['icet_5fdefault',['icet_default',['../sfc__input__data_8F90.html#a90e0c16da2aadc846385abc42b6d2328',1,'sfc_input_data']]], + ['ifd_5finput_5fgrid',['ifd_input_grid',['../nst__input__data_8F90.html#af5d2ba98b040bea77126139b28536865',1,'nst_input_data']]], + ['ifd_5ftarget_5fgrid',['ifd_target_grid',['../namespacesurface__target__data.html#acb8177f2bb7ba31fff58eb253f11e0e6',1,'surface_target_data']]], + ['input_5fgrid',['input_grid',['../namespacemodel__grid.html#a6fe7dceafaecb43b88c95581c8bef5f7',1,'model_grid']]], + ['input_5fgrid_5ftype',['input_grid_type',['../namespacemodel__grid.html#aac1f2077acd32917f36682691dbd2529',1,'model_grid']]], + ['input_5ftype',['input_type',['../namespaceprogram__setup.html#ad9cad7ceebd839cb675081cc01b7bb76',1,'program_setup']]], + ['ip1_5finput',['ip1_input',['../namespacemodel__grid.html#a14b39337a9ccda16ca348f21a6a608b3',1,'model_grid']]], + ['ip1_5ftarget',['ip1_target',['../namespacemodel__grid.html#af9c1b283e8c80dd9f704c8427db4d085',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_9.html b/ver-1.11.0/chgres_cube/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_9.js b/ver-1.11.0/chgres_cube/search/variables_9.js new file mode 100644 index 000000000..f8ea6a9e6 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['j_5finput',['j_input',['../namespacemodel__grid.html#aefd7c70cce6c5f470c80ee7ba0553b1e',1,'model_grid']]], + ['j_5ftarget',['j_target',['../namespacemodel__grid.html#ae4008286f17a2f603da7de655c555a21',1,'model_grid']]], + ['j_5fthomp_5fmp_5fclimo',['j_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#a1d84f17788791eb428a10712857de1a2',1,'thompson_mp_climo_data']]], + ['jp1_5finput',['jp1_input',['../namespacemodel__grid.html#a80d6893328bfe9c715534573177bcad1',1,'model_grid']]], + ['jp1_5ftarget',['jp1_target',['../namespacemodel__grid.html#ae8dcbca4234f1074860ebde7012b5c85',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_a.html b/ver-1.11.0/chgres_cube/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_a.js b/ver-1.11.0/chgres_cube/search/variables_a.js new file mode 100644 index 000000000..f0473ab52 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_a.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['lai_5ffrom_5fclimo',['lai_from_climo',['../namespaceprogram__setup.html#a85264610be92f55f65062b22df35a04b',1,'program_setup']]], + ['lai_5finput_5fgrid',['lai_input_grid',['../sfc__input__data_8F90.html#a41eba5f4cde1c339df6a3007ecbf69a7',1,'sfc_input_data']]], + ['lai_5ftarget_5fgrid',['lai_target_grid',['../namespacesurface__target__data.html#a668e84f353bfed4dfa817315b7737b32',1,'surface_target_data']]], + ['landmask_5ftarget_5fgrid',['landmask_target_grid',['../namespacemodel__grid.html#a6afab6cbbba792a2ea872922f95d6feb',1,'model_grid']]], + ['landsea_5fmask_5finput_5fgrid',['landsea_mask_input_grid',['../sfc__input__data_8F90.html#afad2ac86ec055e02accad016e4f3e27f',1,'sfc_input_data']]], + ['latitude_5finput_5fgrid',['latitude_input_grid',['../namespacemodel__grid.html#a0f1a11da8a184d13bd08017cc004d5ae',1,'model_grid']]], + ['latitude_5fs_5finput_5fgrid',['latitude_s_input_grid',['../namespacemodel__grid.html#a914f3c0bf95631eb1d50b3cb6b67ac2a',1,'model_grid']]], + ['latitude_5fs_5ftarget_5fgrid',['latitude_s_target_grid',['../namespacemodel__grid.html#afab4f0f662e0baa4526361ec0ae521c7',1,'model_grid']]], + ['latitude_5ftarget_5fgrid',['latitude_target_grid',['../namespacemodel__grid.html#a2116a7a5b8705b34f2c66af39d811072',1,'model_grid']]], + ['latitude_5fw_5finput_5fgrid',['latitude_w_input_grid',['../namespacemodel__grid.html#ade9cc9af8fe2eeb8d55f705b4f9cf8db',1,'model_grid']]], + ['latitude_5fw_5ftarget_5fgrid',['latitude_w_target_grid',['../namespacemodel__grid.html#a50df9e05c2198a873bc0178dd1b4668b',1,'model_grid']]], + ['lev_5finput',['lev_input',['../namespaceatm__input__data.html#aab8e581b6cbf6f84d4b694286f9f405d',1,'atm_input_data']]], + ['lev_5ftarget',['lev_target',['../namespaceatmosphere__target__data.html#ab08174d64f085a53ab9c20978ed1d108',1,'atmosphere_target_data']]], + ['lev_5fthomp_5fmp_5fclimo',['lev_thomp_mp_climo',['../namespacethompson__mp__climo__data.html#a970d00615bea70ba6284e9df400286e4',1,'thompson_mp_climo_data']]], + ['levp1_5finput',['levp1_input',['../namespaceatm__input__data.html#ad6467da1897e2226ad31f66fa89eaf8f',1,'atm_input_data']]], + ['levp1_5ftarget',['levp1_target',['../namespaceatmosphere__target__data.html#a87edc87067aacbcf6ee67168646404fb',1,'atmosphere_target_data']]], + ['longitude_5finput_5fgrid',['longitude_input_grid',['../namespacemodel__grid.html#a24aecc78c27241525d39f504b1c211c5',1,'model_grid']]], + ['longitude_5fs_5finput_5fgrid',['longitude_s_input_grid',['../namespacemodel__grid.html#a8bbf374eb9c7cdfb0dadd07f5d52ab2e',1,'model_grid']]], + ['longitude_5fs_5ftarget_5fgrid',['longitude_s_target_grid',['../namespacemodel__grid.html#af13ff8dcabc000d295d8b75f44dd710d',1,'model_grid']]], + ['longitude_5ftarget_5fgrid',['longitude_target_grid',['../namespacemodel__grid.html#abdfd0325317286c1dcbe0ccfdf6ee4d1',1,'model_grid']]], + ['longitude_5fw_5finput_5fgrid',['longitude_w_input_grid',['../namespacemodel__grid.html#a9d22b9cf2b11fe380fead036a530a2a0',1,'model_grid']]], + ['longitude_5fw_5ftarget_5fgrid',['longitude_w_target_grid',['../namespacemodel__grid.html#a727e94df683ca38a029276509efa2d1e',1,'model_grid']]], + ['lsoil_5finput',['lsoil_input',['../sfc__input__data_8F90.html#a6852cf0648f10b014b19cd5a337d4fe9',1,'sfc_input_data']]], + ['lsoil_5ftarget',['lsoil_target',['../namespacemodel__grid.html#aebe8f265a30b1af1177d42a02049d279',1,'model_grid']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_b.html b/ver-1.11.0/chgres_cube/search/variables_b.html new file mode 100644 index 000000000..b306931e2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_b.js b/ver-1.11.0/chgres_cube/search/variables_b.js new file mode 100644 index 000000000..dc9ea0cac --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_b.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['max_5ftracers',['max_tracers',['../namespaceprogram__setup.html#a1e0554fe16f40cb04c261d6d706e0590',1,'program_setup']]], + ['max_5fveg_5fgreenness_5finput_5fgrid',['max_veg_greenness_input_grid',['../sfc__input__data_8F90.html#a8b0b6fabb358db81fb8c99003fae4a7a',1,'sfc_input_data']]], + ['max_5fveg_5fgreenness_5ftarget_5fgrid',['max_veg_greenness_target_grid',['../namespacestatic__data.html#abadfd2da54f59d65b8f4a25f53ead74b',1,'static_data']]], + ['maxsmc_5finput',['maxsmc_input',['../namespaceprogram__setup.html#aaaf6c9fec89a42c1eeef58627ee75161',1,'program_setup']]], + ['maxsmc_5ftarget',['maxsmc_target',['../namespaceprogram__setup.html#a943991a14e371cba21a6198ea154ea8f',1,'program_setup']]], + ['min_5fveg_5fgreenness_5finput_5fgrid',['min_veg_greenness_input_grid',['../sfc__input__data_8F90.html#a230bf97be0e80e6558d8e8880e69e42a',1,'sfc_input_data']]], + ['min_5fveg_5fgreenness_5ftarget_5fgrid',['min_veg_greenness_target_grid',['../namespacestatic__data.html#aa9768580be3932356fecde427d5bfa52',1,'static_data']]], + ['minmax_5fvgfrc_5ffrom_5fclimo',['minmax_vgfrc_from_climo',['../namespaceprogram__setup.html#afe1e8a28060f5dd88fd1738bfca0a33c',1,'program_setup']]], + ['missing_5fvar_5fmethods',['missing_var_methods',['../namespaceprogram__setup.html#aab225cf6422d3962e283bf3124d78ff9',1,'program_setup']]], + ['missing_5fvar_5fvalues',['missing_var_values',['../namespaceprogram__setup.html#a1059532d74293e5a62bca42e783992aa',1,'program_setup']]], + ['mosaic_5ffile_5finput_5fgrid',['mosaic_file_input_grid',['../namespaceprogram__setup.html#a8f48c2a86a201e890140ba255f235e19',1,'program_setup']]], + ['mosaic_5ffile_5ftarget_5fgrid',['mosaic_file_target_grid',['../namespaceprogram__setup.html#a87272b81090f1ec24acf3d417a4a0df2',1,'program_setup']]], + ['mxsno_5falbedo_5ftarget_5fgrid',['mxsno_albedo_target_grid',['../namespacestatic__data.html#acbd7129a9c4dbe1fec09bd7f8fec9acd',1,'static_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_c.html b/ver-1.11.0/chgres_cube/search/variables_c.html new file mode 100644 index 000000000..75709df8f --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_c.js b/ver-1.11.0/chgres_cube/search/variables_c.js new file mode 100644 index 000000000..84f2d0856 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['nsoill_5fout',['nsoill_out',['../namespaceprogram__setup.html#ab00a20499ebc164b63c484864a14d185',1,'program_setup']]], + ['nst_5ffiles_5finput_5fgrid',['nst_files_input_grid',['../namespaceprogram__setup.html#a61ce62b449d1d0a096e8339b63f0bd87',1,'program_setup']]], + ['num_5ftiles_5finput_5fgrid',['num_tiles_input_grid',['../namespacemodel__grid.html#ad5a0922adf7266e1f3a84b9c6b4cb0a3',1,'model_grid']]], + ['num_5ftiles_5ftarget_5fgrid',['num_tiles_target_grid',['../namespacemodel__grid.html#a3ef9fce75c3c775bfbc0f3758adc9ab5',1,'model_grid']]], + ['num_5ftracers',['num_tracers',['../namespaceprogram__setup.html#a539f60d15e53a303d938db95e8d8a98b',1,'program_setup']]], + ['num_5ftracers_5finput',['num_tracers_input',['../namespaceprogram__setup.html#a1aca4bf2de945568e4968338e2e51426',1,'program_setup']]], + ['nvcoord_5ftarget',['nvcoord_target',['../namespaceatmosphere__target__data.html#a9948156fdd760009a18825699e798d17',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_d.html b/ver-1.11.0/chgres_cube/search/variables_d.html new file mode 100644 index 000000000..34c80a486 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_d.js b/ver-1.11.0/chgres_cube/search/variables_d.js new file mode 100644 index 000000000..a64872de2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['orog_5fdir_5finput_5fgrid',['orog_dir_input_grid',['../namespaceprogram__setup.html#a1be9ccab8a35f168bcbfdf9c5a222a45',1,'program_setup']]], + ['orog_5fdir_5ftarget_5fgrid',['orog_dir_target_grid',['../namespaceprogram__setup.html#a7399d25dfd372508d36eb5f6605cfb95',1,'program_setup']]], + ['orog_5ffiles_5finput_5fgrid',['orog_files_input_grid',['../namespaceprogram__setup.html#a377c50042036e5bb66eb6961dd6f011e',1,'program_setup']]], + ['orog_5ffiles_5ftarget_5fgrid',['orog_files_target_grid',['../namespaceprogram__setup.html#a347c8473bf53672f02913c93a050ea7a',1,'program_setup']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_e.html b/ver-1.11.0/chgres_cube/search/variables_e.html new file mode 100644 index 000000000..4a1c8a614 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_e.js b/ver-1.11.0/chgres_cube/search/variables_e.js new file mode 100644 index 000000000..7f259fef0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_e.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['p',['p',['../structsurface_1_1realptr__2d.html#a8a75163487be30796f0e9623d3bdd0bf',1,'surface::realptr_2d::p()'],['../structsurface_1_1realptr__3d.html#aacdc1c26baef9f3b7d0ab829ad23a6f2',1,'surface::realptr_3d::p()']]], + ['pres_5fb4adj_5ftarget_5fgrid',['pres_b4adj_target_grid',['../namespaceatmosphere.html#a429afd90f6a61146dbbf51b325d2eb2c',1,'atmosphere']]], + ['pres_5finput_5fgrid',['pres_input_grid',['../namespaceatm__input__data.html#a5f44924ecec3e08a8660aef4d1b2072b',1,'atm_input_data']]], + ['pres_5ftarget_5fgrid',['pres_target_grid',['../namespaceatmosphere.html#a3dc2d3c32b33b6ade7deb0cc4b16cbb9',1,'atmosphere']]], + ['ps_5fb4adj_5ftarget_5fgrid',['ps_b4adj_target_grid',['../namespaceatmosphere.html#a7059de7ec72c92d6ef0ca8ff0aef56d3',1,'atmosphere']]], + ['ps_5finput_5fgrid',['ps_input_grid',['../namespaceatm__input__data.html#a8d85e121cb4ddeb66179cad680156d96',1,'atm_input_data']]], + ['ps_5ftarget_5fgrid',['ps_target_grid',['../namespaceatmosphere__target__data.html#a605db1d33dbfc96bd51c360fe1201e29',1,'atmosphere_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search/variables_f.html b/ver-1.11.0/chgres_cube/search/variables_f.html new file mode 100644 index 000000000..cc86fb590 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/ver-1.11.0/chgres_cube/search/variables_f.js b/ver-1.11.0/chgres_cube/search/variables_f.js new file mode 100644 index 000000000..aa4f75ed5 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search/variables_f.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['q2m_5finput_5fgrid',['q2m_input_grid',['../sfc__input__data_8F90.html#ad29e208daec39420518f184da4cc4b58',1,'sfc_input_data']]], + ['q2m_5ftarget_5fgrid',['q2m_target_grid',['../namespacesurface__target__data.html#a3b79eda082d09d7d12f76e588f9ddbad',1,'surface_target_data']]], + ['qnifa_5fclimo_5fb4adj_5ftarget_5fgrid',['qnifa_climo_b4adj_target_grid',['../namespaceatmosphere.html#ae32652c7830afbfd567ea5e2c52038fe',1,'atmosphere']]], + ['qnifa_5fclimo_5finput_5fgrid',['qnifa_climo_input_grid',['../namespacethompson__mp__climo__data.html#a4312b55ea121b9c515619b06e80cf2c3',1,'thompson_mp_climo_data']]], + ['qnifa_5fclimo_5ftarget_5fgrid',['qnifa_climo_target_grid',['../namespaceatmosphere__target__data.html#ababa05266975d9c3a42e98fd79e2bc18',1,'atmosphere_target_data']]], + ['qnwfa_5fclimo_5fb4adj_5ftarget_5fgrid',['qnwfa_climo_b4adj_target_grid',['../namespaceatmosphere.html#aea2936574cdb0e6bc6e29d8c6c420c51',1,'atmosphere']]], + ['qnwfa_5fclimo_5finput_5fgrid',['qnwfa_climo_input_grid',['../namespacethompson__mp__climo__data.html#a6a074322beb120491a9cac33db176369',1,'thompson_mp_climo_data']]], + ['qnwfa_5fclimo_5ftarget_5fgrid',['qnwfa_climo_target_grid',['../namespaceatmosphere__target__data.html#ab4c66671eb081387995e185351612f19',1,'atmosphere_target_data']]], + ['qrain_5finput_5fgrid',['qrain_input_grid',['../nst__input__data_8F90.html#ac047a00e880f7a04887d24f44ce3f5c5',1,'nst_input_data']]], + ['qrain_5ftarget_5fgrid',['qrain_target_grid',['../namespacesurface__target__data.html#a602f3db6fcf746e1edc2faa3ff87b22b',1,'surface_target_data']]] +]; diff --git a/ver-1.11.0/chgres_cube/search__util_8F90.html b/ver-1.11.0/chgres_cube/search__util_8F90.html new file mode 100644 index 000000000..424e69130 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search__util_8F90.html @@ -0,0 +1,134 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/search_util.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
search_util.F90 File Reference
+
+
+ +

Replace undefined surface values. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  search_util
 Replace undefined values with a valid value.
 
+ + + + + + + +

+Functions/Subroutines

subroutine, public search_util::search (field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo)
 Replace undefined surface values. More...
 
subroutine search_util::sst_guess (latitude, sst)
 Set default Sea Surface Temperature (SST) based on latitude. More...
 
+

Detailed Description

+

Replace undefined surface values.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file search_util.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/search__util_8F90.js b/ver-1.11.0/chgres_cube/search__util_8F90.js new file mode 100644 index 000000000..0ab1dbae7 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search__util_8F90.js @@ -0,0 +1,5 @@ +var search__util_8F90 = +[ + [ "search", "search__util_8F90.html#a4a511a55b3ce58a03cc053d19cecc458", null ], + [ "sst_guess", "search__util_8F90.html#a5f5cd2507060bc834d1fd8a08a4c31ba", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/search__util_8F90_source.html b/ver-1.11.0/chgres_cube/search__util_8F90_source.html new file mode 100644 index 000000000..47465cd54 --- /dev/null +++ b/ver-1.11.0/chgres_cube/search__util_8F90_source.html @@ -0,0 +1,108 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/search_util.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
search_util.F90
+
+
+Go to the documentation of this file.
1 
4 
15  module search_util
16 
17  private
18 
19  public :: search
20 
21  contains
22 
46  subroutine search (field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo)
47 
48  use mpi
49  use esmf
50 
51  implicit none
52 
53 
54  integer, intent(in) :: idim, jdim, tile, field_num
55  integer(esmf_kind_i8), intent(in) :: mask(idim,jdim)
56 
57  real(esmf_kind_r8), intent(in), optional :: latitude(idim,jdim)
58  real(esmf_kind_r8), intent(in), optional :: terrain_land(idim,jdim)
59  real(esmf_kind_r8), intent(in), optional :: soilt_climo(idim,jdim)
60 
61  real(esmf_kind_r8), intent(inout) :: field(idim,jdim)
62 
63  integer :: i, j, krad, ii, jj
64  integer :: istart, iend
65  integer :: jstart, jend
66  integer :: ierr
67 
68  real :: default_value
69  real(esmf_kind_r8) :: field_save(idim,jdim)
70  integer :: repl_nearby, repl_default
71 
72 !-----------------------------------------------------------------------
73 ! Set default value.
74 !-----------------------------------------------------------------------
75 
76  select case (field_num)
77  case (0) ! most nst fields
78  default_value = 0.0
79  case (1) ! ifd
80  default_value = 1.0
81  case (7) ! terrain height, flag value to turn off terrain adjustment
82  ! of soil temperatures.
83  default_value = -99999.9
84  case (11) ! water temperature will use latitude-dependent value
85  default_value = -999.0
86  case (21) ! ice temperature
87  default_value = 265.0
88  case (30) ! xz
89  default_value = 30.0
90  case (65) ! snow liq equivalent
91  default_value = 0.0
92  case (66) ! snow depth
93  default_value = 0.0
94  case (83) ! z0 (cm)
95  default_value = 0.01
96  case (85) ! soil temp
97  default_value = 280.0
98  case (86) ! soil moisture (volumetric)
99  default_value = 0.18
100  case (91) ! sea ice fraction
101  default_value = 0.5
102  case (92) ! sea ice depth (meters)
103  default_value = 1.0
104  case (223) ! canopy moist
105  default_value = 0.0
106  case (224) ! soil type, flag value to turn off soil moisture rescaling.
107  default_value = -99999.9
108  case (225) ! vegetation type, flag value to be replaced
109  default_value = -99999.9
110  case (226) ! vegetation fraction, flag value to be replaced
111  default_value = 0.5
112  case (227) ! max vegetation fraction, flag value to be replaced
113  default_value = 0.5
114  case (228) ! min vegetation fraction, flag value to be replaced
115  default_value = 0.5
116  case (229) ! lai, flag value to be replaced
117  default_value = 1.0
118  case (230) ! soil type on the input grid
119  default_value = 11.0
120  case (231) ! soil type at land ice points
121  default_value = 16.0
122  case default
123  print*,'- FATAL ERROR. UNIDENTIFIED FIELD NUMBER : ', field_num
124  call mpi_abort(mpi_comm_world, 77, ierr)
125  end select
126 
127 !-----------------------------------------------------------------------
128 ! Perform search and replace.
129 !-----------------------------------------------------------------------
130 
131  field_save = field
132  repl_nearby = 0
133  repl_default = 0
134 !$OMP PARALLEL DO DEFAULT(NONE), &
135 !$OMP SHARED(IDIM,JDIM,MASK,FIELD_SAVE,FIELD,TILE,LATITUDE,DEFAULT_VALUE,FIELD_NUM,REPL_NEARBY,REPL_DEFAULT,SOILT_CLIMO,TERRAIN_LAND), &
136 !$OMP PRIVATE(I,J,KRAD,ISTART,IEND,JSTART,JEND,II,JJ)
137 
138  j_loop : do j = 1, jdim
139  i_loop : do i = 1, idim
140 
141  if (mask(i,j) == 1 .and. field_save(i,j) < -9999.0) then
142 
143  krad_loop : do krad = 1, 100
144 
145  istart = i - krad
146  iend = i + krad
147  jstart = j - krad
148  jend = j + krad
149 
150  jj_loop : do jj = jstart, jend
151  ii_loop : do ii = istart, iend
152 
153 !-----------------------------------------------------------------------
154 ! Search only along outer square.
155 !-----------------------------------------------------------------------
156 
157  if ((jj == jstart) .or. (jj == jend) .or. &
158  (ii == istart) .or. (ii == iend)) then
159 
160  if (jj < 1 .or. jj > jdim) cycle jj_loop
161  if (ii < 1 .or. ii > idim) cycle ii_loop
162 
163  if (mask(ii,jj) == 1 .and. field_save(ii,jj) > -9999.0) then
164  field(i,j) = field_save(ii,jj)
165  ! write(6,100) field_num,tile,i,j,ii,jj,field(i,j)
166  ! When using non-GFS data, there are a lot of these print statements even
167  ! when everything is working correctly. Count instead of printing each
168  repl_nearby = repl_nearby + 1
169  cycle i_loop
170  endif
171 
172  endif
173 
174  enddo ii_loop
175  enddo jj_loop
176 
177  enddo krad_loop
178 
179  if (field_num == 11) then
180  call sst_guess(latitude(i,j), field(i,j))
181  elseif (field_num == 91) then ! sea ice fract
182  if (abs(latitude(i,j)) > 55.0) then
183  field(i,j) = default_value
184  repl_default = repl_default + 1
185  else
186  field(i,j) = 0.0
187  repl_default = repl_default + 1
188  endif
189  elseif (field_num == 7 .and. PRESENT(terrain_land)) then
190  ! Terrain heights for isolated landice points never get a correct value, so replace
191  ! with terrain height from the input grid interpolated to the target grid
192  field(i,j) = terrain_land(i,j)
193  repl_default = repl_default + 1
194  elseif (field_num == 224 .and. PRESENT(soilt_climo)) then
195  ! When using input soil type fields instead of climatological data on the
196  ! target grid, isolated land locations that exist in the target grid but
197  ! not the input grid don't receiving proper soil type information, so replace
198  ! with climatological values
199  field(i,j) = soilt_climo(i,j)
200  repl_default = repl_default + 1
201  else
202  field(i,j) = default_value
203  repl_default = repl_default + 1
204  endif
205 
206  !write(6,101) field_num,tile,i,j,field(i,j)
207 
208  endif
209  enddo i_loop
210  enddo j_loop
211 !$OMP END PARALLEL DO
212 
213 ! 100 format(1x,"- MISSING POINT FIELD ",i4," TILE: ",i2," I/J: ",i5,i5," SET TO VALUE AT: ",i5,i5,". NEW VALUE IS: ",f8.3)
214 ! 101 format(1x,"- MISSING POINT FIELD ",i4," TILE: ",i2," I/J: ",i5,i5," SET TO DEFAULT VALUE OF: ",f8.3)
215  print*, "- TOTAL POINTS FOR VAR ", field_num, " REPLACED BY NEARBY VALUES: ", repl_nearby
216  print*, "- TOTAL POINTS FOR VAR ", field_num, " REPLACED BY DEFAULT VALUE: ", repl_default
217 
218  end subroutine search
219 
234  subroutine sst_guess(latitude, sst)
236  use esmf
237 
238  implicit none
239 
240  real(esmf_kind_r8), parameter :: SST_POLAR_IN_KELVIN = 273.16
242  real(esmf_kind_r8), parameter :: SST_TROPICAL_IN_KELVIN = 300.0
244  real(esmf_kind_r8), parameter :: POLAR_LATITUDE = 60.0
246  real(esmf_kind_r8), parameter :: TROPICAL_LATITUDE = 30.0
248  real(esmf_kind_r8), parameter :: DSST_DLAT = -0.8947
250  real(esmf_kind_r8), parameter :: SST_Y_INTERCEPT = 326.84
252 
253  real(esmf_kind_r8), intent(in) :: latitude
254 
255  real(esmf_kind_r8), intent(out) :: sst
256 
257  if (abs(latitude) >= polar_latitude) then
258  sst = sst_polar_in_kelvin
259  elseif (abs(latitude) <= tropical_latitude) then
260  sst = sst_tropical_in_kelvin
261  else
262  sst = dsst_dlat * abs(latitude) + sst_y_intercept
263  endif
264 
265  end subroutine sst_guess
266 
267  end module search_util
subroutine sst_guess(latitude, sst)
Set default Sea Surface Temperature (SST) based on latitude.
+
Replace undefined values with a valid value.
Definition: search_util.F90:15
+
subroutine, public search(field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo)
Replace undefined surface values.
Definition: search_util.F90:47
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/sfc__input__data_8F90.html b/ver-1.11.0/chgres_cube/sfc__input__data_8F90.html new file mode 100644 index 000000000..e6216b2c3 --- /dev/null +++ b/ver-1.11.0/chgres_cube/sfc__input__data_8F90.html @@ -0,0 +1,1156 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/sfc_input_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
sfc_input_data.F90 File Reference
+
+
+ +

Read atmospheric and surface data from GRIB2, NEMSIO and NetCDF files. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public sfc_input_data::cleanup_input_sfc_data
 Free up memory associated with sfc data. More...
 
subroutine, public sfc_input_data::init_sfc_esmf_fields
 Create surface input grid esmf fields. More...
 
subroutine sfc_input_data::READ_FV3_GRID_DATA_NETCDF (FIELD, TILE_NUM, IMO, JMO, LMO, SFCDATA, SFCDATA_3D)
 Read a record from a netcdf file. More...
 
subroutine sfc_input_data::read_grib_soil (vname, vname_file, lugb, pdt_num, dummy3d)
 Read soil temperature and soil moisture fields from a GRIB2 file. More...
 
subroutine, public sfc_input_data::read_input_sfc_data (localpet)
 Driver to read input grid surface data. More...
 
subroutine sfc_input_data::read_input_sfc_gaussian_nemsio_file (localpet)
 Read input grid surface data from an fv3 gaussian nemsio file. More...
 
subroutine sfc_input_data::read_input_sfc_gfs_gaussian_nemsio_file (localpet)
 Read input grid surface data from a spectral gfs gaussian nemsio file. More...
 
subroutine sfc_input_data::read_input_sfc_gfs_sfcio_file (localpet)
 Read input grid surface data from a spectral gfs gaussian sfcio file. More...
 
subroutine sfc_input_data::read_input_sfc_grib2_file (localpet)
 Read input grid surface data from a grib2 file. More...
 
subroutine sfc_input_data::read_input_sfc_netcdf_file (localpet)
 Read input grid surface data from tiled 'history' files (netcdf) or gaussian netcdf files. More...
 
subroutine sfc_input_data::read_input_sfc_restart_file (localpet)
 Read input grid surface data from fv3 tiled warm 'restart' files. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field), public sfc_input_data::canopy_mc_input_grid
 canopy moist content More...
 
type(esmf_field), public sfc_input_data::f10m_input_grid
 log((z0+10)*1/z0) More...
 
type(esmf_field), public sfc_input_data::ffmm_input_grid
 log((z0+z1)*1/z0) See sfc_diff.f for details. More...
 
real sfc_input_data::icet_default = 265.0
 Default value of soil and skin temperature (K) over ice. More...
 
type(esmf_field), public sfc_input_data::lai_input_grid
 leaf area index More...
 
type(esmf_field), public sfc_input_data::landsea_mask_input_grid
 land sea mask; 0-water, 1-land, 2-ice More...
 
integer, public sfc_input_data::lsoil_input =4
 number of soil layers, no longer hardwired to allow for 7 layers of soil for the RUC LSM More...
 
type(esmf_field), public sfc_input_data::max_veg_greenness_input_grid
 shdmax More...
 
type(esmf_field), public sfc_input_data::min_veg_greenness_input_grid
 shdmin More...
 
type(esmf_field), public sfc_input_data::q2m_input_grid
 2-m spec hum More...
 
type(esmf_field), public sfc_input_data::seaice_depth_input_grid
 sea ice depth More...
 
type(esmf_field), public sfc_input_data::seaice_fract_input_grid
 sea ice fraction More...
 
type(esmf_field), public sfc_input_data::seaice_skin_temp_input_grid
 sea ice skin temp More...
 
type(esmf_field), public sfc_input_data::skin_temp_input_grid
 skin temp/sst More...
 
type(esmf_field), public sfc_input_data::snow_depth_input_grid
 snow dpeth More...
 
type(esmf_field), public sfc_input_data::snow_liq_equiv_input_grid
 snow liq equiv depth More...
 
type(esmf_field), public sfc_input_data::soil_temp_input_grid
 3-d soil temp More...
 
type(esmf_field), public sfc_input_data::soil_type_input_grid
 soil type More...
 
type(esmf_field), public sfc_input_data::soilm_liq_input_grid
 3-d liquid soil moisture More...
 
type(esmf_field), public sfc_input_data::soilm_tot_input_grid
 3-d total soil moisture More...
 
type(esmf_field), public sfc_input_data::srflag_input_grid
 snow/rain flag More...
 
type(esmf_field), public sfc_input_data::t2m_input_grid
 2-m temperature More...
 
type(esmf_field), public sfc_input_data::tprcp_input_grid
 precip More...
 
type(esmf_field), public sfc_input_data::ustar_input_grid
 fric velocity More...
 
type(esmf_field), public sfc_input_data::veg_greenness_input_grid
 vegetation fraction More...
 
type(esmf_field), public sfc_input_data::veg_type_input_grid
 vegetation type More...
 
integer, public sfc_input_data::veg_type_landice_input = 15
 NOAH land ice option defined at this veg type. More...
 
type(esmf_field), public sfc_input_data::z0_input_grid
 roughness length More...
 
+

Detailed Description

+

Read atmospheric and surface data from GRIB2, NEMSIO and NetCDF files.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file sfc_input_data.F90.

+

Function/Subroutine Documentation

+ +

◆ cleanup_input_sfc_data()

+ +
+
+ + + + + + + +
subroutine, public sfc_input_data::cleanup_input_sfc_data ()
+
+ +

Free up memory associated with sfc data.

+
Author
George Gayno NCEP/EMC
+ +

Definition at line 3307 of file sfc_input_data.F90.

+ +

References program_setup::convert_nst, program_setup::lai_from_climo, program_setup::minmax_vgfrc_from_climo, atm_input_data::terrain_input_grid, and program_setup::vgfrc_from_climo.

+ +
+
+ +

◆ init_sfc_esmf_fields()

+ +
+
+ + + + + + + +
subroutine, public sfc_input_data::init_sfc_esmf_fields ()
+
+ +

Create surface input grid esmf fields.

+
Author
George Gayno NCEP/EMC
+ +

Definition at line 2947 of file sfc_input_data.F90.

+ +

References model_grid::input_grid, program_setup::lai_from_climo, program_setup::minmax_vgfrc_from_climo, atm_input_data::terrain_input_grid, and program_setup::vgfrc_from_climo.

+ +
+
+ +

◆ READ_FV3_GRID_DATA_NETCDF()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sfc_input_data::READ_FV3_GRID_DATA_NETCDF (character(len=*), intent(in) FIELD,
integer, intent(in) TILE_NUM,
integer, intent(in) IMO,
integer, intent(in) JMO,
integer, intent(in) LMO,
real(esmf_kind_r8), dimension(imo,jmo), intent(out), optional SFCDATA,
real(esmf_kind_r8), dimension(imo,jmo,lmo), intent(out), optional SFCDATA_3D 
)
+
+ +

Read a record from a netcdf file.

+
Parameters
+ + + + + + + + +
[in]fieldname of field to be read
[in]tile_numgrid tile number
[in]imoi-dimension of field
[in]jmoj-dimension of field
[in]lmonumber of vertical levels of field
[out]sfcdata1-d array containing field data
[out]sfcdata_3d3-d array containing field data
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 3161 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, and program_setup::sfc_files_input_grid.

+ +
+
+ +

◆ read_grib_soil()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine sfc_input_data::read_grib_soil (character(len=20), intent(in) vname,
character(len=20), intent(in) vname_file,
integer, intent(in) lugb,
integer, intent(in) pdt_num,
real(esmf_kind_r8), dimension(:,:,:), intent(inout) dummy3d 
)
+
+ +

Read soil temperature and soil moisture fields from a GRIB2 file.

+
Parameters
+ + + + + + +
[in]vnamevariable name in varmap table
[in]vname_filevariable name in grib2 file
[in]lugblogical unit number for surface grib2 file
[in]pdt_numproduct definition template number.
[in,out]dummy3darray of soil data
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 3206 of file sfc_input_data.F90.

+ +

References program_setup::get_var_cond(), model_grid::i_input, model_grid::j_input, and program_setup::read_from_input.

+ +
+
+ +

◆ read_input_sfc_data()

+ +
+
+ + + + + + + + +
subroutine, public sfc_input_data::read_input_sfc_data (integer, intent(in) localpet)
+
+ +

Driver to read input grid surface data.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 96 of file sfc_input_data.F90.

+ +

References program_setup::input_type.

+ +
+
+ +

◆ read_input_sfc_gaussian_nemsio_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_gaussian_nemsio_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from an fv3 gaussian nemsio file.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 737 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, model_grid::j_input, program_setup::sfc_files_input_grid, and atm_input_data::terrain_input_grid.

+ +
+
+ +

◆ read_input_sfc_gfs_gaussian_nemsio_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_gfs_gaussian_nemsio_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from a spectral gfs gaussian nemsio file.

+
Note
Format used by gfs starting July 19, 2017.
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 388 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, model_grid::j_input, program_setup::sfc_files_input_grid, and atm_input_data::terrain_input_grid.

+ +
+
+ +

◆ read_input_sfc_gfs_sfcio_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_gfs_sfcio_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from a spectral gfs gaussian sfcio file.

+
Note
Prior to July 19, 2017.
+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 164 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, model_grid::j_input, program_setup::sfc_files_input_grid, and atm_input_data::terrain_input_grid.

+ +
+
+ +

◆ read_input_sfc_grib2_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_grib2_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from a grib2 file.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
Larissa Reames
+ +

Definition at line 1764 of file sfc_input_data.F90.

+ +

References model_grid::input_grid_type, search_util::search(), program_setup::sotyp_from_climo, atm_input_data::terrain_input_grid, and program_setup::vgtyp_from_climo.

+ +
+
+ +

◆ read_input_sfc_netcdf_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_netcdf_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from tiled 'history' files (netcdf) or gaussian netcdf files.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1403 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, program_setup::input_type, model_grid::j_input, model_grid::num_tiles_input_grid, program_setup::orog_dir_input_grid, program_setup::orog_files_input_grid, program_setup::sfc_files_input_grid, and atm_input_data::terrain_input_grid.

+ +
+
+ +

◆ read_input_sfc_restart_file()

+ +
+
+ + + + + + + + +
subroutine sfc_input_data::read_input_sfc_restart_file (integer, intent(in) localpet)
+
+ +

Read input grid surface data from fv3 tiled warm 'restart' files.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1086 of file sfc_input_data.F90.

+ +

References program_setup::data_dir_input_grid, model_grid::i_input, model_grid::j_input, model_grid::num_tiles_input_grid, program_setup::orog_dir_input_grid, program_setup::orog_files_input_grid, program_setup::sfc_files_input_grid, and atm_input_data::terrain_input_grid.

+ +
+
+

Variable Documentation

+ +

◆ canopy_mc_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::canopy_mc_input_grid
+
+ +

canopy moist content

+ +

Definition at line 54 of file sfc_input_data.F90.

+ +
+
+ +

◆ f10m_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::f10m_input_grid
+
+ +

log((z0+10)*1/z0)

+ +

Definition at line 55 of file sfc_input_data.F90.

+ +
+
+ +

◆ ffmm_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::ffmm_input_grid
+
+ +

log((z0+z1)*1/z0) See sfc_diff.f for details.

+ +

Definition at line 56 of file sfc_input_data.F90.

+ +
+
+ +

◆ icet_default

+ +
+
+ + + + +
real sfc_input_data::icet_default = 265.0
+
+ +

Default value of soil and skin temperature (K) over ice.

+ +

Definition at line 52 of file sfc_input_data.F90.

+ +
+
+ +

◆ lai_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::lai_input_grid
+
+ +

leaf area index

+ +

Definition at line 78 of file sfc_input_data.F90.

+ +
+
+ +

◆ landsea_mask_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::landsea_mask_input_grid
+
+ +

land sea mask; 0-water, 1-land, 2-ice

+ +

Definition at line 58 of file sfc_input_data.F90.

+ +
+
+ +

◆ lsoil_input

+ +
+
+ + + + +
integer, public sfc_input_data::lsoil_input =4
+
+ +

number of soil layers, no longer hardwired to allow for 7 layers of soil for the RUC LSM

+ +

Definition at line 82 of file sfc_input_data.F90.

+ +
+
+ +

◆ max_veg_greenness_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::max_veg_greenness_input_grid
+
+ +

shdmax

+ +

Definition at line 79 of file sfc_input_data.F90.

+ +
+
+ +

◆ min_veg_greenness_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::min_veg_greenness_input_grid
+
+ +

shdmin

+ +

Definition at line 80 of file sfc_input_data.F90.

+ +
+
+ +

◆ q2m_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::q2m_input_grid
+
+ +

2-m spec hum

+ +

Definition at line 60 of file sfc_input_data.F90.

+ +
+
+ +

◆ seaice_depth_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::seaice_depth_input_grid
+
+ +

sea ice depth

+ +

Definition at line 61 of file sfc_input_data.F90.

+ +
+
+ +

◆ seaice_fract_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::seaice_fract_input_grid
+
+ +

sea ice fraction

+ +

Definition at line 62 of file sfc_input_data.F90.

+ +
+
+ +

◆ seaice_skin_temp_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::seaice_skin_temp_input_grid
+
+ +

sea ice skin temp

+ +

Definition at line 63 of file sfc_input_data.F90.

+ +
+
+ +

◆ skin_temp_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::skin_temp_input_grid
+
+ +

skin temp/sst

+ +

Definition at line 64 of file sfc_input_data.F90.

+ +
+
+ +

◆ snow_depth_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::snow_depth_input_grid
+
+ +

snow dpeth

+ +

Definition at line 65 of file sfc_input_data.F90.

+ +
+
+ +

◆ snow_liq_equiv_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::snow_liq_equiv_input_grid
+
+ +

snow liq equiv depth

+ +

Definition at line 66 of file sfc_input_data.F90.

+ +
+
+ +

◆ soil_temp_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::soil_temp_input_grid
+
+ +

3-d soil temp

+ +

Definition at line 67 of file sfc_input_data.F90.

+ +
+
+ +

◆ soil_type_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::soil_type_input_grid
+
+ +

soil type

+ +

Definition at line 68 of file sfc_input_data.F90.

+ +
+
+ +

◆ soilm_liq_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::soilm_liq_input_grid
+
+ +

3-d liquid soil moisture

+ +

Definition at line 69 of file sfc_input_data.F90.

+ +
+
+ +

◆ soilm_tot_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::soilm_tot_input_grid
+
+ +

3-d total soil moisture

+ +

Definition at line 70 of file sfc_input_data.F90.

+ +
+
+ +

◆ srflag_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::srflag_input_grid
+
+ +

snow/rain flag

+ +

Definition at line 71 of file sfc_input_data.F90.

+ +
+
+ +

◆ t2m_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::t2m_input_grid
+
+ +

2-m temperature

+ +

Definition at line 72 of file sfc_input_data.F90.

+ +
+
+ +

◆ tprcp_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::tprcp_input_grid
+
+ +

precip

+ +

Definition at line 73 of file sfc_input_data.F90.

+ +
+
+ +

◆ ustar_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::ustar_input_grid
+
+ +

fric velocity

+ +

Definition at line 74 of file sfc_input_data.F90.

+ +
+
+ +

◆ veg_greenness_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::veg_greenness_input_grid
+
+ +

vegetation fraction

+ +

Definition at line 77 of file sfc_input_data.F90.

+ +
+
+ +

◆ veg_type_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::veg_type_input_grid
+
+ +

vegetation type

+ +

Definition at line 75 of file sfc_input_data.F90.

+ +
+
+ +

◆ veg_type_landice_input

+ +
+
+ + + + +
integer, public sfc_input_data::veg_type_landice_input = 15
+
+ +

NOAH land ice option defined at this veg type.

+

Default is igbp.

+ +

Definition at line 49 of file sfc_input_data.F90.

+ +
+
+ +

◆ z0_input_grid

+ +
+
+ + + + +
type(esmf_field), public sfc_input_data::z0_input_grid
+
+ +

roughness length

+ +

Definition at line 76 of file sfc_input_data.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/sfc__input__data_8F90.js b/ver-1.11.0/chgres_cube/sfc__input__data_8F90.js new file mode 100644 index 000000000..9dd58b4da --- /dev/null +++ b/ver-1.11.0/chgres_cube/sfc__input__data_8F90.js @@ -0,0 +1,42 @@ +var sfc__input__data_8F90 = +[ + [ "cleanup_input_sfc_data", "sfc__input__data_8F90.html#a15c06f360d6072e63bd1109985d203c2", null ], + [ "init_sfc_esmf_fields", "sfc__input__data_8F90.html#a7c5bf6dd923917390b3eae8799d35557", null ], + [ "READ_FV3_GRID_DATA_NETCDF", "sfc__input__data_8F90.html#a6c873511baf197c0f7766a28fc99c229", null ], + [ "read_grib_soil", "sfc__input__data_8F90.html#aceae825b0d75b9702e89065ccec45ea9", null ], + [ "read_input_sfc_data", "sfc__input__data_8F90.html#ae01d5f3faabaa3265a9a7b58c5f293a6", null ], + [ "read_input_sfc_gaussian_nemsio_file", "sfc__input__data_8F90.html#ae79d45d8048e52cf743e33c2a4db210f", null ], + [ "read_input_sfc_gfs_gaussian_nemsio_file", "sfc__input__data_8F90.html#a8f877b90f19963141ee962b3889571ab", null ], + [ "read_input_sfc_gfs_sfcio_file", "sfc__input__data_8F90.html#af7e2da3d0544e1475a35a7693b98281f", null ], + [ "read_input_sfc_grib2_file", "sfc__input__data_8F90.html#aeb5cae5fb449f7c79de2b3e7739175b3", null ], + [ "read_input_sfc_netcdf_file", "sfc__input__data_8F90.html#a7ce3b47776d4a2bbf4bfb732fa3780a2", null ], + [ "read_input_sfc_restart_file", "sfc__input__data_8F90.html#a48402d66b80ad2a80418be526eadabc5", null ], + [ "canopy_mc_input_grid", "sfc__input__data_8F90.html#ac0e9f9bb04765ba7f0494bad423a432d", null ], + [ "f10m_input_grid", "sfc__input__data_8F90.html#a4eac4f508f9b4236b0b9e0912188b387", null ], + [ "ffmm_input_grid", "sfc__input__data_8F90.html#ade0151e6fbd7aaf9c9241209d8c5664e", null ], + [ "icet_default", "sfc__input__data_8F90.html#a90e0c16da2aadc846385abc42b6d2328", null ], + [ "lai_input_grid", "sfc__input__data_8F90.html#a41eba5f4cde1c339df6a3007ecbf69a7", null ], + [ "landsea_mask_input_grid", "sfc__input__data_8F90.html#afad2ac86ec055e02accad016e4f3e27f", null ], + [ "lsoil_input", "sfc__input__data_8F90.html#a6852cf0648f10b014b19cd5a337d4fe9", null ], + [ "max_veg_greenness_input_grid", "sfc__input__data_8F90.html#a8b0b6fabb358db81fb8c99003fae4a7a", null ], + [ "min_veg_greenness_input_grid", "sfc__input__data_8F90.html#a230bf97be0e80e6558d8e8880e69e42a", null ], + [ "q2m_input_grid", "sfc__input__data_8F90.html#ad29e208daec39420518f184da4cc4b58", null ], + [ "seaice_depth_input_grid", "sfc__input__data_8F90.html#a5e40ecb3e2fd650812e4a94afe890291", null ], + [ "seaice_fract_input_grid", "sfc__input__data_8F90.html#aaf0bae249b613e7274c0afae94e8bf37", null ], + [ "seaice_skin_temp_input_grid", "sfc__input__data_8F90.html#a5fe492be5389928913ee7e160d519ec9", null ], + [ "skin_temp_input_grid", "sfc__input__data_8F90.html#a61be4121ae93ad25bed1e3d6368f4bd6", null ], + [ "snow_depth_input_grid", "sfc__input__data_8F90.html#aa50bd77b69a20bc2a23f7b4714f7f169", null ], + [ "snow_liq_equiv_input_grid", "sfc__input__data_8F90.html#a5f5ee0e7cc3c48412ec6fefb24af7b09", null ], + [ "soil_temp_input_grid", "sfc__input__data_8F90.html#a0d70ca0aef86729f21896705948eb242", null ], + [ "soil_type_input_grid", "sfc__input__data_8F90.html#aadcca0688b8a6470902a0a1937ae3708", null ], + [ "soilm_liq_input_grid", "sfc__input__data_8F90.html#a2594e8fbd6c2228c7963b820c3446c3c", null ], + [ "soilm_tot_input_grid", "sfc__input__data_8F90.html#a65a014a55a08e3e439ebe6ec238ac2cf", null ], + [ "srflag_input_grid", "sfc__input__data_8F90.html#a08c0a47498901872edbdec10a8569c48", null ], + [ "t2m_input_grid", "sfc__input__data_8F90.html#a19167890b3605aadb0bdb853cfbf5004", null ], + [ "tprcp_input_grid", "sfc__input__data_8F90.html#ab188728c07383d49c120992562760799", null ], + [ "ustar_input_grid", "sfc__input__data_8F90.html#a453890953640dee513cca7294be9f464", null ], + [ "veg_greenness_input_grid", "sfc__input__data_8F90.html#ad69b49304a255ebe70c967c8de0d1c54", null ], + [ "veg_type_input_grid", "sfc__input__data_8F90.html#aaa1eff819567c6129c994a6a3d3fbd6b", null ], + [ "veg_type_landice_input", "sfc__input__data_8F90.html#a9a51f66fdf4ab52fc5cc11618abb78bf", null ], + [ "z0_input_grid", "sfc__input__data_8F90.html#a8561ff11eb9b94ccbd579995bb9967db", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/sfc__input__data_8F90_source.html b/ver-1.11.0/chgres_cube/sfc__input__data_8F90_source.html new file mode 100644 index 000000000..b294da48a --- /dev/null +++ b/ver-1.11.0/chgres_cube/sfc__input__data_8F90_source.html @@ -0,0 +1,134 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/sfc_input_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
sfc_input_data.F90
+
+
+Go to the documentation of this file.
1 module sfc_input_data
5 
15  use esmf
16  use netcdf
17  use nemsio_module
18 
19  use program_setup, only : data_dir_input_grid, &
22  convert_nst, &
25  input_type, &
26  get_var_cond, &
33 
34  use model_grid, only : input_grid, &
35  i_input, j_input, &
39 
40  use utilities, only : error_handler, &
41  netcdf_err, &
42  handle_grib_error, &
43  to_upper, &
44  check_soilt, &
45  check_cnwat
46 
47 ! Fields associated with the land-surface model.
48 
49  integer, public :: veg_type_landice_input = 15
52  real :: icet_default = 265.0
54  type(esmf_field), public :: canopy_mc_input_grid
55  type(esmf_field), public :: f10m_input_grid
56  type(esmf_field), public :: ffmm_input_grid
58  type(esmf_field), public :: landsea_mask_input_grid
60  type(esmf_field), public :: q2m_input_grid
61  type(esmf_field), public :: seaice_depth_input_grid
62  type(esmf_field), public :: seaice_fract_input_grid
63  type(esmf_field), public :: seaice_skin_temp_input_grid
64  type(esmf_field), public :: skin_temp_input_grid
65  type(esmf_field), public :: snow_depth_input_grid
66  type(esmf_field), public :: snow_liq_equiv_input_grid
67  type(esmf_field), public :: soil_temp_input_grid
68  type(esmf_field), public :: soil_type_input_grid
69  type(esmf_field), public :: soilm_liq_input_grid
70  type(esmf_field), public :: soilm_tot_input_grid
71  type(esmf_field), public :: srflag_input_grid
72  type(esmf_field), public :: t2m_input_grid
73  type(esmf_field), public :: tprcp_input_grid
74  type(esmf_field), public :: ustar_input_grid
75  type(esmf_field), public :: veg_type_input_grid
76  type(esmf_field), public :: z0_input_grid
77  type(esmf_field), public :: veg_greenness_input_grid
78  type(esmf_field), public :: lai_input_grid
79  type(esmf_field), public :: max_veg_greenness_input_grid
80  type(esmf_field), public :: min_veg_greenness_input_grid
81 
82  integer, public :: lsoil_input=4
84 
85  public :: read_input_sfc_data
86  public :: cleanup_input_sfc_data
87  public :: init_sfc_esmf_fields
88 
89  contains
90 
95  subroutine read_input_sfc_data(localpet)
96 
97  implicit none
98 
99  integer, intent(in) :: localpet
100 
101  call init_sfc_esmf_fields()
102 
103 !-------------------------------------------------------------------------------
104 ! Read the tiled 'warm' restart files.
105 !-------------------------------------------------------------------------------
106 
107  if (trim(input_type) == "restart") then
108 
109  call read_input_sfc_restart_file(localpet)
110 
111 !-------------------------------------------------------------------------------
112 ! Read the tiled or gaussian history files in netcdf format.
113 !-------------------------------------------------------------------------------
114 
115  elseif (trim(input_type) == "history" .or. trim(input_type) == &
116  "gaussian_netcdf") then
117 
118  call read_input_sfc_netcdf_file(localpet)
119 
120 !-------------------------------------------------------------------------------
121 ! Read the gaussian history files in nemsio format.
122 !-------------------------------------------------------------------------------
123 
124  elseif (trim(input_type) == "gaussian_nemsio") then
125 
126  call read_input_sfc_gaussian_nemsio_file(localpet)
127 
128 !-------------------------------------------------------------------------------
129 ! Read the spectral gfs gaussian history files in nemsio format.
130 !-------------------------------------------------------------------------------
131 
132  elseif (trim(input_type) == "gfs_gaussian_nemsio") then
133 
134  call read_input_sfc_gfs_gaussian_nemsio_file(localpet)
135 
136 !-------------------------------------------------------------------------------
137 ! Read the spectral gfs gaussian history files in sfcio format.
138 !-------------------------------------------------------------------------------
139 
140  elseif (trim(input_type) == "gfs_sigio") then
141 
142  call read_input_sfc_gfs_sfcio_file(localpet)
143 
144 !-------------------------------------------------------------------------------
145 ! Read fv3gfs surface data in grib2 format.
146 !-------------------------------------------------------------------------------
147 
148  elseif (trim(input_type) == "grib2") then
149 
150  call read_input_sfc_grib2_file(localpet)
151 
152  endif
153 
154  end subroutine read_input_sfc_data
155 
163  subroutine read_input_sfc_gfs_sfcio_file(localpet)
164 
165  use sfcio_module
166 
167  implicit none
168 
169  integer, intent(in) :: localpet
170 
171  character(len=300) :: the_file
172 
173  integer(sfcio_intkind) :: iret
174  integer :: rc
175 
176  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
177  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
178 
179  type(sfcio_head) :: sfchead
180  type(sfcio_dbta) :: sfcdata
181 
182  the_file = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
183 
184  print*,"- READ SURFACE DATA IN SFCIO FORMAT."
185  print*,"- OPEN AND READ: ",trim(the_file)
186  call sfcio_sropen(23, trim(the_file), iret)
187  if (iret /= 0) then
188  rc=iret
189  call error_handler("OPENING FILE", rc)
190  endif
191 
192  call sfcio_srhead(23, sfchead, iret)
193  if (iret /= 0) then
194  rc=iret
195  call error_handler("READING HEADER", rc)
196  endif
197 
198  if (localpet == 0) then
199  call sfcio_aldbta(sfchead, sfcdata, iret)
200  if (iret /= 0) then
201  rc=iret
202  call error_handler("ALLOCATING DATA.", rc)
203  endif
204  call sfcio_srdbta(23, sfchead, sfcdata, iret)
205  if (iret /= 0) then
206  rc=iret
207  call error_handler("READING DATA.", rc)
208  endif
209  allocate(dummy2d(i_input,j_input))
210  allocate(dummy3d(i_input,j_input,lsoil_input))
211  else
212  allocate(dummy2d(0,0))
213  allocate(dummy3d(0,0,0))
214  endif
215 
216  if (localpet == 0) dummy2d = sfcdata%slmsk
217 
218  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
219  call esmf_fieldscatter(landsea_mask_input_grid, dummy2d, rootpet=0, rc=rc)
220  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
221  call error_handler("IN FieldScatter", rc)
222 
223  if (localpet == 0) dummy2d = sfcdata%zorl
224 
225  print*,"- CALL FieldScatter FOR INPUT Z0."
226  call esmf_fieldscatter(z0_input_grid, dummy2d, rootpet=0, rc=rc)
227  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
228  call error_handler("IN FieldScatter", rc)
229 
230  if (localpet == 0) dummy2d = nint(sfcdata%vtype)
231 
232  print*,"- CALL FieldScatter FOR INPUT VEG TYPE."
233  call esmf_fieldscatter(veg_type_input_grid, dummy2d, rootpet=0, rc=rc)
234  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
235  call error_handler("IN FieldScatter", rc)
236 
237 ! Prior to July, 2017, gfs used zobler soil types. '13' indicates permanent land ice.
238  veg_type_landice_input = 13
239 
240  if (localpet == 0) dummy2d = sfcdata%canopy
241 
242  print*,"- CALL FieldScatter FOR INPUT CANOPY MC."
243  call esmf_fieldscatter(canopy_mc_input_grid, dummy2d, rootpet=0, rc=rc)
244  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
245  call error_handler("IN FieldScatter", rc)
246 
247  if (localpet == 0) dummy2d = sfcdata%fice
248 
249  print*,"- CALL FieldScatter FOR INPUT ICE FRACTION."
250  call esmf_fieldscatter(seaice_fract_input_grid, dummy2d, rootpet=0, rc=rc)
251  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
252  call error_handler("IN FieldScatter", rc)
253 
254  if (localpet == 0) dummy2d = sfcdata%hice
255 
256  print*,"- CALL FieldScatter FOR INPUT ICE DEPTH."
257  call esmf_fieldscatter(seaice_depth_input_grid, dummy2d, rootpet=0, rc=rc)
258  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
259  call error_handler("IN FieldScatter", rc)
260 
261  if (localpet == 0) dummy2d = sfcdata%tisfc
262 
263  print*,"- CALL FieldScatter FOR INPUT ICE SKIN TEMP."
264  call esmf_fieldscatter(seaice_skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
265  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
266  call error_handler("IN FieldScatter", rc)
267 
268  if (localpet == 0) dummy2d = sfcdata%snwdph ! mm (expected by program)
269 
270  print*,"- CALL FieldScatter FOR INPUT SNOW DEPTH."
271  call esmf_fieldscatter(snow_depth_input_grid, dummy2d, rootpet=0, rc=rc)
272  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
273  call error_handler("IN FieldScatter", rc)
274 
275  if (localpet == 0) dummy2d = sfcdata%sheleg
276 
277  print*,"- CALL FieldScatter FOR INPUT SNOW LIQUID EQUIV."
278  call esmf_fieldscatter(snow_liq_equiv_input_grid, dummy2d, rootpet=0, rc=rc)
279  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
280  call error_handler("IN FieldScatter", rc)
281 
282  if (localpet == 0) dummy2d = sfcdata%t2m
283 
284  print*,"- CALL FieldScatter FOR INPUT T2M."
285  call esmf_fieldscatter(t2m_input_grid, dummy2d, rootpet=0, rc=rc)
286  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
287  call error_handler("IN FieldScatter", rc)
288 
289  if (localpet == 0) dummy2d = sfcdata%q2m
290 
291  print*,"- CALL FieldScatter FOR INPUT Q2M."
292  call esmf_fieldscatter(q2m_input_grid, dummy2d, rootpet=0, rc=rc)
293  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
294  call error_handler("IN FieldScatter", rc)
295 
296  if (localpet == 0) dummy2d = sfcdata%tprcp
297 
298  print*,"- CALL FieldScatter FOR INPUT TPRCP."
299  call esmf_fieldscatter(tprcp_input_grid, dummy2d, rootpet=0, rc=rc)
300  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
301  call error_handler("IN FieldScatter", rc)
302 
303  if (localpet == 0) dummy2d = sfcdata%f10m
304 
305  print*,"- CALL FieldScatter FOR INPUT F10M."
306  call esmf_fieldscatter(f10m_input_grid, dummy2d, rootpet=0, rc=rc)
307  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
308  call error_handler("IN FieldScatter", rc)
309 
310  if (localpet == 0) dummy2d = sfcdata%uustar
311 
312  print*,"- CALL FieldScatter FOR INPUT USTAR."
313  call esmf_fieldscatter(ustar_input_grid, dummy2d, rootpet=0, rc=rc)
314  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
315  call error_handler("IN FieldScatter", rc)
316 
317  if (localpet == 0) dummy2d = sfcdata%ffmm
318 
319  print*,"- CALL FieldScatter FOR INPUT FFMM."
320  call esmf_fieldscatter(ffmm_input_grid, dummy2d, rootpet=0, rc=rc)
321  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
322  call error_handler("IN FieldScatter", rc)
323 
324  if (localpet == 0) dummy2d = sfcdata%srflag
325 
326  print*,"- CALL FieldScatter FOR INPUT SRFLAG."
327  call esmf_fieldscatter(srflag_input_grid, dummy2d, rootpet=0, rc=rc)
328  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
329  call error_handler("IN FieldScatter", rc)
330 
331  if (localpet == 0) dummy2d = sfcdata%tsea
332 
333  print*,"- CALL FieldScatter FOR INPUT SKIN TEMP."
334  call esmf_fieldscatter(skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
335  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
336  call error_handler("IN FieldScatter", rc)
337 
338  if (localpet == 0) dummy2d = nint(sfcdata%stype)
339 
340  print*,"- CALL FieldScatter FOR INPUT SOIL TYPE."
341  call esmf_fieldscatter(soil_type_input_grid, dummy2d, rootpet=0, rc=rc)
342  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
343  call error_handler("IN FieldScatter", rc)
344 
345  if (localpet == 0) dummy2d = sfcdata%orog
346 
347  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
348  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
349  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
350  call error_handler("IN FieldScatter", rc)
351 
352  if (localpet == 0) dummy3d = sfcdata%slc
353 
354  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
355  call esmf_fieldscatter(soilm_liq_input_grid, dummy3d, rootpet=0, rc=rc)
356  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
357  call error_handler("IN FieldScatter", rc)
358 
359  if (localpet == 0) dummy3d = sfcdata%smc
360 
361  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
362  call esmf_fieldscatter(soilm_tot_input_grid, dummy3d, rootpet=0, rc=rc)
363  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
364  call error_handler("IN FieldScatter", rc)
365 
366  if (localpet == 0) dummy3d = sfcdata%stc
367 
368  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
369  call esmf_fieldscatter(soil_temp_input_grid, dummy3d, rootpet=0, rc=rc)
370  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
371  call error_handler("IN FieldScatter", rc)
372 
373  deallocate(dummy2d, dummy3d)
374  call sfcio_axdbta(sfcdata, iret)
375 
376  call sfcio_sclose(23, iret)
377 
378  end subroutine read_input_sfc_gfs_sfcio_file
379 
387  subroutine read_input_sfc_gfs_gaussian_nemsio_file(localpet)
388 
389  implicit none
390 
391  integer, intent(in) :: localpet
392 
393  character(len=300) :: the_file
394 
395  integer :: rc
396 
397  real(nemsio_realkind), allocatable :: dummy(:)
398  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
399  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
400 
401  type(nemsio_gfile) :: gfile
402 
403  the_file = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
404 
405  if (localpet == 0) then
406  allocate(dummy3d(i_input,j_input,lsoil_input))
407  allocate(dummy2d(i_input,j_input))
408  allocate(dummy(i_input*j_input))
409  print*,"- OPEN FILE ", trim(the_file)
410  call nemsio_open(gfile, the_file, "read", iret=rc)
411  if (rc /= 0) call error_handler("OPENING FILE.", rc)
412  else
413  allocate(dummy3d(0,0,0))
414  allocate(dummy2d(0,0))
415  allocate(dummy(0))
416  endif
417 
418  if (localpet == 0) then
419  print*,"- READ TERRAIN."
420  call nemsio_readrecv(gfile, "orog", "sfc", 1, dummy, 0, iret=rc)
421  if (rc /= 0) call error_handler("READING TERRAIN.", rc)
422  dummy2d = reshape(dummy, (/i_input,j_input/))
423  print*,'orog ',maxval(dummy2d),minval(dummy2d)
424  endif
425 
426  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
427  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
428  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
429  call error_handler("IN FieldScatter", rc)
430 
431  if (localpet == 0) then
432  print*,"- READ LANDSEA MASK."
433  call nemsio_readrecv(gfile, "land", "sfc", 1, dummy, 0, iret=rc)
434  if (rc /= 0) call error_handler("READING LANDSEA MASK.", rc)
435  dummy2d = reshape(dummy, (/i_input,j_input/))
436  print*,'landmask ',maxval(dummy2d),minval(dummy2d)
437  endif
438 
439  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
440  call esmf_fieldscatter(landsea_mask_input_grid, dummy2d, rootpet=0, rc=rc)
441  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
442  call error_handler("IN FieldScatter", rc)
443 
444  if (localpet == 0) then
445  print*,"- READ SEAICE FRACTION."
446  call nemsio_readrecv(gfile, "icec", "sfc", 1, dummy, 0, iret=rc)
447  if (rc /= 0) call error_handler("READING SEAICE FRACTION.", rc)
448  dummy2d = reshape(dummy, (/i_input,j_input/))
449  print*,'icec ',maxval(dummy2d),minval(dummy2d)
450  endif
451 
452  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE FRACTION."
453  call esmf_fieldscatter(seaice_fract_input_grid, dummy2d, rootpet=0, rc=rc)
454  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
455  call error_handler("IN FieldScatter", rc)
456 
457  if (localpet == 0) then
458  print*,"- READ SEAICE DEPTH."
459  call nemsio_readrecv(gfile, "icetk", "sfc", 1, dummy, 0, iret=rc)
460  if (rc /= 0) call error_handler("READING SEAICE DEPTH.", rc)
461  dummy2d = reshape(dummy, (/i_input,j_input/))
462  print*,'icetk ',maxval(dummy2d),minval(dummy2d)
463  endif
464 
465  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE DEPTH."
466  call esmf_fieldscatter(seaice_depth_input_grid, dummy2d, rootpet=0, rc=rc)
467  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
468  call error_handler("IN FieldScatter", rc)
469 
470  if (localpet == 0) then
471  print*,"- READ SEAICE SKIN TEMPERATURE."
472  call nemsio_readrecv(gfile, "tisfc", "sfc", 1, dummy, 0, iret=rc)
473  if (rc /= 0) call error_handler("READING SEAICE SKIN TEMP.", rc)
474  dummy2d = reshape(dummy, (/i_input,j_input/))
475  print*,'ti ',maxval(dummy2d),minval(dummy2d)
476  endif
477 
478  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE SKIN TEMPERATURE."
479  call esmf_fieldscatter(seaice_skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
480  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
481  call error_handler("IN FieldScatter", rc)
482 
483  if (localpet == 0) then
484  print*,"- READ SNOW LIQUID EQUIVALENT."
485  call nemsio_readrecv(gfile, "weasd", "sfc", 1, dummy, 0, iret=rc)
486  if (rc /= 0) call error_handler("READING SNOW LIQUID EQUIVALENT.", rc)
487  dummy2d = reshape(dummy, (/i_input,j_input/))
488  print*,'weasd ',maxval(dummy2d),minval(dummy2d)
489  endif
490 
491  print*,"- CALL FieldScatter FOR INPUT GRID SNOW LIQUID EQUIVALENT."
492  call esmf_fieldscatter(snow_liq_equiv_input_grid, dummy2d, rootpet=0, rc=rc)
493  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
494  call error_handler("IN FieldScatter", rc)
495 
496  if (localpet == 0) then
497  print*,"- READ SNOW DEPTH."
498  call nemsio_readrecv(gfile, "snod", "sfc", 1, dummy, 0, iret=rc)
499  if (rc /= 0) call error_handler("READING SNOW DEPTH.", rc)
500  dummy2d = reshape(dummy, (/i_input,j_input/))
501  print*,'snod ',maxval(dummy2d),minval(dummy2d)
502  endif
503 
504  print*,"- CALL FieldScatter FOR INPUT GRID SNOW DEPTH."
505  call esmf_fieldscatter(snow_depth_input_grid, dummy2d, rootpet=0, rc=rc)
506  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
507  call error_handler("IN FieldScatter", rc)
508 
509  if (localpet == 0) then
510  print*,"- READ VEG TYPE."
511  call nemsio_readrecv(gfile, "vtype", "sfc", 1, dummy, 0, iret=rc)
512  if (rc /= 0) call error_handler("READING VEG TYPE", rc)
513  dummy2d = reshape(dummy, (/i_input,j_input/))
514  print*,'vtype ',maxval(dummy2d),minval(dummy2d)
515  endif
516 
517  print*,"- CALL FieldScatter FOR INPUT GRID VEG TYPE."
518  call esmf_fieldscatter(veg_type_input_grid, dummy2d, rootpet=0, rc=rc)
519  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
520  call error_handler("IN FieldScatter", rc)
521 
522  if (localpet == 0) then
523  print*,"- READ SOIL TYPE."
524  call nemsio_readrecv(gfile, "sotyp", "sfc", 1, dummy, 0, iret=rc)
525  if (rc /= 0) call error_handler("READING SOIL TYPE.", rc)
526  dummy2d = reshape(dummy, (/i_input,j_input/))
527  print*,'sotype ',maxval(dummy2d),minval(dummy2d)
528  endif
529 
530  print*,"- CALL FieldScatter FOR INPUT GRID SOIL TYPE."
531  call esmf_fieldscatter(soil_type_input_grid, dummy2d, rootpet=0, rc=rc)
532  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
533  call error_handler("IN FieldScatter", rc)
534 
535  if (localpet == 0) then
536  print*,"- READ T2M."
537  call nemsio_readrecv(gfile, "tmp", "2 m above gnd", 1, dummy, 0, iret=rc)
538  if (rc /= 0) call error_handler("READING T2M.", rc)
539  dummy2d = reshape(dummy, (/i_input,j_input/))
540  print*,'t2m ',maxval(dummy2d),minval(dummy2d)
541  endif
542 
543  print*,"- CALL FieldScatter FOR INPUT GRID T2M."
544  call esmf_fieldscatter(t2m_input_grid, dummy2d, rootpet=0, rc=rc)
545  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
546  call error_handler("IN FieldScatter", rc)
547 
548  if (localpet == 0) then
549  print*,"- READ Q2M."
550  call nemsio_readrecv(gfile, "spfh", "2 m above gnd", 1, dummy, 0, iret=rc)
551  if (rc /= 0) call error_handler("READING Q2M.", rc)
552  dummy2d = reshape(dummy, (/i_input,j_input/))
553  print*,'q2m ',maxval(dummy2d),minval(dummy2d)
554  endif
555 
556  print*,"- CALL FieldScatter FOR INPUT GRID Q2M."
557  call esmf_fieldscatter(q2m_input_grid, dummy2d, rootpet=0, rc=rc)
558  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
559  call error_handler("IN FieldScatter", rc)
560 
561  if (localpet == 0) then
562  print*,"- READ TPRCP."
563  call nemsio_readrecv(gfile, "tprcp", "sfc", 1, dummy, 0, iret=rc)
564  if (rc /= 0) call error_handler("READING TPRCP.", rc)
565  dummy2d = reshape(dummy, (/i_input,j_input/))
566  print*,'tprcp ',maxval(dummy2d),minval(dummy2d)
567  endif
568 
569  print*,"- CALL FieldScatter FOR INPUT GRID TPRCP."
570  call esmf_fieldscatter(tprcp_input_grid, dummy2d, rootpet=0, rc=rc)
571  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
572  call error_handler("IN FieldScatter", rc)
573 
574  if (localpet == 0) then
575  print*,"- READ FFMM."
576  call nemsio_readrecv(gfile, "ffmm", "sfc", 1, dummy, 0, iret=rc)
577  if (rc /= 0) call error_handler("READING FFMM.", rc)
578  dummy2d = reshape(dummy, (/i_input,j_input/))
579  print*,'ffmm ',maxval(dummy2d),minval(dummy2d)
580  endif
581 
582  print*,"- CALL FieldScatter FOR INPUT GRID FFMM"
583  call esmf_fieldscatter(ffmm_input_grid, dummy2d, rootpet=0, rc=rc)
584  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
585  call error_handler("IN FieldScatter", rc)
586 
587  if (localpet == 0) then
588  print*,"- READ USTAR."
589  call nemsio_readrecv(gfile, "fricv", "sfc", 1, dummy, 0, iret=rc)
590  if (rc /= 0) call error_handler("READING USTAR.", rc)
591  dummy2d = reshape(dummy, (/i_input,j_input/))
592  print*,'fricv ',maxval(dummy2d),minval(dummy2d)
593  endif
594 
595  print*,"- CALL FieldScatter FOR INPUT GRID USTAR"
596  call esmf_fieldscatter(ustar_input_grid, dummy2d, rootpet=0, rc=rc)
597  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
598  call error_handler("IN FieldScatter", rc)
599 
600  if (localpet == 0) dummy2d = 0.0
601  print*,"- CALL FieldScatter FOR INPUT GRID SRFLAG"
602  call esmf_fieldscatter(srflag_input_grid, dummy2d, rootpet=0, rc=rc)
603  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
604  call error_handler("IN FieldScatter", rc)
605 
606  if (localpet == 0) then
607  print*,"- READ SKIN TEMPERATURE."
608  call nemsio_readrecv(gfile, "tmp", "sfc", 1, dummy, 0, iret=rc)
609  if (rc /= 0) call error_handler("READING SKIN TEMPERATURE.", rc)
610  dummy2d = reshape(dummy, (/i_input,j_input/))
611  print*,'tmp ',maxval(dummy2d),minval(dummy2d)
612  endif
613 
614  print*,"- CALL FieldScatter FOR INPUT GRID SKIN TEMPERATURE"
615  call esmf_fieldscatter(skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
616  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
617  call error_handler("IN FieldScatter", rc)
618 
619  if (localpet == 0) then
620  print*,"- READ F10M."
621  call nemsio_readrecv(gfile, "f10m", "10 m above gnd", 1, dummy, 0, iret=rc)
622  if (rc /= 0) call error_handler("READING F10M.", rc)
623  dummy2d = reshape(dummy, (/i_input,j_input/))
624  print*,'f10m ',maxval(dummy2d),minval(dummy2d)
625  endif
626 
627  print*,"- CALL FieldScatter FOR INPUT GRID F10M."
628  call esmf_fieldscatter(f10m_input_grid, dummy2d, rootpet=0, rc=rc)
629  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
630  call error_handler("IN FieldScatter", rc)
631 
632  if (localpet == 0) then
633  print*,"- READ CANOPY MOISTURE CONTENT."
634  call nemsio_readrecv(gfile, "cnwat", "sfc", 1, dummy, 0, iret=rc)
635  if (rc /= 0) call error_handler("READING CANOPY MOISTURE CONTENT.", rc)
636  dummy2d = reshape(dummy, (/i_input,j_input/))
637  print*,'cnwat ',maxval(dummy2d),minval(dummy2d)
638  endif
639 
640  print*,"- CALL FieldScatter FOR INPUT GRID CANOPY MOISTURE CONTENT."
641  call esmf_fieldscatter(canopy_mc_input_grid, dummy2d, rootpet=0, rc=rc)
642  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
643  call error_handler("IN FieldScatter", rc)
644 
645  if (localpet == 0) then
646  print*,"- READ Z0."
647  call nemsio_readrecv(gfile, "sfcr", "sfc", 1, dummy, 0, iret=rc)
648  if (rc /= 0) call error_handler("READING Z0.", rc)
649  dummy2d = reshape(dummy, (/i_input,j_input/))
650  print*,'sfcr ',maxval(dummy2d),minval(dummy2d)
651  endif
652 
653  print*,"- CALL FieldScatter FOR INPUT GRID Z0."
654  call esmf_fieldscatter(z0_input_grid, dummy2d, rootpet=0, rc=rc)
655  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
656  call error_handler("IN FieldScatter", rc)
657 
658  deallocate(dummy2d)
659 
660  if (localpet == 0) then
661  print*,"- READ LIQUID SOIL MOISTURE."
662  call nemsio_readrecv(gfile, "slc", "soil layer", 1, dummy, 0, iret=rc)
663  if (rc /= 0) call error_handler("READING LAYER 1 LIQUID SOIL MOIST.", rc)
664  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
665  call nemsio_readrecv(gfile, "slc", "soil layer", 2, dummy, 0, iret=rc)
666  if (rc /= 0) call error_handler("READING LAYER 2 LIQUID SOIL MOIST.", rc)
667  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
668  call nemsio_readrecv(gfile, "slc", "soil layer", 3, dummy, 0, iret=rc)
669  if (rc /= 0) call error_handler("READING LAYER 3 LIQUID SOIL MOIST.", rc)
670  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
671  call nemsio_readrecv(gfile, "slc", "soil layer", 4, dummy, 0, iret=rc)
672  if (rc /= 0) call error_handler("READING LAYER 4 LIQUID SOIL MOIST.", rc)
673  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
674  print*,'slc ',maxval(dummy3d),minval(dummy3d)
675  endif
676 
677  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
678  call esmf_fieldscatter(soilm_liq_input_grid, dummy3d, rootpet=0, rc=rc)
679  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
680  call error_handler("IN FieldScatter", rc)
681 
682  if (localpet == 0) then
683  print*,"- READ TOTAL SOIL MOISTURE."
684  call nemsio_readrecv(gfile, "smc", "soil layer", 1, dummy, 0, iret=rc)
685  if (rc /= 0) call error_handler("READING LAYER 1 TOTAL SOIL MOIST.", rc)
686  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
687  call nemsio_readrecv(gfile, "smc", "soil layer", 2, dummy, 0, iret=rc)
688  if (rc /= 0) call error_handler("READING LAYER 2 TOTAL SOIL MOIST.", rc)
689  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
690  call nemsio_readrecv(gfile, "smc", "soil layer", 3, dummy, 0, iret=rc)
691  if (rc /= 0) call error_handler("READING LAYER 3 TOTAL SOIL MOIST.", rc)
692  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
693  call nemsio_readrecv(gfile, "smc", "soil layer", 4, dummy, 0, iret=rc)
694  if (rc /= 0) call error_handler("READING LAYER 4 TOTAL SOIL MOIST.", rc)
695  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
696  print*,'smc ',maxval(dummy3d),minval(dummy3d)
697  endif
698 
699  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
700  call esmf_fieldscatter(soilm_tot_input_grid, dummy3d, rootpet=0, rc=rc)
701  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
702  call error_handler("IN FieldScatter", rc)
703 
704  if (localpet == 0) then
705  print*,"- READ SOIL TEMPERATURE."
706  call nemsio_readrecv(gfile, "stc", "soil layer", 1, dummy, 0, iret=rc)
707  if (rc /= 0) call error_handler("READING LAYER 1 SOIL TEMP.", rc)
708  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
709  call nemsio_readrecv(gfile, "stc", "soil layer", 2, dummy, 0, iret=rc)
710  if (rc /= 0) call error_handler("READING LAYER 2 SOIL TEMP.", rc)
711  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
712  call nemsio_readrecv(gfile, "stc", "soil layer", 3, dummy, 0, iret=rc)
713  if (rc /= 0) call error_handler("READING LAYER 3 SOIL TEMP.", rc)
714  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
715  call nemsio_readrecv(gfile, "stc", "soil layer", 4, dummy, 0, iret=rc)
716  if (rc /= 0) call error_handler("READING LAYER 4 SOIL TEMP.", rc)
717  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
718  print*,'stc ',maxval(dummy3d),minval(dummy3d)
719  endif
720 
721  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
722  call esmf_fieldscatter(soil_temp_input_grid, dummy3d, rootpet=0, rc=rc)
723  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
724  call error_handler("IN FieldScatter", rc)
725 
726  deallocate(dummy3d, dummy)
727 
728  if (localpet == 0) call nemsio_close(gfile)
729 
730  end subroutine read_input_sfc_gfs_gaussian_nemsio_file
731 
736  subroutine read_input_sfc_gaussian_nemsio_file(localpet)
738  implicit none
739 
740  integer, intent(in) :: localpet
741 
742  character(len=250) :: the_file
743 
744  integer :: rc
745 
746  real(nemsio_realkind), allocatable :: dummy(:)
747  real(esmf_kind_r8), allocatable :: dummy2d(:,:)
748  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
749 
750  type(nemsio_gfile) :: gfile
751 
752  the_file = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
753 
754  if (localpet == 0) then
755  allocate(dummy3d(i_input,j_input,lsoil_input))
756  allocate(dummy2d(i_input,j_input))
757  allocate(dummy(i_input*j_input))
758  print*,"- OPEN FILE ", trim(the_file)
759  call nemsio_open(gfile, the_file, "read", iret=rc)
760  if (rc /= 0) call error_handler("OPENING FILE.", rc)
761  else
762  allocate(dummy3d(0,0,0))
763  allocate(dummy2d(0,0))
764  allocate(dummy(0))
765  endif
766 
767  if (localpet == 0) then
768  print*,"- READ TERRAIN."
769  call nemsio_readrecv(gfile, "orog", "sfc", 1, dummy, 0, iret=rc)
770  if (rc /= 0) call error_handler("READING TERRAIN.", rc)
771  dummy2d = reshape(dummy, (/i_input,j_input/))
772  print*,'orog ',maxval(dummy2d),minval(dummy2d)
773  endif
774 
775  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
776  call esmf_fieldscatter(terrain_input_grid, dummy2d, rootpet=0, rc=rc)
777  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
778  call error_handler("IN FieldScatter", rc)
779 
780  if (localpet == 0) then
781  print*,"- READ LANDSEA MASK."
782  call nemsio_readrecv(gfile, "land", "sfc", 1, dummy, 0, iret=rc)
783  if (rc /= 0) call error_handler("READING LANDSEA MASK.", rc)
784  dummy2d = reshape(dummy, (/i_input,j_input/))
785  print*,'landmask ',maxval(dummy2d),minval(dummy2d)
786  endif
787 
788  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
789  call esmf_fieldscatter(landsea_mask_input_grid, dummy2d, rootpet=0, rc=rc)
790  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
791  call error_handler("IN FieldScatter", rc)
792 
793  if (localpet == 0) then
794  print*,"- READ SEAICE FRACTION."
795  call nemsio_readrecv(gfile, "icec", "sfc", 1, dummy, 0, iret=rc)
796  if (rc /= 0) call error_handler("READING SEAICE FRACTION.", rc)
797  dummy2d = reshape(dummy, (/i_input,j_input/))
798  print*,'icec ',maxval(dummy2d),minval(dummy2d)
799  endif
800 
801  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE FRACTION."
802  call esmf_fieldscatter(seaice_fract_input_grid, dummy2d, rootpet=0, rc=rc)
803  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
804  call error_handler("IN FieldScatter", rc)
805 
806  if (localpet == 0) then
807  print*,"- READ SEAICE DEPTH."
808  call nemsio_readrecv(gfile, "icetk", "sfc", 1, dummy, 0, iret=rc)
809  if (rc /= 0) call error_handler("READING SEAICE DEPTH.", rc)
810  dummy2d = reshape(dummy, (/i_input,j_input/))
811  print*,'icetk ',maxval(dummy2d),minval(dummy2d)
812  endif
813 
814  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE DEPTH."
815  call esmf_fieldscatter(seaice_depth_input_grid, dummy2d, rootpet=0, rc=rc)
816  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
817  call error_handler("IN FieldScatter", rc)
818 
819  if (localpet == 0) then
820  print*,"- READ SEAICE SKIN TEMPERATURE."
821  call nemsio_readrecv(gfile, "ti", "sfc", 1, dummy, 0, iret=rc)
822  if (rc /= 0) call error_handler("READING SEAICE SKIN TEMP.", rc)
823  dummy2d = reshape(dummy, (/i_input,j_input/))
824  print*,'ti ',maxval(dummy2d),minval(dummy2d)
825  endif
826 
827  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE SKIN TEMPERATURE."
828  call esmf_fieldscatter(seaice_skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
829  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
830  call error_handler("IN FieldScatter", rc)
831 
832  if (localpet == 0) then
833  print*,"- READ SNOW LIQUID EQUIVALENT."
834  call nemsio_readrecv(gfile, "weasd", "sfc", 1, dummy, 0, iret=rc)
835  if (rc /= 0) call error_handler("READING SNOW LIQUID EQUIVALENT.", rc)
836  dummy2d = reshape(dummy, (/i_input,j_input/))
837  print*,'weasd ',maxval(dummy2d),minval(dummy2d)
838  endif
839 
840  print*,"- CALL FieldScatter FOR INPUT GRID SNOW LIQUID EQUIVALENT."
841  call esmf_fieldscatter(snow_liq_equiv_input_grid, dummy2d, rootpet=0, rc=rc)
842  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
843  call error_handler("IN FieldScatter", rc)
844 
845  if (localpet == 0) then
846  print*,"- READ SNOW DEPTH."
847  call nemsio_readrecv(gfile, "snod", "sfc", 1, dummy, 0, iret=rc)
848  if (rc /= 0) call error_handler("READING SNOW DEPTH.", rc)
849  dummy2d = reshape(dummy, (/i_input,j_input/)) * 1000.0_8
850  print*,'snod ',maxval(dummy2d),minval(dummy2d)
851  endif
852 
853  print*,"- CALL FieldScatter FOR INPUT GRID SNOW DEPTH."
854  call esmf_fieldscatter(snow_depth_input_grid, dummy2d, rootpet=0, rc=rc)
855  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
856  call error_handler("IN FieldScatter", rc)
857 
858  if (localpet == 0) then
859  print*,"- READ VEG TYPE."
860  call nemsio_readrecv(gfile, "vtype", "sfc", 1, dummy, 0, iret=rc)
861  if (rc /= 0) call error_handler("READING VEG TYPE", rc)
862  dummy2d = reshape(dummy, (/i_input,j_input/))
863  print*,'vtype ',maxval(dummy2d),minval(dummy2d)
864  endif
865 
866  print*,"- CALL FieldScatter FOR INPUT GRID VEG TYPE."
867  call esmf_fieldscatter(veg_type_input_grid, dummy2d, rootpet=0, rc=rc)
868  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
869  call error_handler("IN FieldScatter", rc)
870 
871  if (localpet == 0) then
872  print*,"- READ SOIL TYPE."
873  call nemsio_readrecv(gfile, "sotyp", "sfc", 1, dummy, 0, iret=rc)
874  if (rc /= 0) call error_handler("READING SOIL TYPE.", rc)
875  dummy2d = reshape(dummy, (/i_input,j_input/))
876  print*,'sotype ',maxval(dummy2d),minval(dummy2d)
877  endif
878 
879  print*,"- CALL FieldScatter FOR INPUT GRID SOIL TYPE."
880  call esmf_fieldscatter(soil_type_input_grid, dummy2d, rootpet=0, rc=rc)
881  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
882  call error_handler("IN FieldScatter", rc)
883 
884  if (localpet == 0) then
885  print*,"- READ T2M."
886  call nemsio_readrecv(gfile, "tmp", "2 m above gnd", 1, dummy, 0, iret=rc)
887  if (rc /= 0) call error_handler("READING T2M.", rc)
888  dummy2d = reshape(dummy, (/i_input,j_input/))
889  print*,'t2m ',maxval(dummy2d),minval(dummy2d)
890  endif
891 
892  print*,"- CALL FieldScatter FOR INPUT GRID T2M."
893  call esmf_fieldscatter(t2m_input_grid, dummy2d, rootpet=0, rc=rc)
894  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
895  call error_handler("IN FieldScatter", rc)
896 
897  if (localpet == 0) then
898  print*,"- READ Q2M."
899  call nemsio_readrecv(gfile, "spfh", "2 m above gnd", 1, dummy, 0, iret=rc)
900  if (rc /= 0) call error_handler("READING Q2M.", rc)
901  dummy2d = reshape(dummy, (/i_input,j_input/))
902  print*,'q2m ',maxval(dummy2d),minval(dummy2d)
903  endif
904 
905  print*,"- CALL FieldScatter FOR INPUT GRID Q2M."
906  call esmf_fieldscatter(q2m_input_grid, dummy2d, rootpet=0, rc=rc)
907  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
908  call error_handler("IN FieldScatter", rc)
909 
910  if (localpet == 0) then
911  print*,"- READ TPRCP."
912  call nemsio_readrecv(gfile, "tprcp", "sfc", 1, dummy, 0, iret=rc)
913  if (rc /= 0) call error_handler("READING TPRCP.", rc)
914  dummy2d = reshape(dummy, (/i_input,j_input/))
915  print*,'tprcp ',maxval(dummy2d),minval(dummy2d)
916  endif
917 
918  print*,"- CALL FieldScatter FOR INPUT GRID TPRCP."
919  call esmf_fieldscatter(tprcp_input_grid, dummy2d, rootpet=0, rc=rc)
920  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
921  call error_handler("IN FieldScatter", rc)
922 
923  if (localpet == 0) then
924  print*,"- READ FFMM."
925  call nemsio_readrecv(gfile, "ffmm", "sfc", 1, dummy, 0, iret=rc)
926  if (rc /= 0) call error_handler("READING FFMM.", rc)
927  dummy2d = reshape(dummy, (/i_input,j_input/))
928  print*,'ffmm ',maxval(dummy2d),minval(dummy2d)
929  endif
930 
931  print*,"- CALL FieldScatter FOR INPUT GRID FFMM"
932  call esmf_fieldscatter(ffmm_input_grid, dummy2d, rootpet=0, rc=rc)
933  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
934  call error_handler("IN FieldScatter", rc)
935 
936  if (localpet == 0) then
937  print*,"- READ USTAR."
938  call nemsio_readrecv(gfile, "fricv", "sfc", 1, dummy, 0, iret=rc)
939  if (rc /= 0) call error_handler("READING USTAR.", rc)
940  dummy2d = reshape(dummy, (/i_input,j_input/))
941  print*,'fricv ',maxval(dummy2d),minval(dummy2d)
942  endif
943 
944  print*,"- CALL FieldScatter FOR INPUT GRID USTAR"
945  call esmf_fieldscatter(ustar_input_grid, dummy2d, rootpet=0, rc=rc)
946  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
947  call error_handler("IN FieldScatter", rc)
948 
949  if (localpet == 0) dummy2d = 0.0
950  print*,"- CALL FieldScatter FOR INPUT GRID SRFLAG"
951  call esmf_fieldscatter(srflag_input_grid, dummy2d, rootpet=0, rc=rc)
952  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
953  call error_handler("IN FieldScatter", rc)
954 
955  if (localpet == 0) then
956  print*,"- READ SKIN TEMPERATURE."
957  call nemsio_readrecv(gfile, "tmp", "sfc", 1, dummy, 0, iret=rc)
958  if (rc /= 0) call error_handler("READING SKIN TEMPERATURE.", rc)
959  dummy2d = reshape(dummy, (/i_input,j_input/))
960  print*,'tmp ',maxval(dummy2d),minval(dummy2d)
961  endif
962 
963  print*,"- CALL FieldScatter FOR INPUT GRID SKIN TEMPERATURE"
964  call esmf_fieldscatter(skin_temp_input_grid, dummy2d, rootpet=0, rc=rc)
965  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
966  call error_handler("IN FieldScatter", rc)
967 
968  if (localpet == 0) then
969  print*,"- READ F10M."
970  call nemsio_readrecv(gfile, "f10m", "10 m above gnd", 1, dummy, 0, iret=rc)
971  if (rc /= 0) call error_handler("READING F10M.", rc)
972  dummy2d = reshape(dummy, (/i_input,j_input/))
973  print*,'f10m ',maxval(dummy2d),minval(dummy2d)
974  endif
975 
976  print*,"- CALL FieldScatter FOR INPUT GRID F10M."
977  call esmf_fieldscatter(f10m_input_grid, dummy2d, rootpet=0, rc=rc)
978  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
979  call error_handler("IN FieldScatter", rc)
980 
981  if (localpet == 0) then
982  print*,"- READ CANOPY MOISTURE CONTENT."
983  call nemsio_readrecv(gfile, "cnwat", "sfc", 1, dummy, 0, iret=rc)
984  if (rc /= 0) call error_handler("READING CANOPY MOISTURE CONTENT.", rc)
985  dummy2d = reshape(dummy, (/i_input,j_input/))
986  print*,'cnwat ',maxval(dummy2d),minval(dummy2d)
987  endif
988 
989  print*,"- CALL FieldScatter FOR INPUT GRID CANOPY MOISTURE CONTENT."
990  call esmf_fieldscatter(canopy_mc_input_grid, dummy2d, rootpet=0, rc=rc)
991  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
992  call error_handler("IN FieldScatter", rc)
993 
994  if (localpet == 0) then
995  print*,"- READ Z0."
996  call nemsio_readrecv(gfile, "sfcr", "sfc", 1, dummy, 0, iret=rc)
997  if (rc /= 0) call error_handler("READING Z0.", rc)
998  dummy2d = reshape(dummy, (/i_input,j_input/)) * 100.0_8 ! convert to cm
999  print*,'sfcr ',maxval(dummy2d),minval(dummy2d)
1000  endif
1001 
1002  print*,"- CALL FieldScatter FOR INPUT GRID Z0."
1003  call esmf_fieldscatter(z0_input_grid, dummy2d, rootpet=0, rc=rc)
1004  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1005  call error_handler("IN FieldScatter", rc)
1006 
1007  deallocate(dummy2d)
1008 
1009  if (localpet == 0) then
1010  print*,"- READ LIQUID SOIL MOISTURE."
1011  call nemsio_readrecv(gfile, "soill", "0-10 cm down", 1, dummy, 0, iret=rc)
1012  if (rc /= 0) call error_handler("READING LAYER 1 LIQUID SOIL MOIST.", rc)
1013  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
1014  call nemsio_readrecv(gfile, "soill", "10-40 cm down", 1, dummy, 0, iret=rc)
1015  if (rc /= 0) call error_handler("READING LAYER 2 LIQUID SOIL MOIST.", rc)
1016  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
1017  call nemsio_readrecv(gfile, "soill", "40-100 cm down", 1, dummy, 0, iret=rc)
1018  if (rc /= 0) call error_handler("READING LAYER 3 LIQUID SOIL MOIST.", rc)
1019  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
1020  call nemsio_readrecv(gfile, "soill", "100-200 cm down", 1, dummy, 0, iret=rc)
1021  if (rc /= 0) call error_handler("READING LAYER 4 LIQUID SOIL MOIST.", rc)
1022  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
1023  print*,'soill ',maxval(dummy3d),minval(dummy3d)
1024  endif
1025 
1026  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
1027  call esmf_fieldscatter(soilm_liq_input_grid, dummy3d, rootpet=0, rc=rc)
1028  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1029  call error_handler("IN FieldScatter", rc)
1030 
1031  if (localpet == 0) then
1032  print*,"- READ TOTAL SOIL MOISTURE."
1033  call nemsio_readrecv(gfile, "soilw", "0-10 cm down", 1, dummy, 0, iret=rc)
1034  if (rc /= 0) call error_handler("READING LAYER 1 TOTAL SOIL MOIST.", rc)
1035  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
1036  call nemsio_readrecv(gfile, "soilw", "10-40 cm down", 1, dummy, 0, iret=rc)
1037  if (rc /= 0) call error_handler("READING LAYER 2 TOTAL SOIL MOIST.", rc)
1038  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
1039  call nemsio_readrecv(gfile, "soilw", "40-100 cm down", 1, dummy, 0, iret=rc)
1040  if (rc /= 0) call error_handler("READING LAYER 3 TOTAL SOIL MOIST.", rc)
1041  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
1042  call nemsio_readrecv(gfile, "soilw", "100-200 cm down", 1, dummy, 0, iret=rc)
1043  if (rc /= 0) call error_handler("READING LAYER 4 TOTAL SOIL MOIST.", rc)
1044  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
1045  print*,'soilm ',maxval(dummy3d),minval(dummy3d)
1046  endif
1047 
1048  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
1049  call esmf_fieldscatter(soilm_tot_input_grid, dummy3d, rootpet=0, rc=rc)
1050  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1051  call error_handler("IN FieldScatter", rc)
1052 
1053  if (localpet == 0) then
1054  print*,"- READ SOIL TEMPERATURE."
1055  call nemsio_readrecv(gfile, "tmp", "0-10 cm down", 1, dummy, 0, iret=rc)
1056  if (rc /= 0) call error_handler("READING LAYER 1 SOIL TEMP.", rc)
1057  dummy3d(:,:,1) = reshape(dummy, (/i_input,j_input/))
1058  call nemsio_readrecv(gfile, "tmp", "10-40 cm down", 1, dummy, 0, iret=rc)
1059  if (rc /= 0) call error_handler("READING LAYER 2 SOIL TEMP.", rc)
1060  dummy3d(:,:,2) = reshape(dummy, (/i_input,j_input/))
1061  call nemsio_readrecv(gfile, "tmp", "40-100 cm down", 1, dummy, 0, iret=rc)
1062  if (rc /= 0) call error_handler("READING LAYER 3 SOIL TEMP.", rc)
1063  dummy3d(:,:,3) = reshape(dummy, (/i_input,j_input/))
1064  call nemsio_readrecv(gfile, "tmp", "100-200 cm down", 1, dummy, 0, iret=rc)
1065  if (rc /= 0) call error_handler("READING LAYER 4 SOIL TEMP.", rc)
1066  dummy3d(:,:,4) = reshape(dummy, (/i_input,j_input/))
1067  print*,'soilt ',maxval(dummy3d),minval(dummy3d)
1068  endif
1069 
1070  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
1071  call esmf_fieldscatter(soil_temp_input_grid, dummy3d, rootpet=0, rc=rc)
1072  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1073  call error_handler("IN FieldScatter", rc)
1074 
1075  deallocate(dummy3d, dummy)
1076 
1077  if (localpet == 0) call nemsio_close(gfile)
1078 
1079  end subroutine read_input_sfc_gaussian_nemsio_file
1080 
1085  subroutine read_input_sfc_restart_file(localpet)
1087  implicit none
1088 
1089  integer, intent(in) :: localpet
1090 
1091  character(len=500) :: tilefile
1092 
1093  integer :: error, rc
1094  integer :: id_dim, idim_input, jdim_input
1095  integer :: ncid, tile, id_var
1096 
1097  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1098  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1099 
1100 !---------------------------------------------------------------------------
1101 ! Get i/j dimensions and number of soil layers from first surface file.
1102 ! Do dimensions match those from the orography file?
1103 !---------------------------------------------------------------------------
1104 
1105  tilefile = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
1106  print*,"- READ GRID DIMENSIONS FROM: ", trim(tilefile)
1107  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1108  call netcdf_err(error, 'opening: '//trim(tilefile) )
1109 
1110  error=nf90_inq_dimid(ncid, 'xaxis_1', id_dim)
1111  call netcdf_err(error, 'reading xaxis_1 id' )
1112  error=nf90_inquire_dimension(ncid,id_dim,len=idim_input)
1113  call netcdf_err(error, 'reading xaxis_1 value' )
1114 
1115  error=nf90_inq_dimid(ncid, 'yaxis_1', id_dim)
1116  call netcdf_err(error, 'reading yaxis_1 id' )
1117  error=nf90_inquire_dimension(ncid,id_dim,len=jdim_input)
1118  call netcdf_err(error, 'reading yaxis_1 value' )
1119 
1120  if (idim_input /= i_input .or. jdim_input /= j_input) then
1121  call error_handler("DIMENSION MISMATCH BETWEEN SFC AND OROG FILES.", 1)
1122  endif
1123 
1124  error = nf90_close(ncid)
1125 
1126  if (localpet == 0) then
1127  allocate(data_one_tile(idim_input,jdim_input))
1128  allocate(data_one_tile_3d(idim_input,jdim_input,lsoil_input))
1129  else
1130  allocate(data_one_tile(0,0))
1131  allocate(data_one_tile_3d(0,0,0))
1132  endif
1133 
1134  terrain_loop: do tile = 1, num_tiles_input_grid
1135 
1136  if (localpet == 0) then
1137  tilefile = trim(orog_dir_input_grid) // trim(orog_files_input_grid(tile))
1138  print*,'- OPEN OROGRAPHY FILE: ', trim(tilefile)
1139  error=nf90_open(tilefile,nf90_nowrite,ncid)
1140  call netcdf_err(error, 'OPENING OROGRAPHY FILE' )
1141  error=nf90_inq_varid(ncid, 'orog_raw', id_var)
1142  call netcdf_err(error, 'READING OROG RECORD ID' )
1143  error=nf90_get_var(ncid, id_var, data_one_tile)
1144  call netcdf_err(error, 'READING OROG RECORD' )
1145  print*,'terrain check ',tile, maxval(data_one_tile)
1146  error=nf90_close(ncid)
1147  endif
1148 
1149  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
1150  call esmf_fieldscatter(terrain_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1151  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1152  call error_handler("IN FieldScatter", rc)
1153 
1154  enddo terrain_loop
1155 
1156  tile_loop : do tile = 1, num_tiles_input_grid
1157 
1158 ! liquid soil moisture
1159 
1160  if (localpet == 0) then
1161  call read_fv3_grid_data_netcdf('slc', tile, idim_input, jdim_input, &
1162  lsoil_input, sfcdata_3d=data_one_tile_3d)
1163  endif
1164 
1165  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
1166  call esmf_fieldscatter(soilm_liq_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1167  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1168  call error_handler("IN FieldScatter", rc)
1169 
1170  if (localpet == 0) then
1171  call read_fv3_grid_data_netcdf('smc', tile, idim_input, jdim_input, &
1172  lsoil_input, sfcdata_3d=data_one_tile_3d)
1173  endif
1174 
1175  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
1176  call esmf_fieldscatter(soilm_tot_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1177  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1178  call error_handler("IN FieldScatter", rc)
1179 
1180  if (localpet == 0) then
1181  call read_fv3_grid_data_netcdf('stc', tile, idim_input, jdim_input, &
1182  lsoil_input, sfcdata_3d=data_one_tile_3d)
1183  endif
1184 
1185  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
1186  call esmf_fieldscatter(soil_temp_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1187  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1188  call error_handler("IN FieldScatter", rc)
1189 
1190 ! land mask
1191 
1192  if (localpet == 0) then
1193  call read_fv3_grid_data_netcdf('slmsk', tile, idim_input, jdim_input, &
1194  lsoil_input, sfcdata=data_one_tile)
1195  endif
1196 
1197  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
1198  call esmf_fieldscatter(landsea_mask_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1199  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1200  call error_handler("IN FieldScatter", rc)
1201 
1202 ! sea ice fraction
1203 
1204  if (localpet == 0) then
1205  call read_fv3_grid_data_netcdf('fice', tile, idim_input, jdim_input, &
1206  lsoil_input, sfcdata=data_one_tile)
1207  endif
1208 
1209  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE FRACTION."
1210  call esmf_fieldscatter(seaice_fract_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1211  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1212  call error_handler("IN FieldScatter", rc)
1213 
1214 ! sea ice depth
1215 
1216  if (localpet == 0) then
1217  call read_fv3_grid_data_netcdf('hice', tile, idim_input, jdim_input, &
1218  lsoil_input, sfcdata=data_one_tile)
1219  endif
1220 
1221  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE DEPTH."
1222  call esmf_fieldscatter(seaice_depth_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1223  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1224  call error_handler("IN FieldScatter", rc)
1225 
1226 ! sea ice skin temperature
1227 
1228  if (localpet == 0) then
1229  call read_fv3_grid_data_netcdf('tisfc', tile, idim_input, jdim_input, &
1230  lsoil_input, sfcdata=data_one_tile)
1231  endif
1232 
1233  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE SKIN TEMPERATURE."
1234  call esmf_fieldscatter(seaice_skin_temp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1235  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1236  call error_handler("IN FieldScatter", rc)
1237 
1238 ! liquid equivalent snow depth
1239 
1240  if (localpet == 0) then
1241  call read_fv3_grid_data_netcdf('sheleg', tile, idim_input, jdim_input, &
1242  lsoil_input, sfcdata=data_one_tile)
1243  endif
1244 
1245  print*,"- CALL FieldScatter FOR INPUT GRID SNOW LIQUID EQUIVALENT."
1246  call esmf_fieldscatter(snow_liq_equiv_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1247  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1248  call error_handler("IN FieldScatter", rc)
1249 
1250 ! physical snow depth
1251 
1252  if (localpet == 0) then
1253  call read_fv3_grid_data_netcdf('snwdph', tile, idim_input, jdim_input, &
1254  lsoil_input, sfcdata=data_one_tile)
1255  data_one_tile = data_one_tile
1256  endif
1257 
1258  print*,"- CALL FieldScatter FOR INPUT GRID SNOW DEPTH."
1259  call esmf_fieldscatter(snow_depth_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1260  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1261  call error_handler("IN FieldScatter", rc)
1262 
1263 ! Vegetation type
1264 
1265  if (localpet == 0) then
1266  call read_fv3_grid_data_netcdf('vtype', tile, idim_input, jdim_input, &
1267  lsoil_input, sfcdata=data_one_tile)
1268  endif
1269 
1270  print*,"- CALL FieldScatter FOR INPUT GRID VEG TYPE."
1271  call esmf_fieldscatter(veg_type_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1272  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1273  call error_handler("IN FieldScatter", rc)
1274 
1275 ! Soil type
1276 
1277  if (localpet == 0) then
1278  call read_fv3_grid_data_netcdf('stype', tile, idim_input, jdim_input, &
1279  lsoil_input, sfcdata=data_one_tile)
1280  endif
1281 
1282  print*,"- CALL FieldScatter FOR INPUT GRID SOIL TYPE."
1283  call esmf_fieldscatter(soil_type_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1284  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1285  call error_handler("IN FieldScatter", rc)
1286 
1287 ! Two-meter temperature
1288 
1289  if (localpet == 0) then
1290  call read_fv3_grid_data_netcdf('t2m', tile, idim_input, jdim_input, &
1291  lsoil_input, sfcdata=data_one_tile)
1292  endif
1293 
1294  print*,"- CALL FieldScatter FOR INPUT GRID T2M."
1295  call esmf_fieldscatter(t2m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1296  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1297  call error_handler("IN FieldScatter", rc)
1298 
1299 ! Two-meter q
1300 
1301  if (localpet == 0) then
1302  call read_fv3_grid_data_netcdf('q2m', tile, idim_input, jdim_input, &
1303  lsoil_input, sfcdata=data_one_tile)
1304  endif
1305 
1306  print*,"- CALL FieldScatter FOR INPUT GRID Q2M."
1307  call esmf_fieldscatter(q2m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1308  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1309  call error_handler("IN FieldScatter", rc)
1310 
1311  if (localpet == 0) then
1312  call read_fv3_grid_data_netcdf('tprcp', tile, idim_input, jdim_input, &
1313  lsoil_input, sfcdata=data_one_tile)
1314  endif
1315 
1316  print*,"- CALL FieldScatter FOR INPUT GRID TPRCP."
1317  call esmf_fieldscatter(tprcp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1318  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1319  call error_handler("IN FieldScatter", rc)
1320 
1321  if (localpet == 0) then
1322  call read_fv3_grid_data_netcdf('f10m', tile, idim_input, jdim_input, &
1323  lsoil_input, sfcdata=data_one_tile)
1324  endif
1325 
1326  print*,"- CALL FieldScatter FOR INPUT GRID F10M"
1327  call esmf_fieldscatter(f10m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1328  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1329  call error_handler("IN FieldScatter", rc)
1330 
1331  if (localpet == 0) then
1332  call read_fv3_grid_data_netcdf('ffmm', tile, idim_input, jdim_input, &
1333  lsoil_input, sfcdata=data_one_tile)
1334  endif
1335 
1336  print*,"- CALL FieldScatter FOR INPUT GRID FFMM"
1337  call esmf_fieldscatter(ffmm_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1338  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1339  call error_handler("IN FieldScatter", rc)
1340 
1341  if (localpet == 0) then
1342  call read_fv3_grid_data_netcdf('uustar', tile, idim_input, jdim_input, &
1343  lsoil_input, sfcdata=data_one_tile)
1344  endif
1345 
1346  print*,"- CALL FieldScatter FOR INPUT GRID USTAR"
1347  call esmf_fieldscatter(ustar_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1348  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1349  call error_handler("IN FieldScatter", rc)
1350 
1351  if (localpet == 0) then
1352  call read_fv3_grid_data_netcdf('srflag', tile, idim_input, jdim_input, &
1353  lsoil_input, sfcdata=data_one_tile)
1354  endif
1355 
1356  print*,"- CALL FieldScatter FOR INPUT GRID SRFLAG"
1357  call esmf_fieldscatter(srflag_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1358  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1359  call error_handler("IN FieldScatter", rc)
1360 
1361  if (localpet == 0) then
1362  call read_fv3_grid_data_netcdf('tsea', tile, idim_input, jdim_input, &
1363  lsoil_input, sfcdata=data_one_tile)
1364  endif
1365 
1366  print*,"- CALL FieldScatter FOR INPUT GRID SKIN TEMPERATURE"
1367  call esmf_fieldscatter(skin_temp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1368  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1369  call error_handler("IN FieldScatter", rc)
1370 
1371  if (localpet == 0) then
1372  call read_fv3_grid_data_netcdf('canopy', tile, idim_input, jdim_input, &
1373  lsoil_input, sfcdata=data_one_tile)
1374  endif
1375 
1376  print*,"- CALL FieldScatter FOR INPUT GRID CANOPY MOISTURE CONTENT."
1377  call esmf_fieldscatter(canopy_mc_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1378  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1379  call error_handler("IN FieldScatter", rc)
1380 
1381  if (localpet == 0) then
1382  call read_fv3_grid_data_netcdf('zorl', tile, idim_input, jdim_input, &
1383  lsoil_input, sfcdata=data_one_tile)
1384  endif
1385 
1386  print*,"- CALL FieldScatter FOR INPUT GRID Z0."
1387  call esmf_fieldscatter(z0_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1388  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1389  call error_handler("IN FieldScatter", rc)
1390 
1391  enddo tile_loop
1392 
1393  deallocate(data_one_tile, data_one_tile_3d)
1394 
1395  end subroutine read_input_sfc_restart_file
1396 
1402  subroutine read_input_sfc_netcdf_file(localpet)
1404  implicit none
1405 
1406  integer, intent(in) :: localpet
1407 
1408  character(len=500) :: tilefile
1409 
1410  integer :: error, id_var
1411  integer :: id_dim, idim_input, jdim_input
1412  integer :: ncid, rc, tile
1413 
1414  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1415  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1416 
1417 !---------------------------------------------------------------------------
1418 ! Get i/j dimensions and number of soil layers from first surface file.
1419 ! Do dimensions match those from the orography file?
1420 !---------------------------------------------------------------------------
1421 
1422  tilefile = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(1))
1423  print*,"- READ GRID DIMENSIONS FROM: ", trim(tilefile)
1424  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
1425  call netcdf_err(error, 'opening: '//trim(tilefile) )
1426 
1427  error=nf90_inq_dimid(ncid, 'grid_xt', id_dim)
1428  call netcdf_err(error, 'reading grid_xt id' )
1429  error=nf90_inquire_dimension(ncid,id_dim,len=idim_input)
1430  call netcdf_err(error, 'reading grid_xt value' )
1431 
1432  error=nf90_inq_dimid(ncid, 'grid_yt', id_dim)
1433  call netcdf_err(error, 'reading grid_yt id' )
1434  error=nf90_inquire_dimension(ncid,id_dim,len=jdim_input)
1435  call netcdf_err(error, 'reading grid_yt value' )
1436 
1437  if (idim_input /= i_input .or. jdim_input /= j_input) then
1438  call error_handler("DIMENSION MISMATCH BETWEEN SFC AND OROG FILES.", 3)
1439  endif
1440 
1441  error = nf90_close(ncid)
1442 
1443  if (localpet == 0) then
1444  allocate(data_one_tile(idim_input,jdim_input))
1445  allocate(data_one_tile_3d(idim_input,jdim_input,lsoil_input))
1446  else
1447  allocate(data_one_tile(0,0))
1448  allocate(data_one_tile_3d(0,0,0))
1449  endif
1450 
1451  terrain_loop: do tile = 1, num_tiles_input_grid
1452 
1453  if (trim(input_type) == "gaussian_netcdf") then
1454  if (localpet == 0) then
1455  call read_fv3_grid_data_netcdf('orog', tile, idim_input, jdim_input, &
1456  lsoil_input, sfcdata=data_one_tile)
1457  endif
1458 
1459  else
1460 
1461  if (localpet == 0) then
1462  tilefile = trim(orog_dir_input_grid) // trim(orog_files_input_grid(tile))
1463  print*,'- OPEN OROGRAPHY FILE: ', trim(tilefile)
1464  error=nf90_open(tilefile,nf90_nowrite,ncid)
1465  call netcdf_err(error, 'OPENING OROGRAPHY FILE.' )
1466  error=nf90_inq_varid(ncid, 'orog_raw', id_var)
1467  call netcdf_err(error, 'READING OROGRAPHY RECORD ID.' )
1468  error=nf90_get_var(ncid, id_var, data_one_tile)
1469  call netcdf_err(error, 'READING OROGRAPHY RECORD.' )
1470  print*,'terrain check history ',tile, maxval(data_one_tile)
1471  error=nf90_close(ncid)
1472  endif
1473 
1474  endif
1475 
1476  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
1477  call esmf_fieldscatter(terrain_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1478  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1479  call error_handler("IN FieldScatter", rc)
1480 
1481  enddo terrain_loop
1482 
1483  tile_loop : do tile = 1, num_tiles_input_grid
1484 
1485 ! liquid soil moisture
1486 
1487  if (localpet == 0) then
1488  call read_fv3_grid_data_netcdf('soill1', tile, idim_input, jdim_input, &
1489  lsoil_input, sfcdata=data_one_tile)
1490  data_one_tile_3d(:,:,1) = data_one_tile
1491  call read_fv3_grid_data_netcdf('soill2', tile, idim_input, jdim_input, &
1492  lsoil_input, sfcdata=data_one_tile)
1493  data_one_tile_3d(:,:,2) = data_one_tile
1494  call read_fv3_grid_data_netcdf('soill3', tile, idim_input, jdim_input, &
1495  lsoil_input, sfcdata=data_one_tile)
1496  data_one_tile_3d(:,:,3) = data_one_tile
1497  call read_fv3_grid_data_netcdf('soill4', tile, idim_input, jdim_input, &
1498  lsoil_input, sfcdata=data_one_tile)
1499  data_one_tile_3d(:,:,4) = data_one_tile
1500  endif
1501 
1502  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
1503  call esmf_fieldscatter(soilm_liq_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1504  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1505  call error_handler("IN FieldScatter", rc)
1506 
1507 ! total soil moisture
1508 
1509  if (localpet == 0) then
1510  call read_fv3_grid_data_netcdf('soilw1', tile, idim_input, jdim_input, &
1511  lsoil_input, sfcdata=data_one_tile)
1512  data_one_tile_3d(:,:,1) = data_one_tile
1513  call read_fv3_grid_data_netcdf('soilw2', tile, idim_input, jdim_input, &
1514  lsoil_input, sfcdata=data_one_tile)
1515  data_one_tile_3d(:,:,2) = data_one_tile
1516  call read_fv3_grid_data_netcdf('soilw3', tile, idim_input, jdim_input, &
1517  lsoil_input, sfcdata=data_one_tile)
1518  data_one_tile_3d(:,:,3) = data_one_tile
1519  call read_fv3_grid_data_netcdf('soilw4', tile, idim_input, jdim_input, &
1520  lsoil_input, sfcdata=data_one_tile)
1521  data_one_tile_3d(:,:,4) = data_one_tile
1522  endif
1523 
1524  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
1525  call esmf_fieldscatter(soilm_tot_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1526  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1527  call error_handler("IN FieldScatter", rc)
1528 
1529 ! soil tempeature (ice temp at land ice points)
1530 
1531  if (localpet == 0) then
1532  call read_fv3_grid_data_netcdf('soilt1', tile, idim_input, jdim_input, &
1533  lsoil_input, sfcdata=data_one_tile)
1534  data_one_tile_3d(:,:,1) = data_one_tile
1535  call read_fv3_grid_data_netcdf('soilt2', tile, idim_input, jdim_input, &
1536  lsoil_input, sfcdata=data_one_tile)
1537  data_one_tile_3d(:,:,2) = data_one_tile
1538  call read_fv3_grid_data_netcdf('soilt3', tile, idim_input, jdim_input, &
1539  lsoil_input, sfcdata=data_one_tile)
1540  data_one_tile_3d(:,:,3) = data_one_tile
1541  call read_fv3_grid_data_netcdf('soilt4', tile, idim_input, jdim_input, &
1542  lsoil_input, sfcdata=data_one_tile)
1543  data_one_tile_3d(:,:,4) = data_one_tile
1544  endif
1545 
1546  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
1547  call esmf_fieldscatter(soil_temp_input_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1548  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1549  call error_handler("IN FieldScatter", rc)
1550 
1551 ! land mask
1552 
1553  if (localpet == 0) then
1554  call read_fv3_grid_data_netcdf('land', tile, idim_input, jdim_input, &
1555  lsoil_input, sfcdata=data_one_tile)
1556  endif
1557 
1558  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
1559  call esmf_fieldscatter(landsea_mask_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1560  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1561  call error_handler("IN FieldScatter", rc)
1562 
1563 ! sea ice fraction
1564 
1565  if (localpet == 0) then
1566  call read_fv3_grid_data_netcdf('icec', tile, idim_input, jdim_input, &
1567  lsoil_input, sfcdata=data_one_tile)
1568  endif
1569 
1570  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE FRACTION."
1571  call esmf_fieldscatter(seaice_fract_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1572  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1573  call error_handler("IN FieldScatter", rc)
1574 
1575 ! sea ice depth
1576 
1577  if (localpet == 0) then
1578  call read_fv3_grid_data_netcdf('icetk', tile, idim_input, jdim_input, &
1579  lsoil_input, sfcdata=data_one_tile)
1580  endif
1581 
1582  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE DEPTH."
1583  call esmf_fieldscatter(seaice_depth_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1584  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1585  call error_handler("IN FieldScatter", rc)
1586 
1587 ! sea ice skin temperature
1588 
1589  if (localpet == 0) then
1590  call read_fv3_grid_data_netcdf('tisfc', tile, idim_input, jdim_input, &
1591  lsoil_input, sfcdata=data_one_tile)
1592  endif
1593 
1594  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE SKIN TEMPERATURE."
1595  call esmf_fieldscatter(seaice_skin_temp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1596  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1597  call error_handler("IN FieldScatter", rc)
1598 
1599 ! liquid equivalent snow depth
1600 
1601  if (localpet == 0) then
1602  call read_fv3_grid_data_netcdf('weasd', tile, idim_input, jdim_input, &
1603  lsoil_input, sfcdata=data_one_tile)
1604  endif
1605 
1606  print*,"- CALL FieldScatter FOR INPUT GRID SNOW LIQUID EQUIVALENT."
1607  call esmf_fieldscatter(snow_liq_equiv_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1608  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1609  call error_handler("IN FieldScatter", rc)
1610 
1611 ! physical snow depth
1612 
1613  if (localpet == 0) then
1614  call read_fv3_grid_data_netcdf('snod', tile, idim_input, jdim_input, &
1615  lsoil_input, sfcdata=data_one_tile)
1616  data_one_tile = data_one_tile * 1000.0 ! convert from meters to mm.
1617  endif
1618 
1619  print*,"- CALL FieldScatter FOR INPUT GRID SNOW DEPTH."
1620  call esmf_fieldscatter(snow_depth_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1621  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1622  call error_handler("IN FieldScatter", rc)
1623 
1624 ! Vegetation type
1625 
1626  if (localpet == 0) then
1627  call read_fv3_grid_data_netcdf('vtype', tile, idim_input, jdim_input, &
1628  lsoil_input, sfcdata=data_one_tile)
1629  endif
1630 
1631  print*,"- CALL FieldScatter FOR INPUT GRID VEG TYPE."
1632  call esmf_fieldscatter(veg_type_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1633  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1634  call error_handler("IN FieldScatter", rc)
1635 
1636 ! Soil type
1637 
1638  if (localpet == 0) then
1639  call read_fv3_grid_data_netcdf('sotyp', tile, idim_input, jdim_input, &
1640  lsoil_input, sfcdata=data_one_tile)
1641  endif
1642 
1643  print*,"- CALL FieldScatter FOR INPUT GRID SOIL TYPE."
1644  call esmf_fieldscatter(soil_type_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1645  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1646  call error_handler("IN FieldScatter", rc)
1647 
1648 ! Two-meter temperature
1649 
1650  if (localpet == 0) then
1651  call read_fv3_grid_data_netcdf('tmp2m', tile, idim_input, jdim_input, &
1652  lsoil_input, sfcdata=data_one_tile)
1653  endif
1654 
1655  print*,"- CALL FieldScatter FOR INPUT GRID T2M."
1656  call esmf_fieldscatter(t2m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1657  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1658  call error_handler("IN FieldScatter", rc)
1659 
1660 ! Two-meter q
1661 
1662  if (localpet == 0) then
1663  call read_fv3_grid_data_netcdf('spfh2m', tile, idim_input, jdim_input, &
1664  lsoil_input, sfcdata=data_one_tile)
1665  endif
1666 
1667  print*,"- CALL FieldScatter FOR INPUT GRID Q2M."
1668  call esmf_fieldscatter(q2m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1669  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1670  call error_handler("IN FieldScatter", rc)
1671 
1672  if (localpet == 0) then
1673  call read_fv3_grid_data_netcdf('tprcp', tile, idim_input, jdim_input, &
1674  lsoil_input, sfcdata=data_one_tile)
1675  endif
1676 
1677  print*,"- CALL FieldScatter FOR INPUT GRID TPRCP."
1678  call esmf_fieldscatter(tprcp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1679  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1680  call error_handler("IN FieldScatter", rc)
1681 
1682  if (localpet == 0) then
1683  call read_fv3_grid_data_netcdf('f10m', tile, idim_input, jdim_input, &
1684  lsoil_input, sfcdata=data_one_tile)
1685  endif
1686 
1687  print*,"- CALL FieldScatter FOR INPUT GRID F10M"
1688  call esmf_fieldscatter(f10m_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1689  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1690  call error_handler("IN FieldScatter", rc)
1691 
1692  if (localpet == 0) then
1693  call read_fv3_grid_data_netcdf('ffmm', tile, idim_input, jdim_input, &
1694  lsoil_input, sfcdata=data_one_tile)
1695  endif
1696 
1697  print*,"- CALL FieldScatter FOR INPUT GRID FFMM"
1698  call esmf_fieldscatter(ffmm_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1699  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1700  call error_handler("IN FieldScatter", rc)
1701 
1702  if (localpet == 0) then
1703  call read_fv3_grid_data_netcdf('fricv', tile, idim_input, jdim_input, &
1704  lsoil_input, sfcdata=data_one_tile)
1705  endif
1706 
1707  print*,"- CALL FieldScatter FOR INPUT GRID USTAR"
1708  call esmf_fieldscatter(ustar_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1709  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1710  call error_handler("IN FieldScatter", rc)
1711 
1712  if (localpet == 0) then
1713 ! call read_fv3_grid_data_netcdf('srflag', tile, idim_input, jdim_input, &
1714 ! lsoil_input, sfcdata=data_one_tile)
1715  data_one_tile = 0.0
1716  endif
1717 
1718  print*,"- CALL FieldScatter FOR INPUT GRID SRFLAG"
1719  call esmf_fieldscatter(srflag_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1720  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1721  call error_handler("IN FieldScatter", rc)
1722 
1723  if (localpet == 0) then
1724  call read_fv3_grid_data_netcdf('tmpsfc', tile, idim_input, jdim_input, &
1725  lsoil_input, sfcdata=data_one_tile)
1726  endif
1727 
1728  print*,"- CALL FieldScatter FOR INPUT GRID SKIN TEMPERATURE"
1729  call esmf_fieldscatter(skin_temp_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1730  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1731  call error_handler("IN FieldScatter", rc)
1732 
1733  if (localpet == 0) then
1734  call read_fv3_grid_data_netcdf('cnwat', tile, idim_input, jdim_input, &
1735  lsoil_input, sfcdata=data_one_tile)
1736  endif
1737 
1738  print*,"- CALL FieldScatter FOR INPUT GRID CANOPY MOISTURE CONTENT."
1739  call esmf_fieldscatter(canopy_mc_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1740  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1741  call error_handler("IN FieldScatter", rc)
1742 
1743  if (localpet == 0) then
1744  call read_fv3_grid_data_netcdf('sfcr', tile, idim_input, jdim_input, &
1745  lsoil_input, sfcdata=data_one_tile)
1746  endif
1747 
1748  print*,"- CALL FieldScatter FOR INPUT GRID Z0."
1749  call esmf_fieldscatter(z0_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
1750  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1751  call error_handler("IN FieldScatter", rc)
1752 
1753  enddo tile_loop
1754 
1755  deallocate(data_one_tile, data_one_tile_3d)
1756 
1757  end subroutine read_input_sfc_netcdf_file
1758 
1763  subroutine read_input_sfc_grib2_file(localpet)
1765  use mpi
1766  use grib_mod
1768  use model_grid, only : input_grid_type
1769  use search_util
1770 
1771  implicit none
1772 
1773  integer, intent(in) :: localpet
1774 
1775  character(len=250) :: the_file
1776  character(len=250) :: geo_file
1777  character(len=200) :: err_msg
1778  character(len=20) :: vname, vname_file, slev
1779  character(len=50) :: method
1780 
1781  integer :: rc, varnum, iret, i, j,k
1782  integer :: ncid2d, varid, varsize
1783  integer :: lugb, lugi
1784  integer :: jdisc, jgdtn, jpdtn, pdt_num
1785  integer :: jids(200), jgdt(200), jpdt(200)
1786 
1787  logical :: rap_latlon, unpack
1788 
1789  real(esmf_kind_r4) :: value
1790  real(esmf_kind_r4), allocatable :: dummy2d(:,:)
1791  real(esmf_kind_r8), allocatable :: icec_save(:,:)
1792  real(esmf_kind_r4), allocatable :: dummy1d(:)
1793  real(esmf_kind_r8), allocatable :: dummy2d_8(:,:),dummy2d_82(:,:),tsk_save(:,:)
1794  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:), dummy3d_stype(:,:,:)
1795  integer(esmf_kind_i4), allocatable :: slmsk_save(:,:)
1796  integer(esmf_kind_i8), allocatable :: dummy2d_i(:,:)
1797 
1798  type(gribfield) :: gfld
1799 
1800  rap_latlon = trim(to_upper(external_model))=="RAP" .and. trim(input_grid_type) == "rotated_latlon"
1801 
1802  the_file = trim(data_dir_input_grid) // "/" // trim(grib2_file_input_grid)
1803  geo_file = trim(geogrid_file_input_grid)
1804 
1805  print*,"- READ SFC DATA FROM GRIB2 FILE: ", trim(the_file)
1806 
1807 ! Determine the number of soil layers in file.
1808 
1809  if (localpet == 0) then
1810 
1811  lugb=12
1812  call baopenr(lugb,the_file,rc)
1813  if (rc /= 0) call error_handler("ERROR OPENING GRIB2 FILE.", rc)
1814 
1815  j = 0 ! search at beginning of file
1816  lugi = 0 ! no grib index file
1817  jdisc = -1 ! search for any discipline
1818  jpdtn = -1 ! search for any product definition template number
1819  jgdtn = -1 ! search for any grid definition template number
1820  jids = -9999 ! array of values in identification section, set to wildcard
1821  jgdt = -9999 ! array of values in grid definition template, set to wildcard
1822  jpdt = -9999 ! array of values in product definition template, set to wildcard
1823  unpack = .false. ! unpack data
1824 
1825  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
1826  unpack, k, gfld, rc)
1827 
1828  if (rc == 0) then
1829  if (gfld%idsect(1) == 7 .and. gfld%idsect(2) == 2) then
1830  print*,'- THIS IS NCEP GEFS DATA.'
1831  pdt_num = 1
1832  else
1833  pdt_num = 0
1834  endif
1835  else
1836  if (rc /= 0) call error_handler("ERROR READING GRIB2 FILE.", rc)
1837  endif
1838 
1839  j = 0
1840  lsoil_input = 0
1841 
1842  do
1843 
1844  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
1845  unpack, k, gfld, rc)
1846 
1847  if (rc /= 0) exit
1848 
1849  if (gfld%discipline == 2) then ! discipline - land products
1850  if (gfld%ipdtnum == pdt_num) then ! prod template number - analysis or forecast at single level.
1851  if (gfld%ipdtmpl(1) == 0 .and. gfld%ipdtmpl(2) == 2) then ! soil temp
1852  ! Sect4/octs 10 and 11
1853  if (gfld%ipdtmpl(10) == 106 .and. gfld%ipdtmpl(13) == 106) then ! Sect4/octs 23/29.
1854  ! Layer below ground.
1855  lsoil_input = lsoil_input + 1
1856  endif
1857  endif
1858  endif
1859  endif
1860 
1861  j = k
1862 
1863  enddo
1864 
1865  print*, "- FILE HAS ", lsoil_input, " SOIL LEVELS."
1866  if (lsoil_input == 0) call error_handler("COUNTING SOIL LEVELS.", rc)
1867 
1868  endif ! localpet == 0
1869 
1870  call mpi_barrier(mpi_comm_world, rc)
1871  call mpi_bcast(lsoil_input,1,mpi_integer,0,mpi_comm_world,rc)
1872 
1873  ! We need to recreate the soil fields if we have something other than 4 levels
1874 
1875  if (lsoil_input /= 4) then
1876 
1877  call esmf_fielddestroy(soil_temp_input_grid, rc=rc)
1878  call esmf_fielddestroy(soilm_tot_input_grid, rc=rc)
1879  call esmf_fielddestroy(soilm_liq_input_grid, rc=rc)
1880 
1881  print*,"- CALL FieldCreate FOR INPUT SOIL TEMPERATURE."
1882  soil_temp_input_grid = esmf_fieldcreate(input_grid, &
1883  typekind=esmf_typekind_r8, &
1884  staggerloc=esmf_staggerloc_center, &
1885  ungriddedlbound=(/1/), &
1886  ungriddedubound=(/lsoil_input/), rc=rc)
1887  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1888  call error_handler("IN FieldCreate", rc)
1889 
1890  print*,"- CALL FieldCreate FOR INPUT TOTAL SOIL MOISTURE."
1891  soilm_tot_input_grid = esmf_fieldcreate(input_grid, &
1892  typekind=esmf_typekind_r8, &
1893  staggerloc=esmf_staggerloc_center, &
1894  ungriddedlbound=(/1/), &
1895  ungriddedubound=(/lsoil_input/), rc=rc)
1896  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1897  call error_handler("IN FieldCreate", rc)
1898 
1899  print*,"- CALL FieldCreate FOR INPUT LIQUID SOIL MOISTURE."
1900  soilm_liq_input_grid = esmf_fieldcreate(input_grid, &
1901  typekind=esmf_typekind_r8, &
1902  staggerloc=esmf_staggerloc_center, &
1903  ungriddedlbound=(/1/), &
1904  ungriddedubound=(/lsoil_input/), rc=rc)
1905  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1906  call error_handler("IN FieldCreate", rc)
1907 
1908  endif
1909 
1910  if (localpet == 0) then
1911  allocate(dummy2d(i_input,j_input))
1912  allocate(slmsk_save(i_input,j_input))
1913  allocate(tsk_save(i_input,j_input))
1914  allocate(icec_save(i_input,j_input))
1915  allocate(dummy2d_8(i_input,j_input))
1916  allocate(dummy2d_82(i_input,j_input))
1917  allocate(dummy3d(i_input,j_input,lsoil_input))
1918  else
1919  allocate(dummy3d(0,0,0))
1920  allocate(dummy2d_8(0,0))
1921  allocate(dummy2d_82(0,0))
1922  allocate(dummy2d(0,0))
1923  allocate(slmsk_save(0,0))
1924  endif
1925 
1926  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1927  ! These variables are always in grib files, or are required, so no need to check for them
1928  ! in the varmap table. If they can't be found in the input file, then stop the program.
1929  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1930 
1931  if (localpet == 0) then
1932 
1933  print*,"- READ TERRAIN."
1934 
1935  j = 0
1936  jdisc = 0 ! Search for discipline 0 - meteorological products
1937  jpdt = -9999 ! array of values in product definition template, set to wildcard.
1938  jpdtn = pdt_num ! search for product definition template number 0 - anl or fcst.
1939  jpdt(1) = 3 ! Sec4/oct 10 - param cat - mass field
1940  jpdt(2) = 5 ! Sec4/oct 11 - param number - geopotential height
1941  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
1942  unpack=.true.
1943  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
1944  unpack, k, gfld, rc)
1945  if (rc /= 0) call error_handler("READING TERRAIN.", rc)
1946 
1947  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
1948 ! print*,'orog ', maxval(dummy2d_8),minval(dummy2d_8)
1949 
1950  endif
1951 
1952  print*,"- CALL FieldScatter FOR INPUT TERRAIN."
1953  call esmf_fieldscatter(terrain_input_grid, dummy2d_8, rootpet=0, rc=rc)
1954  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1955  call error_handler("IN FieldScatter", rc)
1956 
1957  if (localpet == 0) then
1958 
1959  print*,"- READ SEAICE FRACTION."
1960 
1961  jdisc = 10 ! Search for discipline - ocean products
1962  j = 0 ! Search at beginning of file.
1963  jpdtn = pdt_num ! Search for product def template number 0 - anl or fcst.
1964  jpdt = -9999 ! Array of values in Sec 4 product definition template;
1965  ! Initialize to wildcard.
1966  jpdt(1) = 2 ! Sec4/oct 10 - parameter category - ice
1967  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - ice cover
1968  unpack=.true.
1969  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
1970  unpack, k, gfld, rc)
1971  if (rc /= 0) call error_handler("READING SEAICE FRACTION.", rc)
1972 
1973  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
1974 ! print*,'icec ', maxval(dummy2d_8),minval(dummy2d_8)
1975 
1976  icec_save = dummy2d_8
1977 
1978  endif
1979 
1980  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE FRACTION."
1981  call esmf_fieldscatter(seaice_fract_input_grid, dummy2d_8 ,rootpet=0, rc=rc)
1982  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1983  call error_handler("IN FieldScatter", rc)
1984 
1985 !----------------------------------------------------------------------------------
1986 ! GFS v14 and v15.2 grib data has two land masks. LANDN is created by
1987 ! nearest neighbor interpolation. LAND is created by bilinear interpolation.
1988 ! LANDN matches the bitmap. So use it first. For other GFS versions or other models,
1989 ! use LAND. Mask in grib file is '1' (land), '0' (not land). Add sea/lake ice category
1990 ! '2' based on ice concentration.
1991 !----------------------------------------------------------------------------------
1992 
1993  if (localpet == 0) then
1994 
1995  print*,"- READ LANDSEA MASK."
1996 
1997  jdisc = 2 ! Search for discipline - land products
1998  j = 0 ! Search at beginning of file.
1999  jpdtn = pdt_num ! Search for product definition template number 0 - anl or fcst.
2000  jpdt = -9999 ! Initialize array of values in product definition template - Sec 4.
2001  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2002  jpdt(2) = 218 ! Sec4/oct 11 - parameter number - land nearest neighbor
2003  unpack=.true.
2004  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2005  unpack, k, gfld, rc)
2006 
2007  if (rc == 0) then
2008 
2009  print*,'landnn ', maxval(gfld%fld),minval(gfld%fld)
2010 
2011  else
2012 
2013  jdisc = 2 ! Search for discipline - land products
2014  j = 0 ! Search at beginning of file.
2015  jpdtn = pdt_num ! Search for product def template number 0 - anl or fcst.
2016  jpdt = -9999 ! Initialize array of values in product definition template - Sec 4.
2017  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2018  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - land cover (fraction)
2019  unpack=.true.
2020  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2021  unpack, k, gfld, rc)
2022  if (rc /= 0) call error_handler("READING LANDSEA MASK.", rc)
2023 
2024 ! print*,'land ', maxval(gfld%fld),minval(gfld%fld)
2025 
2026  endif
2027 
2028  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2029 
2030  do j = 1, j_input
2031  do i = 1, i_input
2032  if(dummy2d_8(i,j) < 0.5_esmf_kind_r8) dummy2d_8(i,j)=0.0
2033  if(icec_save(i,j) > 0.15_esmf_kind_r8) then
2034  dummy2d_8(i,j) = 2.0_esmf_kind_r8
2035  endif
2036  enddo
2037  enddo
2038 
2039  slmsk_save = nint(dummy2d_8)
2040 
2041  deallocate(icec_save)
2042 
2043  endif ! read land mask
2044 
2045  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
2046  call esmf_fieldscatter(landsea_mask_input_grid, dummy2d_8 ,rootpet=0, rc=rc)
2047  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2048  call error_handler("IN FieldScatter", rc)
2049 
2050  if (localpet == 0) then
2051 
2052  print*,"- READ SEAICE SKIN TEMPERATURE."
2053 
2054  jdisc = 0 ! Search for discipline - meteorological products
2055  j = 0 ! Search at beginning of file.
2056  jpdtn = pdt_num ! Search for product definition template number 0 - anl or fcst.
2057  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2058  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - temperature
2059  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - temperature
2060  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2061  unpack=.true.
2062  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2063  unpack, k, gfld, rc)
2064  if (rc /= 0) call error_handler("READING SEAICE SKIN TEMP.", rc)
2065 
2066 ! print*,'ti ',maxval(gfld%fld),minval(gfld%fld)
2067 
2068  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2069 
2070  endif
2071 
2072  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE SKIN TEMPERATURE."
2073  call esmf_fieldscatter(seaice_skin_temp_input_grid, dummy2d_8 ,rootpet=0, rc=rc)
2074  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2075  call error_handler("IN FieldScatter", rc)
2076 
2077 !----------------------------------------------------------------------------------
2078 ! Read snow fields. Zero out at non-land points and undefined points (points
2079 ! removed using the bitmap). Program expects depth and liquid equivalent
2080 ! in mm.
2081 !----------------------------------------------------------------------------------
2082 
2083  if (localpet == 0) then
2084 
2085  print*,"- READ SNOW LIQUID EQUIVALENT."
2086 
2087  jdisc = 0 ! Search for discipline - meteorological products
2088  j = 0 ! Search at beginning of file.
2089  jpdtn = pdt_num ! Search for the product definition template number.
2090  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2091  jpdt(1) = 1 ! Sec4/oct 10 - parameter category - moisture
2092  jpdt(2) = 13 ! Sec4/oct 11 - parameter number - liquid equiv snow depth
2093  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2094  unpack=.true.
2095 
2096  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2097  unpack, k, gfld, rc)
2098  if (rc /= 0) call error_handler("READING SNOW LIQUID EQUIVALENT.", rc)
2099 
2100 ! print*,'weasd ', maxval(gfld%fld),minval(gfld%fld)
2101 
2102  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2103 
2104  do j = 1, j_input
2105  do i = 1, i_input
2106  if(slmsk_save(i,j) == 0) dummy2d_8(i,j) = 0.0
2107  enddo
2108  enddo
2109 
2110  endif
2111 
2112  print*,"- CALL FieldScatter FOR INPUT GRID SNOW LIQUID EQUIVALENT."
2113  call esmf_fieldscatter(snow_liq_equiv_input_grid, dummy2d_8 ,rootpet=0, rc=rc)
2114  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2115  call error_handler("IN FieldScatter", rc)
2116 
2117  if (localpet == 0) then
2118 
2119  print*,"- READ SNOW DEPTH."
2120 
2121  jdisc = 0 ! Search for discipline - meteorological products
2122  j = 0 ! Search at beginning of file.
2123  jpdtn = pdt_num ! Search for the product definition template number.
2124  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2125  jpdt(1) = 1 ! Sec4/oct 10 - parameter category - moisture
2126  jpdt(2) = 11 ! Sec4/oct 11 - parameter number - snow depth
2127  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2128  unpack=.true.
2129 
2130  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2131  unpack, k, gfld, rc)
2132 
2133  if (rc /= 0) then
2134  call error_handler("READING SNOW DEPTH.", rc)
2135  else
2136  gfld%fld = gfld%fld * 1000.0
2137 ! print*,'snod ', maxval(gfld%fld),minval(gfld%fld)
2138  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2139  endif
2140 
2141  do j = 1, j_input
2142  do i = 1, i_input
2143  if(slmsk_save(i,j) == 0) dummy2d_8(i,j) = 0.0
2144  enddo
2145  enddo
2146 
2147  endif
2148 
2149  print*,"- CALL FieldScatter FOR INPUT GRID SNOW DEPTH."
2150  call esmf_fieldscatter(snow_depth_input_grid,dummy2d_8,rootpet=0, rc=rc)
2151  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2152  call error_handler("IN FieldScatter", rc)
2153 
2154  if (localpet == 0) then
2155 
2156  print*,"- READ T2M."
2157 
2158  jdisc = 0 ! Search for discipline - meteorological products
2159  j = 0 ! Search at beginning of file.
2160  jpdtn = pdt_num ! Search for the product definition template number.
2161  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2162  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - temperature
2163  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - temperature
2164  jpdt(10) = 103 ! Sec4/oct 23 - type of level - height above ground surface
2165  jpdt(12) = 2 ! Sec4/octs 25-28 - 2 meters above ground.
2166  unpack=.true.
2167 
2168  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2169  unpack, k, gfld, rc)
2170 
2171  if (rc /= 0) call error_handler("READING T2M.", rc)
2172 ! print*,'t2m ', maxval(gfld%fld),minval(gfld%fld)
2173 
2174  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2175 
2176  endif
2177 
2178  print*,"- CALL FieldScatter FOR INPUT GRID T2M."
2179  call esmf_fieldscatter(t2m_input_grid, dummy2d_8, rootpet=0,rc=rc)
2180  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2181  call error_handler("IN FieldScatter", rc)
2182 
2183  if (localpet == 0) then
2184 
2185  print*,"- READ Q2M."
2186 
2187  jdisc = 0 ! Search for discipline - meteorological products
2188  j = 0 ! Search at beginning of file.
2189  jpdtn = pdt_num ! Search for the product definition template number.
2190  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2191  jpdt(1) = 1 ! Sec4/oct 10 - parameter category - moisture
2192  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - specific humidity
2193  jpdt(10) = 103 ! Sec4/oct 23 - type of level - height above ground surface
2194  jpdt(12) = 2 ! Sec4/octs 25-28 - 2 meters above ground.
2195  unpack=.true.
2196 
2197  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2198  unpack, k, gfld, rc)
2199  if (rc /=0) call error_handler("READING Q2M.", rc)
2200 
2201 ! print*,'q2m ',maxval(gfld%fld),minval(gfld%fld)
2202 
2203  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2204 
2205  endif
2206 
2207  print*,"- CALL FieldScatter FOR INPUT GRID Q2M."
2208  call esmf_fieldscatter(q2m_input_grid,dummy2d_8, rootpet=0,rc=rc)
2209  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2210  call error_handler("IN FieldScatter", rc)
2211 
2212  if (localpet == 0) then
2213 
2214  print*,"- READ SKIN TEMPERATURE."
2215 
2216  jdisc = 0 ! Search for discipline - meteorological products
2217  j = 0 ! Search at beginning of file.
2218  jpdtn = pdt_num ! Search for the product definition template number.
2219  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2220  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - temperature
2221  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - temperature
2222  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2223  unpack=.true.
2224 
2225  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2226  unpack, k, gfld, rc)
2227 
2228  if (rc /= 0 ) call error_handler("READING SKIN TEMPERATURE.", rc)
2229 ! print*,'skint ', maxval(gfld%fld),minval(gfld%fld)
2230 
2231  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2232 
2233  tsk_save(:,:) = dummy2d_8
2234 
2235  do j = 1, j_input
2236  do i = 1, i_input
2237  if(slmsk_save(i,j) == 0 .and. dummy2d_8(i,j) < 271.2) then
2238 ! print*,'too cool SST ',i,j,dummy2d_8(i,j)
2239  dummy2d_8(i,j) = 271.2
2240  endif
2241  if(slmsk_save(i,j) == 0 .and. dummy2d_8(i,j) > 310.) then
2242 ! print*,'too hot SST ',i,j,dummy2d_8(i,j)
2243  dummy2d_8(i,j) = 310.0
2244  endif
2245  enddo
2246  enddo
2247 
2248  endif
2249 
2250  print*,"- CALL FieldScatter FOR INPUT GRID SKIN TEMPERATURE"
2251  call esmf_fieldscatter(skin_temp_input_grid,dummy2d_8,rootpet=0, rc=rc)
2252  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2253  call error_handler("IN FieldScatter", rc)
2254 
2255 ! srflag not in files. Set to zero.
2256 
2257  if (localpet == 0) dummy2d_8 = 0.0
2258 
2259  print*,"- CALL FieldScatter FOR INPUT GRID SRFLAG"
2260  call esmf_fieldscatter(srflag_input_grid,dummy2d_8, rootpet=0,rc=rc)
2261  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2262  call error_handler("IN FieldScatter", rc)
2263 
2264  if (localpet == 0) then
2265 
2266  print*,"- READ SOIL TYPE."
2267 
2268  jdisc = 2 ! Search for discipline - land products
2269  j = 0 ! Search at beginning of file
2270  jpdtn = pdt_num ! Search for the product definition template number.
2271  jpdt = -9999 ! Initialize array of values in product definition template - Sec4
2272  jpdt(1) = 3 ! Sec4/oct 10 - parameter category - soil products
2273  jpdt(2) = 0 ! Sec4/oct 11 - parameter number - soil type
2274  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2275  unpack=.true.
2276 
2277  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2278  unpack, k, gfld, rc)
2279 
2280  if (rc == 0 ) then
2281 ! print*,'soil type ', maxval(gfld%fld),minval(gfld%fld)
2282  dummy2d = reshape(real(gfld%fld,kind=esmf_kind_r4) , (/i_input,j_input/))
2283 
2284  endif
2285 
2286  if (rc /= 0 .and. (trim(to_upper(external_model))=="HRRR" .or. rap_latlon) .and. geo_file .ne. "NULL") then
2287  ! Some HRRR and RAP files don't have dominant soil type in the output, but the geogrid files
2288  ! do, so this gives users the option to provide the geogrid file and use input soil
2289  ! type
2290  print*, "OPEN GEOGRID FILE ", trim(geo_file)
2291  rc = nf90_open(geo_file,nf90_nowrite,ncid2d)
2292  call netcdf_err(rc,"READING GEOGRID FILE")
2293 
2294  print*, "INQURE ABOUT DIM IDS"
2295  rc = nf90_inq_dimid(ncid2d,"west_east",varid)
2296  call netcdf_err(rc,"READING west_east DIMENSION FROM GEOGRID FILE")
2297 
2298  rc = nf90_inquire_dimension(ncid2d,varid,len=varsize)
2299  call netcdf_err(rc,"READING west_east DIMENSION SIZE")
2300  if (varsize .ne. i_input) call error_handler ("GEOGRID FILE GRID SIZE DIFFERS FROM INPUT DATA.", -1)
2301 
2302  print*, "INQUIRE ABOUT SOIL TYPE FROM GEOGRID FILE"
2303  rc = nf90_inq_varid(ncid2d,"SCT_DOM",varid)
2304  call netcdf_err(rc,"FINDING SCT_DOM IN GEOGRID FILE")
2305 
2306  print*, "READ SOIL TYPE FROM GEOGRID FILE "
2307  rc = nf90_get_var(ncid2d,varid,dummy2d)
2308  call netcdf_err(rc,"READING SCT_DOM FROM FILE")
2309 
2310  print*, "INQUIRE ABOUT SOIL TYPE FRACTIONS FROM GEOGRID FILE"
2311  rc = nf90_inq_varid(ncid2d,"SOILCTOP",varid)
2312  call netcdf_err(rc,"FINDING SOILCTOP IN GEOGRID FILE")
2313 
2314  allocate(dummy3d_stype(i_input,j_input,16))
2315  print*, "READ SOIL TYPE FRACTIONS FROM GEOGRID FILE "
2316  rc = nf90_get_var(ncid2d,varid,dummy3d_stype)
2317  call netcdf_err(rc,"READING SCT_DOM FROM FILE")
2318 
2319  print*, "CLOSE GEOGRID FILE "
2320  iret = nf90_close(ncid2d)
2321 
2322  ! There's an issue with the geogrid file containing soil type water at land points.
2323  ! This correction replaces the soil type at these points with the soil type with
2324  ! the next highest fractional coverage.
2325  allocate(dummy1d(16))
2326  do j = 1, j_input
2327  do i = 1, i_input
2328  if(dummy2d(i,j) == 14.0_esmf_kind_r4 .and. slmsk_save(i,j) == 1) then
2329  dummy1d(:) = real(dummy3d_stype(i,j,:),kind=esmf_kind_r4)
2330  dummy1d(14) = 0.0_esmf_kind_r4
2331  dummy2d(i,j) = real(MAXLOC(dummy1d, 1),esmf_kind_r4)
2332  endif
2333  enddo
2334  enddo
2335  deallocate(dummy1d)
2336  deallocate(dummy3d_stype)
2337  endif ! failed
2338 
2339  if ((rc /= 0 .and. trim(to_upper(external_model)) /= "HRRR" .and. .not. rap_latlon) &
2340  .or. (rc /= 0 .and. (trim(to_upper(external_model)) == "HRRR" .or. rap_latlon))) then
2341  if (.not. sotyp_from_climo) then
2342  call error_handler("COULD NOT FIND SOIL TYPE IN FILE. PLEASE SET SOTYP_FROM_CLIMO=.TRUE. . EXITING", rc)
2343  else
2344  vname = "sotyp"
2345  slev = "surface"
2346  call get_var_cond(vname,this_miss_var_method=method, this_miss_var_value=value, &
2347  loc=varnum)
2348  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var= dummy2d)
2349  if (rc == 1) then ! missing_var_method == skip or no entry in varmap table
2350  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. WILL NOT "//&
2351  "SCALE SOIL MOISTURE FOR DIFFERENCES IN SOIL TYPE. "
2352  dummy2d(:,:) = -99999.0_esmf_kind_r4
2353  endif
2354  endif
2355  endif
2356 
2357  ! In the event that the soil type on the input grid still contains mismatches between
2358  ! soil type and landmask, this correction is a last-ditch effort to replace these points
2359  ! with soil type from a nearby land point.
2360 
2361  if (.not. sotyp_from_climo) then
2362  do j = 1, j_input
2363  do i = 1, i_input
2364  if(dummy2d(i,j) == 14.0_esmf_kind_r4 .and. slmsk_save(i,j) == 1) dummy2d(i,j) = -99999.9_esmf_kind_r4
2365  enddo
2366  enddo
2367 
2368  allocate(dummy2d_i(i_input,j_input))
2369  dummy2d_8 = real(dummy2d,esmf_kind_r8)
2370  dummy2d_i(:,:) = 0
2371  where(slmsk_save == 1) dummy2d_i = 1
2372 
2373  call search(dummy2d_8,dummy2d_i,i_input,j_input,1,230)
2374  deallocate(dummy2d_i)
2375  else
2376  dummy2d_8=real(dummy2d,esmf_kind_r8)
2377  endif
2378 
2379  print*,'sotype ',maxval(dummy2d_8),minval(dummy2d_8)
2380 
2381  endif ! read of soil type
2382 
2383  print*,"- CALL FieldScatter FOR INPUT GRID SOIL TYPE."
2384  call esmf_fieldscatter(soil_type_input_grid,dummy2d_8, rootpet=0, rc=rc)
2385  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2386  call error_handler("IN FieldScatter", rc)
2387 
2388  deallocate(dummy2d)
2389 
2390  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2391  ! Begin variables whose presence in grib2 files varies, but no climatological
2392  ! data is available, so we have to account for values in the varmap table
2393  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2394 
2395  if (.not. vgfrc_from_climo) then
2396 
2397  if (localpet == 0) then
2398 
2399  print*,"- READ VEG FRACTION."
2400 
2401  jdisc = 2 ! Search for discipline - land products
2402  j = 0 ! Search at beginning of file.
2403  jpdtn = pdt_num ! Search for the product definition template number.
2404  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2405  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2406  jpdt(2) = 4 ! Sec4/oct 11 - parameter number - vegetation
2407  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2408  unpack=.true.
2409 
2410  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2411  unpack, k, gfld, rc)
2412 
2413  if (rc /= 0 )then
2414  err_msg="COULD NOT FIND VEGETATION FRACTION IN FILE. PLEASE SET VGFRC_FROM_CLIMO=.TRUE."
2415  call error_handler(err_msg, rc)
2416  else
2417  if (maxval(gfld%fld) > 2.0) gfld%fld = gfld%fld / 100.0
2418 ! print*,'vfrac ', maxval(gfld%fld),minval(gfld%fld)
2419  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2420 
2421  endif
2422 
2423  endif ! localpet 0
2424 
2425  print*,"- CALL FieldScatter FOR INPUT GRID VEG GREENNESS."
2426  call esmf_fieldscatter(veg_greenness_input_grid,dummy2d_8, rootpet=0, rc=rc)
2427  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2428  call error_handler("IN FieldScatter", rc)
2429 
2430  endif
2431 
2432  if (.not. minmax_vgfrc_from_climo) then
2433 
2434  if (localpet == 0) then
2435 
2436  print*,"- READ MIN VEG FRACTION."
2437 
2438  jdisc = 2 ! Search for discipline - land products
2439  j = 1105 ! grib2 file does not distinguish between the various veg
2440  ! fractions. Need to search using record number.
2441  jpdtn = pdt_num ! Search for the product definition template number.
2442  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2443  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2444  jpdt(2) = 4 ! Sec4/oct 11 - parameter number - vegetation
2445  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2446  unpack=.true.
2447 
2448  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2449  unpack, k, gfld, rc)
2450 
2451  if (rc /= 0) then
2452  j = 1101 ! Have to search by record number.
2453  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2454  unpack, k, gfld, rc)
2455  if (rc /= 0) then
2456  j = 1151 ! Have to search by record number.
2457  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2458  unpack, k, gfld, rc)
2459  err_msg="COULD NOT FIND MIN VEGETATION FRACTION IN FILE. SET MINMAX_VGFRC_FROM_CLIMO=.TRUE."
2460  if (rc/=0) call error_handler(err_msg, rc)
2461  endif
2462  endif
2463 
2464  if (maxval(gfld%fld) > 2.0) gfld%fld = gfld%fld / 100.0
2465  print*,'vfrac min ', maxval(gfld%fld),minval(gfld%fld)
2466  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2467 
2468  endif ! localpet == 0
2469 
2470  print*,"- CALL FieldScatter FOR INPUT GRID MIN VEG GREENNESS."
2471  call esmf_fieldscatter(min_veg_greenness_input_grid,dummy2d_8, rootpet=0, rc=rc)
2472  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2473  call error_handler("IN FieldScatter", rc)
2474 
2475  if (localpet == 0) then
2476 
2477  print*,"- READ MAX VEG FRACTION."
2478 
2479  jdisc = 2 ! Search for discipline - land products
2480  j = 1106 ! Have to search by record number.
2481  jpdtn = pdt_num ! Search for the product definition template number.
2482  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2483  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2484  jpdt(2) = 4 ! Sec4/oct 11 - parameter number - vegetation
2485  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2486  unpack=.true.
2487 
2488  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2489  unpack, k, gfld, rc)
2490  if (rc /= 0) then
2491  j = 1102 ! Have to search by record number.
2492  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2493  unpack, k, gfld, rc)
2494  if (rc /= 0) then
2495  j = 1152 ! Have to search by record number.
2496  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2497  unpack, k, gfld, rc)
2498  err_msg="COULD NOT FIND MAX VEGETATION FRACTION IN FILE. SET MINMAX_VGFRC_FROM_CLIMO=.TRUE."
2499  if (rc <= 0) call error_handler(err_msg, rc)
2500  endif
2501  endif
2502 
2503  if (maxval(gfld%fld) > 2.0) gfld%fld = gfld%fld / 100.0
2504 ! print*,'vfrac max ', maxval(gfld%fld),minval(gfld%fld)
2505  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2506 
2507  endif !localpet==0
2508 
2509  print*,"- CALL FieldScatter FOR INPUT GRID MAX VEG GREENNESS."
2510  call esmf_fieldscatter(max_veg_greenness_input_grid,dummy2d_8,rootpet=0, rc=rc)
2511  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2512  call error_handler("IN FieldScatter", rc)
2513 
2514  endif !minmax_vgfrc_from_climo
2515 
2516  if (.not. lai_from_climo) then
2517 
2518  if (localpet == 0) then
2519 
2520  print*,"- READ LAI."
2521 
2522  jdisc = 0 ! Search for discipline - meteorological products
2523  j = 0 ! Search at beginning of file.
2524  jpdtn = pdt_num ! Search for the product definition template number.
2525  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2526  jpdt(1) = 7 ! Sec4/oct 10 - parameter category - thermo stability indices
2527  jpdt(2) = 198 ! Sec4/oct 11 - parameter number - leaf area index
2528  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2529  unpack=.true.
2530 
2531  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2532  unpack, k, gfld, rc)
2533 
2534  err_msg="COULD NOT FIND LAI IN FILE. SET LAI_FROM_CLIMO=.TRUE."
2535  if (rc /= 0) call error_handler(err_msg, rc)
2536 
2537 ! print*,'lai ', maxval(gfld%fld),minval(gfld%fld)
2538  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2539 
2540  endif !localpet==0
2541 
2542  print*,"- CALL FieldScatter FOR INPUT GRID LAI."
2543  call esmf_fieldscatter(lai_input_grid,dummy2d_8,rootpet=0, rc=rc)
2544  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2545  call error_handler("IN FieldScatter", rc)
2546 
2547  endif ! lai
2548 
2549  if (localpet == 0) then
2550 
2551  print*,"- READ SEAICE DEPTH."
2552  vname="hice"
2553  slev=":surface:"
2554  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2555  loc=varnum)
2556 
2557  jdisc = 10 ! Search for discipline - ocean products
2558  j = 0 ! Search at beginning of file.
2559  jpdtn = pdt_num ! Search for the product definition template number.
2560  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2561  jpdt(1) = 2 ! Sec4/oct 10 - parameter category - ice
2562  jpdt(2) = 1 ! Sec4/oct 11 - parameter number - thickness
2563  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2564  unpack=.true.
2565 
2566  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2567  unpack, k, gfld, rc)
2568 
2569  if (rc /= 0 ) then
2570  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc,var8=dummy2d_8)
2571  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2572  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL BE"//&
2573  " REPLACED WITH CLIMO. SET A FILL "// &
2574  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2575  dummy2d_8(:,:) = 0.0
2576  endif
2577  else
2578 ! print*,'hice ', maxval(gfld%fld),minval(gfld%fld)
2579  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2580  endif
2581 
2582  endif
2583 
2584  print*,"- CALL FieldScatter FOR INPUT GRID SEAICE DEPTH."
2585  call esmf_fieldscatter(seaice_depth_input_grid,dummy2d_8, rootpet=0, rc=rc)
2586  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2587  call error_handler("IN FieldScatter", rc)
2588 
2589  if (localpet == 0) then
2590 
2591  print*,"- READ TPRCP."
2592  vname="tprcp"
2593  slev=":surface:"
2594  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2595  loc=varnum)
2596 
2597 ! No test data contained this field. So could not test with g2 library.
2598  rc = 1
2599  if (rc /= 0) then
2600  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8=dummy2d_8)
2601  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2602  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL NOT"//&
2603  " BE WRITTEN TO THE INPUT FILE. SET A FILL "// &
2604  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2605  dummy2d_8 = 0.0
2606  endif
2607  endif
2608  print*,'tprcp ',maxval(dummy2d_8),minval(dummy2d_8)
2609 
2610  endif ! tprcp
2611 
2612  print*,"- CALL FieldScatter FOR INPUT GRID TPRCP."
2613  call esmf_fieldscatter(tprcp_input_grid,dummy2d_8, rootpet=0, rc=rc)
2614  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2615  call error_handler("IN FieldScatter", rc)
2616 
2617  if (localpet == 0) then
2618 
2619  print*,"- READ FFMM."
2620  vname="ffmm"
2621  slev=":surface:"
2622  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2623  loc=varnum)
2624 
2625 ! No sample data contained this field, so could not test g2lib.
2626  rc = 1
2627  if (rc /= 0) then
2628  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8=dummy2d_8)
2629  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2630  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL NOT"//&
2631  " BE WRITTEN TO THE INPUT FILE. SET A FILL "// &
2632  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2633  dummy2d_8(:,:) = 0.0
2634  endif
2635  endif
2636  print*,'ffmm ',maxval(dummy2d_8),minval(dummy2d_8)
2637 
2638  endif ! ffmm
2639 
2640  print*,"- CALL FieldScatter FOR INPUT GRID FFMM"
2641  call esmf_fieldscatter(ffmm_input_grid,dummy2d_8, rootpet=0, rc=rc)
2642  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2643  call error_handler("IN FieldScatter", rc)
2644 
2645  if (localpet == 0) then
2646 
2647  print*,"- READ USTAR."
2648  vname="fricv"
2649  slev=":surface:"
2650  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2651  loc=varnum)
2652 
2653  jdisc = 0 ! Search for discipline - meteorological products
2654  j = 0 ! Search at beginning of file.
2655  jpdtn = pdt_num ! Search for the product definition template number.
2656  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2657  jpdt(1) = 2 ! Sec4/oct 10 - parameter category - momentum
2658  jpdt(2) = 30 ! Sec4/oct 11 - parameter number - friction velocity
2659  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2660  unpack=.true.
2661 
2662  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2663  unpack, k, gfld, rc)
2664  if (rc /= 0) then
2665  jpdt(2) = 197 ! oct 11 - param number - friction vel.
2666  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2667  unpack, k, gfld, rc)
2668  endif
2669 
2670  if (rc == 0) then
2671 ! print*,'fricv ', maxval(gfld%fld),minval(gfld%fld)
2672  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2673  else
2674  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8=dummy2d_8)
2675  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2676  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL "//&
2677  "REPLACED WITH CLIMO. SET A FILL "// &
2678  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2679  dummy2d_8(:,:) = 0.0
2680  endif
2681  endif
2682 
2683  endif ! ustar
2684 
2685  print*,"- CALL FieldScatter FOR INPUT GRID USTAR"
2686  call esmf_fieldscatter(ustar_input_grid,dummy2d_8, rootpet=0, rc=rc)
2687  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2688  call error_handler("IN FieldScatter", rc)
2689 
2690  if (localpet == 0) then
2691 
2692  print*,"- READ F10M."
2693  vname="f10m"
2694  slev=":10 m above ground:"
2695  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2696  loc=varnum)
2697 
2698  rc = -1 ! None of the test cases have this record. Can't test with g2lib.
2699  if (rc /= 0) then
2700  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8=dummy2d_8)
2701  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2702  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL NOT"//&
2703  " BE WRITTEN TO THE INPUT FILE. SET A FILL "// &
2704  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2705  dummy2d_8(:,:) = 0.0
2706  endif
2707  endif
2708  print*,'f10m ',maxval(dummy2d_8),minval(dummy2d_8)
2709 
2710  endif
2711 
2712  print*,"- CALL FieldScatter FOR INPUT GRID F10M."
2713  call esmf_fieldscatter(f10m_input_grid,dummy2d_8, rootpet=0, rc=rc)
2714  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2715  call error_handler("IN FieldScatter", rc)
2716 
2717  if (localpet == 0) then
2718 
2719  print*,"- READ CANOPY MOISTURE CONTENT."
2720  vname="cnwat"
2721  slev=":surface:"
2722  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2723  loc=varnum)
2724 
2725  jdisc = 2 ! Search for discipline - land products
2726  j = 0 ! Search from beginning of file
2727  jpdtn = pdt_num ! Search for the product definition template number.
2728  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2729  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2730  jpdt(2) = 13 ! Sec4/oct 11 - parameter number - canopy water
2731  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2732  unpack=.true.
2733 
2734  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2735  unpack, k, gfld, rc)
2736 
2737  if (rc /= 0 ) then
2738  jpdt(2) = 196 ! Sec4/oct 11 - param number - canopy water
2739  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2740  unpack, k, gfld, rc)
2741  endif
2742 
2743  if (rc == 0 ) then
2744  print*,'cnwat ', maxval(gfld%fld),minval(gfld%fld)
2745  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2746  call check_cnwat(dummy2d_8,i_input,j_input)
2747  else
2748  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8=dummy2d_8)
2749  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2750  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL"//&
2751  " REPLACED WITH CLIMO. SET A FILL "// &
2752  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2753  dummy2d_8 = 0.0
2754  endif
2755  endif
2756 
2757  endif
2758 
2759  print*,"- CALL FieldScatter FOR INPUT GRID CANOPY MOISTURE CONTENT."
2760  call esmf_fieldscatter(canopy_mc_input_grid,dummy2d_8, rootpet=0, rc=rc)
2761  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2762  call error_handler("IN FieldScatter", rc)
2763 
2764  if (localpet == 0) then
2765 
2766  print*,"- READ Z0."
2767  vname="sfcr"
2768  slev=":surface:"
2769  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
2770  loc=varnum)
2771 
2772  jdisc = 2 ! Search for discipline - land products
2773  j = 0 ! Search from beginning of file.
2774  jpdtn = pdt_num ! Search for the product definition template number.
2775  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2776  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2777  jpdt(2) = 1 ! Sec4/oct 11 - parameter number - surface roughness
2778  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2779  unpack=.true.
2780 
2781  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2782  unpack, k, gfld, rc)
2783 
2784  if (rc /= 0 ) then
2785  call handle_grib_error(vname, slev ,method,value,varnum,read_from_input,rc, var8= dummy2d_8)
2786  if (rc==1) then ! missing_var_method == skip or no entry in varmap table
2787  print*, "WARNING: "//trim(vname)//" NOT AVAILABLE IN FILE. THIS FIELD WILL BE"//&
2788  " REPLACED WITH CLIMO. SET A FILL "// &
2789  "VALUE IN THE VARMAP TABLE IF THIS IS NOT DESIRABLE."
2790  dummy2d_8(:,:) = 0.0
2791  endif
2792  else
2793  gfld%fld = gfld%fld * 10.0 ! Grib files have z0 (m), but fv3 expects z0(cm)
2794 ! print*,'sfcr ', maxval(gfld%fld),minval(gfld%fld)
2795  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2796  endif
2797 
2798  endif
2799 
2800  print*,"- CALL FieldScatter FOR INPUT GRID Z0."
2801  call esmf_fieldscatter(z0_input_grid,dummy2d_8, rootpet=0, rc=rc)
2802  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2803  call error_handler("IN FieldScatter", rc)
2804 
2805  if (localpet == 0) then
2806  print*,"- READ LIQUID SOIL MOISTURE."
2807  vname = "soill"
2808  vname_file = ":SOILL:"
2809  call read_grib_soil(vname,vname_file,lugb, pdt_num,dummy3d) !!! NEED TO HANDLE
2810  !!! SOIL LEVELS
2811  endif
2812 
2813  print*,"- CALL FieldScatter FOR INPUT LIQUID SOIL MOISTURE."
2814  call esmf_fieldscatter(soilm_liq_input_grid, dummy3d, rootpet=0, rc=rc)
2815  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2816  call error_handler("IN FieldScatter", rc)
2817 
2818  if (localpet == 0) then
2819  print*,"- READ TOTAL SOIL MOISTURE."
2820  vname = "soilw"
2821  vname_file = "var2_2_1_" ! the var number instead
2822  call read_grib_soil(vname,vname_file,lugb, pdt_num,dummy3d)
2823  endif
2824 
2825  print*,"- CALL FieldScatter FOR INPUT TOTAL SOIL MOISTURE."
2826  call esmf_fieldscatter(soilm_tot_input_grid, dummy3d, rootpet=0, rc=rc)
2827  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2828  call error_handler("IN FieldScatter", rc)
2829 
2830 !----------------------------------------------------------------------------------------
2831 ! Vegetation type is not available in some files. However, it is needed to identify
2832 ! permanent land ice points. At land ice, the total soil moisture is a flag value of
2833 ! '1'. Use this flag as a temporary solution.
2834 !----------------------------------------------------------------------------------------
2835 
2836  print*, "- CALL FieldGather for INPUT SOIL TYPE."
2837  call esmf_fieldgather(soil_type_input_grid, dummy2d_82, rootpet=0, tile=1, rc=rc)
2838  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2839  call error_handler("IN FieldGather", rc)
2840 
2841  if (localpet == 0) then
2842 
2843  print*,"- READ VEG TYPE."
2844 
2845  jdisc = 2 ! Search for discipline - land products
2846  j = 0 ! Search from beginning of file.
2847  jpdtn = pdt_num ! Search for the product definition template number.
2848  jpdt = -9999 ! Initialize array of values in product definition template Sec4.
2849  jpdt(1) = 0 ! Sec4/oct 10 - parameter category - veg/biomass
2850  jpdt(2) = 198 ! Sec4/oct 11 - parameter number - vegetation type
2851  jpdt(10) = 1 ! Sec4/oct 23 - type of level - ground surface
2852  unpack=.true.
2853 
2854  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
2855  unpack, k, gfld, rc)
2856 
2857  if (rc /= 0 ) then
2858  if (.not. vgtyp_from_climo) then
2859  call error_handler("COULD NOT FIND VEGETATION TYPE IN FILE. PLEASE SET VGTYP_FROM_CLIMO=.TRUE. . EXITING", rc)
2860  else ! Set input veg type at land ice from soil moisture flag (1.0).
2861  do j = 1, j_input
2862  do i = 1, i_input
2863  dummy2d_8(i,j) = 0.0
2864  if(slmsk_save(i,j) == 1 .and. dummy3d(i,j,1) > 0.99) & ! land ice indicated by
2865  ! soil moisture flag of '1'.
2866  dummy2d_8(i,j) = real(veg_type_landice_input,esmf_kind_r8)
2867  enddo
2868  enddo
2869  endif
2870  else ! found vtype in file.
2871  dummy2d_8 = reshape(gfld%fld , (/i_input,j_input/))
2872  endif
2873 
2874  if (trim(external_model) .ne. "GFS") then
2875  do j = 1, j_input
2876  do i = 1,i_input
2877  if (dummy2d_8(i,j) == 15.0_esmf_kind_r8 .and. slmsk_save(i,j) == 1) then
2878  if (dummy3d(i,j,1) < 0.6) then
2879  dummy2d_8(i,j) = real(veg_type_landice_input,esmf_kind_r8)
2880  elseif (dummy3d(i,j,1) > 0.99) then
2881  slmsk_save(i,j) = 0
2882  dummy2d_8(i,j) = 0.0_esmf_kind_r8
2883  dummy2d_82(i,j) = 0.0_esmf_kind_r8
2884  endif
2885  elseif (dummy2d_8(i,j) == 17.0_esmf_kind_r8 .and. slmsk_save(i,j)==0) then
2886  dummy2d_8(i,j) = 0.0_esmf_kind_r8
2887  endif
2888  enddo
2889  enddo
2890  endif
2891 
2892 ! print*,'vgtyp ',maxval(dummy2d_8),minval(dummy2d_8)
2893 
2894  endif ! read veg type
2895 
2896  print*,"- CALL FieldScatter FOR INPUT VEG TYPE."
2897  call esmf_fieldscatter(veg_type_input_grid, dummy2d_8, rootpet=0, rc=rc)
2898  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2899  call error_handler("IN FieldScatter", rc)
2900 
2901  print*,"- CALL FieldScatter FOR INPUT SOIL TYPE."
2902  call esmf_fieldscatter(soil_type_input_grid, dummy2d_82, rootpet=0, rc=rc)
2903  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2904  call error_handler("IN FieldScatter", rc)
2905 
2906  deallocate(dummy2d_82)
2907 
2908  print*,"- CALL FieldScatter FOR INPUT LANDSEA MASK."
2909  call esmf_fieldscatter(landsea_mask_input_grid,real(slmsk_save,esmf_kind_r8),rootpet=0, rc=rc)
2910  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2911  call error_handler("IN FieldScatter", rc)
2912 
2913 !---------------------------------------------------------------------------------
2914 ! At open water (slmsk==0), the soil temperature array is not used and set
2915 ! to the filler value of SST. At lake/sea ice points (slmsk=2), the soil
2916 ! temperature array holds ice column temperature. This field is not available
2917 ! in the grib data, so set to a default value.
2918 !---------------------------------------------------------------------------------
2919 
2920  if (localpet == 0) then
2921  print*,"- READ SOIL TEMPERATURE."
2922  vname = "soilt"
2923  vname_file = ":TSOIL:"
2924  call read_grib_soil(vname,vname_file,lugb,pdt_num,dummy3d)
2925  call check_soilt(dummy3d,slmsk_save,tsk_save,icet_default,i_input,j_input,lsoil_input)
2926  deallocate(tsk_save)
2927  endif
2928 
2929  deallocate(slmsk_save)
2930 
2931  print*,"- CALL FieldScatter FOR INPUT SOIL TEMPERATURE."
2932  call esmf_fieldscatter(soil_temp_input_grid, dummy3d, rootpet=0, rc=rc)
2933  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2934  call error_handler("IN FieldScatter", rc)
2935 
2936  deallocate(dummy3d)
2937  deallocate(dummy2d_8)
2938 
2939  if (localpet == 0) call baclose(lugb, rc)
2940 
2941  end subroutine read_input_sfc_grib2_file
2942 
2946  subroutine init_sfc_esmf_fields
2948  implicit none
2949 
2950  integer :: rc
2951 
2952  print*,"- CALL FieldCreate FOR INPUT GRID LANDSEA MASK."
2953  landsea_mask_input_grid = esmf_fieldcreate(input_grid, &
2954  typekind=esmf_typekind_r8, &
2955  staggerloc=esmf_staggerloc_center, rc=rc)
2956  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2957  call error_handler("IN FieldCreate", rc)
2958 
2959  print*,"- CALL FieldCreate FOR INPUT GRID Z0."
2960  z0_input_grid = esmf_fieldcreate(input_grid, &
2961  typekind=esmf_typekind_r8, &
2962  staggerloc=esmf_staggerloc_center, rc=rc)
2963  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2964  call error_handler("IN FieldCreate", rc)
2965 
2966  print*,"- CALL FieldCreate FOR INPUT GRID VEGETATION TYPE."
2967  veg_type_input_grid = esmf_fieldcreate(input_grid, &
2968  typekind=esmf_typekind_r8, &
2969  staggerloc=esmf_staggerloc_center, rc=rc)
2970  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2971  call error_handler("IN FieldCreate", rc)
2972 
2973  print*,"- CALL FieldCreate FOR INPUT GRID CANOPY MOISTURE CONTENT."
2974  canopy_mc_input_grid = esmf_fieldcreate(input_grid, &
2975  typekind=esmf_typekind_r8, &
2976  staggerloc=esmf_staggerloc_center, rc=rc)
2977  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2978  call error_handler("IN FieldCreate", rc)
2979 
2980  print*,"- CALL FieldCreate FOR INPUT GRID SEAICE FRACTION."
2981  seaice_fract_input_grid = esmf_fieldcreate(input_grid, &
2982  typekind=esmf_typekind_r8, &
2983  staggerloc=esmf_staggerloc_center, rc=rc)
2984  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2985  call error_handler("IN FieldCreate", rc)
2986 
2987  print*,"- CALL FieldCreate FOR INPUT GRID SEAICE DEPTH."
2988  seaice_depth_input_grid = esmf_fieldcreate(input_grid, &
2989  typekind=esmf_typekind_r8, &
2990  staggerloc=esmf_staggerloc_center, rc=rc)
2991  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2992  call error_handler("IN FieldCreate", rc)
2993 
2994  print*,"- CALL FieldCreate FOR INPUT GRID SEAICE SKIN TEMPERATURE."
2995  seaice_skin_temp_input_grid = esmf_fieldcreate(input_grid, &
2996  typekind=esmf_typekind_r8, &
2997  staggerloc=esmf_staggerloc_center, rc=rc)
2998  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2999  call error_handler("IN FieldCreate", rc)
3000 
3001  print*,"- CALL FieldCreate FOR INPUT GRID SNOW DEPTH."
3002  snow_depth_input_grid = esmf_fieldcreate(input_grid, &
3003  typekind=esmf_typekind_r8, &
3004  staggerloc=esmf_staggerloc_center, rc=rc)
3005  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3006  call error_handler("IN FieldCreate", rc)
3007 
3008  print*,"- CALL FieldCreate FOR INPUT GRID SNOW LIQUID EQUIVALENT."
3009  snow_liq_equiv_input_grid = esmf_fieldcreate(input_grid, &
3010  typekind=esmf_typekind_r8, &
3011  staggerloc=esmf_staggerloc_center, rc=rc)
3012  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3013  call error_handler("IN FieldCreate", rc)
3014 
3015  print*,"- CALL FieldCreate FOR INPUT GRID T2M."
3016  t2m_input_grid = esmf_fieldcreate(input_grid, &
3017  typekind=esmf_typekind_r8, &
3018  staggerloc=esmf_staggerloc_center, rc=rc)
3019  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3020  call error_handler("IN FieldCreate", rc)
3021 
3022  print*,"- CALL FieldCreate FOR INPUT GRID Q2M."
3023  q2m_input_grid = esmf_fieldcreate(input_grid, &
3024  typekind=esmf_typekind_r8, &
3025  staggerloc=esmf_staggerloc_center, rc=rc)
3026  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3027  call error_handler("IN FieldCreate", rc)
3028 
3029  print*,"- CALL FieldCreate FOR INPUT GRID TPRCP."
3030  tprcp_input_grid = esmf_fieldcreate(input_grid, &
3031  typekind=esmf_typekind_r8, &
3032  staggerloc=esmf_staggerloc_center, rc=rc)
3033  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3034  call error_handler("IN FieldCreate", rc)
3035 
3036  print*,"- CALL FieldCreate FOR INPUT GRID F10M."
3037  f10m_input_grid = esmf_fieldcreate(input_grid, &
3038  typekind=esmf_typekind_r8, &
3039  staggerloc=esmf_staggerloc_center, rc=rc)
3040  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3041  call error_handler("IN FieldCreate", rc)
3042 
3043  print*,"- CALL FieldCreate FOR INPUT GRID USTAR."
3044  ustar_input_grid = esmf_fieldcreate(input_grid, &
3045  typekind=esmf_typekind_r8, &
3046  staggerloc=esmf_staggerloc_center, rc=rc)
3047  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3048  call error_handler("IN FieldCreate", rc)
3049 
3050  print*,"- CALL FieldCreate FOR INPUT GRID FFMM."
3051  ffmm_input_grid = esmf_fieldcreate(input_grid, &
3052  typekind=esmf_typekind_r8, &
3053  staggerloc=esmf_staggerloc_center, rc=rc)
3054  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3055  call error_handler("IN FieldCreate", rc)
3056 
3057  print*,"- CALL FieldCreate FOR INPUT GRID SRFLAG."
3058  srflag_input_grid = esmf_fieldcreate(input_grid, &
3059  typekind=esmf_typekind_r8, &
3060  staggerloc=esmf_staggerloc_center, rc=rc)
3061  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3062  call error_handler("IN FieldCreate", rc)
3063 
3064  print*,"- CALL FieldCreate FOR INPUT SKIN TEMPERATURE."
3065  skin_temp_input_grid = esmf_fieldcreate(input_grid, &
3066  typekind=esmf_typekind_r8, &
3067  staggerloc=esmf_staggerloc_center, rc=rc)
3068  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3069  call error_handler("IN FieldCreate", rc)
3070 
3071  print*,"- CALL FieldCreate FOR INPUT SOIL TYPE."
3072  soil_type_input_grid = esmf_fieldcreate(input_grid, &
3073  typekind=esmf_typekind_r8, &
3074  staggerloc=esmf_staggerloc_center, rc=rc)
3075  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3076  call error_handler("IN FieldCreate", rc)
3077 
3078  print*,"- CALL FieldCreate FOR INPUT TERRAIN."
3079  terrain_input_grid = esmf_fieldcreate(input_grid, &
3080  typekind=esmf_typekind_r8, &
3081  staggerloc=esmf_staggerloc_center, rc=rc)
3082  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3083  call error_handler("IN FieldCreate", rc)
3084 
3085  print*,"- CALL FieldCreate FOR INPUT SOIL TEMPERATURE."
3086  soil_temp_input_grid = esmf_fieldcreate(input_grid, &
3087  typekind=esmf_typekind_r8, &
3088  staggerloc=esmf_staggerloc_center, &
3089  ungriddedlbound=(/1/), &
3090  ungriddedubound=(/lsoil_input/), rc=rc)
3091  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3092  call error_handler("IN FieldCreate", rc)
3093 
3094  print*,"- CALL FieldCreate FOR INPUT TOTAL SOIL MOISTURE."
3095  soilm_tot_input_grid = esmf_fieldcreate(input_grid, &
3096  typekind=esmf_typekind_r8, &
3097  staggerloc=esmf_staggerloc_center, &
3098  ungriddedlbound=(/1/), &
3099  ungriddedubound=(/lsoil_input/), rc=rc)
3100  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3101  call error_handler("IN FieldCreate", rc)
3102 
3103  print*,"- CALL FieldCreate FOR INPUT LIQUID SOIL MOISTURE."
3104  soilm_liq_input_grid = esmf_fieldcreate(input_grid, &
3105  typekind=esmf_typekind_r8, &
3106  staggerloc=esmf_staggerloc_center, &
3107  ungriddedlbound=(/1/), &
3108  ungriddedubound=(/lsoil_input/), rc=rc)
3109  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3110  call error_handler("IN FieldCreate", rc)
3111 
3112 
3113 
3114  if (.not. vgfrc_from_climo) then
3115  print*,"- CALL FieldCreate FOR INPUT VEGETATION GREENNESS."
3116  veg_greenness_input_grid = esmf_fieldcreate(input_grid, &
3117  typekind=esmf_typekind_r8, &
3118  staggerloc=esmf_staggerloc_center, rc=rc)
3119  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3120  call error_handler("IN FieldCreate", rc)
3121  endif
3122 
3123  if (.not. minmax_vgfrc_from_climo) then
3124  print*,"- CALL FieldCreate FOR INPUT MIN VEGETATION GREENNESS."
3125  min_veg_greenness_input_grid = esmf_fieldcreate(input_grid, &
3126  typekind=esmf_typekind_r8, &
3127  staggerloc=esmf_staggerloc_center, rc=rc)
3128  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3129  call error_handler("IN FieldCreate", rc)
3130 
3131  print*,"- CALL FieldCreate FOR INPUT MAX VEGETATION GREENNESS."
3132  max_veg_greenness_input_grid = esmf_fieldcreate(input_grid, &
3133  typekind=esmf_typekind_r8, &
3134  staggerloc=esmf_staggerloc_center, rc=rc)
3135  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3136  call error_handler("IN FieldCreate", rc)
3137  endif
3138 
3139  if (.not. lai_from_climo) then
3140  print*,"- CALL FieldCreate FOR INPUT LEAF AREA INDEX."
3141  lai_input_grid = esmf_fieldcreate(input_grid, &
3142  typekind=esmf_typekind_r8, &
3143  staggerloc=esmf_staggerloc_center, rc=rc)
3144  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3145  call error_handler("IN FieldCreate", rc)
3146  endif
3147  end subroutine init_sfc_esmf_fields
3148 
3159  SUBROUTINE read_fv3_grid_data_netcdf(FIELD,TILE_NUM,IMO,JMO,LMO, &
3160  SFCDATA, SFCDATA_3D)
3162  IMPLICIT NONE
3163 
3164  CHARACTER(LEN=*),INTENT(IN) :: FIELD
3165 
3166  INTEGER, INTENT(IN) :: IMO, JMO, LMO, TILE_NUM
3167 
3168  REAL(ESMF_KIND_R8), INTENT(OUT), OPTIONAL :: SFCDATA(IMO,JMO)
3169  REAL(ESMF_KIND_R8), INTENT(OUT), OPTIONAL :: SFCDATA_3D(IMO,JMO,LMO)
3170 
3171  CHARACTER(LEN=256) :: TILEFILE
3172 
3173  INTEGER :: ERROR, NCID, ID_VAR
3174 
3175  tilefile = trim(data_dir_input_grid) // "/" // trim(sfc_files_input_grid(tile_num))
3176 
3177  print*,'WILL READ ',trim(field), ' FROM: ', trim(tilefile)
3178 
3179  error=nf90_open(trim(tilefile),nf90_nowrite,ncid)
3180  CALL netcdf_err(error, 'OPENING: '//trim(tilefile) )
3181 
3182  error=nf90_inq_varid(ncid, field, id_var)
3183  CALL netcdf_err(error, 'READING FIELD ID' )
3184 
3185  IF (PRESENT(sfcdata_3d)) THEN
3186  error=nf90_get_var(ncid, id_var, sfcdata_3d)
3187  CALL netcdf_err(error, 'READING FIELD' )
3188  ELSE
3189  error=nf90_get_var(ncid, id_var, sfcdata)
3190  CALL netcdf_err(error, 'READING FIELD' )
3191  ENDIF
3192 
3193  error = nf90_close(ncid)
3194 
3195  END SUBROUTINE read_fv3_grid_data_netcdf
3196 
3205  subroutine read_grib_soil(vname, vname_file, lugb, pdt_num, dummy3d)
3207  use grib_mod
3208 
3209  implicit none
3210 
3211  character(len=20), intent(in) :: vname,vname_file
3212 
3213  integer, intent(in) :: lugb, pdt_num
3214 
3215  real(esmf_kind_r8), intent(inout) :: dummy3d(:,:,:)
3216 
3217  character(len=50) :: slevs(lsoil_input)
3218  character(len=50) :: method
3219 
3220  integer :: varnum, i, j, k, rc, rc2
3221  integer :: jdisc, jgdtn, jpdtn, lugi
3222  integer :: jids(200), jgdt(200), jpdt(200)
3223  integer :: iscale1, iscale2
3224 
3225  logical :: unpack
3226 
3227  real(esmf_kind_r4), allocatable :: dummy2d(:,:)
3228  real(esmf_kind_r4) :: value
3229 
3230  type(gribfield) :: gfld
3231 
3232  allocate(dummy2d(i_input,j_input))
3233 
3234  if(lsoil_input == 4) then
3235  slevs = (/character(24)::':0-0.1 m below ground:', ':0.1-0.4 m below ground:', &
3236  ':0.4-1 m below ground:', ':1-2 m below ground:'/)
3237  elseif(lsoil_input == 9) then
3238  slevs = (/character(26)::':0-0 m below ground',':0.01-0.01 m below ground:',':0.04-0.04 m below ground:', &
3239  ':0.1-0.1 m below ground:',':0.3-0.3 m below ground:',':0.6-0.6 m below ground:', &
3240  ':1-1 m below ground:',':1.6-1.6 m below ground:',':3-3 m below ground:'/)
3241  else
3242  rc = -1
3243  call error_handler("reading soil levels. File must have 4 or 9 soil levels.", rc)
3244  endif
3245 
3246  call get_var_cond(vname,this_miss_var_method=method,this_miss_var_value=value, &
3247  loc=varnum)
3248 
3249  lugi = 0 ! unit number for index file
3250  jdisc = 2 ! search for discipline - land products
3251  j = 0 ! search at beginning of file.
3252  jpdt = -9999 ! array of values in product definition template 4.n
3253  jids = -9999 ! array of values in identification section, set to wildcard
3254  jgdt = -9999 ! array of values in grid definition template 3.m
3255  jgdtn = -1 ! search for any grid definition number.
3256  jpdtn = pdt_num ! Search for the product definition template number.
3257  jpdt(1) = 0 ! Section 4/Octet 10 - parameter category - veg/biomass
3258  if (trim(vname) == 'soilt') jpdt(2) = 2 ! Section 4/Octet 11 - parameter number - soil temp
3259  if (trim(vname) == 'soilw') jpdt(2) = 192 ! Section 4/Octet 11 - parameter number - total soilm
3260  if (trim(vname) == 'soill') then
3261  jpdt(1) = 3 ! Section 4/Octet 10 - soil products
3262  jpdt(2) = 192 ! Section 4/Octet 11 - parameter number - liquid soilm
3263  endif
3264  jpdt(10) = 106 ! Section 4/Octet 23 - depth below ground
3265  jpdt(13) = 106 ! Section 4/Octet 29 - depth below ground
3266  unpack=.true.
3267 
3268  do i = 1,lsoil_input
3269 
3270  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
3271  unpack, k, gfld, rc2)
3272 
3273  if (rc2 /= 0) then ! record not found.
3274  call handle_grib_error(vname_file, slevs(i),method,value,varnum,read_from_input,rc,var=dummy2d)
3275  if (rc==1 .and. trim(vname) /= "soill") then
3276  ! missing_var_method == skip or no entry in varmap table
3277  call error_handler("READING IN "//trim(vname)//". SET A FILL "// &
3278  "VALUE IN THE VARMAP TABLE IF THIS ERROR IS NOT DESIRABLE.",rc)
3279  elseif (rc==1) then
3280  dummy3d(:,:,:) = 0.0_esmf_kind_r8
3281  return
3282  endif
3283  endif
3284 
3285  if (rc2 == 0) then ! record found.
3286  iscale1 = 10 ** gfld%ipdtmpl(11)
3287  iscale2 = 10 ** gfld%ipdtmpl(14)
3288 ! print*,'getgb2 top of soil layer in m ', float(gfld%ipdtmpl(12))/float(iscale1)
3289 ! print*,'getgb2 bot of soil layer in m ', float(gfld%ipdtmpl(15))/float(iscale2)
3290  dummy2d = reshape(real(gfld%fld,kind=esmf_kind_r4), (/i_input,j_input/) )
3291  endif
3292 
3293  j = k
3294 
3295  dummy3d(:,:,i) = real(dummy2d,esmf_kind_r8)
3296 
3297  enddo
3298 
3299  deallocate(dummy2d)
3300 
3301  end subroutine read_grib_soil
3302 
3306  subroutine cleanup_input_sfc_data
3308  implicit none
3309 
3310  integer :: rc
3311 
3312  print*,"- CALL FieldDestroy FOR INPUT GRID FIELDS."
3313 
3314  call esmf_fielddestroy(canopy_mc_input_grid, rc=rc)
3315  call esmf_fielddestroy(f10m_input_grid, rc=rc)
3316  call esmf_fielddestroy(ffmm_input_grid, rc=rc)
3317  if (.not. convert_nst) then
3318  call esmf_fielddestroy(landsea_mask_input_grid, rc=rc)
3319  endif
3320  call esmf_fielddestroy(q2m_input_grid, rc=rc)
3321  call esmf_fielddestroy(seaice_depth_input_grid, rc=rc)
3322  call esmf_fielddestroy(seaice_fract_input_grid, rc=rc)
3323  call esmf_fielddestroy(seaice_skin_temp_input_grid, rc=rc)
3324  call esmf_fielddestroy(skin_temp_input_grid, rc=rc)
3325  call esmf_fielddestroy(snow_depth_input_grid, rc=rc)
3326  call esmf_fielddestroy(snow_liq_equiv_input_grid, rc=rc)
3327  call esmf_fielddestroy(soil_temp_input_grid, rc=rc)
3328  call esmf_fielddestroy(soil_type_input_grid, rc=rc)
3329  call esmf_fielddestroy(soilm_liq_input_grid, rc=rc)
3330  call esmf_fielddestroy(soilm_tot_input_grid, rc=rc)
3331  call esmf_fielddestroy(srflag_input_grid, rc=rc)
3332  call esmf_fielddestroy(t2m_input_grid, rc=rc)
3333  call esmf_fielddestroy(tprcp_input_grid, rc=rc)
3334  call esmf_fielddestroy(ustar_input_grid, rc=rc)
3335  call esmf_fielddestroy(veg_type_input_grid, rc=rc)
3336  call esmf_fielddestroy(z0_input_grid, rc=rc)
3337  call esmf_fielddestroy(terrain_input_grid, rc=rc)
3338  if (.not. vgfrc_from_climo) then
3339  call esmf_fielddestroy(veg_greenness_input_grid, rc=rc)
3340  endif
3341  if (.not. minmax_vgfrc_from_climo) then
3342  call esmf_fielddestroy(min_veg_greenness_input_grid, rc=rc)
3343  call esmf_fielddestroy(max_veg_greenness_input_grid, rc=rc)
3344  endif
3345  if (.not. lai_from_climo) then
3346  call esmf_fielddestroy(lai_input_grid, rc=rc)
3347  endif
3348 
3349  end subroutine cleanup_input_sfc_data
3350 
3351  end module sfc_input_data
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public ip1_input
i_input plus 1
Definition: model_grid.F90:33
+
Read atmospheric data on the input grid.
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
logical, public lai_from_climo
If false, interpolate leaf area index from the input data to the target grid instead of using data fr...
+
integer, public jp1_input
j_input plus 1
Definition: model_grid.F90:35
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
Replace undefined values with a valid value.
Definition: search_util.F90:15
+
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.
+
logical, public sotyp_from_climo
If false, interpolate soil type from the input data to the target grid instead of using data from sta...
+
integer, public num_tiles_input_grid
Number of tiles, input grid.
Definition: model_grid.F90:47
+
logical, public minmax_vgfrc_from_climo
If false, interpolate min/max vegetation fraction from the input data to the target grid instead of u...
+
character(len=500), dimension(6), public orog_files_input_grid
Input grid orography files.
+
character(len=20), public external_model
The model that the input data is derived from.
+
subroutine, public search(field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo)
Replace undefined surface values.
Definition: search_util.F90:47
+
character(len=500), public orog_dir_input_grid
Directory containing the input grid orography files.
+
logical, public convert_nst
Convert nst data when true.
+
type(esmf_field), public terrain_input_grid
terrain height
+
character(len=500), public geogrid_file_input_grid
Name of "geogrid" file, which contains static surface fields on the input grid.
+
logical, public vgfrc_from_climo
If false, interpolate vegetation fraction from the input data to the target grid instead of using dat...
+
type(esmf_grid), public input_grid
input grid esmf grid object
Definition: model_grid.F90:52
+
character(len=500), public data_dir_input_grid
Directory containing input atm or sfc files.
+
character(len=50), public input_grid_type
map projection of input grid
Definition: model_grid.F90:21
+
character(len=25), public input_type
Input data type:
+
character(len=500), public grib2_file_input_grid
REQUIRED.
+
logical, public vgtyp_from_climo
If false, interpolate vegetation type from the input data to the target grid instead of using data fr...
+
logical, dimension(:), allocatable, public read_from_input
When false, variable was not read from GRIB2 input file.
+
character(len=500), dimension(6), public sfc_files_input_grid
File names containing input surface data.
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/splitbar.png b/ver-1.11.0/chgres_cube/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/static__data_8F90.html b/ver-1.11.0/chgres_cube/static__data_8F90.html new file mode 100644 index 000000000..995c5539a --- /dev/null +++ b/ver-1.11.0/chgres_cube/static__data_8F90.html @@ -0,0 +1,186 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/static_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
static_data.F90 File Reference
+
+
+ +

Process static surface data. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  static_data
 Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation type).
 
+ + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public static_data::cleanup_static_fields
 Free up memory for fields in this module. More...
 
subroutine, public static_data::create_static_fields
 Create ESMF fields for static target grid data. More...
 
subroutine, public static_data::get_static_fields (localpet)
 Driver routine to read/time interpolate static/climo fields on the fv3 target grid. More...
 
subroutine static_data::read_static_file (field, i_target, j_target, tile, data_one_tile, max_data_one_tile, min_data_one_tile)
 Read static climatological data file. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field), public static_data::alnsf_target_grid
 near ir black sky albedo More...
 
type(esmf_field), public static_data::alnwf_target_grid
 near ir white sky albedo More...
 
type(esmf_field), public static_data::alvsf_target_grid
 visible black sky albedo More...
 
type(esmf_field), public static_data::alvwf_target_grid
 visible white sky albedo More...
 
type(esmf_field), public static_data::facsf_target_grid
 fractional coverage for strong zenith angle dependent albedo More...
 
type(esmf_field), public static_data::facwf_target_grid
 fractional coverage for weak zenith angle dependent albedo More...
 
type(esmf_field), public static_data::max_veg_greenness_target_grid
 maximum annual greenness fraction More...
 
type(esmf_field), public static_data::min_veg_greenness_target_grid
 minimum annual greenness fraction More...
 
type(esmf_field), public static_data::mxsno_albedo_target_grid
 maximum snow albedo More...
 
type(esmf_field), public static_data::slope_type_target_grid
 slope type More...
 
type(esmf_field), public static_data::soil_type_target_grid
 soil type More...
 
type(esmf_field), public static_data::substrate_temp_target_grid
 soil subtrate temperature More...
 
type(esmf_field), public static_data::veg_greenness_target_grid
 vegetation greenness fraction More...
 
type(esmf_field), public static_data::veg_type_target_grid
 vegetation type More...
 
+

Detailed Description

+

Process static surface data.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file static_data.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/static__data_8F90.js b/ver-1.11.0/chgres_cube/static__data_8F90.js new file mode 100644 index 000000000..db2408ba1 --- /dev/null +++ b/ver-1.11.0/chgres_cube/static__data_8F90.js @@ -0,0 +1,21 @@ +var static__data_8F90 = +[ + [ "cleanup_static_fields", "static__data_8F90.html#a3a6ad318f4d11ae68a6f33dc2fbc6ffc", null ], + [ "create_static_fields", "static__data_8F90.html#aeb4ec10a3aa09ae6fae0d5fd4dad5ad6", null ], + [ "get_static_fields", "static__data_8F90.html#aa310502eb6a2d97f82fb41196b00f4d7", null ], + [ "read_static_file", "static__data_8F90.html#aff2a5a5fa372950e606431e9ee777e65", null ], + [ "alnsf_target_grid", "static__data_8F90.html#a75974bdb40579172b8c79eba07ac9936", null ], + [ "alnwf_target_grid", "static__data_8F90.html#ab38fa25b331399e5a4fffe055d7a5323", null ], + [ "alvsf_target_grid", "static__data_8F90.html#a6ac14b1f23dd4cdc858efbb48afd556f", null ], + [ "alvwf_target_grid", "static__data_8F90.html#a1f4db719e9b6b3247600b7d3213e89b4", null ], + [ "facsf_target_grid", "static__data_8F90.html#a8893a2723547f5bcc8e2b5b609ec9f0c", null ], + [ "facwf_target_grid", "static__data_8F90.html#a8ad3327f9ff91d1bbf5d28d375303f49", null ], + [ "max_veg_greenness_target_grid", "static__data_8F90.html#abadfd2da54f59d65b8f4a25f53ead74b", null ], + [ "min_veg_greenness_target_grid", "static__data_8F90.html#aa9768580be3932356fecde427d5bfa52", null ], + [ "mxsno_albedo_target_grid", "static__data_8F90.html#acbd7129a9c4dbe1fec09bd7f8fec9acd", null ], + [ "slope_type_target_grid", "static__data_8F90.html#a5ed8a6491553f66888bccd0c1e0b91bb", null ], + [ "soil_type_target_grid", "static__data_8F90.html#afeeddfcf73c80599aa773770314a0bd1", null ], + [ "substrate_temp_target_grid", "static__data_8F90.html#a4dfed22f54d51ff598ae12a208cb197c", null ], + [ "veg_greenness_target_grid", "static__data_8F90.html#a0267b3ac33e89ea79114bcf20ba512b2", null ], + [ "veg_type_target_grid", "static__data_8F90.html#a0bd92f571dd7db7c2893b1c08527988c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/static__data_8F90_source.html b/ver-1.11.0/chgres_cube/static__data_8F90_source.html new file mode 100644 index 000000000..a5b923134 --- /dev/null +++ b/ver-1.11.0/chgres_cube/static__data_8F90_source.html @@ -0,0 +1,136 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/static_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
static_data.F90
+
+
+Go to the documentation of this file.
1 
4 
13  module static_data
14 
15  use esmf
16 
17  use utilities, only : error_handler, netcdf_err
18 
19  implicit none
20 
21  private
22 
23  type(esmf_field), public :: alvsf_target_grid
24  type(esmf_field), public :: alvwf_target_grid
25  type(esmf_field), public :: alnsf_target_grid
26  type(esmf_field), public :: alnwf_target_grid
27  type(esmf_field), public :: facsf_target_grid
28  type(esmf_field), public :: facwf_target_grid
29  type(esmf_field), public :: max_veg_greenness_target_grid
30  type(esmf_field), public :: min_veg_greenness_target_grid
31  type(esmf_field), public :: mxsno_albedo_target_grid
32  type(esmf_field), public :: slope_type_target_grid
33  type(esmf_field), public :: soil_type_target_grid
34  type(esmf_field), public :: substrate_temp_target_grid
35  type(esmf_field), public :: veg_greenness_target_grid
36  type(esmf_field), public :: veg_type_target_grid
37 
38  public :: get_static_fields
39  public :: create_static_fields
40  public :: cleanup_static_fields
41 
42  contains
43 
49  subroutine get_static_fields(localpet)
50 
51  use model_grid, only : num_tiles_target_grid, &
53 
54  implicit none
55 
56  integer, intent(in) :: localpet
57 
58  integer :: error, tile, i, j
59 
60  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
61  real(esmf_kind_r8), allocatable :: max_data_one_tile(:,:)
62  real(esmf_kind_r8), allocatable :: min_data_one_tile(:,:)
63 
64  if (localpet==0) then
65  allocate(data_one_tile(i_target,j_target))
66  else
67  allocate(data_one_tile(0,0))
68  endif
69 
71 
72 !------------------------------------------------------------------------------
73 ! Slope type
74 !------------------------------------------------------------------------------
75 
76  do tile = 1, num_tiles_target_grid
77  if (localpet == 0) then
78  call read_static_file('slope_type', i_target, j_target, tile, data_one_tile)
79  endif
80  print*,"- CALL FieldScatter FOR TARGET GRID SLOPE TYPE."
81  call esmf_fieldscatter(slope_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
82  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
83  call error_handler("IN FieldScatter", error)
84  enddo
85 
86 !------------------------------------------------------------------------------
87 ! Maximum snow albedo.
88 !------------------------------------------------------------------------------
89 
90  do tile = 1, num_tiles_target_grid
91  if (localpet == 0) then
92  call read_static_file('maximum_snow_albedo', i_target, j_target, tile, data_one_tile)
93  endif
94  print*,"- CALL FieldScatter FOR TARGET GRID MAXIMUM SNOW ALBEDO."
95  call esmf_fieldscatter(mxsno_albedo_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
96  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
97  call error_handler("IN FieldScatter", error)
98  enddo
99 
100 !------------------------------------------------------------------------------
101 ! Soil type
102 !------------------------------------------------------------------------------
103 
104  do tile = 1, num_tiles_target_grid
105  if (localpet == 0) then
106  call read_static_file('soil_type', i_target, j_target, tile, data_one_tile)
107  endif
108  print*,"- CALL FieldScatter FOR TARGET GRID SOIL TYPE."
109  call esmf_fieldscatter(soil_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
110  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
111  call error_handler("IN FieldScatter", error)
112  enddo
113 
114 !------------------------------------------------------------------------------
115 ! Vegetation type
116 !------------------------------------------------------------------------------
117 
118  do tile = 1, num_tiles_target_grid
119  if (localpet == 0) then
120  call read_static_file('vegetation_type', i_target, j_target, tile, data_one_tile)
121  endif
122  print*,"- CALL FieldScatter FOR TARGET GRID VEGETATION TYPE."
123  call esmf_fieldscatter(veg_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
124  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
125  call error_handler("IN FieldScatter", error)
126  enddo
127 
128 !------------------------------------------------------------------------------
129 ! Vegetation greenness
130 !------------------------------------------------------------------------------
131 
132  if (localpet == 0) then
133  allocate(max_data_one_tile(i_target,j_target))
134  allocate(min_data_one_tile(i_target,j_target))
135  else
136  allocate(max_data_one_tile(0,0))
137  allocate(min_data_one_tile(0,0))
138  endif
139 
140  do tile = 1, num_tiles_target_grid
141  if (localpet == 0) then
142  call read_static_file('vegetation_greenness', i_target, j_target, tile, data_one_tile, &
143  max_data_one_tile, min_data_one_tile)
144  endif
145  print*,"- CALL FieldScatter FOR TARGET GRID VEGETATION GREENNESS."
146  call esmf_fieldscatter(veg_greenness_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
147  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
148  call error_handler("IN FieldScatter", error)
149  print*,"- CALL FieldScatter FOR TARGET GRID MAXIMUM VEGETATION GREENNESS."
150  call esmf_fieldscatter(max_veg_greenness_target_grid, max_data_one_tile, rootpet=0, tile=tile, rc=error)
151  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
152  call error_handler("IN FieldScatter", error)
153  print*,"- CALL FieldScatter FOR TARGET GRID MINIMUM VEGETATION GREENNESS."
154  call esmf_fieldscatter(min_veg_greenness_target_grid, min_data_one_tile, rootpet=0, tile=tile, rc=error)
155  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
156  call error_handler("IN FieldScatter", error)
157  enddo
158 
159  deallocate(max_data_one_tile, min_data_one_tile)
160 
161 !------------------------------------------------------------------------------
162 ! Soil substrate temperature
163 !------------------------------------------------------------------------------
164 
165  do tile = 1, num_tiles_target_grid
166  if (localpet == 0) then
167  call read_static_file('substrate_temperature', i_target, j_target, tile, data_one_tile)
168  endif
169  print*,"- CALL FieldScatter FOR TARGET GRID SUBSTRATE TEMPERATURE."
170  call esmf_fieldscatter(substrate_temp_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
171  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
172  call error_handler("IN FieldScatter", error)
173  enddo
174 
175 !------------------------------------------------------------------------------
176 ! Four-component albedo.
177 !------------------------------------------------------------------------------
178 
179  do tile = 1, num_tiles_target_grid
180  if (localpet == 0) then
181  call read_static_file('visible_black_sky_albedo', i_target, j_target, tile, data_one_tile)
182  endif
183  print*,"- CALL FieldScatter FOR TARGET GRID ALVSF."
184  call esmf_fieldscatter(alvsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
185  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
186  call error_handler("IN FieldScatter", error)
187  enddo
188 
189  do tile = 1, num_tiles_target_grid
190  if (localpet == 0) then
191  call read_static_file('visible_white_sky_albedo', i_target, j_target, tile, data_one_tile)
192  endif
193  print*,"- CALL FieldScatter FOR TARGET GRID ALVWF."
194  call esmf_fieldscatter(alvwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
195  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
196  call error_handler("IN FieldScatter", error)
197  enddo
198 
199  do tile = 1, num_tiles_target_grid
200  if (localpet == 0) then
201  call read_static_file('near_IR_black_sky_albedo', i_target, j_target, tile, data_one_tile)
202  endif
203  print*,"- CALL FieldScatter FOR TARGET GRID ALNSF."
204  call esmf_fieldscatter(alnsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
205  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
206  call error_handler("IN FieldScatter", error)
207  enddo
208 
209  do tile = 1, num_tiles_target_grid
210  if (localpet == 0) then
211  call read_static_file('near_IR_white_sky_albedo', i_target, j_target, tile, data_one_tile)
212  endif
213  print*,"- CALL FieldScatter FOR TARGET GRID ALNWF."
214  call esmf_fieldscatter(alnwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
215  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
216  call error_handler("IN FieldScatter", error)
217  enddo
218 
219 !------------------------------------------------------------------------------
220 ! facsf and facwf
221 !------------------------------------------------------------------------------
222 
223  do tile = 1, num_tiles_target_grid
224  if (localpet == 0) then
225  call read_static_file('facsf', i_target, j_target, tile, data_one_tile)
226  endif
227  print*,"- CALL FieldScatter FOR TARGET GRID FACSF."
228  call esmf_fieldscatter(facsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
229  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
230  call error_handler("IN FieldScatter", error)
231  if (localpet == 0) then
232  do j = 1, j_target
233  do i = 1, i_target
234  if (data_one_tile(i,j) >= 0.0) then
235  data_one_tile(i,j) = 1.0 - data_one_tile(i,j)
236  endif
237  enddo
238  enddo
239  endif
240  call esmf_fieldscatter(facwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
241  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
242  call error_handler("IN FieldScatter", error)
243  enddo
244 
245  deallocate(data_one_tile)
246 
247  end subroutine get_static_fields
248 
261  subroutine read_static_file(field, i_target, j_target, tile, &
262  data_one_tile, max_data_one_tile, &
263  min_data_one_tile)
264 
265  use netcdf
266  use model_grid, only : tiles_target_grid
269 
270  implicit none
271 
272  character(len=*), intent(in) :: field
273  character(len=100) :: filename
274  character(len=500) :: the_file
275 
276  integer, intent(in) :: i_target, j_target, tile
277 
278  real(esmf_kind_r8), intent(out) :: data_one_tile(i_target,j_target)
279  real(esmf_kind_r8), intent(out), optional :: max_data_one_tile(i_target,j_target)
280  real(esmf_kind_r8), intent(out), optional :: min_data_one_tile(i_target,j_target)
281 
282  integer :: bound1, bound2
283  integer :: error, ncid, id_var, n
284  integer :: i, j, id_time, num_times
285  integer :: idat(8), jdat(8)
286  integer, allocatable :: days_since(:)
287 
288  real(kind=4), allocatable :: dummy(:,:,:)
289  real(esmf_kind_r8) :: num_days, num_days_rec1, rinc(5)
290  real(esmf_kind_r8) :: weight_rec1, weight_rec2
291 
292  if (trim(field) == 'facsf') filename = "/" // trim(cres_target_grid) // ".facsf." // trim(tiles_target_grid(tile)) // ".nc"
293  if (trim(field) == 'maximum_snow_albedo') filename = "/" // trim(cres_target_grid) // ".maximum_snow_albedo." // trim(tiles_target_grid(tile)) // ".nc"
294  if (trim(field) == 'slope_type') filename = "/" // trim(cres_target_grid) // ".slope_type." // trim(tiles_target_grid(tile)) // ".nc"
295  if (trim(field) == 'soil_type') filename = "/" // trim(cres_target_grid) // ".soil_type." // trim(tiles_target_grid(tile)) // ".nc"
296  if (trim(field) == 'substrate_temperature') filename = "/" // trim(cres_target_grid) // ".substrate_temperature." // trim(tiles_target_grid(tile)) // ".nc"
297  if (trim(field) == 'vegetation_greenness') filename = "/" // trim(cres_target_grid) // ".vegetation_greenness." // trim(tiles_target_grid(tile)) // ".nc"
298  if (trim(field) == 'vegetation_type') filename = "/" // trim(cres_target_grid) // ".vegetation_type." // trim(tiles_target_grid(tile)) // ".nc"
299  if (trim(field) == 'visible_black_sky_albedo') filename = "/" // trim(cres_target_grid) // ".snowfree_albedo." // trim(tiles_target_grid(tile)) // ".nc"
300  if (trim(field) == 'visible_white_sky_albedo') filename = "/" // trim(cres_target_grid) // ".snowfree_albedo." // trim(tiles_target_grid(tile)) // ".nc"
301  if (trim(field) == 'near_IR_black_sky_albedo') filename = "/" // trim(cres_target_grid) // ".snowfree_albedo." // trim(tiles_target_grid(tile)) // ".nc"
302  if (trim(field) == 'near_IR_white_sky_albedo') filename = "/" // trim(cres_target_grid) // ".snowfree_albedo." // trim(tiles_target_grid(tile)) // ".nc"
303 
304  the_file = trim(fix_dir_target_grid) // trim(filename)
305 
306  print*,'- OPEN FILE ',trim(the_file)
307  error=nf90_open(trim(the_file),nf90_nowrite,ncid)
308  call netcdf_err(error, 'OPENING: '//trim(the_file) )
309 
310  error=nf90_inq_dimid(ncid, 'time', id_time)
311  call netcdf_err(error, 'INQ TIME DIMENSION')
312  error=nf90_inquire_dimension(ncid, id_time, len=num_times)
313  call netcdf_err(error, 'READING TIME DIMENSION')
314  print*,'- FILE CONTAINS ', num_times, ' TIME RECORDS.'
315 
316  allocate(dummy(i_target,j_target,num_times))
317  error=nf90_inq_varid(ncid, field, id_var)
318  call netcdf_err(error, 'READING FIELD ID' )
319  error=nf90_get_var(ncid, id_var, dummy)
320  call netcdf_err(error, 'READING FIELD' )
321 
322  if (num_times > 1) then
323  allocate (days_since(num_times))
324  error=nf90_inq_varid(ncid, 'time', id_time)
325  error=nf90_get_var(ncid, id_time, days_since)
326  print*,'- TIME RECORDS (DAYS SINCE): ', days_since
327  idat = 0
328  idat(1) = 2015
329  idat(2) = 1
330  idat(3) = 1
331  idat(5) = 0
332  jdat = 0
333  jdat(1) = 2015
334  jdat(2) = cycle_mon
335  jdat(3) = cycle_day
336  jdat(5) = cycle_hour
337  call w3difdat(jdat,idat,1,rinc)
338  do n = 1, num_times
339  if (rinc(1) <= days_since(n)) exit
340  enddo
341  bound2 = n
342  bound1 = n - 1
343  if (bound1 == 0) bound1 = num_times
344  if (bound2 == num_times+1) bound2 = 1
345  print*,"- BOUNDING TIME RECORDS: ", bound1, bound2
346  if (bound2 /= 1) then
347  num_days = float(days_since(bound2)) - float(days_since(bound1))
348  num_days_rec1 = rinc(1) - float(days_since(bound1))
349  weight_rec2 = num_days_rec1 / num_days
350  weight_rec1 = 1.0 - weight_rec2
351  print*,"- BOUNDING WEIGHTS ", weight_rec1, weight_rec2
352  else
353  num_days = (float(days_since(bound2)) + 1.0) + (365.0 - float(days_since(bound1)) - 1.0)
354  if (rinc(1) >= days_since(bound1)) then
355  num_days_rec1 = rinc(1) - float(days_since(bound1))
356  else
357  num_days_rec1 = (365.0 - float(days_since(bound1))) + rinc(1)
358  endif
359  weight_rec2 = num_days_rec1 / num_days
360  weight_rec1 = 1.0 - weight_rec2
361  print*,"- BOUNDING WEIGHTS ", weight_rec1, weight_rec2
362  endif
363 
364  do j = 1, j_target
365  do i = 1, i_target
366  data_one_tile(i,j) = (weight_rec1*dummy(i,j,bound1)) + (weight_rec2*dummy(i,j,bound2))
367  enddo
368  enddo
369 
370  deallocate(days_since)
371 
372  else ! file contains only one time record
373 
374  data_one_tile = dummy(:,:,1)
375 
376  endif
377 
378  if (trim(field) == 'vegetation_greenness') then
379 
380  do j = 1, j_target
381  do i = 1, i_target
382  max_data_one_tile(i,j) = maxval(dummy(i,j,:))
383  min_data_one_tile(i,j) = minval(dummy(i,j,:))
384  enddo
385  enddo
386 
387  endif
388 
389  deallocate(dummy)
390 
391  error = nf90_close(ncid)
392 
393  end subroutine read_static_file
394 
398  subroutine create_static_fields
399 
400  use model_grid, only : target_grid
401 
402  implicit none
403 
404  integer :: error
405 
406  print*,"- CALL FieldCreate FOR TARGET GRID SLOPE TYPE."
407  slope_type_target_grid = esmf_fieldcreate(target_grid, &
408  typekind=esmf_typekind_r8, &
409  staggerloc=esmf_staggerloc_center, rc=error)
410  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
411  call error_handler("IN FieldCreate", error)
412 
413  print*,"- CALL FieldCreate FOR TARGET GRID MAXIMUM SNOW ALBEDO."
414  mxsno_albedo_target_grid = esmf_fieldcreate(target_grid, &
415  typekind=esmf_typekind_r8, &
416  staggerloc=esmf_staggerloc_center, rc=error)
417  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
418  call error_handler("IN FieldCreate", error)
419 
420  print*,"- CALL FieldCreate FOR TARGET GRID SOIL TYPE."
421  soil_type_target_grid = esmf_fieldcreate(target_grid, &
422  typekind=esmf_typekind_r8, &
423  staggerloc=esmf_staggerloc_center, rc=error)
424  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
425  call error_handler("IN FieldCreate", error)
426 
427  print*,"- CALL FieldCreate FOR TARGET GRID VEGETATION TYPE."
428  veg_type_target_grid = esmf_fieldcreate(target_grid, &
429  typekind=esmf_typekind_r8, &
430  staggerloc=esmf_staggerloc_center, rc=error)
431  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
432  call error_handler("IN FieldCreate", error)
433 
434  print*,"- CALL FieldCreate FOR TARGET GRID VEGETATION GREENNESS."
435  veg_greenness_target_grid = esmf_fieldcreate(target_grid, &
436  typekind=esmf_typekind_r8, &
437  staggerloc=esmf_staggerloc_center, rc=error)
438  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
439  call error_handler("IN FieldCreate", error)
440 
441  print*,"- CALL FieldCreate FOR TARGET GRID MAXIMUM VEGETATION GREENNESS."
442  max_veg_greenness_target_grid = esmf_fieldcreate(target_grid, &
443  typekind=esmf_typekind_r8, &
444  staggerloc=esmf_staggerloc_center, rc=error)
445  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
446  call error_handler("IN FieldCreate", error)
447 
448  print*,"- CALL FieldCreate FOR TARGET GRID MINIMUM VEGETATION GREENNESS."
449  min_veg_greenness_target_grid = esmf_fieldcreate(target_grid, &
450  typekind=esmf_typekind_r8, &
451  staggerloc=esmf_staggerloc_center, rc=error)
452  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
453  call error_handler("IN FieldCreate", error)
454 
455  print*,"- CALL FieldCreate FOR TARGET GRID SUBSTRATE TEMPERATURE."
456  substrate_temp_target_grid = esmf_fieldcreate(target_grid, &
457  typekind=esmf_typekind_r8, &
458  staggerloc=esmf_staggerloc_center, rc=error)
459  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
460  call error_handler("IN FieldCreate", error)
461 
462  print*,"- CALL FieldCreate FOR ALVSF."
463  alvsf_target_grid = esmf_fieldcreate(target_grid, &
464  typekind=esmf_typekind_r8, &
465  staggerloc=esmf_staggerloc_center, rc=error)
466  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
467  call error_handler("IN FieldCreate", error)
468 
469  print*,"- CALL FieldCreate FOR ALVWF."
470  alvwf_target_grid = esmf_fieldcreate(target_grid, &
471  typekind=esmf_typekind_r8, &
472  staggerloc=esmf_staggerloc_center, rc=error)
473  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
474  call error_handler("IN FieldCreate", error)
475 
476  print*,"- CALL FieldCreate FOR ALNSF."
477  alnsf_target_grid = esmf_fieldcreate(target_grid, &
478  typekind=esmf_typekind_r8, &
479  staggerloc=esmf_staggerloc_center, rc=error)
480  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
481  call error_handler("IN FieldCreate", error)
482 
483  print*,"- CALL FieldCreate FOR ALNWF."
484  alnwf_target_grid = esmf_fieldcreate(target_grid, &
485  typekind=esmf_typekind_r8, &
486  staggerloc=esmf_staggerloc_center, rc=error)
487  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
488  call error_handler("IN FieldCreate", error)
489 
490  print*,"- CALL FieldCreate FOR TARGET GRID FACSF."
491  facsf_target_grid = esmf_fieldcreate(target_grid, &
492  typekind=esmf_typekind_r8, &
493  staggerloc=esmf_staggerloc_center, rc=error)
494  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
495  call error_handler("IN FieldCreate", error)
496 
497  print*,"- CALL FieldCreate FOR TARGET GRID FACWF."
498  facwf_target_grid = esmf_fieldcreate(target_grid, &
499  typekind=esmf_typekind_r8, &
500  staggerloc=esmf_staggerloc_center, rc=error)
501  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
502  call error_handler("IN FieldCreate", error)
503 
504  end subroutine create_static_fields
505 
509  subroutine cleanup_static_fields
511  implicit none
512 
513  integer :: rc
514 
515  print*,"- DESTROY STATIC FIELDS."
516 
517  call esmf_fielddestroy(alvsf_target_grid, rc=rc)
518  call esmf_fielddestroy(alvwf_target_grid, rc=rc)
519  call esmf_fielddestroy(alnsf_target_grid, rc=rc)
520  call esmf_fielddestroy(alnwf_target_grid, rc=rc)
521  call esmf_fielddestroy(facsf_target_grid, rc=rc)
522  call esmf_fielddestroy(facwf_target_grid, rc=rc)
523  call esmf_fielddestroy(max_veg_greenness_target_grid, rc=rc)
524  call esmf_fielddestroy(min_veg_greenness_target_grid, rc=rc)
525  call esmf_fielddestroy(mxsno_albedo_target_grid, rc=rc)
526  call esmf_fielddestroy(slope_type_target_grid, rc=rc)
527  call esmf_fielddestroy(soil_type_target_grid, rc=rc)
528  call esmf_fielddestroy(substrate_temp_target_grid, rc=rc)
529  call esmf_fielddestroy(veg_greenness_target_grid, rc=rc)
530  call esmf_fielddestroy(veg_type_target_grid, rc=rc)
531 
532  end subroutine cleanup_static_fields
533 
534  end module static_data
integer, public j_target
j dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:40
+
character(len=500), public fix_dir_target_grid
Directory containing target grid pre-computed fixed data (ex: soil type).
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public num_tiles_target_grid
Number of tiles, target grid.
Definition: model_grid.F90:49
+
subroutine, public create_static_fields
Create ESMF fields for static target grid data.
+
integer, public cycle_mon
Cycle month.
+
character(len=6), public cres_target_grid
Target grid resolution, i.e., C768.
+
type(esmf_field), public min_veg_greenness_target_grid
minimum annual greenness fraction
Definition: static_data.F90:30
+
type(esmf_field), public max_veg_greenness_target_grid
maximum annual greenness fraction
Definition: static_data.F90:29
+
type(esmf_field), public mxsno_albedo_target_grid
maximum snow albedo
Definition: static_data.F90:31
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
type(esmf_field), public alvwf_target_grid
visible white sky albedo
Definition: static_data.F90:24
+
integer, public i_target
i dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:37
+
integer, public cycle_day
Cycle day.
+
type(esmf_grid), public target_grid
target grid esmf grid object.
Definition: model_grid.F90:54
+
type(esmf_field), public alnsf_target_grid
near ir black sky albedo
Definition: static_data.F90:25
+
subroutine, public cleanup_static_fields
Free up memory for fields in this module.
+
type(esmf_field), public alvsf_target_grid
visible black sky albedo
Definition: static_data.F90:23
+
type(esmf_field), public slope_type_target_grid
slope type
Definition: static_data.F90:32
+
Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation ty...
Definition: static_data.F90:13
+
type(esmf_field), public substrate_temp_target_grid
soil subtrate temperature
Definition: static_data.F90:34
+
type(esmf_field), public veg_greenness_target_grid
vegetation greenness fraction
Definition: static_data.F90:35
+
character(len=5), dimension(:), allocatable, public tiles_target_grid
Tile names of target grid.
Definition: model_grid.F90:19
+
type(esmf_field), public veg_type_target_grid
vegetation type
Definition: static_data.F90:36
+
subroutine read_static_file(field, i_target, j_target, tile, data_one_tile, max_data_one_tile, min_data_one_tile)
Read static climatological data file.
+
integer, public cycle_hour
Cycle hour.
+
type(esmf_field), public facwf_target_grid
fractional coverage for weak zenith angle dependent albedo
Definition: static_data.F90:28
+
subroutine, public get_static_fields(localpet)
Driver routine to read/time interpolate static/climo fields on the fv3 target grid.
Definition: static_data.F90:50
+
type(esmf_field), public alnwf_target_grid
near ir white sky albedo
Definition: static_data.F90:26
+
type(esmf_field), public facsf_target_grid
fractional coverage for strong zenith angle dependent albedo
Definition: static_data.F90:27
+
type(esmf_field), public soil_type_target_grid
soil type
Definition: static_data.F90:33
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.html b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.html new file mode 100644 index 000000000..f6d8b062b --- /dev/null +++ b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.html @@ -0,0 +1,148 @@ + + + + + + + +chgres_cube: surface::realptr_2d Type Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface::realptr_2d Type Reference
+
+
+ + + + + +

+Private Attributes

real(esmf_kind_r8), dimension(:,:), pointer p
 array of 2d pointers More...
 
+

Detailed Description

+
+

Definition at line 81 of file surface.F90.

+

Field Documentation

+ +

◆ p

+ +
+
+ + + + + +
+ + + + +
real(esmf_kind_r8), dimension(:,:), pointer surface::realptr_2d::p
+
+private
+
+ +

array of 2d pointers

+

pointer to hold array of 2d pointers

+ +

Definition at line 82 of file surface.F90.

+ +
+
+
The documentation for this type was generated from the following file:
    +
  • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface.F90
  • +
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.js b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.js new file mode 100644 index 000000000..23dd37659 --- /dev/null +++ b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__2d.js @@ -0,0 +1,4 @@ +var structsurface_1_1realptr__2d = +[ + [ "p", "structsurface_1_1realptr__2d.html#a8a75163487be30796f0e9623d3bdd0bf", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.html b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.html new file mode 100644 index 000000000..d953933cd --- /dev/null +++ b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.html @@ -0,0 +1,148 @@ + + + + + + + +chgres_cube: surface::realptr_3d Type Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface::realptr_3d Type Reference
+
+
+ + + + + +

+Private Attributes

real(esmf_kind_r8), dimension(:,:,:), pointer p
 array of 3d pointers More...
 
+

Detailed Description

+
+

Definition at line 86 of file surface.F90.

+

Field Documentation

+ +

◆ p

+ +
+
+ + + + + +
+ + + + +
real(esmf_kind_r8), dimension(:,:,:), pointer surface::realptr_3d::p
+
+private
+
+ +

array of 3d pointers

+

pointer to hold array of 3d pointers

+ +

Definition at line 87 of file surface.F90.

+ +
+
+
The documentation for this type was generated from the following file:
    +
  • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface.F90
  • +
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.js b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.js new file mode 100644 index 000000000..c2c2b50bb --- /dev/null +++ b/ver-1.11.0/chgres_cube/structsurface_1_1realptr__3d.js @@ -0,0 +1,4 @@ +var structsurface_1_1realptr__3d = +[ + [ "p", "structsurface_1_1realptr__3d.html#aacdc1c26baef9f3b7d0ab829ad23a6f2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/surface_8F90.html b/ver-1.11.0/chgres_cube/surface_8F90.html new file mode 100644 index 000000000..0ec151589 --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface_8F90.html @@ -0,0 +1,215 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface.F90 File Reference
+
+
+ +

Process land, sea/lake ice, open water/Near Sea Surface Temperature (NSST) fields. +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Data Types

type  surface::realptr_2d
 
type  surface::realptr_3d
 
+ + + + +

+Modules

module  surface
 Process surface and nst fields.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine surface::adjust_soil_levels (localpet)
 Adjust soil levels of the input grid if there is a mismatch between input and target grids. More...
 
subroutine surface::adjust_soilt_for_terrain
 Adjust soil temperature for changes in terrain height between the input and target grids. More...
 
subroutine surface::calc_liq_soil_moisture
 Compute liquid portion of the total soil moisture. More...
 
subroutine surface::cleanup_all_target_sfc_data
 Free up memory once the target grid surface fields are no longer needed. More...
 
subroutine, public surface::create_nst_esmf_fields
 Create ESMF fields for the target grid nst variables. More...
 
subroutine, public surface::create_surface_esmf_fields
 Create ESMF fields for the target grid surface variables. More...
 
real function surface::FRH2O (TKELV, SMC, SH2O, SMCMAX, BEXP, PSIS)
 Calculate supercooled soil moisture. More...
 
subroutine surface::ij_to_i_j (ij, itile, jtile, i, j)
 Convert 1d index to 2d indices. More...
 
subroutine, public surface::interp (localpet)
 Horizontally interpolate surface fields from input to target FV3 grid using esmf routines. More...
 
subroutine, public surface::nst_land_fill
 nst is not active at land or sea ice points. More...
 
subroutine surface::qc_check
 Perform some quality control checks before output. More...
 
subroutine, public surface::regrid_many (bundle_pre, bundle_post, num_field, route, dozero, unmapped_ptr, resetifd)
 Regrid multiple ESMF fields from input to target grid. More...
 
subroutine surface::rescale_soil_moisture
 Adjust soil moisture for changes in soil type between the input and target grids. More...
 
subroutine surface::roughness
 Set roughness length at land and sea ice. More...
 
subroutine, public surface::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::surface_driver (localpet)
 Driver routine to process surface/nst data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

real, parameter, private surface::blim = 5.5
 soil 'b' parameter limit More...
 
real, parameter, private surface::frz_h2o = 273.15
 melting pt water More...
 
real, parameter, private surface::frz_ice = 271.21
 melting pt sea ice More...
 
real, parameter, private surface::grav = 9.81
 gravity More...
 
real, parameter, private surface::hlice = 3.335E5
 latent heat of fusion More...
 
type(esmf_field) surface::soil_type_from_input_grid
 soil type interpolated from input grid More...
 
type(esmf_field) surface::terrain_from_input_grid
 terrain height interpolated from input grid More...
 
type(esmf_field) surface::terrain_from_input_grid_land
 terrain height interpolated from input grid at all land points More...
 
integer, parameter surface::veg_type_landice_target = 15
 Vegetation type category that defines permanent land ice points. More...
 
+

Detailed Description

+

Process land, sea/lake ice, open water/Near Sea Surface Temperature (NSST) fields.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file surface.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/surface_8F90.js b/ver-1.11.0/chgres_cube/surface_8F90.js new file mode 100644 index 000000000..73cf55978 --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface_8F90.js @@ -0,0 +1,30 @@ +var surface_8F90 = +[ + [ "realptr_2d", "structsurface_1_1realptr__2d.html", "structsurface_1_1realptr__2d" ], + [ "realptr_3d", "structsurface_1_1realptr__3d.html", "structsurface_1_1realptr__3d" ], + [ "adjust_soil_levels", "surface_8F90.html#ae4bf53bef0b16e89d6344df2b6aa1888", null ], + [ "adjust_soilt_for_terrain", "surface_8F90.html#a7592ccae34fbacf04fe5f69ffac4aeb6", null ], + [ "calc_liq_soil_moisture", "surface_8F90.html#ac5e2bc59e4d2fa0c063c0dff2d059111", null ], + [ "cleanup_all_target_sfc_data", "surface_8F90.html#a7d2198fe7684f6f0da6f35863f90e931", null ], + [ "create_nst_esmf_fields", "surface_8F90.html#a0072f75a8c94bd12bc0e84d392cec723", null ], + [ "create_surface_esmf_fields", "surface_8F90.html#a0eeed6bc8807704d095c5356d5026518", null ], + [ "FRH2O", "surface_8F90.html#abcfbbcd2986ac73e0d883b2441fe94a3", null ], + [ "ij_to_i_j", "surface_8F90.html#a7a2257539e521c7e72bd2b3c76f72044", null ], + [ "interp", "surface_8F90.html#ae8b708efb5c1abfda4a2efc48bef83dd", null ], + [ "nst_land_fill", "surface_8F90.html#a37509f4fa66fcf75ee97f82cb99927b9", null ], + [ "qc_check", "surface_8F90.html#a232ef616dae3429cdd609b34ed59dcb1", null ], + [ "regrid_many", "surface_8F90.html#a5c687bf7da96c3c512b13a6a7eab4b99", null ], + [ "rescale_soil_moisture", "surface_8F90.html#a63fb2a0ed00bdec5e4f0b3360a5709a6", null ], + [ "roughness", "surface_8F90.html#ab18f8cebd46379b7b81a69829326eed0", null ], + [ "search_many", "surface_8F90.html#afc2c63e91ef5af4cefca13d9673d4acc", null ], + [ "surface_driver", "surface_8F90.html#a0707121ff6af9350608125b1750e32f5", null ], + [ "blim", "surface_8F90.html#a8504e69c586b0d22fd77f08056996bec", null ], + [ "frz_h2o", "surface_8F90.html#a38ac050f3afcffb171ecaca67f4338c6", null ], + [ "frz_ice", "surface_8F90.html#a8c9df7d4a32c856503c625212b2f2fe4", null ], + [ "grav", "surface_8F90.html#a0d020b9469b9e3dd472fa76b0c4ded06", null ], + [ "hlice", "surface_8F90.html#af4df26877e3d05576cc7cd54ec22c204", null ], + [ "soil_type_from_input_grid", "surface_8F90.html#a2150daf83b917a49662ed6473e8e5097", null ], + [ "terrain_from_input_grid", "surface_8F90.html#ab770243d8fd686d14b4eaec335eb7b15", null ], + [ "terrain_from_input_grid_land", "surface_8F90.html#a6dde2acec84877a91162b4bcf795373e", null ], + [ "veg_type_landice_target", "surface_8F90.html#a7aedcff2da595ef7aac69152edbdfa64", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/surface_8F90_source.html b/ver-1.11.0/chgres_cube/surface_8F90_source.html new file mode 100644 index 000000000..e19b310c8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface_8F90_source.html @@ -0,0 +1,227 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
surface.F90
+
+
+Go to the documentation of this file.
1 
5 
21  module surface
22 
23  use esmf
24 
44 
45  use write_data, only : write_fv3_sfc_data_netcdf
46 
47  use utilities, only : error_handler
48 
49  implicit none
50 
51  private
52 
53  integer, parameter :: veg_type_landice_target = 15
54 
58 
59  type(esmf_field) :: soil_type_from_input_grid
60 
62  type(esmf_field) :: terrain_from_input_grid
63 
65  type(esmf_field) :: terrain_from_input_grid_land
66 
68 
69  real, parameter, private :: blim = 5.5
70 
71  real, parameter, private :: frz_h2o = 273.15
72 
73  real, parameter, private :: frz_ice = 271.21
74 
75  real, parameter, private :: grav = 9.81
76 
77  real, parameter, private :: hlice = 3.335e5
78 
79 
80 
82  real(esmf_kind_r8), pointer :: p(:,:)
83 
84  end type realptr_2d
85 
87  real(esmf_kind_r8), pointer :: p(:,:,:)
88 
89  end type realptr_3d
90 
91 
92  public :: surface_driver
93  public :: create_nst_esmf_fields
94  public :: interp
96  public :: nst_land_fill
97  public :: regrid_many
98  public :: search_many
99 
100  contains
101 
107  subroutine surface_driver(localpet)
109  use sfc_input_data, only : cleanup_input_sfc_data, &
110  read_input_sfc_data
111 
112  use nst_input_data, only : cleanup_input_nst_data, &
113  read_input_nst_data
114 
117 
118  use static_data, only : get_static_fields, &
120 
122 
123  use utilities, only : error_handler
124 
125  implicit none
126 
127  integer, intent(in) :: localpet
128 
129 !-----------------------------------------------------------------------
130 ! Compute soil-based parameters.
131 !-----------------------------------------------------------------------
132 
133  call calc_soil_params_driver(localpet)
134 
135 !-----------------------------------------------------------------------
136 ! Get static data (like vegetation type) on the target grid.
137 !-----------------------------------------------------------------------
138 
139  call get_static_fields(localpet)
140 
141 !-----------------------------------------------------------------------
142 ! Read surface data on input grid.
143 !-----------------------------------------------------------------------
144 
145  call read_input_sfc_data(localpet)
146 
147 !-----------------------------------------------------------------------
148 ! Read nst data on input grid.
149 !-----------------------------------------------------------------------
150 
151  if (convert_nst) call read_input_nst_data(localpet)
152 
153 !-----------------------------------------------------------------------
154 ! Create surface field objects for target grid.
155 !-----------------------------------------------------------------------
156 
158 
159 !-----------------------------------------------------------------------
160 ! Create nst field objects for target grid.
161 !-----------------------------------------------------------------------
162 
164 
165 !-----------------------------------------------------------------------
166 ! Adjust soil levels of input grid !! not implemented yet
167 !-----------------------------------------------------------------------
168 
169  call adjust_soil_levels(localpet)
170 
171 !-----------------------------------------------------------------------
172 ! Horizontally interpolate fields.
173 !-----------------------------------------------------------------------
174 
175  call interp(localpet)
176 
177 !---------------------------------------------------------------------------------------------
178 ! Adjust soil/landice column temperatures for any change in elevation between the
179 ! input and target grids.
180 !---------------------------------------------------------------------------------------------
181 
183 
184 !---------------------------------------------------------------------------------------------
185 ! Rescale soil moisture for changes in soil type between the input and target grids.
186 !---------------------------------------------------------------------------------------------
187 
189 
190 !---------------------------------------------------------------------------------------------
191 ! Compute liquid portion of total soil moisture.
192 !---------------------------------------------------------------------------------------------
193 
195 
196 !---------------------------------------------------------------------------------------------
197 ! Set z0 at land and sea ice.
198 !---------------------------------------------------------------------------------------------
199 
200  call roughness
201 
202 !---------------------------------------------------------------------------------------------
203 ! Perform some final qc checks.
204 !---------------------------------------------------------------------------------------------
205 
206  call qc_check
207 
208 !---------------------------------------------------------------------------------------------
209 ! Set flag values at land for nst fields.
210 !---------------------------------------------------------------------------------------------
211 
212  if (convert_nst) call nst_land_fill
213 
214 !---------------------------------------------------------------------------------------------
215 ! Free up memory.
216 !---------------------------------------------------------------------------------------------
217 
218  call cleanup_input_sfc_data
219 
220  if (convert_nst) call cleanup_input_nst_data
221 
222 !---------------------------------------------------------------------------------------------
223 ! Write data to file.
224 !---------------------------------------------------------------------------------------------
225 
226  call write_fv3_sfc_data_netcdf(localpet)
227 
228 !---------------------------------------------------------------------------------------------
229 ! Free up memory.
230 !---------------------------------------------------------------------------------------------
231 
233 
235 
237 
238  return
239 
240  end subroutine surface_driver
241 
248  subroutine interp(localpet)
250  use mpi
251  use esmf
252 
253  use sfc_input_data, only : canopy_mc_input_grid, &
254  f10m_input_grid, &
255  ffmm_input_grid, &
256  landsea_mask_input_grid, &
257  q2m_input_grid, &
258  seaice_depth_input_grid, &
259  seaice_fract_input_grid, &
260  seaice_skin_temp_input_grid, &
261  skin_temp_input_grid, &
262  snow_depth_input_grid, &
263  snow_liq_equiv_input_grid, &
264  soil_temp_input_grid, &
265  soil_type_input_grid, &
266  soilm_tot_input_grid, &
267  srflag_input_grid, &
268  t2m_input_grid, &
269  tprcp_input_grid, &
270  ustar_input_grid, &
271  veg_type_input_grid, &
272  z0_input_grid, &
273  veg_type_landice_input, &
274  veg_greenness_input_grid, &
275  max_veg_greenness_input_grid, &
276  min_veg_greenness_input_grid, &
277  lai_input_grid
278 
279  use nst_input_data, only : c_d_input_grid, &
280  c_0_input_grid, &
281  d_conv_input_grid, &
282  dt_cool_input_grid, &
283  ifd_input_grid, &
284  qrain_input_grid, &
285  tref_input_grid, &
286  w_d_input_grid, &
287  w_0_input_grid, &
288  xs_input_grid, &
289  xt_input_grid, &
290  xu_input_grid, &
291  xv_input_grid, &
292  xz_input_grid, &
293  xtts_input_grid, &
294  xzts_input_grid, &
295  z_c_input_grid, &
296  zm_input_grid
297 
299 
300  use model_grid, only : input_grid, target_grid, &
301  i_target, j_target, &
302  lsoil_target, &
307 
308  use program_setup, only : convert_nst, &
309  vgtyp_from_climo, &
313  lai_from_climo, &
315 
316  use static_data, only : veg_type_target_grid, &
322 
323  use search_util
324 
325  implicit none
326 
327  integer, intent(in) :: localpet
328 
329  integer :: l(1), u(1)
330  integer :: i, j, ij, rc, tile
331  integer :: clb_target(2), cub_target(2)
332  integer :: isrctermprocessing
333  integer :: num_fields
334  integer :: vgfrc_ind, mmvg_ind, lai_ind
335  integer, allocatable :: search_nums(:)
336  integer(esmf_kind_i4), pointer :: unmapped_ptr(:)
337  integer(esmf_kind_i4), pointer :: mask_input_ptr(:,:)
338  integer(esmf_kind_i4), pointer :: mask_target_ptr(:,:)
339  integer(esmf_kind_i8), pointer :: landmask_target_ptr(:,:)
340  integer(esmf_kind_i8), allocatable :: mask_target_one_tile(:,:)
341  integer(esmf_kind_i8), allocatable :: water_target_one_tile(:,:)
342  integer(esmf_kind_i8), allocatable :: land_target_one_tile(:,:)
343  integer(esmf_kind_i8), pointer :: seamask_target_ptr(:,:)
344 
345  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
346  real(esmf_kind_r8), allocatable :: data_one_tile2(:,:)
347  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
348  real(esmf_kind_r8), allocatable :: latitude_one_tile(:,:)
349  real(esmf_kind_r8), pointer :: seaice_fract_target_ptr(:,:)
350  real(esmf_kind_r8), pointer :: srflag_target_ptr(:,:)
351  real(esmf_kind_r8), pointer :: terrain_from_input_ptr(:,:)
352  real(esmf_kind_r8), pointer :: veg_type_target_ptr(:,:)
353  real(esmf_kind_r8), pointer :: soil_type_target_ptr(:,:)
354  real(esmf_kind_r8), pointer :: landmask_input_ptr(:,:)
355  real(esmf_kind_r8), pointer :: veg_type_input_ptr(:,:)
356  real(esmf_kind_r8), allocatable :: veg_type_target_one_tile(:,:)
357 
358  type(esmf_regridmethod_flag) :: method
359  type(esmf_routehandle) :: regrid_bl_no_mask
360  type(esmf_routehandle) :: regrid_all_land
361  type(esmf_routehandle) :: regrid_land
362  type(esmf_routehandle) :: regrid_landice
363  type(esmf_routehandle) :: regrid_nonland
364  type(esmf_routehandle) :: regrid_seaice
365  type(esmf_routehandle) :: regrid_water
366 
367  type(esmf_fieldbundle) :: bundle_all_target, bundle_all_input
368  type(esmf_fieldbundle) :: bundle_seaice_target, bundle_seaice_input
369  type(esmf_fieldbundle) :: bundle_water_target, bundle_water_input
370  type(esmf_fieldbundle) :: bundle_allland_target, bundle_allland_input
371  type(esmf_fieldbundle) :: bundle_landice_target, bundle_landice_input
372  type(esmf_fieldbundle) :: bundle_nolandice_target, bundle_nolandice_input
373 
374  logical, allocatable :: dozero(:)
375 
376 !-----------------------------------------------------------------------
377 ! Interpolate fieids that do not require 'masked' interpolation.
378 !-----------------------------------------------------------------------
379 
380  method=esmf_regridmethod_bilinear
381 
382  isrctermprocessing = 1
383 
384  print*,"- CALL FieldRegridStore FOR NON-MASKED BILINEAR INTERPOLATION."
385  call esmf_fieldregridstore(t2m_input_grid, &
386  t2m_target_grid, &
387  polemethod=esmf_polemethod_allavg, &
388  srctermprocessing=isrctermprocessing, &
389  routehandle=regrid_bl_no_mask, &
390  regridmethod=method, rc=rc)
391  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
392  call error_handler("IN FieldRegridStore", rc)
393 
394  bundle_all_target = esmf_fieldbundlecreate(name="all points target", rc=rc)
395  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
396  call error_handler("IN FieldBundleCreate", rc)
397  bundle_all_input = esmf_fieldbundlecreate(name="all points input", rc=rc)
398  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
399  call error_handler("IN FieldBundleCreate", rc)
400 
401  call esmf_fieldbundleadd(bundle_all_target, (/t2m_target_grid,q2m_target_grid,tprcp_target_grid, &
403  rc=rc)
404  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
405  call error_handler("IN FieldBundleAdd", rc)
406  call esmf_fieldbundleadd(bundle_all_input, (/t2m_input_grid,q2m_input_grid,tprcp_input_grid, &
407  f10m_input_grid,ffmm_input_grid,ustar_input_grid,srflag_input_grid/), &
408  rc=rc)
409  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
410  call error_handler("IN FieldBundleAdd", rc)
411 
412  call esmf_fieldbundleget(bundle_all_target,fieldcount=num_fields,rc=rc)
413  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
414  call error_handler("IN FieldBundleGet", rc)
415 
416  allocate(dozero(num_fields))
417  dozero(:) = .true.
418 
419  call regrid_many(bundle_all_input,bundle_all_target,num_fields,regrid_bl_no_mask,dozero)
420  deallocate(dozero)
421 
422  call esmf_fieldbundledestroy(bundle_all_target,rc=rc)
423  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
424  call error_handler("IN FieldBundleDestroy", rc)
425  call esmf_fieldbundledestroy(bundle_all_input,rc=rc)
426  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
427  call error_handler("IN FieldBundleDestroy", rc)
428 
429  print*,"- CALL FieldGet FOR SRFLAG."
430  call esmf_fieldget(srflag_target_grid, &
431  farrayptr=srflag_target_ptr, rc=rc)
432  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
433  call error_handler("IN FieldGet", rc)
434 
435 !-----------------------------------------------------------------------
436 ! This is a flag field. Using neighbor was expensive. So use
437 ! bilinear and 'nint'.
438 !-----------------------------------------------------------------------
439 
440  srflag_target_ptr = nint(srflag_target_ptr)
441 
442  print*,"- CALL FieldRegridRelease."
443  call esmf_fieldregridrelease(routehandle=regrid_bl_no_mask, rc=rc)
444  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
445  call error_handler("IN FieldRegridRelease", rc)
446 
447 !-----------------------------------------------------------------------
448 ! First, set the mask on the target and input grids.
449 !-----------------------------------------------------------------------
450 
451  print*,"- CALL GridAddItem FOR TARGET GRID."
452  call esmf_gridadditem(target_grid, &
453  itemflag=esmf_griditem_mask, &
454  staggerloc=esmf_staggerloc_center, rc=rc)
455  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
456  call error_handler("IN GridAddItem", rc)
457 
458  print*,"- CALL GridGetItem FOR TARGET GRID."
459  call esmf_gridgetitem(target_grid, &
460  itemflag=esmf_griditem_mask, &
461  farrayptr=mask_target_ptr, rc=rc)
462  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
463  call error_handler("IN GridGetItem", rc)
464 
465  print*,"- CALL FieldGet FOR TARGET GRID SEAMASK."
466  call esmf_fieldget(seamask_target_grid, &
467  computationallbound=clb_target, &
468  computationalubound=cub_target, &
469  farrayptr=seamask_target_ptr, rc=rc)
470  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
471  call error_handler("IN FieldGet", rc)
472 
473  print*,"- CALL FieldGet FOR TARGET GRID LANDMASK."
474  call esmf_fieldget(landmask_target_grid, &
475  farrayptr=landmask_target_ptr, rc=rc)
476  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
477  call error_handler("IN FieldGet", rc)
478 
479  print*,"- CALL GridAddItem FOR INPUT GRID SEAMASK."
480  call esmf_gridadditem(input_grid, &
481  itemflag=esmf_griditem_mask, &
482  staggerloc=esmf_staggerloc_center, rc=rc)
483  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
484  call error_handler("IN GridAddItem", rc)
485 
486  print*,"- CALL FieldGet FOR INPUT GRID LANDMASK."
487  call esmf_fieldget(landsea_mask_input_grid, &
488  farrayptr=landmask_input_ptr, rc=rc)
489  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
490  call error_handler("IN FieldGet", rc)
491 
492  print*,"- CALL GridGetItem FOR INPUT GRID LANDMASK."
493  call esmf_gridgetitem(input_grid, &
494  itemflag=esmf_griditem_mask, &
495  farrayptr=mask_input_ptr, rc=rc)
496  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
497  call error_handler("IN GridGetItem", rc)
498 
499  if (localpet == 0) then
500  allocate(data_one_tile(i_target,j_target))
501  allocate(data_one_tile_3d(i_target,j_target,lsoil_target))
502  allocate(mask_target_one_tile(i_target,j_target))
503  else
504  allocate(data_one_tile(0,0))
505  allocate(data_one_tile_3d(0,0,0))
506  allocate(mask_target_one_tile(0,0))
507  endif
508 
509  !-----------------------------------------------------------------------
510  ! Interpolate vegetation type to target grid if chosen in namelist and terrain
511  ! for use in replacing isolated bad terrain values
512  !-----------------------------------------------------------------------
513 
514  method=esmf_regridmethod_nearest_stod
515 
516  isrctermprocessing = 1
517 
518  mask_input_ptr = 0
519  where (nint(landmask_input_ptr) == 1) mask_input_ptr = 1
520 
521  mask_target_ptr = 0
522  where (landmask_target_ptr == 1) mask_target_ptr = 1
523 
524  print*,"- CALL FieldCreate FOR TERRAIN FROM INPUT GRID LAND."
525  terrain_from_input_grid_land = esmf_fieldcreate(target_grid, &
526  typekind=esmf_typekind_r8, &
527  staggerloc=esmf_staggerloc_center, rc=rc)
528  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
529  call error_handler("IN FieldCreate", rc)
530 
531  print*,"- CALL FieldRegridStore for land fields."
532  call esmf_fieldregridstore(terrain_input_grid, &
534  srcmaskvalues=(/0/), &
535  dstmaskvalues=(/0/), &
536  polemethod=esmf_polemethod_none, &
537  srctermprocessing=isrctermprocessing, &
538  unmappedaction=esmf_unmappedaction_ignore, &
539  normtype=esmf_normtype_fracarea, &
540  routehandle=regrid_all_land, &
541  regridmethod=method, &
542  unmappeddstlist=unmapped_ptr, rc=rc)
543  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
544  call error_handler("IN FieldRegridStore", rc)
545 
546  print*,"- CALL Field_Regrid TERRAIN."
547  call esmf_fieldregrid(terrain_input_grid, &
549  routehandle=regrid_all_land, &
550  termorderflag=esmf_termorder_srcseq, rc=rc)
551  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
552  call error_handler("IN FieldRegrid", rc)
553 
554  print*,"- CALL FieldGet FOR terrain from input grid at land."
555  call esmf_fieldget(terrain_from_input_grid_land, &
556  farrayptr=terrain_from_input_ptr, rc=rc)
557  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
558  call error_handler("IN FieldGet", rc)
559 
560  l = lbound(unmapped_ptr)
561  u = ubound(unmapped_ptr)
562 
563  do ij = l(1), u(1)
564  call ij_to_i_j(unmapped_ptr(ij), i_target, j_target, i, j)
565  terrain_from_input_ptr(i,j) = -9999.9
566  enddo
567  nullify(terrain_from_input_ptr)
568 
569  do tile = 1, num_tiles_target_grid
570 
571  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
572  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
573  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
574  call error_handler("IN FieldGather", rc)
575 
576  print*,"- CALL FieldGather FOR TERRAIN FROM INPUT GRID: ", tile
577  call esmf_fieldgather(terrain_from_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
578  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
579  call error_handler("IN FieldGather", rc)
580 
581  if (localpet == 0) then
582  allocate(land_target_one_tile(i_target,j_target))
583  land_target_one_tile = 0
584  where(mask_target_one_tile == 1) land_target_one_tile = 1
585  call search(data_one_tile, land_target_one_tile, i_target, j_target, tile, 7)
586  deallocate(land_target_one_tile)
587  endif
588 
589  print*,"- CALL FieldScatter FOR TERRAIN FROM INPUT GRID: ", tile
590  call esmf_fieldscatter(terrain_from_input_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
591  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
592  call error_handler("IN FieldScatter", rc)
593  enddo
594 
595  if(.not. vgtyp_from_climo) then
596 
597  print*,"- CALL FieldRegrid VEG TYPE."
598  call esmf_fieldregrid(veg_type_input_grid, &
600  routehandle=regrid_all_land, &
601  termorderflag=esmf_termorder_srcseq, rc=rc)
602  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
603  call error_handler("IN FieldRegrid", rc)
604 
605  print*,"- CALL FieldGet FOR TARGET grid veg type."
606  call esmf_fieldget(veg_type_target_grid, &
607  farrayptr=veg_type_target_ptr, rc=rc)
608  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
609  call error_handler("IN FieldGet", rc)
610 
611  l = lbound(unmapped_ptr)
612  u = ubound(unmapped_ptr)
613 
614  do ij = l(1), u(1)
615  call ij_to_i_j(unmapped_ptr(ij), i_target, j_target, i, j)
616  veg_type_target_ptr(i,j) = -9999.9
617  enddo
618 
619  do tile = 1, num_tiles_target_grid
620  print*,"- CALL FieldGather FOR TARGET GRID VEG TYPE TILE: ", tile
621  call esmf_fieldgather(veg_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
622  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
623  call error_handler("IN FieldGather", rc)
624 
625  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
626  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
627  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
628  call error_handler("IN FieldGather", rc)
629 
630  if (localpet == 0) then
631  allocate(land_target_one_tile(i_target,j_target))
632  land_target_one_tile = 0
633  where(mask_target_one_tile == 1) land_target_one_tile = 1
634  call search(data_one_tile, land_target_one_tile, i_target, j_target, tile, 225)
635  deallocate(land_target_one_tile)
636  endif
637 
638  print*,"- CALL FieldScatter FOR TARGET GRID VEG TYPE: ", tile
639  call esmf_fieldscatter(veg_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
640  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
641  call error_handler("IN FieldScatter", rc)
642  enddo
643  nullify(veg_type_target_ptr)
644  endif
645  print*,"- CALL FieldRegridRelease."
646  call esmf_fieldregridrelease(routehandle=regrid_all_land, rc=rc)
647  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
648  call error_handler("IN FieldRegridRelease", rc)
649 
650 !-----------------------------------------------------------------------
651 ! Next, determine the sea ice fraction on target grid.
652 ! Interpolate.
653 !-----------------------------------------------------------------------
654 
655  mask_input_ptr = 1
656  where (nint(landmask_input_ptr) == 1) mask_input_ptr = 0
657 
658  mask_target_ptr = int(seamask_target_ptr,kind=esmf_kind_i4)
659 
660  method=esmf_regridmethod_conserve
661 
662  isrctermprocessing = 1
663 
664  print*,"- CALL FieldRegridStore for sea ice fraction."
665  call esmf_fieldregridstore(seaice_fract_input_grid, &
667  srcmaskvalues=(/0/), &
668  dstmaskvalues=(/0/), &
669  polemethod=esmf_polemethod_none, &
670  srctermprocessing=isrctermprocessing, &
671  unmappedaction=esmf_unmappedaction_ignore, &
672  normtype=esmf_normtype_fracarea, &
673  routehandle=regrid_nonland, &
674  regridmethod=method, &
675  unmappeddstlist=unmapped_ptr, rc=rc)
676  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
677  call error_handler("IN FieldRegridStore", rc)
678 
679  print*,"- CALL Field_Regrid for sea ice fraction."
680  call esmf_fieldregrid(seaice_fract_input_grid, &
682  routehandle=regrid_nonland, &
683  termorderflag=esmf_termorder_srcseq, rc=rc)
684  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
685  call error_handler("IN FieldRegrid", rc)
686 
687  print*,"- CALL FieldGet FOR TARGET grid sea ice fraction."
688  call esmf_fieldget(seaice_fract_target_grid, &
689  farrayptr=seaice_fract_target_ptr, rc=rc)
690  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
691  call error_handler("IN FieldGet", rc)
692 
693  l = lbound(unmapped_ptr)
694  u = ubound(unmapped_ptr)
695 
696  do ij = l(1), u(1)
697  call ij_to_i_j(unmapped_ptr(ij), i_target, j_target, i, j)
698  seaice_fract_target_ptr(i,j) = -9999.9 ! flag value for missing point
699  ! which will be replaced in routine
700  ! "search".
701  enddo
702 
703  if (localpet == 0) then
704  allocate(latitude_one_tile(i_target,j_target))
705  else
706  allocate(latitude_one_tile(0,0))
707  endif
708 
709  do tile = 1, num_tiles_target_grid
710 
711  print*,"- CALL FieldGather FOR TARGET GRID SEAICE FRACTION TILE: ", tile
712  call esmf_fieldgather(seaice_fract_target_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
713  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
714  call error_handler("IN FieldGather", rc)
715 
716  print*,"- CALL FieldGather FOR TARGET GRID MASK TILE: ", tile
717  call esmf_fieldgather(seamask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
718  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
719  call error_handler("IN FieldGather", rc)
720 
721  print*,"- CALL FieldGather FOR TARGET LATITUDE TILE: ", tile
722  call esmf_fieldgather(latitude_target_grid, latitude_one_tile, rootpet=0, tile=tile, rc=rc)
723  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
724  call error_handler("IN FieldGather", rc)
725 
726  if (localpet == 0) then
727  call search(data_one_tile, mask_target_one_tile, i_target, j_target, tile, 91, &
728  latitude=latitude_one_tile)
729  endif
730 
731  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
732  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
733  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
734  call error_handler("IN FieldGather", rc)
735 
736 
737  if (localpet == 0) then
738  do j = 1, j_target
739  do i = 1, i_target
740  if (data_one_tile(i,j) > 1.0_esmf_kind_r8) then
741  data_one_tile(i,j) = 1.0_esmf_kind_r8
742  endif
743  if (data_one_tile(i,j) < 0.15_esmf_kind_r8) data_one_tile(i,j) = 0.0_esmf_kind_r8
744  if (data_one_tile(i,j) >= 0.15_esmf_kind_r8) mask_target_one_tile(i,j) = 2
745  enddo
746  enddo
747  endif
748 
749  print*,"- CALL FieldScatter FOR TARGET GRID SEAICE FRACTION TILE: ", tile
750  call esmf_fieldscatter(seaice_fract_target_grid, data_one_tile, rootpet=0, tile=tile, rc=rc)
751  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
752  call error_handler("IN FieldScatter", rc)
753 
754  print*,"- CALL FieldScatter FOR TARGET LANDMASK TILE: ", tile
755  call esmf_fieldscatter(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
756  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
757  call error_handler("IN FieldScatter", rc)
758 
759  enddo
760 
761  deallocate(latitude_one_tile)
762 
763  print*,"- CALL FieldRegridRelease."
764  call esmf_fieldregridrelease(routehandle=regrid_nonland, rc=rc)
765  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
766  call error_handler("IN FieldRegridRelease", rc)
767 
768 !---------------------------------------------------------------------------------------------
769 ! Now interpolate other sea ice related fields. Since we know what points are ice on
770 ! the target grid, reset the target grid mask.
771 !---------------------------------------------------------------------------------------------
772 
773  mask_input_ptr = 0
774  where (nint(landmask_input_ptr) == 2) mask_input_ptr = 1
775 
776  print*,"- CALL FieldGet FOR TARGET land sea mask."
777  call esmf_fieldget(landmask_target_grid, &
778  farrayptr=landmask_target_ptr, rc=rc)
779  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
780  call error_handler("IN FieldGet", rc)
781 
782  mask_target_ptr = 0
783  do j = clb_target(2), cub_target(2)
784  do i = clb_target(1), cub_target(1)
785  if (landmask_target_ptr(i,j) == 2) mask_target_ptr(i,j) = 1
786  enddo
787  enddo
788 
789  method=esmf_regridmethod_nearest_stod
790  isrctermprocessing = 1
791 
792  print*,"- CALL FieldRegridStore for 3d seaice fields."
793  call esmf_fieldregridstore(soil_temp_input_grid, &
795  srcmaskvalues=(/0/), &
796  dstmaskvalues=(/0/), &
797  polemethod=esmf_polemethod_none, &
798  srctermprocessing=isrctermprocessing, &
799  unmappedaction=esmf_unmappedaction_ignore, &
800  normtype=esmf_normtype_fracarea, &
801  routehandle=regrid_seaice, &
802  regridmethod=method, &
803  unmappeddstlist=unmapped_ptr, rc=rc)
804  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
805  call error_handler("IN FieldRegridStore", rc)
806 
807  bundle_seaice_target = esmf_fieldbundlecreate(name="sea ice target", rc=rc)
808  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
809  call error_handler("IN FieldBundleCreate", rc)
810  bundle_seaice_input = esmf_fieldbundlecreate(name="sea ice input", rc=rc)
811  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
812  call error_handler("IN FieldBundleCreate", rc)
813  call esmf_fieldbundleadd(bundle_seaice_target, (/seaice_depth_target_grid, snow_depth_target_grid, &
815  soil_temp_target_grid/), rc=rc)
816  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
817  call error_handler("IN FieldBundleAdd", rc)
818  call esmf_fieldbundleadd(bundle_seaice_input, (/seaice_depth_input_grid, snow_depth_input_grid, &
819  snow_liq_equiv_input_grid, seaice_skin_temp_input_grid, &
820  soil_temp_input_grid/), rc=rc)
821  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
822  call error_handler("IN FieldBundleAdd", rc)
823  call esmf_fieldbundleget(bundle_seaice_target,fieldcount=num_fields,rc=rc)
824  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
825  call error_handler("IN FieldBundleGet", rc)
826 
827 
828  allocate(search_nums(num_fields))
829  allocate(dozero(num_fields))
830 
831  search_nums = (/92,66,65,21,21/)
832  dozero(:) = .true.
833 
834  l = lbound(unmapped_ptr)
835  u = ubound(unmapped_ptr)
836 
837  call regrid_many(bundle_seaice_input,bundle_seaice_target,num_fields,regrid_seaice,dozero, &
838  unmapped_ptr=unmapped_ptr )
839  deallocate(dozero)
840  call esmf_fieldbundledestroy(bundle_seaice_input,rc=rc)
841  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
842  call error_handler("IN FieldBundleDestroy", rc)
843 
844  do tile = 1, num_tiles_target_grid
845 
846  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
847  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
848  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
849  call error_handler("IN FieldGather", rc)
850 
851  if (localpet == 0) then
852  where(mask_target_one_tile == 1) mask_target_one_tile = 0
853  where(mask_target_one_tile == 2) mask_target_one_tile = 1
854  call search_many(num_fields,bundle_seaice_target,tile, search_nums,localpet, &
855  mask=mask_target_one_tile)
856  else
857  call search_many(num_fields,bundle_seaice_target, tile,search_nums,localpet)
858  endif
859 
860  enddo
861 
862  deallocate(search_nums)
863  call esmf_fieldbundledestroy(bundle_seaice_target,rc=rc)
864  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
865  call error_handler("IN FieldBundleDestroy", rc)
866 
867  print*,"- CALL FieldRegridRelease."
868  call esmf_fieldregridrelease(routehandle=regrid_seaice, rc=rc)
869  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
870  call error_handler("IN FieldRegridRelease", rc)
871 
872 !---------------------------------------------------------------------------------------------
873 ! Now interpolate water fields.
874 !---------------------------------------------------------------------------------------------
875 
876  mask_input_ptr = 0
877  where (nint(landmask_input_ptr) == 0) mask_input_ptr = 1
878 
879  mask_target_ptr = 0
880  where (landmask_target_ptr == 0) mask_target_ptr = 1
881 
882  method=esmf_regridmethod_conserve
883  isrctermprocessing = 1
884 
885  print*,"- CALL FieldRegridStore for water fields."
886  call esmf_fieldregridstore(skin_temp_input_grid, &
888  srcmaskvalues=(/0/), &
889  dstmaskvalues=(/0/), &
890  polemethod=esmf_polemethod_none, &
891  srctermprocessing=isrctermprocessing, &
892  unmappedaction=esmf_unmappedaction_ignore, &
893  normtype=esmf_normtype_fracarea, &
894  routehandle=regrid_water, &
895  regridmethod=method, &
896  unmappeddstlist=unmapped_ptr, rc=rc)
897  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
898  call error_handler("IN FieldRegridStore", rc)
899 
900  bundle_water_target = esmf_fieldbundlecreate(name="water target", rc=rc)
901  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
902  call error_handler("IN FieldBundleCreate", rc)
903  bundle_water_input = esmf_fieldbundlecreate(name="water input", rc=rc)
904  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
905  call error_handler("IN FieldBundleCreate", rc)
906  call esmf_fieldbundleadd(bundle_water_target, (/skin_temp_target_grid, z0_target_grid/), rc=rc)
907  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
908  call error_handler("IN FieldBundleAdd", rc)
909  call esmf_fieldbundleadd(bundle_water_input, (/skin_temp_input_grid, z0_input_grid/), rc=rc)
910  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
911  call error_handler("IN FieldBundleAdd", rc)
912 
913  if (convert_nst) then
914 
915  call esmf_fieldbundleadd(bundle_water_target, (/c_d_target_grid,c_0_target_grid,d_conv_target_grid, &
920  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
921  call error_handler("IN FieldBundleAdd", rc)
922 
923  call esmf_fieldbundleadd(bundle_water_input, (/c_d_input_grid,c_0_input_grid,d_conv_input_grid, &
924  dt_cool_input_grid,ifd_input_grid,qrain_input_grid,tref_input_grid, &
925  w_d_input_grid,w_0_input_grid,xs_input_grid,xt_input_grid,xu_input_grid, &
926  xv_input_grid,xz_input_grid,xtts_input_grid,xzts_input_grid, &
927  z_c_input_grid,zm_input_grid/), rc=rc)
928  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
929  call error_handler("IN FieldBundleAdd", rc)
930  call esmf_fieldbundleget(bundle_water_target,fieldcount=num_fields,rc=rc)
931  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
932  call error_handler("IN FieldBundleGet", rc)
933 
934  allocate(search_nums(num_fields))
935  allocate(dozero(num_fields))
936 
937  search_nums(:)=(/11,83,0,0,0,0,1,0,11,0,0,0,0,0,0,30,0,0,0,0/)
938  dozero(:) = .true.
939 
940  else
941  call esmf_fieldbundleget(bundle_water_target,fieldcount=num_fields,rc=rc)
942  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
943  call error_handler("IN FieldBundleGet", rc)
944 
945  allocate(search_nums(num_fields))
946  allocate(dozero(num_fields))
947  search_nums(:)=(/11,83/)
948  dozero(:) = .true.
949  endif
950 
951  call regrid_many(bundle_water_input,bundle_water_target,num_fields,regrid_water,dozero, &
952  unmapped_ptr=unmapped_ptr, resetifd=.true.)
953  deallocate(dozero)
954  call esmf_fieldbundledestroy(bundle_water_input,rc=rc)
955  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
956  call error_handler("IN FieldBundleDestroy", rc)
957 
958 
959  if (localpet == 0) then
960  allocate(latitude_one_tile(i_target,j_target))
961  else
962  allocate(latitude_one_tile(0,0))
963  endif
964 
965  do tile = 1, num_tiles_target_grid
966 
967  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
968  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
969  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
970  call error_handler("IN FieldGather", rc)
971 
972  print*,"- CALL FieldGather FOR TARGET LATITUDE TILE: ", tile
973  call esmf_fieldgather(latitude_target_grid, latitude_one_tile, rootpet=0, tile=tile, rc=rc)
974  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
975  call error_handler("IN FieldGather", rc)
976 
977  if (localpet == 0) then
978  allocate(water_target_one_tile(i_target,j_target))
979  water_target_one_tile = 0
980  where(mask_target_one_tile == 0) water_target_one_tile = 1
981 
982  call search_many(num_fields,bundle_water_target, tile,search_nums,localpet, &
983  latitude=latitude_one_tile,mask=water_target_one_tile)
984  else
985  call search_many(num_fields,bundle_water_target, tile,search_nums,localpet)
986  endif
987 
988  if (localpet == 0) deallocate(water_target_one_tile)
989 
990  enddo
991 
992  deallocate(latitude_one_tile,search_nums)
993 
994  call esmf_fieldbundledestroy(bundle_water_target,rc=rc)
995  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
996  call error_handler("IN FieldBundleDestroy", rc)
997 
998  print*,"- CALL FieldRegridRelease."
999  call esmf_fieldregridrelease(routehandle=regrid_water, rc=rc)
1000  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1001  call error_handler("IN FieldRegridRelease", rc)
1002 
1003 !---------------------------------------------------------------------------------------------
1004 ! Now interpolate "all land" to "all land". Here, "all land" means landice and non-land ice.
1005 !---------------------------------------------------------------------------------------------
1006 
1007  mask_input_ptr = 0
1008  where (nint(landmask_input_ptr) == 1) mask_input_ptr = 1
1009 
1010  mask_target_ptr = 0
1011  where (landmask_target_ptr == 1) mask_target_ptr = 1
1012 
1013  method=esmf_regridmethod_conserve
1014  isrctermprocessing = 1
1015 
1016  print*,"- CALL FieldRegridStore for land fields."
1017  call esmf_fieldregridstore(snow_depth_input_grid, &
1019  srcmaskvalues=(/0/), &
1020  dstmaskvalues=(/0/), &
1021  polemethod=esmf_polemethod_none, &
1022  srctermprocessing=isrctermprocessing, &
1023  unmappedaction=esmf_unmappedaction_ignore, &
1024  normtype=esmf_normtype_fracarea, &
1025  routehandle=regrid_all_land, &
1026  regridmethod=method, &
1027  unmappeddstlist=unmapped_ptr, rc=rc)
1028  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1029  call error_handler("IN FieldRegridStore", rc)
1030 
1031  bundle_allland_target = esmf_fieldbundlecreate(name="all land target", rc=rc)
1032  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1033  call error_handler("IN FieldBundleCreate", rc)
1034  bundle_allland_input = esmf_fieldbundlecreate(name="all land input", rc=rc)
1035  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1036  call error_handler("IN FieldBundleCreate", rc)
1037  call esmf_fieldbundleadd(bundle_allland_target, (/canopy_mc_target_grid, snow_depth_target_grid, &
1038  snow_liq_equiv_target_grid/), rc=rc)
1039  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1040  call error_handler("IN FieldBundleAdd", rc)
1041  call esmf_fieldbundleadd(bundle_allland_input, (/canopy_mc_input_grid, snow_depth_input_grid, &
1042  snow_liq_equiv_input_grid/), rc=rc)
1043  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1044  call error_handler("IN FieldBundleAdd", rc)
1045  call esmf_fieldbundleget(bundle_allland_target,fieldcount=num_fields,rc=rc)
1046  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1047  call error_handler("IN FieldBundleGet", rc)
1048 
1049  allocate(search_nums(num_fields))
1050  allocate(dozero(num_fields))
1051 
1052  search_nums = (/223,66,65/)
1053  dozero=(/.true.,.false.,.false./)
1054 
1055  call regrid_many(bundle_allland_input,bundle_allland_target,num_fields,regrid_all_land,dozero, &
1056  unmapped_ptr=unmapped_ptr)
1057  deallocate(dozero)
1058  call esmf_fieldbundledestroy(bundle_allland_input,rc=rc)
1059  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1060  call error_handler("IN FieldBundleDestroy", rc)
1061 
1062 
1063  do tile = 1, num_tiles_target_grid
1064 
1065  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
1066  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
1067  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1068  call error_handler("IN FieldGather", rc)
1069 
1070  if (localpet == 0) then
1071  allocate(land_target_one_tile(i_target,j_target))
1072  land_target_one_tile = 0
1073  where(mask_target_one_tile == 1) land_target_one_tile = 1
1074 
1075  call search_many(num_fields,bundle_allland_target, &
1076  tile,search_nums,localpet, mask=land_target_one_tile)
1077  else
1078  call search_many(num_fields,bundle_allland_target, tile,search_nums,localpet)
1079  endif
1080 
1081  if (localpet == 0) deallocate(land_target_one_tile)
1082  enddo
1083 
1084  deallocate(search_nums)
1085  call esmf_fieldbundledestroy(bundle_allland_target,rc=rc)
1086  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1087  call error_handler("IN FieldBundleDestroy", rc)
1088 
1089  print*,"- CALL FieldRegridRelease."
1090  call esmf_fieldregridrelease(routehandle=regrid_all_land, rc=rc)
1091  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1092  call error_handler("IN FieldRegridRelease", rc)
1093 
1094 !---------------------------------------------------------------------------------------------
1095 ! Now interpolate landice points to landice points.
1096 !---------------------------------------------------------------------------------------------
1097 
1098  print*,"- CALL FieldGet FOR INPUT GRID VEG TYPE."
1099  call esmf_fieldget(veg_type_input_grid, &
1100  farrayptr=veg_type_input_ptr, rc=rc)
1101  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1102  call error_handler("IN FieldGet", rc)
1103 
1104  print*,'land ice check ',veg_type_landice_input
1105 
1106  mask_input_ptr = 0
1107  where (nint(veg_type_input_ptr) == veg_type_landice_input) mask_input_ptr = 1
1108 
1109  print*,"- CALL FieldGet FOR TARGET GRID VEG TYPE."
1110  call esmf_fieldget(veg_type_target_grid, &
1111  farrayptr=veg_type_target_ptr, rc=rc)
1112  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1113  call error_handler("IN FieldGet", rc)
1114 
1115  mask_target_ptr = 0
1116  where (nint(veg_type_target_ptr) == veg_type_landice_target) mask_target_ptr = 1
1117 
1118  method=esmf_regridmethod_nearest_stod
1119  isrctermprocessing = 1
1120 
1121  print*,"- CALL FieldRegridStore for landice fields."
1122  call esmf_fieldregridstore(soil_temp_input_grid, &
1124  srcmaskvalues=(/0/), &
1125  dstmaskvalues=(/0/), &
1126  polemethod=esmf_polemethod_none, &
1127  srctermprocessing=isrctermprocessing, &
1128  unmappedaction=esmf_unmappedaction_ignore, &
1129  normtype=esmf_normtype_fracarea, &
1130  routehandle=regrid_landice, &
1131  regridmethod=method, &
1132  unmappeddstlist=unmapped_ptr, rc=rc)
1133  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1134  call error_handler("IN FieldRegridStore", rc)
1135 
1136  bundle_landice_target = esmf_fieldbundlecreate(name="landice target", rc=rc)
1137  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1138  call error_handler("IN FieldBundleCreate", rc)
1139  bundle_landice_input = esmf_fieldbundlecreate(name="landice input", rc=rc)
1140  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1141  call error_handler("IN FieldBundleCreate", rc)
1142  call esmf_fieldbundleadd(bundle_landice_target, (/skin_temp_target_grid, terrain_from_input_grid,&
1143  soil_temp_target_grid/), rc=rc)
1144  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1145  call error_handler("IN FieldBundleAdd", rc)
1146  call esmf_fieldbundleadd(bundle_landice_input, (/skin_temp_input_grid, terrain_input_grid,&
1147  soil_temp_input_grid/), rc=rc)
1148  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1149  call error_handler("IN FieldBundleAdd", rc)
1150 
1151  if (.not. sotyp_from_climo) then
1152  call esmf_fieldbundleadd(bundle_landice_input, (/soil_type_input_grid/),rc=rc)
1153  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1154  call error_handler("IN FieldBundleAdd", rc)
1155  call esmf_fieldbundleadd(bundle_landice_target,(/soil_type_target_grid/),rc=rc)
1156  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1157  call error_handler("IN FieldBundleAdd", rc)
1158  endif
1159 
1160  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1161  call error_handler("IN FieldBundleAdd", rc)
1162  call esmf_fieldbundleget(bundle_landice_target,fieldcount=num_fields,rc=rc)
1163  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1164  call error_handler("IN FieldBundleGet", rc)
1165 
1166  allocate(search_nums(num_fields))
1167  allocate(dozero(num_fields))
1168 
1169  if (sotyp_from_climo) then
1170  search_nums = (/21,7,21/)
1171  dozero(:)=.false.
1172  else
1173  search_nums = (/21,7,21,231/)
1174  dozero(:)=(/.false.,.false.,.false.,.true./)
1175  endif
1176 
1177  call regrid_many(bundle_landice_input,bundle_landice_target,num_fields,regrid_landice,dozero, &
1178  unmapped_ptr=unmapped_ptr )
1179  deallocate(dozero)
1180  call esmf_fieldbundledestroy(bundle_landice_input,rc=rc)
1181  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1182  call error_handler("IN FieldBundleDestroy", rc)
1183 
1184  if (localpet == 0) then
1185  allocate (veg_type_target_one_tile(i_target,j_target))
1186  allocate (land_target_one_tile(i_target,j_target))
1187  allocate (data_one_tile2(i_target,j_target))
1188  else
1189  allocate (veg_type_target_one_tile(0,0))
1190  allocate (land_target_one_tile(0,0))
1191  allocate (data_one_tile2(0,0))
1192  endif
1193 
1194  do tile = 1, num_tiles_target_grid
1195  print*,"- CALL FieldGather FOR TARGET VEG TYPE TILE: ", tile
1196  call esmf_fieldgather(veg_type_target_grid, veg_type_target_one_tile, rootpet=0, tile=tile, rc=rc)
1197  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1198  call error_handler("IN FieldGather", rc)
1199 
1200  if (localpet == 0) then
1201  land_target_one_tile = 0
1202  where(nint(veg_type_target_one_tile) == veg_type_landice_target) land_target_one_tile = 1
1203  endif
1204 
1205  print*,"- CALL FieldGather FOR TERRAIN FROM INPUT GRID LAND, TILE: ", tile
1206  call esmf_fieldgather(terrain_from_input_grid_land, data_one_tile2, rootpet=0, tile=tile, rc=rc)
1207  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1208  call error_handler("IN FieldGather", rc)
1209 
1210  if (localpet==0) then
1211  call search_many(num_fields,bundle_landice_target,tile,search_nums,localpet,&
1212  terrain_land=data_one_tile2,mask=land_target_one_tile)
1213  else
1214  call search_many(num_fields,bundle_landice_target,tile,search_nums,localpet)
1215  endif
1216  enddo
1217 
1218  deallocate (veg_type_target_one_tile)
1219  deallocate (land_target_one_tile)
1220  deallocate(search_nums)
1221 
1222  call esmf_fieldbundledestroy(bundle_landice_target,rc=rc)
1223  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1224  call error_handler("IN FieldBundleDestroy", rc)
1225 
1226  print*,"- CALL FieldRegridRelease."
1227  call esmf_fieldregridrelease(routehandle=regrid_landice, rc=rc)
1228  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1229  call error_handler("IN FieldRegridRelease", rc)
1230 
1231 !---------------------------------------------------------------------------------------------
1232 ! Now interpolate land (not including landice pts) to land (not including landice).
1233 !---------------------------------------------------------------------------------------------
1234 
1235  mask_input_ptr = 0
1236  where (nint(landmask_input_ptr) == 1) mask_input_ptr = 1
1237  where (nint(veg_type_input_ptr) == veg_type_landice_input) mask_input_ptr = 0
1238 
1239  mask_target_ptr = 0
1240  where (landmask_target_ptr == 1) mask_target_ptr = 1
1241  where (nint(veg_type_target_ptr) == veg_type_landice_target) mask_target_ptr = 0
1242 
1243  method=esmf_regridmethod_nearest_stod
1244  isrctermprocessing = 1
1245 
1246  print*,"- CALL FieldRegridStore for 3d land (but no land ice) fields."
1247  call esmf_fieldregridstore(soilm_tot_input_grid, &
1249  srcmaskvalues=(/0/), &
1250  dstmaskvalues=(/0/), &
1251  polemethod=esmf_polemethod_none, &
1252  srctermprocessing=isrctermprocessing, &
1253  unmappedaction=esmf_unmappedaction_ignore, &
1254  normtype=esmf_normtype_fracarea, &
1255  routehandle=regrid_land, &
1256  regridmethod=method, &
1257  unmappeddstlist=unmapped_ptr, rc=rc)
1258  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1259  call error_handler("IN FieldRegridStore", rc)
1260 
1261  bundle_nolandice_target = esmf_fieldbundlecreate(name="land no landice target", rc=rc)
1262  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1263  call error_handler("IN FieldBundleCreate", rc)
1264 
1265  bundle_nolandice_input = esmf_fieldbundlecreate(name="land no landice input", rc=rc)
1266  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1267  call error_handler("IN FieldBundleCreate", rc)
1268 
1269  call esmf_fieldbundleadd(bundle_nolandice_target, (/skin_temp_target_grid, terrain_from_input_grid,&
1271  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1272  call error_handler("IN FieldBundleAdd", rc)
1273 
1274  call esmf_fieldbundleadd(bundle_nolandice_input, (/skin_temp_input_grid, terrain_input_grid,&
1275  soil_type_input_grid,soilm_tot_input_grid,soil_temp_input_grid/), rc=rc)
1276  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1277  call error_handler("IN FieldBundleAdd", rc)
1278 
1279 
1280  if (.not. sotyp_from_climo) then
1281 ! call ESMF_FieldBundleAdd(bundle_nolandice_target, (/soil_type_target_grid/), rc=rc)
1282 ! if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) &
1283 ! call error_handler("IN FieldBundleAdd", rc)
1284 ! call ESMF_FieldBundleAdd(bundle_nolandice_input, (/soil_type_input_grid/), rc=rc)
1285 ! if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) &
1286 ! call error_handler("IN FieldBundleAdd", rc)
1287  print*,"- CALL Field_Regrid ."
1288  call esmf_fieldregrid(soil_type_input_grid, &
1290  routehandle=regrid_land, &
1291  zeroregion=esmf_region_select, &
1292  termorderflag=esmf_termorder_srcseq, rc=rc)
1293  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1294  call error_handler("IN FieldRegrid", rc)
1295 
1296  call esmf_fieldget(soil_type_target_grid, &
1297  farrayptr=soil_type_target_ptr, rc=rc)
1298  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1299  call error_handler("IN FieldGet", rc)
1300 
1301  l = lbound(unmapped_ptr)
1302  u = ubound(unmapped_ptr)
1303 
1304  do ij = l(1), u(1)
1305  call ij_to_i_j(unmapped_ptr(ij), i_target, j_target, i, j)
1306  soil_type_target_ptr(i,j) = -9999.9
1307  enddo
1308  ! call ESMF_FieldBundleGet(bundle_nolandice_target,fieldCount=num_fields,rc=rc)
1309  ! if(ESMF_logFoundError(rcToCheck=rc,msg=ESMF_LOGERR_PASSTHRU,line=__LINE__,file=__FILE__)) &
1310  ! call error_handler("IN FieldBundleGet", rc)
1311  ! sotyp_ind = 3
1312  endif
1313 
1314  if (.not. vgfrc_from_climo) then
1315  call esmf_fieldbundleadd(bundle_nolandice_target, (/veg_greenness_target_grid/), rc=rc)
1316  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1317  call error_handler("IN FieldBundleAdd", rc)
1318  call esmf_fieldbundleadd(bundle_nolandice_input, (/veg_greenness_input_grid/), rc=rc)
1319  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1320  call error_handler("IN FieldBundleAdd", rc)
1321  call esmf_fieldbundleget(bundle_nolandice_target,fieldcount=num_fields,rc=rc)
1322  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1323  call error_handler("IN FieldBundleGet", rc)
1324  vgfrc_ind = num_fields
1325  endif
1326 
1327  if (.not. lai_from_climo) then
1328  call esmf_fieldbundleadd(bundle_nolandice_target, (/lai_target_grid/), rc=rc)
1329  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1330  call error_handler("IN FieldBundleAdd", rc)
1331  call esmf_fieldbundleadd(bundle_nolandice_input, (/lai_input_grid/), rc=rc)
1332  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1333  call error_handler("IN FieldBundleAdd", rc)
1334  call esmf_fieldbundleget(bundle_nolandice_target,fieldcount=num_fields,rc=rc)
1335  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1336  call error_handler("IN FieldBundleGet", rc)
1337  lai_ind = num_fields
1338  endif
1339 
1340  if (.not. minmax_vgfrc_from_climo) then
1341  call esmf_fieldbundleadd(bundle_nolandice_target, (/max_veg_greenness_target_grid/), rc=rc)
1342  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1343  call error_handler("IN FieldBundleAdd", rc)
1344  call esmf_fieldbundleadd(bundle_nolandice_input, (/max_veg_greenness_input_grid/), rc=rc)
1345  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1346  call error_handler("IN FieldBundleAdd", rc)
1347 
1348  call esmf_fieldbundleadd(bundle_nolandice_target, (/min_veg_greenness_target_grid/), rc=rc)
1349  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1350  call error_handler("IN FieldBundleAdd", rc)
1351  call esmf_fieldbundleadd(bundle_nolandice_input, (/min_veg_greenness_input_grid/), rc=rc)
1352  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1353  call error_handler("IN FieldBundleAdd", rc)
1354 
1355  call esmf_fieldbundleget(bundle_nolandice_target,fieldcount=num_fields,rc=rc)
1356  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1357  call error_handler("IN FieldBundleGet", rc)
1358 
1359  mmvg_ind = num_fields-1
1360  endif
1361 
1362  call esmf_fieldbundleget(bundle_nolandice_target,fieldcount=num_fields,rc=rc)
1363  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1364  call error_handler("IN FieldBundleGet", rc)
1365 
1366  allocate(search_nums(num_fields))
1367  allocate(dozero(num_fields))
1368 
1369  search_nums(1:5) = (/85,7,224,85,86/)
1370  dozero(1:5) = (/.false.,.false.,.true.,.true.,.false./)
1371 
1372  !if (.not.sotyp_from_climo) then
1373  ! search_nums(sotyp_ind) = 226
1374  ! dozero(sotyp_ind) = .False.
1375  !endif
1376 
1377  if (.not. vgfrc_from_climo) then
1378  search_nums(vgfrc_ind) = 224
1379  dozero(vgfrc_ind) = .true.
1380  endif
1381 
1382  if (.not. lai_from_climo) then
1383  search_nums(lai_ind) = 229
1384  dozero(lai_ind) = .true.
1385  endif
1386 
1387  if (.not. minmax_vgfrc_from_climo) then
1388  search_nums(mmvg_ind) = 227
1389  dozero(mmvg_ind) = .true.
1390 
1391  search_nums(mmvg_ind+1) = 228
1392  dozero(mmvg_ind+1) = .true.
1393  endif
1394 
1395  call regrid_many(bundle_nolandice_input,bundle_nolandice_target,num_fields,regrid_land,dozero, &
1396  unmapped_ptr=unmapped_ptr)
1397  deallocate(dozero)
1398  call esmf_fieldbundledestroy(bundle_nolandice_input,rc=rc)
1399  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1400  call error_handler("IN FieldBundleDestroy", rc)
1401 
1402  if (localpet == 0) then
1403  allocate (veg_type_target_one_tile(i_target,j_target))
1404  else
1405  allocate (veg_type_target_one_tile(0,0))
1406  endif
1407 
1408  do tile = 1, num_tiles_target_grid
1409 
1410  print*,"- CALL FieldGather FOR TARGET LANDMASK TILE: ", tile
1411  call esmf_fieldgather(landmask_target_grid, mask_target_one_tile, rootpet=0, tile=tile, rc=rc)
1412  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1413  call error_handler("IN FieldGather", rc)
1414 
1415  print*,"- CALL FieldGather FOR TARGET VEG TYPE TILE: ", tile
1416  call esmf_fieldgather(veg_type_target_grid, veg_type_target_one_tile, rootpet=0, tile=tile, rc=rc)
1417  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1418  call error_handler("IN FieldGather", rc)
1419 
1420  if (localpet == 0) then
1421  where(nint(veg_type_target_one_tile) == veg_type_landice_target) mask_target_one_tile = 0
1422  endif
1423 
1424  print*,"- CALL FieldGather FOR SOIL TYPE TARGET GRID, TILE: ", tile
1425  call esmf_fieldgather(soil_type_target_grid, data_one_tile2, rootpet=0,tile=tile, rc=rc)
1426  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1427  call error_handler("IN FieldGather", rc)
1428  if (localpet==0) then
1429  call search_many(num_fields,bundle_nolandice_target,tile,search_nums,localpet, &
1430  soilt_climo=data_one_tile2, mask=mask_target_one_tile)
1431  else
1432  call search_many(num_fields,bundle_nolandice_target, tile,search_nums,localpet)
1433  endif
1434 
1435  print*,"- CALL FieldGather FOR TARGET GRID TOTAL SOIL MOISTURE, TILE: ", tile
1436  call esmf_fieldgather(soilm_tot_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1437  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1438  call error_handler("IN FieldGather", rc)
1439 
1440  if (localpet == 0) then
1441  do j = 1, lsoil_target
1442  data_one_tile = data_one_tile_3d(:,:,j)
1443  call search(data_one_tile, mask_target_one_tile, i_target, j_target, tile, 86)
1444  data_one_tile_3d(:,:,j) = data_one_tile
1445  enddo
1446  endif
1447 
1448  print*,"- CALL FieldGather FOR TARGET GRID SOIL TEMPERATURE, TILE: ", tile
1449  call esmf_fieldgather(soil_temp_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=rc)
1450  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1451  call error_handler("IN FieldGather", rc)
1452 
1453  if (tg3_from_soil) then
1454  print*,"- CALL FieldScatter FOR TARGET GRID SUBSTRATE TEMPERATURE, TILE: ", tile
1455  call esmf_fieldscatter(substrate_temp_target_grid, data_one_tile_3d(:,:,lsoil_target), rootpet=0, tile=tile, rc=rc)
1456  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1457  call error_handler("IN FieldScatter", rc)
1458  endif
1459 
1460  if (.not. sotyp_from_climo) then
1461  print*,"- CALL FieldGather FOR SOIL TYPE TARGET GRID LAND, TILE: ",tile
1462  call esmf_fieldgather(soil_type_target_grid, data_one_tile,rootpet=0,tile=tile, rc=rc)
1463  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1464  call error_handler("IN FieldGather", rc)
1465 
1466  if (localpet == 0) then
1467  call search(data_one_tile, mask_target_one_tile, i_target, j_target,tile,226)
1468  endif
1469 
1470  print*,"- CALL FieldScatter FOR SOIL TYPE TARGET GRID, TILE: ", tile
1471  call esmf_fieldscatter(soil_type_target_grid,data_one_tile,rootpet=0,tile=tile,rc=rc)
1472  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
1473  call error_handler("IN FieldScatter", rc)
1474  endif
1475 
1476  enddo
1477 
1478  deallocate(search_nums)
1479  call esmf_fieldbundledestroy(bundle_nolandice_target,rc=rc)
1480  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1481  call error_handler("IN FieldBundleDestroy", rc)
1482 
1483  print*,"- CALL FieldRegridRelease."
1484  call esmf_fieldregridrelease(routehandle=regrid_land, rc=rc)
1485  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1486  call error_handler("IN FieldRegridRelease", rc)
1487 
1488  deallocate(veg_type_target_one_tile)
1489 
1490  deallocate(data_one_tile, data_one_tile2)
1491  deallocate(data_one_tile_3d)
1492  deallocate(mask_target_one_tile)
1493 
1494  return
1495 
1496  end subroutine interp
1497 
1501  subroutine calc_liq_soil_moisture
1503  use esmf
1504 
1505  use model_grid, only : landmask_target_grid
1506 
1507  use program_setup, only : maxsmc_target, &
1508  bb_target, &
1510 
1511  use static_data, only : soil_type_target_grid, &
1513 
1514  implicit none
1515 
1516  integer :: clb(3), cub(3), rc
1517  integer :: i, j, n, soil_type
1518 
1519  integer(esmf_kind_i8), pointer :: landmask_ptr(:,:)
1520 
1521  real :: bx, fk
1522  real(esmf_kind_r8), pointer :: soilm_liq_ptr(:,:,:)
1523  real(esmf_kind_r8), pointer :: soilm_tot_ptr(:,:,:)
1524  real(esmf_kind_r8), pointer :: soil_temp_ptr(:,:,:)
1525  real(esmf_kind_r8), pointer :: soil_type_ptr(:,:)
1526  real(esmf_kind_r8), pointer :: veg_type_ptr(:,:)
1527 
1528  print*,"- COMPUTE LIQUID PORTION OF TOTAL SOIL MOISTURE."
1529 
1530  print*,"- CALL FieldGet FOR TOTAL SOIL MOISTURE."
1531  call esmf_fieldget(soilm_tot_target_grid, &
1532  computationallbound=clb, &
1533  computationalubound=cub, &
1534  farrayptr=soilm_tot_ptr, rc=rc)
1535  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1536  call error_handler("IN FieldGet", rc)
1537 
1538  print*,"- CALL FieldGet FOR LIQUID SOIL MOISTURE."
1539  call esmf_fieldget(soilm_liq_target_grid, &
1540  farrayptr=soilm_liq_ptr, rc=rc)
1541  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1542  call error_handler("IN FieldGet", rc)
1543 
1544  print*,"- CALL FieldGet FOR SOIL TEMPERATURE."
1545  call esmf_fieldget(soil_temp_target_grid, &
1546  farrayptr=soil_temp_ptr, rc=rc)
1547  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1548  call error_handler("IN FieldGet", rc)
1549 
1550  print*,"- CALL FieldGet FOR VEGETATION TYPE."
1551  call esmf_fieldget(veg_type_target_grid, &
1552  farrayptr=veg_type_ptr, rc=rc)
1553  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1554  call error_handler("IN FieldGet", rc)
1555 
1556  print*,"- CALL FieldGet FOR SOIL TYPE."
1557  call esmf_fieldget(soil_type_target_grid, &
1558  farrayptr=soil_type_ptr, rc=rc)
1559  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1560  call error_handler("IN FieldGet", rc)
1561 
1562  print*,"- CALL FieldGet FOR LANDMASK."
1563  call esmf_fieldget(landmask_target_grid, &
1564  farrayptr=landmask_ptr, rc=rc)
1565  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1566  call error_handler("IN FieldGet", rc)
1567 
1568  do j = clb(2), cub(2)
1569  do i = clb(1), cub(1)
1570 
1571 !---------------------------------------------------------------------------------------------
1572 ! Check land points that are not permanent land ice.
1573 !---------------------------------------------------------------------------------------------
1574 
1575  if (landmask_ptr(i,j) == 1 .and. nint(veg_type_ptr(i,j)) /= veg_type_landice_target) then
1576 
1577  soil_type = nint(soil_type_ptr(i,j))
1578 
1579  do n = clb(3), cub(3)
1580 
1581  if (soil_temp_ptr(i,j,n) < (frz_h2o-0.0001)) then
1582 
1583  bx = bb_target(soil_type)
1584 
1585  if (bx .gt. blim) bx = blim
1586 
1587  fk=(((hlice/(grav*(-satpsi_target(soil_type))))* &
1588  ((soil_temp_ptr(i,j,n)-frz_h2o)/soil_temp_ptr(i,j,n)))** &
1589  (-1/bx))*maxsmc_target(soil_type)
1590 
1591  if (fk .lt. 0.02) fk = 0.02
1592 
1593  soilm_liq_ptr(i,j,n) = min( fk, soilm_tot_ptr(i,j,n) )
1594 
1595 !-----------------------------------------------------------------------
1596 ! now use iterative solution for liquid soil water content using
1597 ! FUNCTION FRH2O with the initial guess for SH2O from above explicit
1598 ! first guess.
1599 !-----------------------------------------------------------------------
1600 
1601  soilm_liq_ptr(i,j,n) = frh2o(soil_temp_ptr(i,j,n), &
1602  soilm_tot_ptr(i,j,n), soilm_liq_ptr(i,j,n), &
1603  maxsmc_target(soil_type),bb_target(soil_type), &
1604  satpsi_target(soil_type))
1605 
1606  else ! temp above freezing. all moisture is liquid
1607 
1608  soilm_liq_ptr(i,j,n) = soilm_tot_ptr(i,j,n)
1609 
1610  end if ! is soil layer below freezing?
1611 
1612  enddo ! soil layer
1613 
1614  end if ! is this point land?
1615 
1616  enddo
1617  enddo
1618 
1619  end subroutine calc_liq_soil_moisture
1620 
1645  FUNCTION frh2o (TKELV,SMC,SH2O,SMCMAX,BEXP,PSIS)
1647  use esmf
1648 
1649  IMPLICIT NONE
1650 
1651  INTEGER nlog
1652  INTEGER kcount
1653 
1654  REAL bexp
1655  REAL bx
1656  REAL denom
1657  REAL df
1658  REAL dswl
1659  REAL fk
1660  REAL frh2o
1661  REAL psis
1662  REAL(esmf_kind_r8) :: sh2o
1663  REAL(esmf_kind_r8) :: smc
1664  REAL smcmax
1665  REAL swl
1666  REAL swlk
1667  REAL(esmf_kind_r8) :: tkelv
1668 
1669  REAL, PARAMETER :: ck = 8.0
1670  REAL, PARAMETER :: error = 0.005
1671 
1672 ! ----------------------------------------------------------------------
1673 ! LIMITS ON PARAMETER B: B < 5.5 (use parameter BLIM)
1674 ! SIMULATIONS SHOWED IF B > 5.5 UNFROZEN WATER CONTENT IS
1675 ! NON-REALISTICALLY HIGH AT VERY LOW TEMPERATURES.
1676 ! ----------------------------------------------------------------------
1677 
1678  bx = bexp
1679  IF (bexp .GT. blim) bx = blim
1680 
1681 ! ----------------------------------------------------------------------
1682 ! INITIALIZING ITERATIONS COUNTER AND ITERATIVE SOLUTION FLAG.
1683 ! ----------------------------------------------------------------------
1684 
1685  nlog=0
1686  kcount=0
1687 
1688  IF (ck .NE. 0.0) THEN
1689 
1690 ! ----------------------------------------------------------------------
1691 ! OPTION 1: ITERATED SOLUTION FOR NONZERO CK
1692 ! IN KOREN ET AL, JGR, 1999, EQN 17
1693 ! ----------------------------------------------------------------------
1694 ! INITIAL GUESS FOR SWL (frozen content)
1695 ! ----------------------------------------------------------------------
1696 
1697  swl = smc-sh2o
1698 
1699 ! ----------------------------------------------------------------------
1700 ! KEEP WITHIN BOUNDS.
1701 ! ----------------------------------------------------------------------
1702 
1703  IF (swl .GT. (smc-0.02)) swl = smc-0.02
1704  IF (swl .LT. 0.) swl = 0.
1705 
1706 ! ----------------------------------------------------------------------
1707 ! START OF ITERATIONS
1708 ! ----------------------------------------------------------------------
1709 
1710  DO WHILE ( (nlog .LT. 10) .AND. (kcount .EQ. 0) )
1711 
1712  nlog = nlog+1
1713  df = log(( psis*grav/hlice ) * ( ( 1.+ck*swl )**2. ) * &
1714  ( smcmax/(smc-swl) )**bx) - log(-(tkelv-frz_h2o)/tkelv)
1715  denom = 2. * ck / ( 1.+ck*swl ) + bx / ( smc - swl )
1716  swlk = swl - df/denom
1717 
1718 ! ----------------------------------------------------------------------
1719 ! BOUNDS USEFUL FOR MATHEMATICAL SOLUTION.
1720 ! ----------------------------------------------------------------------
1721 
1722  IF (swlk .GT. (smc-0.02)) swlk = smc - 0.02
1723  IF (swlk .LT. 0.) swlk = 0.
1724 
1725 ! ----------------------------------------------------------------------
1726 ! MATHEMATICAL SOLUTION BOUNDS APPLIED.
1727 ! ----------------------------------------------------------------------
1728 
1729  dswl = abs(swlk-swl)
1730  swl = swlk
1731 
1732 ! ----------------------------------------------------------------------
1733 ! IF MORE THAN 10 ITERATIONS, USE EXPLICIT METHOD (CK=0 APPROX.)
1734 ! WHEN DSWL LESS OR EQ. ERROR, NO MORE ITERATIONS REQUIRED.
1735 ! ----------------------------------------------------------------------
1736 
1737  IF ( dswl .LE. error ) THEN
1738  kcount = kcount+1
1739  ENDIF
1740 
1741  END DO
1742 
1743 ! ----------------------------------------------------------------------
1744 ! END OF ITERATIONS
1745 ! ----------------------------------------------------------------------
1746 ! BOUNDS APPLIED WITHIN DO-BLOCK ARE VALID FOR PHYSICAL SOLUTION.
1747 ! ----------------------------------------------------------------------
1748 
1749  frh2o = smc - swl
1750 
1751 ! ----------------------------------------------------------------------
1752 ! END OPTION 1
1753 ! ----------------------------------------------------------------------
1754 
1755  ENDIF
1756 
1757 !-----------------------------------------------------------------------
1758 ! OPTION 2: EXPLICIT SOLUTION FOR FLERCHINGER EQ. i.e. CK=0
1759 ! IN KOREN ET AL., JGR, 1999, EQN 17
1760 ! APPLY PHYSICAL BOUNDS TO FLERCHINGER SOLUTION
1761 ! ----------------------------------------------------------------------
1762 
1763  IF (kcount .EQ. 0) THEN
1764 
1765  fk = (((hlice/(grav*(-psis)))* &
1766  ((tkelv-frz_h2o)/tkelv))**(-1/bx))*smcmax
1767 
1768  IF (fk .LT. 0.02) fk = 0.02
1769 
1770  frh2o = min(fk, smc)
1771 
1772  ENDIF
1773 
1774  RETURN
1775 
1776  END function frh2o
1777 
1783  subroutine rescale_soil_moisture
1785  use esmf
1786 
1787  use model_grid, only : landmask_target_grid
1788 
1789  use program_setup, only : drysmc_input, drysmc_target, &
1793 
1794  use static_data, only : soil_type_target_grid, &
1797 
1798  implicit none
1799 
1800  integer :: clb(3), cub(3), i, j, k, rc
1801  integer :: soilt_input, soilt_target
1802  integer(esmf_kind_i8), pointer :: landmask_ptr(:,:)
1803 
1804  real(esmf_kind_r8), pointer :: soilm_tot_ptr(:,:,:)
1805  real(esmf_kind_r8), pointer :: soil_type_input_ptr(:,:)
1806  real(esmf_kind_r8), pointer :: soil_type_target_ptr(:,:)
1807  real(esmf_kind_r8), pointer :: veg_greenness_ptr(:,:)
1808  real(esmf_kind_r8), pointer :: veg_type_ptr(:,:)
1809  real :: f1, fn, smcdir, smctra
1810 
1811  print*,"- RESCALE SOIL MOISTURE FOR CHANGES IN SOIL TYPE."
1812 
1813  print*,"- CALL FieldGet FOR TOTAL SOIL MOISTURE."
1814  call esmf_fieldget(soilm_tot_target_grid, &
1815  computationallbound=clb, &
1816  computationalubound=cub, &
1817  farrayptr=soilm_tot_ptr, rc=rc)
1818  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1819  call error_handler("IN FieldGet", rc)
1820 
1821  print*,"- CALL FieldGet FOR LAND MASK."
1822  call esmf_fieldget(landmask_target_grid, &
1823  farrayptr=landmask_ptr, rc=rc)
1824  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1825  call error_handler("IN FieldGet", rc)
1826 
1827  print*,"- CALL FieldGet FOR VEGETATION TYPE."
1828  call esmf_fieldget(veg_type_target_grid, &
1829  farrayptr=veg_type_ptr, rc=rc)
1830  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1831  call error_handler("IN FieldGet", rc)
1832 
1833  print*,"- CALL FieldGet FOR VEGETATION GREENNESS."
1834  call esmf_fieldget(veg_greenness_target_grid, &
1835  farrayptr=veg_greenness_ptr, rc=rc)
1836  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1837  call error_handler("IN FieldGet", rc)
1838 
1839  print*,"- CALL FieldGet FOR TARGET GRID SOIL TYPE."
1840  call esmf_fieldget(soil_type_target_grid, &
1841  farrayptr=soil_type_target_ptr, rc=rc)
1842  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1843  call error_handler("IN FieldGet", rc)
1844 
1845  print*,"- CALL FieldGet FOR SOIL TYPE FROM INPUT GRID."
1846  call esmf_fieldget(soil_type_from_input_grid, &
1847  farrayptr=soil_type_input_ptr, rc=rc)
1848  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1849  call error_handler("IN FieldGet", rc)
1850 
1851  do j = clb(2), cub(2)
1852  do i = clb(1), cub(1)
1853 
1854 !---------------------------------------------------------------------------------------------
1855 ! Check land points that are not permanent land ice.
1856 !---------------------------------------------------------------------------------------------
1857 
1858  if (landmask_ptr(i,j) == 1 .and. nint(veg_type_ptr(i,j)) /= veg_type_landice_target) then
1859 
1860  soilt_target = nint(soil_type_target_ptr(i,j))
1861  soilt_input = nint(soil_type_input_ptr(i,j))
1862 
1863 !---------------------------------------------------------------------------------------------
1864 ! Rescale soil moisture at points where the soil type between the input and output
1865 ! grids is different. Caution, this logic assumes the input and target grids use the same
1866 ! soil type dataset.
1867 !---------------------------------------------------------------------------------------------
1868 
1869  if (soilt_target /= soilt_input) then
1870 !---------------------------------------------------------------------------------------------
1871 ! Rescale top layer. First, determine direct evaporation part:
1872 !---------------------------------------------------------------------------------------------
1873 
1874  f1=(soilm_tot_ptr(i,j,1)-drysmc_input(soilt_input)) / &
1875  (maxsmc_input(soilt_input)-drysmc_input(soilt_input))
1876 
1877  smcdir=drysmc_target(soilt_target) + f1 * &
1878  (maxsmc_target(soilt_target) - drysmc_target(soilt_target))
1879 
1880 !---------------------------------------------------------------------------------------------
1881 ! Continue top layer rescale. Now determine transpiration part:
1882 !---------------------------------------------------------------------------------------------
1883 
1884  if (soilm_tot_ptr(i,j,1) < refsmc_input(soilt_input)) then
1885  f1=(soilm_tot_ptr(i,j,1) - wltsmc_input(soilt_input)) / &
1886  (refsmc_input(soilt_input) - wltsmc_input(soilt_input))
1887  smctra=wltsmc_target(soilt_target) + f1 * &
1888  (refsmc_target(soilt_target) - wltsmc_target(soilt_target))
1889  else
1890  f1=(soilm_tot_ptr(i,j,1) - refsmc_input(soilt_input)) / &
1891  (maxsmc_input(soilt_input) - refsmc_input(soilt_input))
1892  smctra=refsmc_target(soilt_target) + f1 * &
1893  (maxsmc_target(soilt_target) - refsmc_target(soilt_target))
1894  endif
1895 
1896 !---------------------------------------------------------------------------------------------
1897 ! Top layer is weighted by green vegetation fraction:
1898 !---------------------------------------------------------------------------------------------
1899 
1900  soilm_tot_ptr(i,j,1) = ((1.0 - veg_greenness_ptr(i,j)) * smcdir) + &
1901  (veg_greenness_ptr(i,j) * smctra)
1902 
1903 !---------------------------------------------------------------------------------------------
1904 ! Rescale bottom layers as follows:
1905 !
1906 ! - Rescale between wilting point and reference value when wilting < soil m < reference, or
1907 ! - Rescale between reference point and maximum value when reference < soil m < max.
1908 !---------------------------------------------------------------------------------------------
1909 
1910  do k = 2, cub(3)
1911  if (soilm_tot_ptr(i,j,k) < refsmc_input(soilt_input)) then
1912  fn = (soilm_tot_ptr(i,j,k) - wltsmc_input(soilt_input)) / &
1913  (refsmc_input(soilt_input) - wltsmc_input(soilt_input))
1914  soilm_tot_ptr(i,j,k) = wltsmc_target(soilt_target) + fn * &
1915  (refsmc_target(soilt_target) - wltsmc_target(soilt_target))
1916  else
1917  fn = (soilm_tot_ptr(i,j,k) - refsmc_input(soilt_input)) / &
1918  (maxsmc_input(soilt_input) - refsmc_input(soilt_input))
1919  soilm_tot_ptr(i,j,k) = refsmc_target(soilt_target) + fn * &
1920  (maxsmc_target(soilt_target) - refsmc_target(soilt_target))
1921  endif
1922  enddo
1923 
1924  endif ! is soil type different?
1925 
1926 !---------------------------------------------------------------------------------------------
1927 ! Range check all layers.
1928 !---------------------------------------------------------------------------------------------
1929 
1930  soilm_tot_ptr(i,j,1)=min(soilm_tot_ptr(i,j,1),maxsmc_target(soilt_target))
1931  soilm_tot_ptr(i,j,1)=max(drysmc_target(soilt_target),soilm_tot_ptr(i,j,1))
1932 
1933  do k = 2, cub(3)
1934  soilm_tot_ptr(i,j,k)=min(soilm_tot_ptr(i,j,k),maxsmc_target(soilt_target))
1935  soilm_tot_ptr(i,j,k)=max(wltsmc_target(soilt_target),soilm_tot_ptr(i,j,k))
1936  enddo
1937 
1938  endif ! is this a land point?
1939 
1940  enddo
1941  enddo
1942 
1943  return
1944 
1945  end subroutine rescale_soil_moisture
1946 
1951  subroutine adjust_soilt_for_terrain
1953  use model_grid, only : landmask_target_grid, &
1955 
1956  use static_data, only : veg_type_target_grid
1957 
1958  implicit none
1959 
1960  integer :: clb(3), cub(3), i, j, k, rc
1961  integer(esmf_kind_i8), pointer :: landmask_ptr(:,:)
1962 
1963  real, parameter :: lapse_rate = 6.5e-03
1964  real :: terrain_diff
1965  real(esmf_kind_r8), pointer :: terrain_input_ptr(:,:)
1966  real(esmf_kind_r8), pointer :: terrain_target_ptr(:,:)
1967  real(esmf_kind_r8), pointer :: veg_type_target_ptr(:,:)
1968  real(esmf_kind_r8), pointer :: soil_temp_target_ptr(:,:,:)
1969 
1970  print*,"- CALL FieldGet FOR TARGET GRID LAND-SEA MASK."
1971  call esmf_fieldget(landmask_target_grid, &
1972  farrayptr=landmask_ptr, rc=rc)
1973  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1974  call error_handler("IN FieldGet", rc)
1975 
1976  print*,"- CALL FieldGet FOR TARGET GRID VEGETATION TYPE."
1977  call esmf_fieldget(veg_type_target_grid, &
1978  farrayptr=veg_type_target_ptr, rc=rc)
1979  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1980  call error_handler("IN FieldGet", rc)
1981 
1982  print*,"- CALL FieldGet FOR TARGET GRID TERRAIN."
1983  call esmf_fieldget(terrain_target_grid, &
1984  farrayptr=terrain_target_ptr, rc=rc)
1985  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1986  call error_handler("IN FieldGet", rc)
1987 
1988  print*,"- CALL FieldGet FOR TERRAIN INTERP TO TARGET GRID."
1989  call esmf_fieldget(terrain_from_input_grid, &
1990  farrayptr=terrain_input_ptr, rc=rc)
1991  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1992  call error_handler("IN FieldGet", rc)
1993 
1994  print*,"- CALL FieldGet FOR SOIL TEMP TARGET GRID."
1995  call esmf_fieldget(soil_temp_target_grid, &
1996  computationallbound=clb, &
1997  computationalubound=cub, &
1998  farrayptr=soil_temp_target_ptr, rc=rc)
1999  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2000  call error_handler("IN FieldGet", rc)
2001 
2002  do j = clb(2), cub(2)
2003  do i = clb(1), cub(1)
2004  if (landmask_ptr(i,j) == 1) then
2005  terrain_diff = abs(terrain_input_ptr(i,j) - terrain_target_ptr(i,j))
2006  if (terrain_diff > 100.0) then
2007  do k = clb(3), cub(3)
2008  soil_temp_target_ptr(i,j,k) = soil_temp_target_ptr(i,j,k) + &
2009  ((terrain_input_ptr(i,j) - terrain_target_ptr(i,j)) * lapse_rate)
2010  if (nint(veg_type_target_ptr(i,j)) == veg_type_landice_target) then
2011  soil_temp_target_ptr(i,j,k) = min(soil_temp_target_ptr(i,j,k), 273.16)
2012  endif
2013  enddo
2014  endif
2015  endif
2016  enddo
2017  enddo
2018 
2019  end subroutine adjust_soilt_for_terrain
2020 
2027  subroutine adjust_soil_levels(localpet)
2029  use sfc_input_data, only : lsoil_input, soil_temp_input_grid, &
2030  soilm_liq_input_grid, soilm_tot_input_grid
2031  implicit none
2032  integer, intent(in) :: localpet
2033  character(len=500) :: msg
2034  character(len=2) :: lsoil_input_ch, lsoil_target_ch
2035  integer :: rc
2036  real(esmf_kind_r8) :: tmp(i_input,j_input), &
2037  data_one_tile(i_input,j_input,lsoil_input), &
2038  tmp3d(i_input,j_input,lsoil_target)
2039  if (lsoil_input == 9 .and. lsoil_target == 4) then
2040  print*, "CONVERTING FROM 9 INPUT SOIL LEVELS TO 4 TARGET SOIL LEVELS"
2041  call esmf_fieldgather(soil_temp_input_grid, data_one_tile, rootpet=0, tile=1, rc=rc)
2042  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2043  call error_handler("IN FieldGather", rc)
2044 
2045  call esmf_fielddestroy(soil_temp_input_grid,rc=rc)
2046  soil_temp_input_grid = esmf_fieldcreate(input_grid, &
2047  typekind=esmf_typekind_r8, &
2048  staggerloc=esmf_staggerloc_center, &
2049  ungriddedlbound=(/1/), &
2050  ungriddedubound=(/lsoil_target/), rc=rc)
2051 
2052  if(localpet==0)then
2053  tmp3d(:,:,1)= (data_one_tile(:,:,1) + data_one_tile(:,:,2))/2.0 * 0.1 + &
2054  (data_one_tile(:,:,2) + data_one_tile(:,:,3))/2.0 * 0.3 + &
2055  (data_one_tile(:,:,3) + data_one_tile(:,:,4))/2.0 * 0.6
2056  tmp = (data_one_tile(:,:,6) - data_one_tile(:,:,5)) / 30.0 * 10.0 + data_one_tile(:,:,5) !Linear approx. of 40 cm obs
2057  tmp3d(:,:,2)= (data_one_tile(:,:,4) + data_one_tile(:,:,5)) / 2.0 * 0.75 + &
2058  (data_one_tile(:,:,5) + tmp) / 2.0 * 0.25
2059  tmp3d(:,:,3)= (tmp + data_one_tile(:,:,6)) /2.0 * (1.0/3.0) + &
2060  (data_one_tile(:,:,6) + data_one_tile(:,:,7)) / 2.0 * (2.0/3.0)
2061  tmp = (data_one_tile(:,:,9) - data_one_tile(:,:,9)) / 140.0 * 40.0 + data_one_tile(:,:,8) !Linear approx of 200 cm obs
2062  tmp3d(:,:,4)= (data_one_tile(:,:,7) + data_one_tile(:,:,8)) / 2.0 * 0.6 + &
2063  (data_one_tile(:,:,8) + tmp) / 2.0 * 0.4
2064  endif
2065 
2066  call esmf_fieldscatter(soil_temp_input_grid, tmp3d, rootpet=0, rc=rc)
2067  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2068  call error_handler("IN FieldScatter", rc)
2069 
2070  call esmf_fieldgather(soilm_tot_input_grid, data_one_tile, rootpet=0, tile=1, rc=rc)
2071  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2072  call error_handler("IN FieldGather", rc)
2073 
2074  call esmf_fielddestroy(soilm_tot_input_grid,rc=rc)
2075  soilm_tot_input_grid = esmf_fieldcreate(input_grid, &
2076  typekind=esmf_typekind_r8, &
2077  staggerloc=esmf_staggerloc_center, &
2078  ungriddedlbound=(/1/), &
2079  ungriddedubound=(/lsoil_target/), rc=rc)
2080 
2081  if(localpet==0) then
2082  tmp3d(:,:,1)= (data_one_tile(:,:,1) + data_one_tile(:,:,2))/2.0 * 0.1 + &
2083  (data_one_tile(:,:,2) + data_one_tile(:,:,3))/2.0 * 0.3 + &
2084  (data_one_tile(:,:,3) + data_one_tile(:,:,4))/2.0 * 0.6
2085  tmp = (data_one_tile(:,:,6) - data_one_tile(:,:,5)) / 30.0 * 10.0 + data_one_tile(:,:,5) !Linear approx. of 40 cm obs
2086  tmp3d(:,:,2)= (data_one_tile(:,:,4) + data_one_tile(:,:,5)) / 2.0 * 0.75 + &
2087  (data_one_tile(:,:,5) + tmp) / 2.0 * 0.25
2088  tmp3d(:,:,3)= (tmp + data_one_tile(:,:,6)) /2.0 * (1.0/3.0) + &
2089  (data_one_tile(:,:,6) + data_one_tile(:,:,7)) / 2.0 * (2.0/3.0)
2090  tmp = (data_one_tile(:,:,9) - data_one_tile(:,:,9)) / 140.0 * 40.0 + data_one_tile(:,:,8) !Linear approx of 200 cm obs
2091  tmp3d(:,:,4)= (data_one_tile(:,:,7) + data_one_tile(:,:,8)) / 2.0 * 0.6 + &
2092  (data_one_tile(:,:,8) + tmp) / 2.0 * 0.4
2093  endif
2094 
2095  call esmf_fieldscatter(soilm_tot_input_grid, tmp3d, rootpet=0, rc=rc)
2096  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2097  call error_handler("IN FieldScatter", rc)
2098 
2099  call esmf_fieldgather(soilm_liq_input_grid, data_one_tile, rootpet=0, tile=1, rc=rc)
2100  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2101  call error_handler("IN FieldGather", rc)
2102 
2103  call esmf_fielddestroy(soilm_liq_input_grid,rc=rc)
2104  soilm_liq_input_grid = esmf_fieldcreate(input_grid, &
2105  typekind=esmf_typekind_r8, &
2106  staggerloc=esmf_staggerloc_center, &
2107  ungriddedlbound=(/1/), &
2108  ungriddedubound=(/lsoil_target/), rc=rc)
2109  if(localpet==0) then
2110  tmp3d(:,:,1)= (data_one_tile(:,:,1) + data_one_tile(:,:,2))/2.0 * 0.1 + &
2111  (data_one_tile(:,:,2) + data_one_tile(:,:,3))/2.0 * 0.3 + &
2112  (data_one_tile(:,:,3) + data_one_tile(:,:,4))/2.0 * 0.6
2113  tmp = (data_one_tile(:,:,6) - data_one_tile(:,:,5)) / 30.0 * 10.0 + data_one_tile(:,:,5) !Linear approx. of 40 cm obs
2114  tmp3d(:,:,2)= (data_one_tile(:,:,4) + data_one_tile(:,:,5)) / 2.0 * 0.75 + &
2115  (data_one_tile(:,:,5) + tmp) / 2.0 * 0.25
2116  tmp3d(:,:,3)= (tmp + data_one_tile(:,:,6)) /2.0 * (1.0/3.0) + &
2117  (data_one_tile(:,:,6) + data_one_tile(:,:,7)) / 2.0 * (2.0/3.0)
2118  tmp = (data_one_tile(:,:,9) - data_one_tile(:,:,9)) / 140.0 * 40.0 + data_one_tile(:,:,8) !Linear approx of 200 cm obs
2119  tmp3d(:,:,4)= (data_one_tile(:,:,7) + data_one_tile(:,:,8)) / 2.0 * 0.6 + &
2120  (data_one_tile(:,:,8) + tmp) / 2.0 * 0.4
2121  endif
2122 
2123  call esmf_fieldscatter(soilm_liq_input_grid, tmp3d, rootpet=0, rc=rc)
2124  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2125  call error_handler("IN FieldScatter", rc)
2126 
2127  elseif (lsoil_input /= lsoil_target) then
2128  rc = -1
2129  write(lsoil_input_ch, '(i2)') lsoil_input
2130  write(lsoil_target_ch, '(i2)') lsoil_target
2131  msg="NUMBER OF SOIL LEVELS IN INPUT " // lsoil_input_ch // " AND OUTPUT " &
2132  // lsoil_target_ch // " MUST EITHER BE EQUAL OR 9 AND 4 RESPECTIVELY."
2133  call error_handler(msg, rc)
2134  endif
2135 
2136  end subroutine adjust_soil_levels
2137 
2143  subroutine roughness
2145  use model_grid, only : landmask_target_grid
2146  use static_data, only : veg_type_target_grid
2147 
2148  implicit none
2149 
2150  integer :: clb(2), cub(2), i, j, rc
2151  integer(esmf_kind_i8), pointer :: landmask_ptr(:,:)
2152 
2153  real :: z0_igbp(20)
2154  real(esmf_kind_r8), pointer :: data_ptr(:,:)
2155  real(esmf_kind_r8), pointer :: veg_type_ptr(:,:)
2156 
2157  data z0_igbp /1.089, 2.653, 0.854, 0.826, 0.800, 0.050, &
2158  0.030, 0.856, 0.856, 0.150, 0.040, 0.130, &
2159  1.000, 0.250, 0.011, 0.011, 0.001, 0.076, &
2160  0.050, 0.030/
2161 
2162  print*,"- CALL FieldGet FOR TARGET GRID LAND-SEA MASK."
2163  call esmf_fieldget(landmask_target_grid, &
2164  computationallbound=clb, &
2165  computationalubound=cub, &
2166  farrayptr=landmask_ptr, rc=rc)
2167  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2168  call error_handler("IN FieldGet", rc)
2169 
2170  print*,"- CALL FieldGet FOR TARGET GRID VEGETATION TYPE."
2171  call esmf_fieldget(veg_type_target_grid, &
2172  farrayptr=veg_type_ptr, rc=rc)
2173  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2174  call error_handler("IN FieldGet", rc)
2175 
2176  print*,"- CALL FieldGet FOR TARGET GRID Z0."
2177  call esmf_fieldget(z0_target_grid, &
2178  farrayptr=data_ptr, rc=rc)
2179  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2180  call error_handler("IN FieldGet", rc)
2181 
2182  do j = clb(2), cub(2)
2183  do i = clb(1), cub(1)
2184  if (landmask_ptr(i,j) == 2) then
2185  data_ptr(i,j) = 1.0
2186  elseif (landmask_ptr(i,j) == 1) then
2187  data_ptr(i,j) = z0_igbp(nint(veg_type_ptr(i,j))) * 100.0
2188  endif
2189  enddo
2190  enddo
2191 
2192  end subroutine roughness
2193 
2197  subroutine qc_check
2199  use model_grid, only : landmask_target_grid
2200 
2201  use static_data, only : alvsf_target_grid, &
2215 
2216  implicit none
2217 
2218  integer :: clb(2), cub(2), i, j, rc
2219  integer(esmf_kind_i8), pointer :: landmask_ptr(:,:)
2220 
2221  real(esmf_kind_r8), pointer :: data_ptr(:,:)
2222  real(esmf_kind_r8), pointer :: data3d_ptr(:,:,:)
2223  real(esmf_kind_r8), pointer :: soilmt_ptr(:,:,:)
2224  real(esmf_kind_r8), pointer :: soilml_ptr(:,:,:)
2225  real(esmf_kind_r8), pointer :: veg_greenness_ptr(:,:)
2226  real(esmf_kind_r8), pointer :: veg_type_ptr(:,:)
2227  real(esmf_kind_r8), pointer :: seaice_skint_ptr(:,:)
2228  real(esmf_kind_r8), pointer :: skint_ptr(:,:)
2229  real(esmf_kind_r8), pointer :: fice_ptr(:,:)
2230  real(esmf_kind_r8), pointer :: hice_ptr(:,:)
2231 
2232  print*,"- CALL FieldGet FOR TARGET GRID LAND-SEA MASK."
2233  call esmf_fieldget(landmask_target_grid, &
2234  computationallbound=clb, &
2235  computationalubound=cub, &
2236  farrayptr=landmask_ptr, rc=rc)
2237  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2238  call error_handler("IN FieldGet", rc)
2239 
2240  print*,"- SET NON-LAND FLAG FOR TARGET GRID SLOPE TYPE."
2241  call esmf_fieldget(slope_type_target_grid, &
2242  farrayptr=data_ptr, rc=rc)
2243  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2244  call error_handler("IN FieldGet", rc)
2245 
2246  do j = clb(2), cub(2)
2247  do i = clb(1), cub(1)
2248  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2249  enddo
2250  enddo
2251 
2252  print*,"- SET NON-LAND FLAG FOR TARGET GRID SOIL TYPE."
2253  call esmf_fieldget(soil_type_target_grid, &
2254  farrayptr=data_ptr, rc=rc)
2255  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2256  call error_handler("IN FieldGet", rc)
2257 
2258  do j = clb(2), cub(2)
2259  do i = clb(1), cub(1)
2260  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2261  enddo
2262  enddo
2263 
2264  print*,"- SET NON-LAND FLAG FOR TARGET GRID VEGETATION TYPE."
2265  call esmf_fieldget(veg_type_target_grid, &
2266  farrayptr=veg_type_ptr, rc=rc)
2267  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2268  call error_handler("IN FieldGet", rc)
2269 
2270  do j = clb(2), cub(2)
2271  do i = clb(1), cub(1)
2272  if (landmask_ptr(i,j) /= 1) veg_type_ptr(i,j) = 0.0
2273  enddo
2274  enddo
2275 
2276  print*,"- SET TARGET GRID ALVSF AT NON-LAND."
2277  call esmf_fieldget(alvsf_target_grid, &
2278  farrayptr=data_ptr, rc=rc)
2279  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2280  call error_handler("IN FieldGet", rc)
2281 
2282  do j = clb(2), cub(2)
2283  do i = clb(1), cub(1)
2284  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.06 ! gfs physics flag value
2285  enddo
2286  enddo
2287 
2288  print*,"- SET TARGET GRID ALVWF AT NON-LAND."
2289  call esmf_fieldget(alvwf_target_grid, &
2290  farrayptr=data_ptr, rc=rc)
2291  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2292  call error_handler("IN FieldGet", rc)
2293 
2294  do j = clb(2), cub(2)
2295  do i = clb(1), cub(1)
2296  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.06 ! gfs physics flag value
2297  enddo
2298  enddo
2299 
2300  print*,"- SET TARGET GRID ALNSF AT NON-LAND."
2301  call esmf_fieldget(alnsf_target_grid, &
2302  farrayptr=data_ptr, rc=rc)
2303  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2304  call error_handler("IN FieldGet", rc)
2305 
2306  do j = clb(2), cub(2)
2307  do i = clb(1), cub(1)
2308  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.06 ! gfs physics flag value
2309  enddo
2310  enddo
2311 
2312  print*,"- SET TARGET GRID ALNWF AT NON-LAND."
2313  call esmf_fieldget(alnwf_target_grid, &
2314  farrayptr=data_ptr, rc=rc)
2315  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2316  call error_handler("IN FieldGet", rc)
2317 
2318  do j = clb(2), cub(2)
2319  do i = clb(1), cub(1)
2320  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.06 ! gfs physics flag value
2321  enddo
2322  enddo
2323 
2324  print*,"- SET NON-LAND FLAG FOR TARGET GRID FACSF."
2325  call esmf_fieldget(facsf_target_grid, &
2326  farrayptr=data_ptr, rc=rc)
2327  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2328  call error_handler("IN FieldGet", rc)
2329 
2330  do j = clb(2), cub(2)
2331  do i = clb(1), cub(1)
2332  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2333  enddo
2334  enddo
2335 
2336  print*,"- SET NON-LAND FLAG FOR TARGET GRID FACSF."
2337  call esmf_fieldget(facwf_target_grid, &
2338  farrayptr=data_ptr, rc=rc)
2339  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2340  call error_handler("IN FieldGet", rc)
2341 
2342  do j = clb(2), cub(2)
2343  do i = clb(1), cub(1)
2344  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2345  enddo
2346  enddo
2347 
2348  print*,"- SET NON-LAND FLAG FOR TARGET GRID MAXIMUM GREENNESS."
2349  call esmf_fieldget(max_veg_greenness_target_grid, &
2350  farrayptr=data_ptr, rc=rc)
2351  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2352  call error_handler("IN FieldGet", rc)
2353 
2354  do j = clb(2), cub(2)
2355  do i = clb(1), cub(1)
2356  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2357  enddo
2358  enddo
2359 
2360  print*,"- SET NON-LAND FLAG FOR TARGET GRID MINIMUM GREENNESS."
2361  call esmf_fieldget(min_veg_greenness_target_grid, &
2362  farrayptr=data_ptr, rc=rc)
2363  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2364  call error_handler("IN FieldGet", rc)
2365 
2366  do j = clb(2), cub(2)
2367  do i = clb(1), cub(1)
2368  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2369  enddo
2370  enddo
2371 
2372  print*,"- SET NON-LAND FLAG FOR TARGET GRID VEGETATION GREENNESS."
2373  call esmf_fieldget(veg_greenness_target_grid, &
2374  farrayptr=veg_greenness_ptr, rc=rc)
2375  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2376  call error_handler("IN FieldGet", rc)
2377 
2378  do j = clb(2), cub(2)
2379  do i = clb(1), cub(1)
2380  if (landmask_ptr(i,j) /= 1) veg_greenness_ptr(i,j) = 0.0
2381  enddo
2382  enddo
2383 
2384  print*,"- SET NON-LAND FLAG FOR TARGET GRID MAX SNOW ALBEDO."
2385  call esmf_fieldget(mxsno_albedo_target_grid, &
2386  farrayptr=data_ptr, rc=rc)
2387  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2388  call error_handler("IN FieldGet", rc)
2389 
2390  do j = clb(2), cub(2)
2391  do i = clb(1), cub(1)
2392  if (landmask_ptr(i,j) /= 1) data_ptr(i,j) = 0.0
2393  enddo
2394  enddo
2395 
2396  print*,"- ZERO OUT TARGET GRID CANOPY MOISTURE CONTENT WHERE NO PLANTS."
2397  call esmf_fieldget(canopy_mc_target_grid, &
2398  farrayptr=data_ptr, rc=rc)
2399  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2400  call error_handler("IN FieldGet", rc)
2401 
2402  do j = clb(2), cub(2)
2403  do i = clb(1), cub(1)
2404  if (veg_greenness_ptr(i,j) <= 0.01) data_ptr(i,j) = 0.0
2405  enddo
2406  enddo
2407 
2408  print*,"- CALL FieldGet FOR TARGET GRID ICE SKIN TEMP."
2409  call esmf_fieldget(seaice_skin_temp_target_grid, &
2410  farrayptr=seaice_skint_ptr, rc=rc)
2411  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2412  call error_handler("IN FieldGet", rc)
2413 
2414  print*,"- SET TARGET GRID SKIN TEMP AT ICE POINTS."
2415  call esmf_fieldget(skin_temp_target_grid, &
2416  farrayptr=skint_ptr, rc=rc)
2417  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2418  call error_handler("IN FieldGet", rc)
2419 
2420  print*,"- CALL FieldGet FOR TARGET GRID SEA ICE FRACTION."
2421  call esmf_fieldget(seaice_fract_target_grid, &
2422  farrayptr=fice_ptr, rc=rc)
2423  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2424  call error_handler("IN FieldGet", rc)
2425 
2426  print*,"- SET TARGET GRID SEA ICE DEPTH TO ZERO AT NON-ICE POINTS."
2427  call esmf_fieldget(seaice_depth_target_grid, &
2428  farrayptr=hice_ptr, rc=rc)
2429  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2430  call error_handler("IN FieldGet", rc)
2431 
2432  do j = clb(2), cub(2)
2433  do i = clb(1), cub(1)
2434  if (fice_ptr(i,j) > 0.0) then
2435  skint_ptr(i,j) = (fice_ptr(i,j) * seaice_skint_ptr(i,j)) + &
2436  ( (1.0 - fice_ptr(i,j)) * frz_ice )
2437  else
2438  seaice_skint_ptr(i,j) = skint_ptr(i,j)
2439  hice_ptr(i,j) = 0.0
2440  endif
2441  enddo
2442  enddo
2443 
2444  print*,"- SET TARGET GRID SUBSTRATE TEMP AT ICE."
2445  call esmf_fieldget(substrate_temp_target_grid, &
2446  farrayptr=data_ptr, rc=rc)
2447  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2448  call error_handler("IN FieldGet", rc)
2449 
2450  do j = clb(2), cub(2)
2451  do i = clb(1), cub(1)
2452  if (landmask_ptr(i,j) == 2) then ! sea ice
2453  data_ptr(i,j) = frz_ice
2454  elseif (landmask_ptr(i,j) == 0) then ! open water flag value.
2455  data_ptr(i,j) = skint_ptr(i,j)
2456  endif
2457  enddo
2458  enddo
2459 
2460  print*,"- ZERO OUT TARGET GRID SNOW DEPTH AT OPEN WATER."
2461  call esmf_fieldget(snow_depth_target_grid, &
2462  farrayptr=data_ptr, rc=rc)
2463  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2464  call error_handler("IN FieldGet", rc)
2465 
2466  do j = clb(2), cub(2)
2467  do i = clb(1), cub(1)
2468  if (landmask_ptr(i,j) == 0) then ! open water
2469  data_ptr(i,j) = 0.0
2470  end if
2471  enddo
2472  enddo
2473 
2474  print*,"- ZERO OUT TARGET GRID SNOW LIQ AT OPEN WATER."
2475  call esmf_fieldget(snow_liq_equiv_target_grid, &
2476  farrayptr=data_ptr, rc=rc)
2477  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2478  call error_handler("IN FieldGet", rc)
2479 
2480  do j = clb(2), cub(2)
2481  do i = clb(1), cub(1)
2482  if (landmask_ptr(i,j) == 0) then ! open water
2483  data_ptr(i,j) = 0.0
2484  endif
2485  enddo
2486  enddo
2487 
2488  print*,"- SET NON-LAND FLAG VALUE FOR TARGET GRID TOTAL SOIL MOISTURE."
2489  call esmf_fieldget(soilm_tot_target_grid, &
2490  farrayptr=soilmt_ptr, rc=rc)
2491  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2492  call error_handler("IN FieldGet", rc)
2493 
2494  print*,"- SET NON-LAND FLAG VALUE FOR TARGET GRID LIQUID SOIL MOISTURE."
2495  call esmf_fieldget(soilm_liq_target_grid, &
2496  farrayptr=soilml_ptr, rc=rc)
2497  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2498  call error_handler("IN FieldGet", rc)
2499 
2500  do j = clb(2), cub(2)
2501  do i = clb(1), cub(1)
2502  if (landmask_ptr(i,j) == 2 .or. landmask_ptr(i,j) == 0 .or. &
2503  nint(veg_type_ptr(i,j)) == veg_type_landice_target) then
2504  soilmt_ptr(i,j,:) = 1.0
2505  soilml_ptr(i,j,:) = 1.0
2506  endif
2507  enddo
2508  enddo
2509 
2510  print*,"- SET OPEN WATER FLAG FOR TARGET GRID SOIL TEMPERATURE."
2511  call esmf_fieldget(soil_temp_target_grid, &
2512  farrayptr=data3d_ptr, rc=rc)
2513  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2514  call error_handler("IN FieldGet", rc)
2515 
2516  do j = clb(2), cub(2)
2517  do i = clb(1), cub(1)
2518  if (landmask_ptr(i,j) == 0) then
2519  data3d_ptr(i,j,:) = skint_ptr(i,j) ! open water flag value.
2520  endif
2521  enddo
2522  enddo
2523 
2524  return
2525 
2526  end subroutine qc_check
2527 
2532  subroutine nst_land_fill
2534  use model_grid, only : landmask_target_grid
2535 
2536  implicit none
2537 
2538  integer(esmf_kind_i8), pointer :: mask_ptr(:,:)
2539  integer :: rc,i
2540  integer, PARAMETER :: num_nst_fields_minus2 = 16
2541  integer, PARAMETER :: xz_fill = 30.0
2542  integer, PARAMETER :: nst_fill = 0.0
2543 
2544  real(esmf_kind_r8), pointer :: data_ptr(:,:)
2545  real(esmf_kind_r8), pointer :: skint_ptr(:,:)
2546 
2547  type(esmf_field) :: temp_field
2548  type(esmf_fieldbundle) :: nst_bundle
2549 
2550  print*,"- CALL FieldGet FOR TARGET GRID LANDMASK."
2551  call esmf_fieldget(landmask_target_grid, &
2552  farrayptr=mask_ptr, rc=rc)
2553  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2554  call error_handler("IN FieldGet", rc)
2555 
2556  nst_bundle = esmf_fieldbundlecreate(name="nst_bundle", rc=rc)
2557  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2558  call error_handler("IN FieldBundleCreate", rc)
2559 
2560  call esmf_fieldbundleadd(nst_bundle, (/c_d_target_grid,c_0_target_grid,d_conv_target_grid, &
2564  z_c_target_grid, zm_target_grid/), rc=rc)
2565  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2566  call error_handler("IN FieldBundleAdd", rc)
2567 
2568  print*,"- CALL FieldGet FOR TREF."
2569  call esmf_fieldget(tref_target_grid, &
2570  farrayptr=data_ptr, rc=rc)
2571  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2572  call error_handler("IN FieldGet", rc)
2573 
2574  print*,"- CALL FieldGet FOR SKIN T."
2575  call esmf_fieldget(skin_temp_target_grid, &
2576  farrayptr=skint_ptr, rc=rc)
2577  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2578  call error_handler("IN FieldGet", rc)
2579 
2580  where(mask_ptr /= 0) data_ptr = skint_ptr
2581 
2582 ! xz
2583 
2584  print*,"- CALL FieldGet FOR XZ."
2585  call esmf_fieldget(xz_target_grid, &
2586  farrayptr=data_ptr, rc=rc)
2587  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2588  call error_handler("IN FieldGet", rc)
2589 
2590  where(mask_ptr /= 0) data_ptr = xz_fill
2591 
2592  do i = 1,num_nst_fields_minus2
2593 
2594  call esmf_fieldbundleget(nst_bundle,i,temp_field,rc=rc)
2595  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2596  call error_handler("IN FieldBundleGet", rc)
2597 
2598  call esmf_fieldget(temp_field,farrayptr=data_ptr,rc=rc)
2599  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2600  call error_handler("IN FieldGet", rc)
2601 
2602  where(mask_ptr /= 0) data_ptr = nst_fill
2603 
2604  enddo
2605 
2606  call esmf_fieldbundledestroy(nst_bundle,rc=rc)
2607  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
2608  call error_handler("IN FieldBundleDestroy", rc)
2609 
2610  end subroutine nst_land_fill
2611 
2615  subroutine create_surface_esmf_fields
2617  use model_grid, only : target_grid, lsoil_target
2618 
2619  implicit none
2620 
2621  integer :: rc
2622 
2623  real(esmf_kind_r8), pointer :: target_ptr(:,:), target_ptr_3d(:,:,:)
2624  real :: init_val = -999.9
2625 
2626  print*,"- CALL FieldCreate FOR TARGET GRID T2M."
2627  t2m_target_grid = esmf_fieldcreate(target_grid, &
2628  typekind=esmf_typekind_r8, &
2629  name="t2m_target_grid", &
2630  staggerloc=esmf_staggerloc_center, rc=rc)
2631  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2632  call error_handler("IN FieldCreate", rc)
2633 
2634  print*,"- INITIALIZE TARGET grid t2m."
2635  call esmf_fieldget(t2m_target_grid, &
2636  farrayptr=target_ptr, rc=rc)
2637  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2638  call error_handler("IN FieldGet", rc)
2639 
2640  target_ptr = init_val
2641 
2642  print*,"- CALL FieldCreate FOR TARGET GRID Q2M."
2643  q2m_target_grid = esmf_fieldcreate(target_grid, &
2644  typekind=esmf_typekind_r8, &
2645  name="q2m_target_grid", &
2646  staggerloc=esmf_staggerloc_center, rc=rc)
2647  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2648  call error_handler("IN FieldCreate", rc)
2649 
2650  print*,"- INITIALIZE TARGET grid q2m."
2651  call esmf_fieldget(q2m_target_grid, &
2652  farrayptr=target_ptr, rc=rc)
2653  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2654  call error_handler("IN FieldGet", rc)
2655 
2656  target_ptr = init_val
2657 
2658  print*,"- CALL FieldCreate FOR TARGET GRID TPRCP."
2659  tprcp_target_grid = esmf_fieldcreate(target_grid, &
2660  typekind=esmf_typekind_r8, &
2661  name="tprcp_target_grid", &
2662  staggerloc=esmf_staggerloc_center, rc=rc)
2663  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2664  call error_handler("IN FieldCreate", rc)
2665 
2666  print*,"- INITIALIZE TARGET grid tprcp."
2667  call esmf_fieldget(tprcp_target_grid, &
2668  farrayptr=target_ptr, rc=rc)
2669  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2670  call error_handler("IN FieldGet", rc)
2671 
2672  target_ptr = init_val
2673 
2674  print*,"- CALL FieldCreate FOR TARGET GRID F10M."
2675  f10m_target_grid = esmf_fieldcreate(target_grid, &
2676  typekind=esmf_typekind_r8, &
2677  name="f10m_target_grid", &
2678  staggerloc=esmf_staggerloc_center, rc=rc)
2679  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2680  call error_handler("IN FieldCreate", rc)
2681 
2682  print*,"- INITIALIZE TARGET grid f10m."
2683  call esmf_fieldget(f10m_target_grid, &
2684  farrayptr=target_ptr, rc=rc)
2685  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2686  call error_handler("IN FieldGet", rc)
2687 
2688  target_ptr = init_val
2689 
2690  print*,"- CALL FieldCreate FOR TARGET GRID FFMM."
2691  ffmm_target_grid = esmf_fieldcreate(target_grid, &
2692  typekind=esmf_typekind_r8, &
2693  name="ffmm_target_grid", &
2694  staggerloc=esmf_staggerloc_center, rc=rc)
2695  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2696  call error_handler("IN FieldCreate", rc)
2697 
2698  print*,"- INITIALIZE TARGET grid ffmm."
2699  call esmf_fieldget(ffmm_target_grid, &
2700  farrayptr=target_ptr, rc=rc)
2701  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2702  call error_handler("IN FieldGet", rc)
2703 
2704  target_ptr = init_val
2705 
2706  print*,"- CALL FieldCreate FOR TARGET GRID USTAR."
2707  ustar_target_grid = esmf_fieldcreate(target_grid, &
2708  typekind=esmf_typekind_r8, &
2709  name="ustar_target_grid", &
2710  staggerloc=esmf_staggerloc_center, rc=rc)
2711  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2712  call error_handler("IN FieldCreate", rc)
2713 
2714  print*,"- INITIALIZE TARGET grid ustar."
2715  call esmf_fieldget(ustar_target_grid, &
2716  farrayptr=target_ptr, rc=rc)
2717  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2718  call error_handler("IN FieldGet", rc)
2719 
2720  target_ptr = init_val
2721 
2722  print*,"- CALL FieldCreate FOR TARGET GRID SNOW LIQ EQUIV."
2723  snow_liq_equiv_target_grid = esmf_fieldcreate(target_grid, &
2724  typekind=esmf_typekind_r8, &
2725  name="snow_liq_equiv_target_grid", &
2726  staggerloc=esmf_staggerloc_center, rc=rc)
2727  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2728  call error_handler("IN FieldCreate", rc)
2729 
2730  print*,"- INITIALIZE TARGET grid snow liq equiv."
2731  call esmf_fieldget(snow_liq_equiv_target_grid, &
2732  farrayptr=target_ptr, rc=rc)
2733  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2734  call error_handler("IN FieldGet", rc)
2735 
2736  target_ptr = init_val
2737 
2738  print*,"- CALL FieldCreate FOR TARGET GRID SNOW DEPTH."
2739  snow_depth_target_grid = esmf_fieldcreate(target_grid, &
2740  typekind=esmf_typekind_r8, &
2741  name="snow_depth_target_grid", &
2742  staggerloc=esmf_staggerloc_center, rc=rc)
2743  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2744  call error_handler("IN FieldCreate", rc)
2745 
2746  print*,"- INITIALIZE TARGET grid snow depth."
2747  call esmf_fieldget(snow_depth_target_grid, &
2748  farrayptr=target_ptr, rc=rc)
2749  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2750  call error_handler("IN FieldGet", rc)
2751 
2752  target_ptr = init_val
2753 
2754  print*,"- CALL FieldCreate FOR TARGET GRID SEA ICE FRACTION."
2755  seaice_fract_target_grid = esmf_fieldcreate(target_grid, &
2756  typekind=esmf_typekind_r8, &
2757  name="seaice_fract_target_grid", &
2758  staggerloc=esmf_staggerloc_center, rc=rc)
2759  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2760  call error_handler("IN FieldCreate", rc)
2761 
2762  print*,"- INITIALIZE TARGET grid sea ice fraction."
2763  call esmf_fieldget(seaice_fract_target_grid, &
2764  farrayptr=target_ptr, rc=rc)
2765  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2766  call error_handler("IN FieldGet", rc)
2767 
2768  target_ptr = init_val
2769 
2770  print*,"- CALL FieldCreate FOR TARGET GRID SEA ICE DEPTH."
2771  seaice_depth_target_grid = esmf_fieldcreate(target_grid, &
2772  typekind=esmf_typekind_r8, &
2773  name="seaice_depth_target_grid", &
2774  staggerloc=esmf_staggerloc_center, rc=rc)
2775  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2776  call error_handler("IN FieldCreate", rc)
2777 
2778  print*,"- INITIALIZE TARGET sea ice depth."
2779  call esmf_fieldget(seaice_depth_target_grid, &
2780  farrayptr=target_ptr, rc=rc)
2781  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2782  call error_handler("IN FieldGet", rc)
2783 
2784  target_ptr = init_val
2785 
2786  print*,"- CALL FieldCreate FOR TARGET GRID SEA ICE SKIN TEMP."
2787  seaice_skin_temp_target_grid = esmf_fieldcreate(target_grid, &
2788  typekind=esmf_typekind_r8, &
2789  name="seaice_skin_temp_target_grid", &
2790  staggerloc=esmf_staggerloc_center, rc=rc)
2791  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2792  call error_handler("IN FieldCreate", rc)
2793 
2794  print*,"- INITIALIZE TARGET sea ice skin temp."
2795  call esmf_fieldget(seaice_skin_temp_target_grid, &
2796  farrayptr=target_ptr, rc=rc)
2797  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2798  call error_handler("IN FieldGet", rc)
2799 
2800  target_ptr = init_val
2801 
2802  print*,"- CALL FieldCreate FOR TARGET GRID SRFLAG."
2803  srflag_target_grid = esmf_fieldcreate(target_grid, &
2804  typekind=esmf_typekind_r8, &
2805  name="srflag_target_grid", &
2806  staggerloc=esmf_staggerloc_center, rc=rc)
2807  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2808  call error_handler("IN FieldCreate", rc)
2809 
2810  print*,"- INITIALIZE TARGET srflag."
2811  call esmf_fieldget(srflag_target_grid, &
2812  farrayptr=target_ptr, rc=rc)
2813  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2814  call error_handler("IN FieldGet", rc)
2815 
2816  target_ptr = init_val
2817 
2818  print*,"- CALL FieldCreate FOR TARGET GRID SKIN TEMPERATURE."
2819  skin_temp_target_grid = esmf_fieldcreate(target_grid, &
2820  typekind=esmf_typekind_r8, &
2821  name="skin_temp_target_grid", &
2822  staggerloc=esmf_staggerloc_center, rc=rc)
2823  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2824  call error_handler("IN FieldCreate", rc)
2825 
2826  print*,"- INITIALIZE TARGET grid skin temp."
2827  call esmf_fieldget(skin_temp_target_grid, &
2828  farrayptr=target_ptr, rc=rc)
2829  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2830  call error_handler("IN FieldGet", rc)
2831 
2832  target_ptr = init_val
2833 
2834  print*,"- CALL FieldCreate FOR TARGET GRID CANOPY MOISTURE CONTENT."
2835  canopy_mc_target_grid = esmf_fieldcreate(target_grid, &
2836  typekind=esmf_typekind_r8, &
2837  name="canopy_mc_target_grid", &
2838  staggerloc=esmf_staggerloc_center, rc=rc)
2839  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2840  call error_handler("IN FieldCreate", rc)
2841 
2842  print*,"- INITIALIZE TARGET grid canopy moisture."
2843  call esmf_fieldget(canopy_mc_target_grid, &
2844  farrayptr=target_ptr, rc=rc)
2845  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2846  call error_handler("IN FieldGet", rc)
2847 
2848  target_ptr = init_val
2849 
2850  print*,"- CALL FieldCreate FOR TARGET GRID LEAF AREA INDEX."
2851  lai_target_grid = esmf_fieldcreate(target_grid, &
2852  typekind=esmf_typekind_r8, &
2853  name="lai_target_grid",&
2854  staggerloc=esmf_staggerloc_center, rc=rc)
2855  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2856  call error_handler("IN FieldCreate", rc)
2857 
2858  print*,"- INITIALIZE TARGET leaf area index."
2859  call esmf_fieldget(lai_target_grid, &
2860  farrayptr=target_ptr, rc=rc)
2861  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2862  call error_handler("IN FieldGet", rc)
2863 
2864  target_ptr = init_val
2865 
2866  print*,"- CALL FieldCreate FOR TARGET GRID Z0."
2867  z0_target_grid = esmf_fieldcreate(target_grid, &
2868  typekind=esmf_typekind_r8, &
2869  name="z0_target_grid", &
2870  staggerloc=esmf_staggerloc_center, rc=rc)
2871  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2872  call error_handler("IN FieldCreate", rc)
2873 
2874  print*,"- INITIALIZE TARGET grid z0."
2875  call esmf_fieldget(z0_target_grid, &
2876  farrayptr=target_ptr, rc=rc)
2877  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2878  call error_handler("IN FieldGet", rc)
2879 
2880  target_ptr = init_val
2881 
2882  print*,"- CALL FieldCreate FOR INTERPOLATED TARGET GRID TERRAIN."
2883  terrain_from_input_grid = esmf_fieldcreate(target_grid, &
2884  typekind=esmf_typekind_r8, &
2885  name="terrain_from_input_grid", &
2886  staggerloc=esmf_staggerloc_center, rc=rc)
2887  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2888  call error_handler("IN FieldCreate", rc)
2889 
2890  print*,"- INITIALIZE TARGET grid interpolated terrain."
2891  call esmf_fieldget(terrain_from_input_grid, &
2892  farrayptr=target_ptr, rc=rc)
2893  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2894  call error_handler("IN FieldGet", rc)
2895 
2896  target_ptr = init_val
2897 
2898  print*,"- CALL FieldCreate FOR INTERPOLATED TARGET GRID SOIL TYPE."
2899  soil_type_from_input_grid = esmf_fieldcreate(target_grid, &
2900  typekind=esmf_typekind_r8, &
2901  staggerloc=esmf_staggerloc_center, &
2902  name="soil_type_from_input_grid", rc=rc)
2903  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2904  call error_handler("IN FieldCreate", rc)
2905 
2906  print*,"- INITIALIZE TARGET grid soil type"
2907  call esmf_fieldget(soil_type_from_input_grid, &
2908  farrayptr=target_ptr, rc=rc)
2909  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2910  call error_handler("IN FieldGet", rc)
2911 
2912  target_ptr = init_val
2913 
2914  print*,"- CALL FieldCreate FOR TARGET GRID SOIL TEMPERATURE."
2915  soil_temp_target_grid = esmf_fieldcreate(target_grid, &
2916  typekind=esmf_typekind_r8, &
2917  staggerloc=esmf_staggerloc_center, &
2918  name="soil_temp_target_grid", &
2919  ungriddedlbound=(/1/), &
2920  ungriddedubound=(/lsoil_target/), rc=rc)
2921  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2922  call error_handler("IN FieldCreate", rc)
2923 
2924  print*,"- INITIALIZE TARGET grid soil temp"
2925  call esmf_fieldget(soil_temp_target_grid, &
2926  farrayptr=target_ptr_3d, rc=rc)
2927  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2928  call error_handler("IN FieldGet", rc)
2929 
2930  target_ptr_3d = init_val
2931 
2932  print*,"- CALL FieldCreate FOR TARGET GRID TOTAL SOIL MOISTURE."
2933  soilm_tot_target_grid = esmf_fieldcreate(target_grid, &
2934  typekind=esmf_typekind_r8, &
2935  staggerloc=esmf_staggerloc_center, &
2936  name="soilm_tot_target_grid", &
2937  ungriddedlbound=(/1/), &
2938  ungriddedubound=(/lsoil_target/), rc=rc)
2939  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2940  call error_handler("IN FieldCreate", rc)
2941 
2942  print*,"- INITIALIZE TARGET grid soil moist"
2943  call esmf_fieldget(soilm_tot_target_grid, &
2944  farrayptr=target_ptr_3d, rc=rc)
2945  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2946  call error_handler("IN FieldGet", rc)
2947 
2948  target_ptr_3d = init_val
2949 
2950  print*,"- CALL FieldCreate FOR TARGET GRID LIQUID SOIL MOISTURE."
2951  soilm_liq_target_grid = esmf_fieldcreate(target_grid, &
2952  typekind=esmf_typekind_r8, &
2953  staggerloc=esmf_staggerloc_center, &
2954  name="soilm_liq_target_grid", &
2955  ungriddedlbound=(/1/), &
2956  ungriddedubound=(/lsoil_target/), rc=rc)
2957  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2958  call error_handler("IN FieldCreate", rc)
2959 
2960  print*,"- INITIALIZE TARGET grid soil liq"
2961  call esmf_fieldget(soilm_liq_target_grid, &
2962  farrayptr=target_ptr_3d, rc=rc)
2963  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2964  call error_handler("IN FieldGet", rc)
2965 
2966  target_ptr_3d = init_val
2967 
2968  end subroutine create_surface_esmf_fields
2969 
2973  subroutine create_nst_esmf_fields
2975  use model_grid, only : target_grid
2976 
2977  implicit none
2978 
2979  integer :: rc
2980 
2981  print*,"- CALL FieldCreate FOR TARGET GRID C_D."
2982  c_d_target_grid = esmf_fieldcreate(target_grid, &
2983  typekind=esmf_typekind_r8, &
2984  name='c_d', &
2985  staggerloc=esmf_staggerloc_center, rc=rc)
2986  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2987  call error_handler("IN FieldCreate", rc)
2988 
2989  print*,"- CALL FieldCreate FOR TARGET GRID C_0."
2990  c_0_target_grid = esmf_fieldcreate(target_grid, &
2991  typekind=esmf_typekind_r8, &
2992  name='c_0', &
2993  staggerloc=esmf_staggerloc_center, rc=rc)
2994  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2995  call error_handler("IN FieldCreate", rc)
2996 
2997  print*,"- CALL FieldCreate FOR TARGET GRID D_CONV."
2998  d_conv_target_grid = esmf_fieldcreate(target_grid, &
2999  typekind=esmf_typekind_r8, &
3000  name='d_conv',&
3001  staggerloc=esmf_staggerloc_center, rc=rc)
3002  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3003  call error_handler("IN FieldCreate", rc)
3004 
3005  print*,"- CALL FieldCreate FOR TARGET GRID DT_COOL."
3006  dt_cool_target_grid = esmf_fieldcreate(target_grid, &
3007  typekind=esmf_typekind_r8, &
3008  name='dt_cool',&
3009  staggerloc=esmf_staggerloc_center, rc=rc)
3010  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3011  call error_handler("IN FieldCreate", rc)
3012 
3013  print*,"- CALL FieldCreate FOR TARGET GRID IFD."
3014  ifd_target_grid = esmf_fieldcreate(target_grid, &
3015  typekind=esmf_typekind_r8, &
3016  name='ifd',&
3017  staggerloc=esmf_staggerloc_center, rc=rc)
3018  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3019  call error_handler("IN FieldCreate", rc)
3020 
3021  print*,"- CALL FieldCreate FOR TARGET GRID QRAIN."
3022  qrain_target_grid = esmf_fieldcreate(target_grid, &
3023  typekind=esmf_typekind_r8, &
3024  name='qrain',&
3025  staggerloc=esmf_staggerloc_center, rc=rc)
3026  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3027  call error_handler("IN FieldCreate", rc)
3028 
3029  print*,"- CALL FieldCreate FOR TARGET GRID TREF."
3030  tref_target_grid = esmf_fieldcreate(target_grid, &
3031  typekind=esmf_typekind_r8, &
3032  name='tref',&
3033  staggerloc=esmf_staggerloc_center, rc=rc)
3034  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3035  call error_handler("IN FieldCreate", rc)
3036 
3037  print*,"- CALL FieldCreate FOR TARGET GRID W_D."
3038  w_d_target_grid = esmf_fieldcreate(target_grid, &
3039  typekind=esmf_typekind_r8, &
3040  name='w_d',&
3041  staggerloc=esmf_staggerloc_center, rc=rc)
3042  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3043  call error_handler("IN FieldCreate", rc)
3044 
3045  print*,"- CALL FieldCreate FOR TARGET GRID W_0."
3046  w_0_target_grid = esmf_fieldcreate(target_grid, &
3047  typekind=esmf_typekind_r8, &
3048  name='w_0',&
3049  staggerloc=esmf_staggerloc_center, rc=rc)
3050  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3051  call error_handler("IN FieldCreate", rc)
3052 
3053  print*,"- CALL FieldCreate FOR TARGET GRID XS."
3054  xs_target_grid = esmf_fieldcreate(target_grid, &
3055  typekind=esmf_typekind_r8, &
3056  name='xs',&
3057  staggerloc=esmf_staggerloc_center, rc=rc)
3058  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3059  call error_handler("IN FieldCreate", rc)
3060 
3061  print*,"- CALL FieldCreate FOR TARGET GRID XT."
3062  xt_target_grid = esmf_fieldcreate(target_grid, &
3063  typekind=esmf_typekind_r8, &
3064  name='xt',&
3065  staggerloc=esmf_staggerloc_center, rc=rc)
3066  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3067  call error_handler("IN FieldCreate", rc)
3068 
3069  print*,"- CALL FieldCreate FOR TARGET GRID XU."
3070  xu_target_grid = esmf_fieldcreate(target_grid, &
3071  typekind=esmf_typekind_r8, &
3072  name='xu',&
3073  staggerloc=esmf_staggerloc_center, rc=rc)
3074  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3075  call error_handler("IN FieldCreate", rc)
3076 
3077  print*,"- CALL FieldCreate FOR TARGET GRID XV."
3078  xv_target_grid = esmf_fieldcreate(target_grid, &
3079  typekind=esmf_typekind_r8, &
3080  name='xv',&
3081  staggerloc=esmf_staggerloc_center, rc=rc)
3082  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3083  call error_handler("IN FieldCreate", rc)
3084 
3085  print*,"- CALL FieldCreate FOR TARGET GRID XZ."
3086  xz_target_grid = esmf_fieldcreate(target_grid, &
3087  typekind=esmf_typekind_r8, &
3088  name='xz',&
3089  staggerloc=esmf_staggerloc_center, rc=rc)
3090  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3091  call error_handler("IN FieldCreate", rc)
3092 
3093  print*,"- CALL FieldCreate FOR TARGET GRID XTTS."
3094  xtts_target_grid = esmf_fieldcreate(target_grid, &
3095  typekind=esmf_typekind_r8, &
3096  name='xtts',&
3097  staggerloc=esmf_staggerloc_center, rc=rc)
3098  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3099  call error_handler("IN FieldCreate", rc)
3100 
3101  print*,"- CALL FieldCreate FOR TARGET GRID XZTS."
3102  xzts_target_grid = esmf_fieldcreate(target_grid, &
3103  typekind=esmf_typekind_r8, &
3104  name='xzts',&
3105  staggerloc=esmf_staggerloc_center, rc=rc)
3106  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3107  call error_handler("IN FieldCreate", rc)
3108 
3109  print*,"- CALL FieldCreate FOR TARGET GRID Z_C."
3110  z_c_target_grid = esmf_fieldcreate(target_grid, &
3111  typekind=esmf_typekind_r8, &
3112  name='z_c',&
3113  staggerloc=esmf_staggerloc_center, rc=rc)
3114  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3115  call error_handler("IN FieldCreate", rc)
3116 
3117  print*,"- CALL FieldCreate FOR TARGET GRID ZM."
3118  zm_target_grid = esmf_fieldcreate(target_grid, &
3119  typekind=esmf_typekind_r8, &
3120  name='zm',&
3121  staggerloc=esmf_staggerloc_center, rc=rc)
3122  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3123  call error_handler("IN FieldCreate", rc)
3124 
3125  end subroutine create_nst_esmf_fields
3126 
3135  subroutine ij_to_i_j(ij, itile, jtile, i, j)
3137  implicit none
3138 
3139  integer(esmf_kind_i4), intent(in) :: ij
3140  integer , intent(in) :: itile, jtile
3141 
3142  integer , intent(out) :: i, j
3143 
3144  integer :: tile_num
3145  integer :: pt_loc_this_tile
3146 
3147  tile_num = ((ij-1) / (itile*jtile)) ! tile number minus 1
3148  pt_loc_this_tile = ij - (tile_num * itile * jtile)
3149  ! "ij" location of point within tile.
3150 
3151  j = (pt_loc_this_tile - 1) / itile + 1
3152  i = mod(pt_loc_this_tile, itile)
3153 
3154  if (i==0) i = itile
3155 
3156  return
3157 
3158  end subroutine ij_to_i_j
3159 
3170  subroutine regrid_many(bundle_pre,bundle_post, num_field,route,dozero, &
3171  unmapped_ptr,resetifd)
3173  use esmf
3174  use program_setup, only : convert_nst
3175  use model_grid, only : i_target, j_target
3176 
3177  implicit none
3178 
3179  integer, intent(in) :: num_field
3180  type(esmf_routehandle), intent(inout) :: route
3181  type(esmf_fieldbundle), intent(in) :: bundle_pre, bundle_post
3182  logical, intent(in) :: dozero(num_field)
3183  logical, intent(in), optional :: resetifd
3184  integer(esmf_kind_i4), intent(inout), optional :: unmapped_ptr(:)
3185 
3186  type(esmf_field) :: field_pre,field_post
3187  real(esmf_kind_r8), pointer :: tmp_ptr(:,:)
3188  type(realptr_2d),allocatable :: ptr_2d(:)
3189  type(realptr_3d),allocatable :: ptr_3d(:)
3190  logical :: is2d(num_field)
3191  character(len=50) :: fname
3192  integer :: i, j, k, ij, ind_2d, ind_3d, rc, ndims,n2d, n3d,localpet, l(1), u(1)
3193  type(esmf_vm) :: vm
3194 
3195  ind_2d = 0
3196  ind_3d = 0
3197 
3198  if(present(unmapped_ptr)) then
3199  l = lbound(unmapped_ptr)
3200  u = ubound(unmapped_ptr)
3201  endif
3202 
3203  do i = 1, num_field
3204  call esmf_fieldbundleget(bundle_pre,i,field_pre,rc=rc)
3205  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3206  call error_handler("IN FieldBundleGet", rc)
3207 
3208  call esmf_fieldbundleget(bundle_post,i,field_post,rc=rc)
3209  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3210  call error_handler("IN FieldBundleGet", rc)
3211 
3212  call esmf_fieldget(field_post,dimcount=ndims,name=fname,rc=rc)
3213  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3214  call error_handler("IN FieldGet", rc)
3215 
3216  call esmf_vmgetglobal(vm, rc=rc)
3217  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3218  call error_handler("IN VMGetGlobal", rc)
3219  call esmf_vmget(vm, localpet=localpet, rc=rc)
3220  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3221  call error_handler("IN VMGet", rc)
3222  if(localpet==0) print*, "in regrid_many fname = ", fname, ndims
3223  if (ndims == 2) is2d(i) = .true.
3224  if (ndims == 3) is2d(i) = .false.
3225 
3226  if (dozero(i)) then
3227  call esmf_fieldregrid(field_pre, &
3228  field_post, &
3229  routehandle=route, &
3230  termorderflag=esmf_termorder_srcseq, rc=rc)
3231  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3232  call error_handler("IN FieldRegrid", rc)
3233  else
3234  call esmf_fieldregrid(field_pre, &
3235  field_post, &
3236  routehandle=route, &
3237  zeroregion=esmf_region_select, &
3238  termorderflag=esmf_termorder_srcseq, rc=rc)
3239  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3240  call error_handler("IN FieldRegrid", rc)
3241  endif
3242  enddo
3243 
3244  if (present(resetifd)) then
3245  if( resetifd .and. convert_nst) then
3246  call esmf_fieldget(ifd_target_grid,farrayptr=tmp_ptr,rc=rc)
3247  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3248  call error_handler("IN FieldGet", rc)
3249  tmp_ptr = float(nint(tmp_ptr))
3250  endif
3251  endif
3252 
3253  n2d = count(is2d(:))
3254  n3d = count(.not.is2d(:))
3255  if(localpet==0) print*, is2d(:)
3256  if (present(unmapped_ptr)) then
3257  allocate(ptr_2d(n2d))
3258  if (n3d .ne. 0) allocate(ptr_3d(n3d))
3259  do i=1, num_field
3260  if (is2d(i)) then
3261  ind_2d = ind_2d + 1
3262  call esmf_fieldbundleget(bundle_post,i,field_post,rc=rc)
3263  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3264  call error_handler("IN FieldBundleGet", rc)
3265  call esmf_fieldget(field_post, farrayptr=ptr_2d(ind_2d)%p, rc=rc)
3266  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3267  call error_handler("IN FieldGet", rc)
3268  call esmf_fieldget(field_post,name=fname,rc=rc)
3269  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3270  call error_handler("IN FieldGet", rc)
3271  if (localpet==0) print*, "in doreplace loop, 2d field = ", trim(fname)
3272  else
3273  ind_3d = ind_3d + 1
3274  call esmf_fieldbundleget(bundle_post,i,field_post,rc=rc)
3275  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3276  call error_handler("IN FieldBundleGet", rc)
3277  call esmf_fieldget(field_post,name=fname,rc=rc)
3278  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3279  call error_handler("IN FieldGet", rc)
3280  if (localpet==0) print*, "in doreplace loop, 3d field = ", trim(fname)
3281  call esmf_fieldget(field_post, farrayptr=ptr_3d(ind_3d)%p, rc=rc)
3282  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3283  call error_handler("IN FieldGet", rc)
3284  endif
3285  end do
3286 
3287  do ij = l(1), u(1)
3288  call ij_to_i_j(unmapped_ptr(ij), i_target, j_target, i, j)
3289  do k = 1,n2d
3290  ptr_2d(k)%p(i,j) = -9999.9
3291  enddo
3292  do k = 1,n3d
3293  ptr_3d(k)%p(i,j,:) = -9999.9
3294  enddo
3295  enddo
3296  deallocate(ptr_2d)
3297  if(n3d .ne. 0) deallocate(ptr_3d)
3298  endif
3299  end subroutine regrid_many
3300 
3313 !unmasked points).
3314 !! @author Larissa Reames, OU CIMMS/NOAA/NSSL
3315  subroutine search_many(num_field,bundle_target,tile,search_nums,localpet,latitude, &
3316  terrain_land,soilt_climo, mask)
3320  use search_util
3321 
3322  implicit none
3323 
3324  integer, intent(in) :: num_field
3325  type(esmf_fieldbundle), intent(inout) :: bundle_target
3326 
3327  real(esmf_kind_r8), intent(inout), optional :: latitude(i_target,j_target)
3328  real(esmf_kind_r8), intent(inout), optional :: terrain_land(i_target,j_target)
3329  real(esmf_kind_r8), intent(inout), optional :: soilt_climo(i_target,j_target)
3330  integer(esmf_kind_i8), intent(inout), optional :: mask(i_target,j_target)
3331 
3332  real(esmf_kind_r8), allocatable :: field_data_2d(:,:)
3333  real(esmf_kind_r8), allocatable :: field_data_3d(:,:,:)
3334  integer, intent(in) :: tile,localpet
3335  integer, intent(inout) :: search_nums(num_field)
3336 
3337  type(esmf_field) :: temp_field
3338  character(len=50) :: fname
3339  integer, parameter :: sotyp_land_field_num = 224
3340  integer, parameter :: sst_field_num = 11
3341  integer, parameter :: terrain_field_num= 7
3342  integer :: j,k, rc, ndims
3343 
3344 
3345  do k = 1,num_field
3346  call esmf_fieldbundleget(bundle_target,k,temp_field, rc=rc)
3347  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3348  call error_handler("IN FieldGet", rc)
3349  call esmf_fieldget(temp_field, name=fname, dimcount=ndims,rc=rc)
3350  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3351  call error_handler("IN FieldGet", rc)
3352  if (localpet==0) then
3353  allocate(field_data_2d(i_target,j_target))
3354  else
3355  allocate(field_data_2d(0,0))
3356  endif
3357  if (ndims .eq. 2) then
3358  call esmf_fieldgather(temp_field,field_data_2d,rootpet=0,tile=tile, rc=rc)
3359  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3360  call error_handler("IN FieldGather", rc)
3361  if (localpet == 0) then
3362  if (present(latitude) .and. search_nums(k).eq.sst_field_num) then
3363  ! Sea surface temperatures; pass latitude field to search
3364  call search(field_data_2d, mask, i_target, j_target, tile,search_nums(k),latitude=latitude)
3365  elseif (present(terrain_land) .and. search_nums(k) .eq. terrain_field_num) then
3366  ! Terrain height; pass optional climo terrain array to search
3367  call search(field_data_2d, mask, i_target, j_target, tile,search_nums(k),terrain_land=terrain_land)
3368  elseif (search_nums(k) .eq. sotyp_land_field_num) then
3369  ! Soil type over land
3370  if (fname .eq. "soil_type_target_grid") then
3371  ! Soil type over land when interpolating input data to target grid
3372  ! *with* the intention of retaining interpolated data in output
3373  call search(field_data_2d, mask, i_target, j_target, tile,search_nums(k),soilt_climo=soilt_climo)
3374  elseif (present(soilt_climo)) then
3375  if (maxval(field_data_2d) > 0 .and. (trim(external_model) .ne. "GFS" .or. trim(input_type) .ne. "grib2")) then
3376  ! Soil type over land when interpolating input data to target grid
3377  ! *without* the intention of retaining data in output file
3378  call search(field_data_2d, mask, i_target, j_target, tile, search_nums(k))
3379  else
3380  ! If no soil type field exists in input data (e.g., GFS grib2) then don't search
3381  ! but simply set data to the climo field. This may result in
3382  ! somewhat inaccurate soil moistures as no scaling will occur
3383  field_data_2d = soilt_climo
3384  endif !check field value
3385  endif !sotype from target grid
3386  else
3387  ! Any field that doesn't require any of the special treatments or
3388  ! passing of additional variables as in those above
3389  call search(field_data_2d, mask, i_target, j_target, tile,search_nums(k))
3390  endif !if present
3391  endif !localpet
3392  call esmf_fieldscatter(temp_field, field_data_2d, rootpet=0, tile=tile,rc=rc)
3393  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3394  call error_handler("IN FieldScatter", rc)
3395  else
3396  if (localpet==0) then
3397  allocate(field_data_3d(i_target,j_target,lsoil_target))
3398  else
3399  allocate(field_data_3d(0,0,0))
3400  endif
3401 
3402  ! Process 3d fields soil temperature, moisture, and liquid
3403  call esmf_fieldgather(temp_field,field_data_3d,rootpet=0,tile=tile,rc=rc)
3404  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3405  call error_handler("IN FieldGather", rc)
3406 
3407  if (localpet==0) then
3408  do j = 1, lsoil_target
3409  field_data_2d = field_data_3d(:,:,j)
3410  call search(field_data_2d, mask, i_target, j_target, tile, 21)
3411  field_data_3d(:,:,j) = field_data_2d
3412  enddo
3413  endif
3414  call esmf_fieldscatter(temp_field, field_data_3d, rootpet=0, tile=tile,rc=rc)
3415  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__))&
3416  call error_handler("IN FieldScatter", rc)
3417  deallocate(field_data_3d)
3418  endif !ndims
3419  deallocate(field_data_2d)
3420  end do !fields
3421 
3422  end subroutine search_many
3423 
3428  subroutine cleanup_all_target_sfc_data
3431 
3432  implicit none
3433 
3434  integer :: rc
3435 
3436  print*,"- DESTROY LOCAL TARGET GRID SURFACE FIELDS."
3437 
3438  call esmf_fielddestroy(terrain_from_input_grid, rc=rc)
3439  call esmf_fielddestroy(terrain_from_input_grid_land, rc=rc)
3440  call esmf_fielddestroy(soil_type_from_input_grid, rc=rc)
3441 
3443 
3444  end subroutine cleanup_all_target_sfc_data
3445 
3446  end module surface
type(esmf_field), public d_conv_target_grid
Thickness of free convection layer.
+
integer, public j_target
j dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:40
+
type(esmf_field), public zm_target_grid
Oceanic mixed layer depth.
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
real, parameter, private hlice
latent heat of fusion
Definition: surface.F90:77
+
integer, public num_tiles_target_grid
Number of tiles, target grid.
Definition: model_grid.F90:49
+
integer, public lsoil_target
Number of soil layers, target grid.
Definition: model_grid.F90:25
+
subroutine roughness
Set roughness length at land and sea ice.
Definition: surface.F90:2144
+
real, parameter, private frz_ice
melting pt sea ice
Definition: surface.F90:73
+
type(esmf_field), public canopy_mc_target_grid
Canopy moisture content.
+
type(esmf_field), public f10m_target_grid
log((z0+10)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public c_d_target_grid
Coefficient 2 to calculate d(tz)/d(ts).
+
type(esmf_field), public ifd_target_grid
Model mode index.
+
Read atmospheric data on the input grid.
+
integer, public j_input
j-dimension of input grid (or of each global tile)
Definition: model_grid.F90:30
+
type(esmf_field), public w_d_target_grid
Coefficient 4 to calculate d(tz)/d(ts).
+
type(esmf_field), public xtts_target_grid
d(xt)/d(ts).
+
real, dimension(:), allocatable, public wltsmc_input
Plant wilting point soil moisture content input grid.
+
logical, public lai_from_climo
If false, interpolate leaf area index from the input data to the target grid instead of using data fr...
+ +
type(esmf_field), public srflag_target_grid
Snow/rain flag.
+
type(esmf_field), public xu_target_grid
u-current content in diurnal thermocline layer.
+
subroutine, public surface_driver(localpet)
Driver routine to process surface/nst data.
Definition: surface.F90:108
+
real, dimension(:), allocatable, public maxsmc_input
Maximum soil moisture content input grid.
+
real, dimension(:), allocatable, public satpsi_target
Saturated soil potential, target grid.
+
Module to hold ESMF fields associated with the target grid surface data.
+
type(esmf_field), public min_veg_greenness_target_grid
minimum annual greenness fraction
Definition: static_data.F90:30
+
type(esmf_field), public tprcp_target_grid
Precipitation.
+
type(esmf_field), public max_veg_greenness_target_grid
maximum annual greenness fraction
Definition: static_data.F90:29
+
type(esmf_field), public mxsno_albedo_target_grid
maximum snow albedo
Definition: static_data.F90:31
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
real, dimension(:), allocatable, public bb_target
Soil &#39;b&#39; parameter, target grid.
+
type(esmf_field), public alvwf_target_grid
visible white sky albedo
Definition: static_data.F90:24
+
type(esmf_field) terrain_from_input_grid_land
terrain height interpolated from input grid at all land points
Definition: surface.F90:65
+
subroutine cleanup_all_target_sfc_data
Free up memory once the target grid surface fields are no longer needed.
Definition: surface.F90:3429
+
type(esmf_field), public latitude_target_grid
latitude of grid center, target grid
Definition: model_grid.F90:77
+
Replace undefined values with a valid value.
Definition: search_util.F90:15
+
integer, public i_target
i dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:37
+
logical, public sotyp_from_climo
If false, interpolate soil type from the input data to the target grid instead of using data from sta...
+
type(esmf_field), public xzts_target_grid
d(xz)/d(ts).
+
logical, public minmax_vgfrc_from_climo
If false, interpolate min/max vegetation fraction from the input data to the target grid instead of u...
+
type(esmf_field), public c_0_target_grid
Coefficient 1 to calculate d(tz)/d(ts).
+
subroutine, public create_surface_esmf_fields
Create ESMF fields for the target grid surface variables.
Definition: surface.F90:2616
+
type(esmf_field), public soilm_liq_target_grid
3-d liquid soil moisture.
+
type(esmf_grid), public target_grid
target grid esmf grid object.
Definition: model_grid.F90:54
+
type(esmf_field), public alnsf_target_grid
near ir black sky albedo
Definition: static_data.F90:25
+
type(esmf_field), public xz_target_grid
Diurnal thermocline layer thickness.
+
real, parameter, private grav
gravity
Definition: surface.F90:75
+
character(len=20), public external_model
The model that the input data is derived from.
+
type(esmf_field), public z_c_target_grid
Sub-layer cooling thickness.
+
subroutine, public search(field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo)
Replace undefined surface values.
Definition: search_util.F90:47
+
type(esmf_field) soil_type_from_input_grid
soil type interpolated from input grid
Definition: surface.F90:59
+
type(esmf_field), public lai_target_grid
Leaf area index.
+
subroutine, public cleanup_static_fields
Free up memory for fields in this module.
+
subroutine calc_liq_soil_moisture
Compute liquid portion of the total soil moisture.
Definition: surface.F90:1502
+
type(esmf_field), public landmask_target_grid
land mask target grid - &#39;1&#39; land; &#39;0&#39; non-land
Definition: model_grid.F90:74
+
type(esmf_field), public seaice_fract_target_grid
Sea ice fraction.
+
subroutine rescale_soil_moisture
Adjust soil moisture for changes in soil type between the input and target grids. ...
Definition: surface.F90:1784
+
subroutine adjust_soilt_for_terrain
Adjust soil temperature for changes in terrain height between the input and target grids...
Definition: surface.F90:1952
+
logical, public convert_nst
Convert nst data when true.
+
type(esmf_field), public snow_liq_equiv_target_grid
Liquid equivalent snow depth.
+
type(esmf_field), public qrain_target_grid
Sensible heat flux due to rainfall.
+
type(esmf_field), public soilm_tot_target_grid
3-d total soil moisture.
+
subroutine adjust_soil_levels(localpet)
Adjust soil levels of the input grid if there is a mismatch between input and target grids...
Definition: surface.F90:2028
+
logical, public tg3_from_soil
If false, use lowest level soil temperature for the base soil temperature instead of using data from ...
+
integer, parameter veg_type_landice_target
Vegetation type category that defines permanent land ice points.
Definition: surface.F90:53
+
type(esmf_field), public seaice_depth_target_grid
Sea ice depth.
+
type(esmf_field), public ffmm_target_grid
log((z0+z1)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public seaice_skin_temp_target_grid
Sea ice skin temperature.
+
subroutine, public interp(localpet)
Horizontally interpolate surface fields from input to target FV3 grid using esmf routines.
Definition: surface.F90:249
+
type(esmf_field), public terrain_input_grid
terrain height
+
type(esmf_field), public alvsf_target_grid
visible black sky albedo
Definition: static_data.F90:23
+
real, dimension(:), allocatable, public drysmc_input
Air dry soil moisture content input grid.
+ +
real, dimension(:), allocatable, public wltsmc_target
Plant wilting point soil moisture content target grid.
+
type(esmf_field), public slope_type_target_grid
slope type
Definition: static_data.F90:32
+
Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation ty...
Definition: static_data.F90:13
+
type(esmf_field), public xs_target_grid
Salinity content in diurnal thermocline layer.
+
logical, public vgfrc_from_climo
If false, interpolate vegetation fraction from the input data to the target grid instead of using dat...
+
subroutine, public calc_soil_params_driver(localpet)
Driver routine to compute soil parameters for each soil type.
+
subroutine, public create_nst_esmf_fields
Create ESMF fields for the target grid nst variables.
Definition: surface.F90:2974
+
type(esmf_grid), public input_grid
input grid esmf grid object
Definition: model_grid.F90:52
+
type(esmf_field), public ustar_target_grid
Friction velocity.
+
type(esmf_field), public tref_target_grid
Reference temperature.
+
type(esmf_field), public q2m_target_grid
2-m specific humidity.
+
subroutine, public regrid_many(bundle_pre, bundle_post, num_field, route, dozero, unmapped_ptr, resetifd)
Regrid multiple ESMF fields from input to target grid.
Definition: surface.F90:3172
+
subroutine, public nst_land_fill
nst is not active at land or sea ice points.
Definition: surface.F90:2533
+
character(len=25), public input_type
Input data type:
+
real, parameter, private frz_h2o
melting pt water
Definition: surface.F90:71
+
Process surface and nst fields.
Definition: surface.F90:21
+
type(esmf_field), public terrain_target_grid
terrain height target grid
Definition: model_grid.F90:96
+
real, dimension(:), allocatable, public refsmc_target
Reference soil moisture content target grid (onset of soil moisture stress).
+
type(esmf_field), public substrate_temp_target_grid
soil subtrate temperature
Definition: static_data.F90:34
+
type(esmf_field), public veg_greenness_target_grid
vegetation greenness fraction
Definition: static_data.F90:35
+
type(esmf_field), public skin_temp_target_grid
Skin temperature/sst.
+
type(esmf_field), public xv_target_grid
v-current content in diurnal thermocline layer.
+
type(esmf_field), public xt_target_grid
Heat content in diurnal thermocline layer.
+
type(esmf_field), public seamask_target_grid
sea mask target grid - &#39;1&#39; non-land; &#39;0&#39; land
Definition: model_grid.F90:93
+
type(esmf_field), public veg_type_target_grid
vegetation type
Definition: static_data.F90:36
+
subroutine qc_check
Perform some quality control checks before output.
Definition: surface.F90:2198
+
type(esmf_field), public z0_target_grid
Roughness length.
+
logical, public vgtyp_from_climo
If false, interpolate vegetation type from the input data to the target grid instead of using data fr...
+
type(esmf_field), public facwf_target_grid
fractional coverage for weak zenith angle dependent albedo
Definition: static_data.F90:28
+
type(esmf_field) terrain_from_input_grid
terrain height interpolated from input grid
Definition: surface.F90:62
+
subroutine, public get_static_fields(localpet)
Driver routine to read/time interpolate static/climo fields on the fv3 target grid.
Definition: static_data.F90:50
+
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.
Definition: surface.F90:3317
+
subroutine ij_to_i_j(ij, itile, jtile, i, j)
Convert 1d index to 2d indices.
Definition: surface.F90:3136
+
type(esmf_field), public t2m_target_grid
2-m temperatrure.
+
subroutine, public cleanup_target_nst_data
Free up memory once the target grid nst fields are no longer needed.
+
type(esmf_field), public soil_temp_target_grid
3-d soil temperature.
+
real, dimension(:), allocatable, public refsmc_input
Reference soil moisture content input grid (onset of soil moisture stress).
+
subroutine, public cleanup_target_sfc_data
Free up memory once the target grid surface fields are no longer needed.
+
type(esmf_field), public alnwf_target_grid
near ir white sky albedo
Definition: static_data.F90:26
+
real, dimension(:), allocatable, public maxsmc_target
Maximum soil moisture content target grid.
+
real, dimension(:), allocatable, public drysmc_target
Air dry soil moisture content target grid.
+
type(esmf_field), public dt_cool_target_grid
Sub-layer cooling amount.
+
integer, public i_input
i-dimension of input grid (or of each global tile)
Definition: model_grid.F90:27
+
type(esmf_field), public w_0_target_grid
Coefficient 3 to calculate d(tz)/d(ts).
+
type(esmf_field), public facsf_target_grid
fractional coverage for strong zenith angle dependent albedo
Definition: static_data.F90:27
+
real, parameter, private blim
soil &#39;b&#39; parameter limit
Definition: surface.F90:69
+
type(esmf_field), public snow_depth_target_grid
Physical snow depth.
+
type(esmf_field), public soil_type_target_grid
soil type
Definition: static_data.F90:33
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/surface__target__data_8F90.html b/ver-1.11.0/chgres_cube/surface__target__data_8F90.html new file mode 100644 index 000000000..18ae81c71 --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface__target__data_8F90.html @@ -0,0 +1,249 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface_target_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
surface_target_data.F90 File Reference
+
+
+ +

Define target grid surface data variables. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  surface_target_data
 Module to hold ESMF fields associated with the target grid surface data.
 
+ + + + + + + +

+Functions/Subroutines

subroutine, public surface_target_data::cleanup_target_nst_data
 Free up memory once the target grid nst fields are no longer needed. More...
 
subroutine, public surface_target_data::cleanup_target_sfc_data
 Free up memory once the target grid surface fields are no longer needed. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

type(esmf_field), public surface_target_data::c_0_target_grid
 Coefficient 1 to calculate d(tz)/d(ts). More...
 
type(esmf_field), public surface_target_data::c_d_target_grid
 Coefficient 2 to calculate d(tz)/d(ts). More...
 
type(esmf_field), public surface_target_data::canopy_mc_target_grid
 Canopy moisture content. More...
 
type(esmf_field), public surface_target_data::d_conv_target_grid
 Thickness of free convection layer. More...
 
type(esmf_field), public surface_target_data::dt_cool_target_grid
 Sub-layer cooling amount. More...
 
type(esmf_field), public surface_target_data::f10m_target_grid
 log((z0+10)*1/z0) See sfc_diff.f for details. More...
 
type(esmf_field), public surface_target_data::ffmm_target_grid
 log((z0+z1)*1/z0) See sfc_diff.f for details. More...
 
type(esmf_field), public surface_target_data::ifd_target_grid
 Model mode index. More...
 
type(esmf_field), public surface_target_data::lai_target_grid
 Leaf area index. More...
 
type(esmf_field), public surface_target_data::q2m_target_grid
 2-m specific humidity. More...
 
type(esmf_field), public surface_target_data::qrain_target_grid
 Sensible heat flux due to rainfall. More...
 
type(esmf_field), public surface_target_data::seaice_depth_target_grid
 Sea ice depth. More...
 
type(esmf_field), public surface_target_data::seaice_fract_target_grid
 Sea ice fraction. More...
 
type(esmf_field), public surface_target_data::seaice_skin_temp_target_grid
 Sea ice skin temperature. More...
 
type(esmf_field), public surface_target_data::skin_temp_target_grid
 Skin temperature/sst. More...
 
type(esmf_field), public surface_target_data::snow_depth_target_grid
 Physical snow depth. More...
 
type(esmf_field), public surface_target_data::snow_liq_equiv_target_grid
 Liquid equivalent snow depth. More...
 
type(esmf_field), public surface_target_data::soil_temp_target_grid
 3-d soil temperature. More...
 
type(esmf_field), public surface_target_data::soilm_liq_target_grid
 3-d liquid soil moisture. More...
 
type(esmf_field), public surface_target_data::soilm_tot_target_grid
 3-d total soil moisture. More...
 
type(esmf_field), public surface_target_data::srflag_target_grid
 Snow/rain flag. More...
 
type(esmf_field), public surface_target_data::t2m_target_grid
 2-m temperatrure. More...
 
type(esmf_field), public surface_target_data::tprcp_target_grid
 Precipitation. More...
 
type(esmf_field), public surface_target_data::tref_target_grid
 Reference temperature. More...
 
type(esmf_field), public surface_target_data::ustar_target_grid
 Friction velocity. More...
 
type(esmf_field), public surface_target_data::w_0_target_grid
 Coefficient 3 to calculate d(tz)/d(ts). More...
 
type(esmf_field), public surface_target_data::w_d_target_grid
 Coefficient 4 to calculate d(tz)/d(ts). More...
 
type(esmf_field), public surface_target_data::xs_target_grid
 Salinity content in diurnal thermocline layer. More...
 
type(esmf_field), public surface_target_data::xt_target_grid
 Heat content in diurnal thermocline layer. More...
 
type(esmf_field), public surface_target_data::xtts_target_grid
 d(xt)/d(ts). More...
 
type(esmf_field), public surface_target_data::xu_target_grid
 u-current content in diurnal thermocline layer. More...
 
type(esmf_field), public surface_target_data::xv_target_grid
 v-current content in diurnal thermocline layer. More...
 
type(esmf_field), public surface_target_data::xz_target_grid
 Diurnal thermocline layer thickness. More...
 
type(esmf_field), public surface_target_data::xzts_target_grid
 d(xz)/d(ts). More...
 
type(esmf_field), public surface_target_data::z0_target_grid
 Roughness length. More...
 
type(esmf_field), public surface_target_data::z_c_target_grid
 Sub-layer cooling thickness. More...
 
type(esmf_field), public surface_target_data::zm_target_grid
 Oceanic mixed layer depth. More...
 
+

Detailed Description

+

Define target grid surface data variables.

+
Author
George Gayno NCEP/EMC
+ +

Definition in file surface_target_data.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/surface__target__data_8F90.js b/ver-1.11.0/chgres_cube/surface__target__data_8F90.js new file mode 100644 index 000000000..79e61c1f4 --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface__target__data_8F90.js @@ -0,0 +1,42 @@ +var surface__target__data_8F90 = +[ + [ "cleanup_target_nst_data", "surface__target__data_8F90.html#a7579bed4bee3e50b057b913f9f08f391", null ], + [ "cleanup_target_sfc_data", "surface__target__data_8F90.html#ae691e61976b33b8d07f166e3297cf7f1", null ], + [ "c_0_target_grid", "surface__target__data_8F90.html#a657e74c6e004cf9e07531fe00dca2a13", null ], + [ "c_d_target_grid", "surface__target__data_8F90.html#adce56c4dec7394d858591d80bf4a870e", null ], + [ "canopy_mc_target_grid", "surface__target__data_8F90.html#a563521ef40680a2abec0d24ca15c11a9", null ], + [ "d_conv_target_grid", "surface__target__data_8F90.html#a9dae2d4c09b0786528422bac68e26cff", null ], + [ "dt_cool_target_grid", "surface__target__data_8F90.html#aab2bffb07c245bb48b915825c47c6538", null ], + [ "f10m_target_grid", "surface__target__data_8F90.html#aa90c1ec2d09dd77b23744a45c762d63c", null ], + [ "ffmm_target_grid", "surface__target__data_8F90.html#a6a65acd6b187aeee89ef1493f19736c7", null ], + [ "ifd_target_grid", "surface__target__data_8F90.html#acb8177f2bb7ba31fff58eb253f11e0e6", null ], + [ "lai_target_grid", "surface__target__data_8F90.html#a668e84f353bfed4dfa817315b7737b32", null ], + [ "q2m_target_grid", "surface__target__data_8F90.html#a3b79eda082d09d7d12f76e588f9ddbad", null ], + [ "qrain_target_grid", "surface__target__data_8F90.html#a602f3db6fcf746e1edc2faa3ff87b22b", null ], + [ "seaice_depth_target_grid", "surface__target__data_8F90.html#a87ef0089b12975b9996f9f2f195a8fc4", null ], + [ "seaice_fract_target_grid", "surface__target__data_8F90.html#a8619aa99b6c5eef897f7d3444a7aef28", null ], + [ "seaice_skin_temp_target_grid", "surface__target__data_8F90.html#a931f6effdfab16836f7ab66c7c03e364", null ], + [ "skin_temp_target_grid", "surface__target__data_8F90.html#a07844c6c9c70781989b6e643623bcb04", null ], + [ "snow_depth_target_grid", "surface__target__data_8F90.html#a18d3f0577eca62f1d145e194ec36c56d", null ], + [ "snow_liq_equiv_target_grid", "surface__target__data_8F90.html#abb85698100b0a90e0460f35cbe26d641", null ], + [ "soil_temp_target_grid", "surface__target__data_8F90.html#aeb82ec1225cbb734aa22a869599b7a0c", null ], + [ "soilm_liq_target_grid", "surface__target__data_8F90.html#a9000f8cf2d0c717846a6a2bfc3651e82", null ], + [ "soilm_tot_target_grid", "surface__target__data_8F90.html#a7a65fcefb1e2cd01cc934a3cd7c69e10", null ], + [ "srflag_target_grid", "surface__target__data_8F90.html#ae1176ee763ee9dcec7878f8549bbf87b", null ], + [ "t2m_target_grid", "surface__target__data_8F90.html#a732de7ef3ee7ea52fafd47a7946caff2", null ], + [ "tprcp_target_grid", "surface__target__data_8F90.html#a62b810f8a70f347404549cbb4b1f8c12", null ], + [ "tref_target_grid", "surface__target__data_8F90.html#a371c77a5af72827af0e3796ca8ab9d6a", null ], + [ "ustar_target_grid", "surface__target__data_8F90.html#ac7b2ef2f989e875ac2b913152a29f746", null ], + [ "w_0_target_grid", "surface__target__data_8F90.html#ab0bd1816adbd330a77f2b9b86e32524f", null ], + [ "w_d_target_grid", "surface__target__data_8F90.html#a4d92daaf7872c21034cfadf2e2435914", null ], + [ "xs_target_grid", "surface__target__data_8F90.html#a3da203846228c49cb2a7c9d6b5c2a92b", null ], + [ "xt_target_grid", "surface__target__data_8F90.html#af3be3ce9b803381efb01758c8272b134", null ], + [ "xtts_target_grid", "surface__target__data_8F90.html#a895d73cfc745f1d5ff9c9e1f1bb8617f", null ], + [ "xu_target_grid", "surface__target__data_8F90.html#a2afb5157b56617d1a1e699bfa9bdc4f4", null ], + [ "xv_target_grid", "surface__target__data_8F90.html#aa5b820a5fee4dd98118efa5c384d5675", null ], + [ "xz_target_grid", "surface__target__data_8F90.html#a944da5499c9a548ac3978bf28454c1f4", null ], + [ "xzts_target_grid", "surface__target__data_8F90.html#aaa012f9e950d7aebf20e484e64f346bb", null ], + [ "z0_target_grid", "surface__target__data_8F90.html#a4886e70b112ad7918f5d824e6c344851", null ], + [ "z_c_target_grid", "surface__target__data_8F90.html#afb801817257c7643eb36c126d41b4174", null ], + [ "zm_target_grid", "surface__target__data_8F90.html#a73521e5c6e097524d2966e3fdf9e4d9c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/surface__target__data_8F90_source.html b/ver-1.11.0/chgres_cube/surface__target__data_8F90_source.html new file mode 100644 index 000000000..37644e21a --- /dev/null +++ b/ver-1.11.0/chgres_cube/surface__target__data_8F90_source.html @@ -0,0 +1,145 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/surface_target_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
surface_target_data.F90
+
+
+Go to the documentation of this file.
1 
4 
10 
11  use esmf
12 
13  implicit none
14 
15  private
16 
17 ! surface fields (not including nst)
18  type(esmf_field), public :: canopy_mc_target_grid
19 
20  type(esmf_field), public :: f10m_target_grid
21 
23  type(esmf_field), public :: ffmm_target_grid
24 
26  type(esmf_field), public :: q2m_target_grid
27 
28  type(esmf_field), public :: seaice_depth_target_grid
29 
30  type(esmf_field), public :: seaice_fract_target_grid
31 
32  type(esmf_field), public :: seaice_skin_temp_target_grid
33 
34  type(esmf_field), public :: skin_temp_target_grid
35 
36  type(esmf_field), public :: srflag_target_grid
37 
38  type(esmf_field), public :: snow_liq_equiv_target_grid
39 
40  type(esmf_field), public :: snow_depth_target_grid
41 
42  type(esmf_field), public :: soil_temp_target_grid
43 
44  type(esmf_field), public :: soilm_liq_target_grid
45 
46  type(esmf_field), public :: soilm_tot_target_grid
47 
48  type(esmf_field), public :: t2m_target_grid
49 
50  type(esmf_field), public :: tprcp_target_grid
51 
52  type(esmf_field), public :: ustar_target_grid
53 
54  type(esmf_field), public :: z0_target_grid
55 
56  type(esmf_field), public :: lai_target_grid
57 
58 
59 ! nst fields
60  type(esmf_field), public :: c_d_target_grid
61 
62  type(esmf_field), public :: c_0_target_grid
63 
64  type(esmf_field), public :: d_conv_target_grid
65 
66  type(esmf_field), public :: dt_cool_target_grid
67 
68  type(esmf_field), public :: ifd_target_grid
69 
71  type(esmf_field), public :: qrain_target_grid
72 
73  type(esmf_field), public :: tref_target_grid
74 
75  type(esmf_field), public :: w_d_target_grid
76 
77  type(esmf_field), public :: w_0_target_grid
78 
79  type(esmf_field), public :: xs_target_grid
80 
82  type(esmf_field), public :: xt_target_grid
83 
85  type(esmf_field), public :: xu_target_grid
86 
88  type(esmf_field), public :: xv_target_grid
89 
91  type(esmf_field), public :: xz_target_grid
92 
93  type(esmf_field), public :: xtts_target_grid
94 
95  type(esmf_field), public :: xzts_target_grid
96 
97  type(esmf_field), public :: z_c_target_grid
98 
99  type(esmf_field), public :: zm_target_grid
100 
101 
102  public :: cleanup_target_nst_data
103  public :: cleanup_target_sfc_data
104 
105  contains
106 
111  subroutine cleanup_target_sfc_data
113  implicit none
114 
115  integer :: rc
116 
117  print*,"- DESTROY TARGET GRID SURFACE FIELDS."
118  call esmf_fielddestroy(t2m_target_grid, rc=rc)
119  call esmf_fielddestroy(q2m_target_grid, rc=rc)
120  call esmf_fielddestroy(tprcp_target_grid, rc=rc)
121  call esmf_fielddestroy(f10m_target_grid, rc=rc)
122  call esmf_fielddestroy(ffmm_target_grid, rc=rc)
123  call esmf_fielddestroy(ustar_target_grid, rc=rc)
124  call esmf_fielddestroy(snow_liq_equiv_target_grid, rc=rc)
125  call esmf_fielddestroy(snow_depth_target_grid, rc=rc)
126  call esmf_fielddestroy(seaice_fract_target_grid, rc=rc)
127  call esmf_fielddestroy(seaice_depth_target_grid, rc=rc)
128  call esmf_fielddestroy(seaice_skin_temp_target_grid, rc=rc)
129  call esmf_fielddestroy(srflag_target_grid, rc=rc)
130  call esmf_fielddestroy(skin_temp_target_grid, rc=rc)
131  call esmf_fielddestroy(canopy_mc_target_grid, rc=rc)
132  call esmf_fielddestroy(lai_target_grid,rc=rc)
133  call esmf_fielddestroy(z0_target_grid, rc=rc)
134  call esmf_fielddestroy(soil_temp_target_grid, rc=rc)
135  call esmf_fielddestroy(soilm_tot_target_grid, rc=rc)
136  call esmf_fielddestroy(soilm_liq_target_grid, rc=rc)
137 
138  end subroutine cleanup_target_sfc_data
139 
144  subroutine cleanup_target_nst_data
146  implicit none
147 
148  integer :: rc
149 
150  print*,"- DESTROY TARGET GRID NST DATA."
151 
152  call esmf_fielddestroy(c_d_target_grid, rc=rc)
153  call esmf_fielddestroy(c_0_target_grid, rc=rc)
154  call esmf_fielddestroy(d_conv_target_grid, rc=rc)
155  call esmf_fielddestroy(dt_cool_target_grid, rc=rc)
156  call esmf_fielddestroy(ifd_target_grid, rc=rc)
157  call esmf_fielddestroy(qrain_target_grid, rc=rc)
158  call esmf_fielddestroy(tref_target_grid, rc=rc)
159  call esmf_fielddestroy(w_d_target_grid, rc=rc)
160  call esmf_fielddestroy(w_0_target_grid, rc=rc)
161  call esmf_fielddestroy(xs_target_grid, rc=rc)
162  call esmf_fielddestroy(xt_target_grid, rc=rc)
163  call esmf_fielddestroy(xu_target_grid, rc=rc)
164  call esmf_fielddestroy(xv_target_grid, rc=rc)
165  call esmf_fielddestroy(xz_target_grid, rc=rc)
166  call esmf_fielddestroy(xtts_target_grid, rc=rc)
167  call esmf_fielddestroy(xzts_target_grid, rc=rc)
168  call esmf_fielddestroy(z_c_target_grid, rc=rc)
169  call esmf_fielddestroy(zm_target_grid, rc=rc)
170 
171  end subroutine cleanup_target_nst_data
172 
173  end module surface_target_data
type(esmf_field), public d_conv_target_grid
Thickness of free convection layer.
+
type(esmf_field), public zm_target_grid
Oceanic mixed layer depth.
+
type(esmf_field), public canopy_mc_target_grid
Canopy moisture content.
+
type(esmf_field), public f10m_target_grid
log((z0+10)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public c_d_target_grid
Coefficient 2 to calculate d(tz)/d(ts).
+
type(esmf_field), public ifd_target_grid
Model mode index.
+
type(esmf_field), public w_d_target_grid
Coefficient 4 to calculate d(tz)/d(ts).
+
type(esmf_field), public xtts_target_grid
d(xt)/d(ts).
+
type(esmf_field), public srflag_target_grid
Snow/rain flag.
+
type(esmf_field), public xu_target_grid
u-current content in diurnal thermocline layer.
+
Module to hold ESMF fields associated with the target grid surface data.
+
type(esmf_field), public tprcp_target_grid
Precipitation.
+
type(esmf_field), public xzts_target_grid
d(xz)/d(ts).
+
type(esmf_field), public c_0_target_grid
Coefficient 1 to calculate d(tz)/d(ts).
+
type(esmf_field), public soilm_liq_target_grid
3-d liquid soil moisture.
+
type(esmf_field), public xz_target_grid
Diurnal thermocline layer thickness.
+
type(esmf_field), public z_c_target_grid
Sub-layer cooling thickness.
+
type(esmf_field), public lai_target_grid
Leaf area index.
+
type(esmf_field), public seaice_fract_target_grid
Sea ice fraction.
+
type(esmf_field), public snow_liq_equiv_target_grid
Liquid equivalent snow depth.
+
type(esmf_field), public qrain_target_grid
Sensible heat flux due to rainfall.
+
type(esmf_field), public soilm_tot_target_grid
3-d total soil moisture.
+
type(esmf_field), public seaice_depth_target_grid
Sea ice depth.
+
type(esmf_field), public ffmm_target_grid
log((z0+z1)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public seaice_skin_temp_target_grid
Sea ice skin temperature.
+
type(esmf_field), public xs_target_grid
Salinity content in diurnal thermocline layer.
+
type(esmf_field), public ustar_target_grid
Friction velocity.
+
type(esmf_field), public tref_target_grid
Reference temperature.
+
type(esmf_field), public q2m_target_grid
2-m specific humidity.
+
type(esmf_field), public skin_temp_target_grid
Skin temperature/sst.
+
type(esmf_field), public xv_target_grid
v-current content in diurnal thermocline layer.
+
type(esmf_field), public xt_target_grid
Heat content in diurnal thermocline layer.
+
type(esmf_field), public z0_target_grid
Roughness length.
+
type(esmf_field), public t2m_target_grid
2-m temperatrure.
+
subroutine, public cleanup_target_nst_data
Free up memory once the target grid nst fields are no longer needed.
+
type(esmf_field), public soil_temp_target_grid
3-d soil temperature.
+
subroutine, public cleanup_target_sfc_data
Free up memory once the target grid surface fields are no longer needed.
+
type(esmf_field), public dt_cool_target_grid
Sub-layer cooling amount.
+
type(esmf_field), public w_0_target_grid
Coefficient 3 to calculate d(tz)/d(ts).
+
type(esmf_field), public snow_depth_target_grid
Physical snow depth.
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/sync_off.png b/ver-1.11.0/chgres_cube/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/sync_on.png b/ver-1.11.0/chgres_cube/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/tab_a.png b/ver-1.11.0/chgres_cube/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/tab_b.png b/ver-1.11.0/chgres_cube/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/chgres_cube/tabs.css b/ver-1.11.0/chgres_cube/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/chgres_cube/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.html b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.html new file mode 100644 index 000000000..f601cb5b0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.html @@ -0,0 +1,159 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/thompson_mp_climo_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
thompson_mp_climo_data.F90 File Reference
+
+
+ +

Process Thompson climatological MP data. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Modules

module  thompson_mp_climo_data
 Module to read the Thompson climatological MP data file and set up the associated esmf field and grid objects.
 
+ + + + + + + +

+Functions/Subroutines

subroutine, public thompson_mp_climo_data::cleanup_thomp_mp_climo_input_data
 Free up memory associated with this module. More...
 
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. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Variables

integer thompson_mp_climo_data::i_thomp_mp_climo
 i-dimension of Thompson climo data More...
 
integer thompson_mp_climo_data::j_thomp_mp_climo
 j-dimension of Thompson climo data More...
 
integer, public thompson_mp_climo_data::lev_thomp_mp_climo
 number of vert lvls of Thompson climo data More...
 
type(esmf_field), public thompson_mp_climo_data::qnifa_climo_input_grid
 number concentration of ice friendly nuclei. More...
 
type(esmf_field), public thompson_mp_climo_data::qnwfa_climo_input_grid
 number concentration of water friendly nuclei. More...
 
type(esmf_grid) thompson_mp_climo_data::thomp_mp_climo_grid
 esmf grid object for Thompson data grid More...
 
type(esmf_field), public thompson_mp_climo_data::thomp_pres_climo_input_grid
 3-d pressure of the Thompson climo data points More...
 
+

Detailed Description

+

Process Thompson climatological MP data.

+
Author
George Gayno NOAA/EMC
+ +

Definition in file thompson_mp_climo_data.F90.

+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.js b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.js new file mode 100644 index 000000000..3a65641b8 --- /dev/null +++ b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90.js @@ -0,0 +1,12 @@ +var thompson__mp__climo__data_8F90 = +[ + [ "cleanup_thomp_mp_climo_input_data", "thompson__mp__climo__data_8F90.html#a50ac430a78518b0963e23517cba243bb", null ], + [ "read_thomp_mp_climo_data", "thompson__mp__climo__data_8F90.html#a92a071650b2c4368ae233ac8b85783b4", null ], + [ "i_thomp_mp_climo", "thompson__mp__climo__data_8F90.html#aaf3901f6b3b2f1948f6d7f2a951258ed", null ], + [ "j_thomp_mp_climo", "thompson__mp__climo__data_8F90.html#a1d84f17788791eb428a10712857de1a2", null ], + [ "lev_thomp_mp_climo", "thompson__mp__climo__data_8F90.html#a970d00615bea70ba6284e9df400286e4", null ], + [ "qnifa_climo_input_grid", "thompson__mp__climo__data_8F90.html#a4312b55ea121b9c515619b06e80cf2c3", null ], + [ "qnwfa_climo_input_grid", "thompson__mp__climo__data_8F90.html#a6a074322beb120491a9cac33db176369", null ], + [ "thomp_mp_climo_grid", "thompson__mp__climo__data_8F90.html#a425db5926a07c6a424bdf6b51a6bd8d2", null ], + [ "thomp_pres_climo_input_grid", "thompson__mp__climo__data_8F90.html#a8e3f63f7487a4a397dec4e425c76c46b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90_source.html b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90_source.html new file mode 100644 index 000000000..1a5c6f1ac --- /dev/null +++ b/ver-1.11.0/chgres_cube/thompson__mp__climo__data_8F90_source.html @@ -0,0 +1,120 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/thompson_mp_climo_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
thompson_mp_climo_data.F90
+
+
+Go to the documentation of this file.
1 
4 
10 
11  use esmf
12  use netcdf
15  use utilities, only : error_handler, netcdf_err
16 
17  implicit none
18 
19  private
20 
21  integer :: i_thomp_mp_climo
22 
23  integer :: j_thomp_mp_climo
24 
25  integer, public :: lev_thomp_mp_climo
26 
27 
28  type(esmf_grid) :: thomp_mp_climo_grid
29 
30 
31  type(esmf_field), public :: qnifa_climo_input_grid
32 
34  type(esmf_field), public :: qnwfa_climo_input_grid
35 
37  type(esmf_field), public :: thomp_pres_climo_input_grid
38 
40 
41  public :: read_thomp_mp_climo_data
43 
44  contains
45 
50  subroutine read_thomp_mp_climo_data
51 
52  implicit none
53 
54  integer :: error, ncid, rc, clb(2), cub(2)
55  integer :: i, j, localpet, npets, id_var
56  integer :: jda(8), jdow, jdoy, jday, id_dim
57  integer :: mm, mmm, mmp, mon1, mon2
58 
59  real(esmf_kind_r8), allocatable :: dummy3d(:,:,:)
60  real(esmf_kind_r8), allocatable :: dummy3d_mon1(:,:,:)
61  real(esmf_kind_r8), allocatable :: dummy3d_mon2(:,:,:)
62  real(esmf_kind_r8), pointer :: lat_ptr(:,:), lon_ptr(:,:)
63  real(esmf_kind_r8), allocatable :: lons(:), lats(:)
64  real :: rjday, dayhf(13), wei1m, wei2m
65 
66  type(esmf_vm) :: vm
67 
68  type(esmf_polekind_flag) :: polekindflag(2)
69 
70  data dayhf/ 15.5, 45.0, 74.5,105.0,135.5,166.0, &
71  196.5,227.5,258.0,288.5,319.0,349.5,380.5/
72 
73 !-----------------------------------------------------------------------------------
74 ! Open the file and read the grid dimensions and latitude/longitude.
75 !-----------------------------------------------------------------------------------
76 
77  print*,"- READ THOMP_MP_CLIMO_FILE: ", trim(thomp_mp_climo_file)
78  error=nf90_open(trim(thomp_mp_climo_file),nf90_nowrite,ncid)
79  call netcdf_err(error, 'opening: '//trim(thomp_mp_climo_file) )
80 
81  error=nf90_inq_dimid(ncid, 'lat', id_dim)
82  call netcdf_err(error, 'reading lat id')
83  error=nf90_inquire_dimension(ncid,id_dim,len=j_thomp_mp_climo)
84  call netcdf_err(error, 'reading lat')
85 
86  error=nf90_inq_dimid(ncid, 'lon', id_dim)
87  call netcdf_err(error, 'reading lon id')
88  error=nf90_inquire_dimension(ncid,id_dim,len=i_thomp_mp_climo)
89  call netcdf_err(error, 'reading lon')
90 
91  error=nf90_inq_dimid(ncid, 'plev', id_dim)
92  call netcdf_err(error, 'reading plev id')
93  error=nf90_inquire_dimension(ncid,id_dim,len=lev_thomp_mp_climo)
94  call netcdf_err(error, 'reading plev')
95 
96  allocate(lons(i_thomp_mp_climo))
97  allocate(lats(j_thomp_mp_climo))
98  error=nf90_inq_varid(ncid, 'lon', id_var)
99  call netcdf_err(error, 'reading lon field id' )
100  error=nf90_get_var(ncid, id_var, lons)
101  call netcdf_err(error, 'reading grid longitude' )
102  error=nf90_inq_varid(ncid, 'lat', id_var)
103  call netcdf_err(error, 'reading lat field id' )
104  error=nf90_get_var(ncid, id_var, lats)
105  call netcdf_err(error, 'reading grid latitude' )
106 
107 !-----------------------------------------------------------------------------------
108 ! Now that we have the grid information, create the esmf grid object.
109 !-----------------------------------------------------------------------------------
110 
111  print*,"- CALL VMGetGlobal"
112  call esmf_vmgetglobal(vm, rc=rc)
113  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
114  call error_handler("IN VMGetGlobal", rc)
115 
116  print*,"- CALL VMGet"
117  call esmf_vmget(vm, localpet=localpet, petcount=npets, rc=rc)
118  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
119  call error_handler("IN VMGet", rc)
120 
121  polekindflag(1:2) = esmf_polekind_monopole
122 
123  print*,"- CALL GridCreate1PeriDim FOR THOMP MP CLIMO GRID."
124  thomp_mp_climo_grid = esmf_gridcreate1peridim(minindex=(/1,1/), &
125  maxindex=(/i_thomp_mp_climo,j_thomp_mp_climo/), &
126  polekindflag=polekindflag, &
127  periodicdim=1, &
128  poledim=2, &
129  coordsys=esmf_coordsys_sph_deg, &
130  regdecomp=(/1,npets/), &
131  indexflag=esmf_index_global, rc=rc)
132  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
133  call error_handler("IN GridCreate1PeriDim", rc)
134 
135  print*,"- CALL GridAddCoord FOR THOMP MP CLIMO GRID."
136  call esmf_gridaddcoord(thomp_mp_climo_grid, &
137  staggerloc=esmf_staggerloc_center, rc=rc)
138  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
139  call error_handler("IN GridAddCoord", rc)
140 
141 !-----------------------------------------------------------------------------------
142 ! Set the grid object lat/lon.
143 !-----------------------------------------------------------------------------------
144 
145  print*,"- CALL GridGetCoord FOR INPUT GRID X-COORD."
146  nullify(lon_ptr)
147  call esmf_gridgetcoord(thomp_mp_climo_grid, &
148  staggerloc=esmf_staggerloc_center, &
149  coorddim=1, &
150  farrayptr=lon_ptr, rc=rc)
151  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
152  call error_handler("IN GridGetCoord", rc)
153 
154  print*,"- CALL GridGetCoord FOR INPUT GRID Y-COORD."
155  nullify(lat_ptr)
156  call esmf_gridgetcoord(thomp_mp_climo_grid, &
157  staggerloc=esmf_staggerloc_center, &
158  coorddim=2, &
159  computationallbound=clb, &
160  computationalubound=cub, &
161  farrayptr=lat_ptr, rc=rc)
162  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
163  call error_handler("IN GridGetCoord", rc)
164 
165  do i = clb(1), cub(1)
166  lon_ptr(i,:) = lons(i)
167  enddo
168 
169  do j = clb(2), cub(2)
170  lat_ptr(:,j) = lats(j)
171  enddo
172 
173 !-----------------------------------------------------------------------------------
174 ! Create esmf fields for the two tracers and 3-d pressure.
175 !-----------------------------------------------------------------------------------
176 
177  print*,"- CALL FieldCreate FOR QNIFA INPUT CLIMO."
178  qnifa_climo_input_grid = esmf_fieldcreate(thomp_mp_climo_grid, &
179  typekind=esmf_typekind_r8, &
180  staggerloc=esmf_staggerloc_center, &
181  ungriddedlbound=(/1/), &
182  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
183  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
184  call error_handler("IN FieldCreate", rc)
185 
186  print*,"- CALL FieldCreate FOR QNWFA INPUT CLIMO."
187  qnwfa_climo_input_grid = esmf_fieldcreate(thomp_mp_climo_grid, &
188  typekind=esmf_typekind_r8, &
189  staggerloc=esmf_staggerloc_center, &
190  ungriddedlbound=(/1/), &
191  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
192  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
193  call error_handler("IN FieldCreate", rc)
194 
195  print*,"- CALL FieldCreate FOR THOMP PRESS CLIMO."
197  typekind=esmf_typekind_r8, &
198  staggerloc=esmf_staggerloc_center, &
199  ungriddedlbound=(/1/), &
200  ungriddedubound=(/lev_thomp_mp_climo/), rc=rc)
201  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
202  call error_handler("IN FieldCreate", rc)
203 
204 !-----------------------------------------------------------------------------------
205 ! Data are monthly and valid at the 15th of the month. Compute time interpolation
206 ! weights for the current cycle.
207 !-----------------------------------------------------------------------------------
208 
209  jda=0
210  jda(1) = 2007
211  if (cycle_mon == 2 .and. cycle_day == 29) then ! leap year
212  jda(2) = 3
213  jda(3) = 1
214  else
215  jda(2) = cycle_mon
216  jda(3) = cycle_day
217  endif
218 
219  jda(5) = cycle_hour
220  jdow = 0
221  jdoy = 0
222  jday = 0
223  call w3doxdat(jda,jdow,jdoy,jday)
224  rjday = float(jdoy) + float(jda(5)) / 24.
225  if(rjday < dayhf(1)) rjday = rjday + 365.
226 
227  do mm=1,12
228  mmm = mm
229  mmp = mm + 1
230  if(rjday >= dayhf(mmm) .and. rjday < dayhf(mmp)) then
231  mon1 = mmm
232  mon2 = mmp
233  exit
234  endif
235  enddo
236 
237  wei1m = (dayhf(mon2)-rjday)/(dayhf(mon2)-dayhf(mon1))
238  wei2m = 1.0 - wei1m
239 
240  if (mon2==13) mon2=1
241 
242  print*,"- BOUNDING MONTHS AND INTERPOLATION WEIGHTS: ", mon1, wei1m, mon2, wei2m
243 
244 !-----------------------------------------------------------------------------------
245 ! Read tracers and 3-d pressure for each bounding month. Then linearly
246 ! interpolate in time.
247 !-----------------------------------------------------------------------------------
248 
249  if (localpet == 0) then
251  dummy3d = 0.0
252  allocate(dummy3d_mon1(i_thomp_mp_climo, j_thomp_mp_climo, lev_thomp_mp_climo))
253  dummy3d_mon1 = 0.0
254  allocate(dummy3d_mon2(i_thomp_mp_climo, j_thomp_mp_climo, lev_thomp_mp_climo))
255  dummy3d_mon2 = 0.0
256  else
257  allocate(dummy3d(0,0,0))
258  allocate(dummy3d_mon1(0,0,0))
259  allocate(dummy3d_mon2(0,0,0))
260  endif
261 
262  if (localpet == 0) then
263  print*,"- READ QNIFA FOR BOUNDING MONTH 1"
264  error=nf90_inq_varid(ncid, 'nifa', id_var)
265  call netcdf_err(error, 'reading nifa field id' )
266  error=nf90_get_var(ncid, id_var, dummy3d_mon1, start=(/1,1,1,mon1/), &
268  call netcdf_err(error, 'reading nifa month1 field' )
269  print*,"- READ QNIFA FOR BOUNDING MONTH 2"
270  error=nf90_get_var(ncid, id_var, dummy3d_mon2, start=(/1,1,1,mon2/), &
272  call netcdf_err(error, 'reading nifa month2 field' )
273  dummy3d(:,:,:) = wei1m * dummy3d_mon1 + wei2m * dummy3d_mon2
274  endif
275 
276  print*,"- CALL FieldScatter FOR qnifa input climo."
277  call esmf_fieldscatter(qnifa_climo_input_grid, dummy3d, rootpet=0, rc=rc)
278  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
279  call error_handler("IN FieldScatter", rc)
280 
281  if (localpet == 0) then
282  print*,"- READ QNWFA FOR BOUNDING MONTH 1"
283  error=nf90_inq_varid(ncid, 'nwfa', id_var)
284  call netcdf_err(error, 'reading nwfa field id' )
285  error=nf90_get_var(ncid, id_var, dummy3d_mon1, start=(/1,1,1,mon1/), &
287  call netcdf_err(error, 'reading nwfa month1 field' )
288  print*,"- READ QNWFA FOR BOUNDING MONTH 2"
289  error=nf90_get_var(ncid, id_var, dummy3d_mon2, start=(/1,1,1,mon2/), &
291  call netcdf_err(error, 'reading nwfa month2 field' )
292  dummy3d(:,:,:) = wei1m * dummy3d_mon1 + wei2m * dummy3d_mon2
293  endif
294 
295  print*,"- CALL FieldScatter FOR qnwfa input climo."
296  call esmf_fieldscatter(qnwfa_climo_input_grid, dummy3d, rootpet=0, rc=rc)
297  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
298  call error_handler("IN FieldScatter", rc)
299 
300  if (localpet == 0) then
301  print*,"- READ PRESSURE FOR BOUNDING MONTH 1"
302  error=nf90_inq_varid(ncid, 'prs', id_var)
303  call netcdf_err(error, 'reading prs field id' )
304  error=nf90_get_var(ncid, id_var, dummy3d_mon1, start=(/1,1,1,mon1/), &
306  call netcdf_err(error, 'reading prs month1 field' )
307  print*,"- READ PRESSURE FOR BOUNDING MONTH 2"
308  error=nf90_get_var(ncid, id_var, dummy3d_mon2, start=(/1,1,1,mon2/), &
310  call netcdf_err(error, 'reading prs month2 field' )
311  dummy3d(:,:,:) = wei1m * dummy3d_mon1 + wei2m * dummy3d_mon2
312  endif
313 
314  print*,"- CALL FieldScatter FOR thomp press."
315  call esmf_fieldscatter(thomp_pres_climo_input_grid, dummy3d, rootpet=0, rc=rc)
316  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
317  call error_handler("IN FieldScatter", rc)
318 
319  error=nf90_close(ncid)
320 
321  deallocate(lons, lats, dummy3d, dummy3d_mon1, dummy3d_mon2)
322 
323  end subroutine read_thomp_mp_climo_data
324 
330  implicit none
331 
332  integer :: rc
333 
334  call esmf_griddestroy(thomp_mp_climo_grid, rc=rc)
335  call esmf_fielddestroy(thomp_pres_climo_input_grid, rc=rc)
336  call esmf_fielddestroy(qnifa_climo_input_grid, rc=rc)
337  call esmf_fielddestroy(qnwfa_climo_input_grid, rc=rc)
338 
339  end subroutine cleanup_thomp_mp_climo_input_data
340 
341  end module thompson_mp_climo_data
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public lev_thomp_mp_climo
number of vert lvls of Thompson climo data
+
integer, public cycle_mon
Cycle month.
+
type(esmf_field), public qnifa_climo_input_grid
number concentration of ice friendly nuclei.
+
type(esmf_field), public qnwfa_climo_input_grid
number concentration of water friendly nuclei.
+
subroutine, public read_thomp_mp_climo_data
Read Thompson climatological MP data file and time interpolate data to current cycle time...
+
integer, public cycle_day
Cycle day.
+
character(len=500), public thomp_mp_climo_file
Path/name to the Thompson MP climatology file.
+
Module to read the Thompson climatological MP data file and set up the associated esmf field and grid...
+
integer i_thomp_mp_climo
i-dimension of Thompson climo data
+
integer j_thomp_mp_climo
j-dimension of Thompson climo data
+
type(esmf_field), public thomp_pres_climo_input_grid
3-d pressure of the Thompson climo data points
+
type(esmf_grid) thomp_mp_climo_grid
esmf grid object for Thompson data grid
+
subroutine, public cleanup_thomp_mp_climo_input_data
Free up memory associated with this module.
+
integer, public cycle_hour
Cycle hour.
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/utils_8F90.html b/ver-1.11.0/chgres_cube/utils_8F90.html new file mode 100644 index 000000000..116a592a2 --- /dev/null +++ b/ver-1.11.0/chgres_cube/utils_8F90.html @@ -0,0 +1,645 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/utils.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utils.F90 File Reference
+
+
+ +

Contains utility routines. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine utilities::check_cnwat (cnwat, i_input, j_input)
 When using GEFS data, some points on the target grid have unreasonable canpy moisture content, so zero out any locations with unrealistic canopy moisture values (>0.5). More...
 
subroutine utilities::check_soilt (soilt, landmask, skint, ICET_DEFAULT, i_input, j_input, lsoil_input)
 Check for and replace certain values in soil temperature. More...
 
subroutine utilities::DINT2P (PPIN, XXIN, NPIN, PPOUT, XXOUT, NPOUT, LINLOG, XMSG, IER)
 Pressure to presure vertical interpolation for tracers with linear or lnP interpolation. More...
 
subroutine utilities::error_handler (string, rc)
 General error handler. More...
 
subroutine utilities::handle_grib_error (vname, lev, method, value, varnum, read_from_input, iret, var, var8, var3d)
 Handle GRIB2 read error based on the user selected method in the varmap file. More...
 
subroutine utilities::netcdf_err (err, string)
 Error handler for netcdf. More...
 
recursive subroutine utilities::quicksort (a, first, last)
 Sort an array of values. More...
 
subroutine utilities::to_lower (strIn)
 Convert from upper to lowercase. More...
 
character(len=len(strin)) function utilities::to_upper (strIn)
 Convert string from lower to uppercase. More...
 
+

Detailed Description

+

Contains utility routines.

+ +

Definition in file utils.F90.

+

Function/Subroutine Documentation

+ +

◆ check_cnwat()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
subroutine utilities::check_cnwat (real(esmf_kind_r8), dimension(i_input,j_input), intent(inout) cnwat,
integer, intent(in) i_input,
integer, intent(in) j_input 
)
+
+ +

When using GEFS data, some points on the target grid have unreasonable canpy moisture content, so zero out any locations with unrealistic canopy moisture values (>0.5).

+
Parameters
+ + + + +
cnwat[input] 2-dimensional canopy moisture content
i_input[in] i-dimension of input grid
j_input[in] j-dimension of input grid
+
+
+
Author
Larissa Reames CIMMS/NSSL
+ +

Definition at line 265 of file utils.F90.

+ +
+
+ +

◆ check_soilt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine utilities::check_soilt (real(esmf_kind_r8), dimension(i_input,j_input,lsoil_input), intent(inout) soilt,
integer(esmf_kind_i4), dimension(i_input,j_input), intent(in) landmask,
real(esmf_kind_r8), dimension(i_input,j_input), intent(in) skint,
real, intent(in) ICET_DEFAULT,
integer, intent(in) i_input,
integer, intent(in) j_input,
integer, intent(in) lsoil_input 
)
+
+ +

Check for and replace certain values in soil temperature.

+

At open water points (landmask=0) use skin temperature as a filler value. At land points (landmask=1) with excessive soil temperature, replace soil temperature with skin temperature. In GEFSv12.0 data there are some erroneous missing values at land points which this corrects. At sea ice points (landmask=2), store a default ice column temperature because grib2 files do not have ice column temperature which FV3 expects at these points.

+
Parameters
+ + + + + + + + +
soilt[inout] 3-dimensional soil temperature arrray
landmask[in] landmask of the input grid
skint[in] 2-dimensional skin temperature array
ICET_DEFAULT[in] Default temperature to apply at ice points
i_input[in] i-dimension of input grid
j_input[in] j-dimension of input grid
lsoil_input[in] soil layers dimension of input grid
+
+
+
Author
Larissa Reames CIMMS/NSSL
+ +

Definition at line 230 of file utils.F90.

+ +
+
+ +

◆ DINT2P()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine utilities::DINT2P (real*8, dimension(npin) PPIN,
real*8, dimension(npin) XXIN,
integer NPIN,
real*8, dimension(npout) PPOUT,
real*8, dimension(npout) XXOUT,
integer NPOUT,
integer LINLOG,
real*8 XMSG,
integer IER 
)
+
+ +

Pressure to presure vertical interpolation for tracers with linear or lnP interpolation.

+

Input tracers on pres levels are interpolated to the target output pressure levels. The matching levels of input and output will keep the same. Extrapolation is also allowed but needs caution. The routine is mostly for GFSV16 combined grib2 input when spfh has missing levels in low and mid troposphere from U/T/HGT/DZDT.

+
Parameters
+ + + + + + + + + + +
[in]ppin1d input pres levs
[in]xxin1d input tracer
[in]npinnumber of input levs
[in]ppout1d target pres levs
[out]xxout1d interpolated tracer
[in]npoutnumber of target levs
[in]linloginterp method.1:linear;not 1:log;neg:extrp allowed
[in]xmsgfill values of missing levels (-999.0)
[out]iererror status. non 0: failed interpolation
+
+
+
Author
Jili Dong NCEP/EMC
+
+
Date
2021/07/30
+ +

Definition at line 301 of file utils.F90.

+ +
+
+ +

◆ error_handler()

+ +
+
+ + + + + + + + + + + + + + + + + + +
subroutine utilities::error_handler (character(len=*), intent(in) string,
integer, intent(in) rc 
)
+
+ +

General error handler.

+
Parameters
+ + + +
[in]stringerror message
[in]rcerror status code
+
+
+ +

Definition at line 13 of file utils.F90.

+ +
+
+ +

◆ handle_grib_error()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine utilities::handle_grib_error (character(len=20), intent(in) vname,
character(len=20), intent(in) lev,
character(len=20), intent(in) method,
real(esmf_kind_r4), intent(in) value,
integer, intent(in) varnum,
logical, dimension(:), intent(inout) read_from_input,
integer, intent(inout) iret,
real(esmf_kind_r4), dimension(:,:), intent(inout), optional var,
real(esmf_kind_r8), dimension(:,:), intent(inout), optional var8,
real(esmf_kind_r8), dimension(:,:,:), intent(inout), optional var3d 
)
+
+ +

Handle GRIB2 read error based on the user selected method in the varmap file.

+
Parameters
+ + + + + + + + + + + +
[in]vnamegrib2 variable name
[in]levgrib2 variable level
[in]methodhow missing data is handled
[in]valuefill value for missing data
[in]varnumgrib2 variable number
[in,out]iretreturn status code
[in,out]var4-byte array of corrected data
[in,out]var88-byte array of corrected data
[in,out]var3d3-d array of corrected data
[in,out]read_from_inputlogical array indicating if variable was read in
+
+
+
Author
Larissa Reames
+ +

Definition at line 121 of file utils.F90.

+ +
+
+ +

◆ netcdf_err()

+ +
+
+ + + + + + + + + + + + + + + + + + +
subroutine utilities::netcdf_err (integer, intent(in) err,
character(len=*), intent(in) string 
)
+
+ +

Error handler for netcdf.

+
Parameters
+ + + +
[in]errerror status code
[in]stringerror message
+
+
+ +

Definition at line 35 of file utils.F90.

+ +
+
+ +

◆ quicksort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
recursive subroutine utilities::quicksort (real*8, dimension(*) a,
integer first,
integer last 
)
+
+ +

Sort an array of values.

+
Parameters
+ + + + +
athe sorted array
firstthe first value of sorted array
lastthe last value of sorted array
+
+
+
Author
Jili Dong NOAA/EMC
+ +

Definition at line 187 of file utils.F90.

+ +
+
+ +

◆ to_lower()

+ +
+
+ + + + + + + + +
subroutine utilities::to_lower (character(len=*), intent(inout) strIn)
+
+ +

Convert from upper to lowercase.

+
Author
Clive Page
+

Adapted from http://www.star.le.ac.uk/~cgp/fortran.html (25 May 2012)

+
Parameters
+ + +
[in,out]strInstring to convert
+
+
+ +

Definition at line 88 of file utils.F90.

+ +
+
+ +

◆ to_upper()

+ +
+
+ + + + + + + + +
character(len=len(strin)) function utilities::to_upper (character(len=*), intent(in) strIn)
+
+ +

Convert string from lower to uppercase.

+
Author
Clive Page
+

Adapted from http://www.star.le.ac.uk/~cgp/fortran.html (25 May 2012)

+
Parameters
+ + +
[in]strInstring to convert
+
+
+
Returns
strOut string in uppercase
+ +

Definition at line 63 of file utils.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/utils_8F90.js b/ver-1.11.0/chgres_cube/utils_8F90.js new file mode 100644 index 000000000..af3722f10 --- /dev/null +++ b/ver-1.11.0/chgres_cube/utils_8F90.js @@ -0,0 +1,12 @@ +var utils_8F90 = +[ + [ "check_cnwat", "utils_8F90.html#a87bd260adf1a2dbe0f7854a51fdc76fb", null ], + [ "check_soilt", "utils_8F90.html#ae1086b84163bee323fd34e6dda323cd7", null ], + [ "DINT2P", "utils_8F90.html#a5d8a15ebaf1abc477eb75a9316da19e6", null ], + [ "error_handler", "utils_8F90.html#a880983c1fd6c2efccdca6191fce95d31", null ], + [ "handle_grib_error", "utils_8F90.html#abe5a05b2f04a8f449d7fd380ec3e1e8e", null ], + [ "netcdf_err", "utils_8F90.html#a7de511c01f6bde6e69343d11aca654c9", null ], + [ "quicksort", "utils_8F90.html#a3b3f015cc68280f8c0f524b797b56842", null ], + [ "to_lower", "utils_8F90.html#a8a6f35583bd6c103031a9328be4c7b6a", null ], + [ "to_upper", "utils_8F90.html#ae164531a53081bf0e1bc30579c8ba1b1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/utils_8F90_source.html b/ver-1.11.0/chgres_cube/utils_8F90_source.html new file mode 100644 index 000000000..46d483300 --- /dev/null +++ b/ver-1.11.0/chgres_cube/utils_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/utils.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utils.F90
+
+
+Go to the documentation of this file.
1 module utilities
2 
3 contains
7 
12  subroutine error_handler(string, rc)
13 
14  use mpi
15 
16  implicit none
17 
18  character(len=*), intent(in) :: string
19 
20  integer, intent(in) :: rc
21 
22  integer :: ierr
23 
24  print*,"- FATAL ERROR: ", trim(string)
25  print*,"- IOSTAT IS: ", rc
26  call mpi_abort(mpi_comm_world, 999, ierr)
27 
28  end subroutine error_handler
29 
34  subroutine netcdf_err( err, string )
35 
36  use mpi
37  use netcdf
38 
39  implicit none
40  integer, intent(in) :: err
41  character(len=*), intent(in) :: string
42  character(len=256) :: errmsg
43  integer :: iret
44 
45  if( err.EQ.nf90_noerr )return
46  errmsg = nf90_strerror(err)
47  print*,''
48  print*,'FATAL ERROR: ', trim(string), ': ', trim(errmsg)
49  print*,'STOP.'
50  call mpi_abort(mpi_comm_world, 999, iret)
51 
52  return
53  end subroutine netcdf_err
54 
62 function to_upper(strIn) result(strOut)
63 
64  implicit none
65 
66  character(len=*), intent(in) :: strin
67  character(len=len(strIn)) :: strout
68  integer :: i,j
69 
70  do i = 1, len(strin)
71  j = iachar(strin(i:i))
72  if (j>= iachar("a") .and. j<=iachar("z") ) then
73  strout(i:i) = achar(iachar(strin(i:i))-32)
74  else
75  strout(i:i) = strin(i:i)
76  end if
77  end do
78 
79 end function to_upper
80 
87 subroutine to_lower(strIn)
88 
89  implicit none
90 
91  character(len=*), intent(inout) :: strIn
92  character(len=len(strIn)) :: strOut
93  integer :: i,j
94 
95  do i = 1, len(strin)
96  j = iachar(strin(i:i))
97  if (j>= iachar("A") .and. j<=iachar("Z") ) then
98  strout(i:i) = achar(iachar(strin(i:i))+32)
99  else
100  strout(i:i) = strin(i:i)
101  end if
102  end do
103  strin(:) = strout(:)
104 end subroutine to_lower
105 
120 subroutine handle_grib_error(vname,lev,method,value,varnum,read_from_input, iret,var,var8,var3d)
122  use, intrinsic :: ieee_arithmetic
123  use esmf
124 
125  implicit none
126 
127  real(esmf_kind_r4), intent(in) :: value
128  logical, intent(inout) :: read_from_input(:)
129  real(esmf_kind_r4), intent(inout), optional :: var(:,:)
130  real(esmf_kind_r8), intent(inout), optional :: var8(:,:)
131  real(esmf_kind_r8), intent(inout), optional :: var3d(:,:,:)
132 
133  character(len=20), intent(in) :: vname, lev, method
134  character(len=200) :: err_msg
135 
136  integer, intent(in) :: varnum
137  integer, intent(inout) :: iret
138 
139  iret = 0
140  if (varnum == 9999) then
141  print*, "WARNING: ", trim(vname), " NOT FOUND AT LEVEL ", lev, " IN EXTERNAL FILE ", &
142  "AND NO ENTRY EXISTS IN VARMAP TABLE. VARIABLE WILL NOT BE USED."
143  iret = 1
144 
145  return
146  endif
147 
148  if (trim(method) == "skip" ) then
149  print*, "WARNING: SKIPPING ", trim(vname), " IN FILE"
150  read_from_input(varnum) = .false.
151  iret = 1
152  elseif (trim(method) == "set_to_fill") then
153  print*, "WARNING: ,", trim(vname), " NOT AVAILABLE AT LEVEL ", trim(lev), &
154  ". SETTING EQUAL TO FILL VALUE OF ", value
155  if(present(var)) var(:,:) = value
156  if(present(var8)) var8(:,:) = value
157  if(present(var3d)) var3d(:,:,:) = value
158  elseif (trim(method) == "set_to_NaN") then
159  print*, "WARNING: ,", trim(vname), " NOT AVAILABLE AT LEVEL ", trim(lev), &
160  ". SETTING EQUAL TO NaNs"
161  if(present(var)) var(:,:) = ieee_value(var,ieee_quiet_nan)
162  if(present(var8)) var8(:,:) = ieee_value(var8,ieee_quiet_nan)
163  if(present(var3d)) var3d(:,:,:) = ieee_value(var3d,ieee_quiet_nan)
164  elseif (trim(method) == "stop") then
165  err_msg="READING " // trim(vname) // " at level " //lev// ". TO MAKE THIS NON-" // &
166  "FATAL, CHANGE STOP TO SKIP FOR THIS VARIABLE IN YOUR VARMAP FILE."
167  call error_handler(err_msg, iret)
168  elseif (trim(method) == "intrp") then
169  print*, "WARNING: ,"//trim(vname)//" NOT AVAILABLE AT LEVEL "//trim(lev)// &
170  ". WILL INTERPOLATE INTERSPERSED MISSING LEVELS AND/OR FILL MISSING"//&
171  " LEVELS AT EDGES."
172  else
173  err_msg="ERROR USING MISSING_VAR_METHOD. PLEASE SET VALUES IN" // &
174  " VARMAP TABLE TO ONE OF: set_to_fill, set_to_NaN, intrp, skip, or stop."
175  call error_handler(err_msg, 1)
176  endif
177 
178 end subroutine handle_grib_error
179 
186 recursive subroutine quicksort(a, first, last)
187  implicit none
188  real*8 a(*), x, t
189  integer first, last
190  integer i, j
191 
192  x = a( (first+last) / 2 )
193  i = first
194  j = last
195  do
196  do while (a(i) < x)
197  i=i+1
198  end do
199  do while (x < a(j))
200  j=j-1
201  end do
202  if (i >= j) exit
203  t = a(i); a(i) = a(j); a(j) = t
204  i=i+1
205  j=j-1
206  end do
207  if (first < i-1) call quicksort(a, first, i-1)
208  if (j+1 < last) call quicksort(a, j+1, last)
209 end subroutine quicksort
210 
228 
229 subroutine check_soilt(soilt, landmask, skint,ICET_DEFAULT,i_input,j_input,lsoil_input)
230  use esmf
231  implicit none
232  integer, intent(in) :: i_input, j_input, lsoil_input
233  real(esmf_kind_r8), intent(inout) :: soilt(i_input,j_input,lsoil_input)
234  real(esmf_kind_r8), intent(in) :: skint(i_input,j_input)
235  real, intent(in) :: ICET_DEFAULT
236  integer(esmf_kind_i4), intent(in) :: landmask(i_input,j_input)
237 
238  integer :: i, j, k
239 
240  do k=1,lsoil_input
241  do j = 1, j_input
242  do i = 1, i_input
243  if (landmask(i,j) == 0_esmf_kind_i4 ) then
244  soilt(i,j,k) = skint(i,j)
245  else if (landmask(i,j) == 1_esmf_kind_i4 .and. soilt(i,j,k) > 350.0_esmf_kind_r8) then
246  soilt(i,j,k) = skint(i,j)
247  else if (landmask(i,j) == 2_esmf_kind_i4 ) then
248  soilt(i,j,k) = icet_default
249  endif
250  enddo
251  enddo
252  enddo
253 end subroutine check_soilt
254 
263 
264 subroutine check_cnwat(cnwat,i_input,j_input)
265  use esmf
266  implicit none
267  integer, intent(in) :: i_input, j_input
268  real(esmf_kind_r8), intent(inout) :: cnwat(i_input,j_input)
269 
270  real(esmf_kind_r8) :: max_cnwat = 0.5
271 
272  integer :: i, j
273 
274  do i = 1,i_input
275  do j = 1,j_input
276  if (cnwat(i,j) .gt. max_cnwat) cnwat(i,j) = 0.0_esmf_kind_r8
277  enddo
278  enddo
279 end subroutine check_cnwat
280 
299 SUBROUTINE dint2p(PPIN,XXIN,NPIN,PPOUT,XXOUT,NPOUT &
300  ,LINLOG,XMSG,IER)
301  IMPLICIT NONE
302 
303 ! NCL code for pressure level interpolation
304 !
305 ! This code was designed for one simple task. It has since
306 ! been mangled and abused for assorted reasons. For example,
307 ! early gfortran compilers had some issues with automatic arrays.
308 ! Hence, the C-Wrapper was used to create 'work' arrays which
309 ! were then passed to this code. The original focused (non-NCL)
310 ! task was to handle PPIN & PPOUT that had the same 'monotonicity.'
311 ! Extra code was added to handle the more general case.
312 ! Blah-Blah: Punch line: it is embarrassingly convoluted!!!
313 !
314 ! ! input types
315  INTEGER NPIN,NPOUT,LINLOG,IER
316  real*8 PPIN(NPIN),XXIN(NPIN),PPOUT(NPOUT),XMSG
317  ! output
318  real*8 XXOUT(NPOUT)
319  ! work
320  real*8 PIN(NPIN),XIN(NPIN),P(NPIN),X(NPIN)
321  real*8 POUT(NPOUT),XOUT(NPOUT)
322 
323 ! local
324  INTEGER NP,NL,NLMAX,NLSAVE,NP1,NO1,N1,N2,LOGLIN, &
325  NLSTRT
326  real*8 SLOPE,PA,PB,PC
327 
328  loglin = abs(linlog)
329 
330 ! error check: enough points: pressures consistency?
331 
332  ier = 0
333  IF (npout.GT.0) THEN
334  DO np = 1,npout
335  xxout(np) = xmsg
336  END DO
337  END IF
338 ! Jili Dong input levels have to be the same as output levels:
339 ! we only interpolate for levels with missing variables
340 ! IF (.not. all(PPIN .eq. PPOUT)) IER = IER+1
341 
342  IF (npin.LT.2 .OR. npout.LT.1) ier = ier + 1
343 
344  IF (ier.NE.0) THEN
345 ! PRINT *,'INT2P: error exit: ier=',IER
346  RETURN
347  END IF
348 
349 ! should *input arrays* be reordered? want p(1) > p(2) > p(3) etc
350 ! so that it will match order for which code was originally designed
351 ! copy to 'work' arrays
352 
353  np1 = 0
354  no1 = 0
355  IF (ppin(1).LT.ppin(2)) THEN
356  np1 = npin + 1
357  END IF
358  IF (ppout(1).LT.ppout(2)) THEN
359  no1 = npout + 1
360  END IF
361 
362  DO np = 1,npin
363  pin(np) = ppin(abs(np1-np))
364  xin(np) = xxin(abs(np1-np))
365  END DO
366 
367  DO np = 1,npout
368  pout(np) = ppout(abs(no1-np))
369  END DO
370 
371 ! eliminate XIN levels with missing data.
372 ! . This can happen with observational data.
373 
374  nl = 0
375  DO np = 1,npin
376  IF (xin(np).NE.xmsg .AND. pin(np).NE.xmsg) THEN
377  nl = nl + 1
378  p(nl) = pin(np)
379  x(nl) = xin(np)
380  END IF
381  END DO
382  nlmax = nl
383 
384  ! all missing data
385  IF (nlmax.LT.2) THEN
386  ier = ier + 1000
387  print *,'INT2P: ier=',ier
388  RETURN
389  END IF
390 
391 ! ===============> pressure in decreasing order <================
392 ! perform the interpolation [pin(1)>pin(2)>...>pin(npin)]
393 ! ( p ,x)
394 ! ------------------------- p(nl+1), x(nl+1) example (200,5)
395 ! .
396 ! ------------------------- pout(np), xout(np) (250,?)
397 ! .
398 ! ------------------------- p(nl) , x(nl) (300,10)
399 
400 
401 ! exact p-level matches
402  nlstrt = 1
403  nlsave = 1
404  DO np = 1,npout
405  xout(np) = xmsg
406  DO nl = nlstrt,nlmax
407  IF (pout(np).EQ.p(nl)) THEN
408  xout(np) = x(nl)
409  nlsave = nl + 1
410  GO TO 10
411  END IF
412  END DO
413  10 nlstrt = nlsave
414  END DO
415 
416  IF (loglin.EQ.1) THEN
417  DO np = 1,npout
418  DO nl = 1,nlmax - 1
419  IF (pout(np).LT.p(nl) .AND. pout(np).GT.p(nl+1)) THEN
420  slope = (x(nl)-x(nl+1))/ (p(nl)-p(nl+1))
421  xout(np) = x(nl+1) + slope* (pout(np)-p(nl+1))
422  END IF
423  END DO
424  END DO
425  ELSE
426  DO np = 1,npout
427  DO nl = 1,nlmax - 1
428  IF (pout(np).LT.p(nl) .AND. pout(np).GT.p(nl+1)) THEN
429  pa = log(p(nl))
430  pb = log(pout(np))
431 ! special case: In case someome inadvertently enter p=0.
432  if (p(nl+1).gt.0.d0) then
433  pc = log(p(nl+1))
434  else
435  pc = log(1.e-4)
436  end if
437 
438  slope = (x(nl)-x(nl+1))/ (pa-pc)
439  xout(np) = x(nl+1) + slope* (pb-pc)
440  END IF
441  END DO
442  END DO
443  END IF
444 
445 ! extrapolate?
446 ! . use the 'last' valid slope for extrapolating
447 
448  IF (linlog.LT.0) THEN
449  DO np = 1,npout
450  DO nl = 1,nlmax
451  IF (pout(np).GT.p(1)) THEN
452  IF (loglin.EQ.1) THEN
453  slope = (x(2)-x(1))/ (p(2)-p(1))
454  xout(np) = x(1) + slope* (pout(np)-p(1))
455  ELSE
456  pa = log(p(2))
457  pb = log(pout(np))
458  pc = log(p(1))
459  slope = (x(2)-x(1))/ (pa-pc)
460  xout(np) = x(1) + slope* (pb-pc)
461  END IF
462  ELSE IF (pout(np).LT.p(nlmax)) THEN
463  n1 = nlmax
464  n2 = nlmax - 1
465  IF (loglin.EQ.1) THEN
466  slope = (x(n1)-x(n2))/ (p(n1)-p(n2))
467  xout(np) = x(n1) + slope* (pout(np)-p(n1))
468  ELSE
469  pa = log(p(n1))
470  pb = log(pout(np))
471  pc = log(p(n2))
472  slope = (x(n1)-x(n2))/ (pa-pc)
473  !XOUT(NP) = X(N1) + SLOPE* (PB-PC) !bug fixed below
474  xout(np) = x(n1) + slope* (pb-pa)
475  END IF
476  END IF
477  END DO
478  END DO
479  END IF
480 
481 ! place results in the return array;
482 ! . possibly .... reverse to original order
483 
484  if (no1.GT.0) THEN
485  DO np = 1,npout
486  n1 = abs(no1-np)
487  ppout(np) = pout(n1)
488  xxout(np) = xout(n1)
489  END DO
490  ELSE
491  DO np = 1,npout
492  ppout(np) = pout(np)
493  xxout(np) = xout(np)
494  END DO
495  END IF
496 
497 
498  RETURN
499  END SUBROUTINE dint2p
500 end module utilities
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/wam__climo__data_8f90.html b/ver-1.11.0/chgres_cube/wam__climo__data_8f90.html new file mode 100644 index 000000000..ed6a13ccc --- /dev/null +++ b/ver-1.11.0/chgres_cube/wam__climo__data_8f90.html @@ -0,0 +1,334 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/wam_climo_data.f90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
wam_climo_data.f90 File Reference
+
+
+ +

Process vertical profile climatologic data for WAM. +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions/Subroutines

subroutine gettemp (iday, xlat, pr, np, pf, temp, n_o, n_o2, n_n2)
 Routine that computes temperature and neutral density values utilizing MSIS 2.1. More...
 
subroutine ghp8 (day, utsec, z0, glat, glon, f107a, f107, ap, pres, alt, dn, tn)
 Wrapper routine for calls to MSIS 2.1 for computing temperature and neutral density at a given pressure level. More...
 
+

Detailed Description

+

Process vertical profile climatologic data for WAM.

+

This software incorporates the MSIS empirical atmospheric model software designed and provided by NRL. Use is governed by the Open Source Academic research License Agreement contained in the file msis2.1/nrlmsis2.1_license.txt

+
Author
Adam Kubaryk NCEP/SWPC
+ +

Definition in file wam_climo_data.f90.

+

Function/Subroutine Documentation

+ +

◆ gettemp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine gettemp (integer, intent(in) iday,
real(kind=esmf_kind_r8), intent(in) xlat,
real(kind=esmf_kind_r8), dimension(np), intent(in) pr,
integer, intent(in) np,
character(*), intent(in) pf,
real(kind=esmf_kind_r8), dimension(np), intent(out) temp,
real(kind=esmf_kind_r8), dimension(np), intent(out) n_o,
real(kind=esmf_kind_r8), dimension(np), intent(out) n_o2,
real(kind=esmf_kind_r8), dimension(np), intent(out) n_n2 
)
+
+ +

Routine that computes temperature and neutral density values utilizing MSIS 2.1.

+
Parameters
+ + + + + + + + + + +
[in]idayCalendar day.
[in]xlatLatitude (degrees).
[in]prPressure in hPa.
[in]pfPath to parmfile for msisinit.
[in]npNumber of pressure layers.
[out]tempTemperature (K).
[out]n_oNumber density of o.
[out]n_o2Number density of o2.
[out]n_n2Number density of n2
+
+
+
Author
Adam Kubaryk NCEP/SWPC
+ +

Definition at line 24 of file wam_climo_data.f90.

+ +

References ghp8().

+ +

Referenced by atmosphere::VINTG_WAM().

+ +
+
+ +

◆ ghp8()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
subroutine ghp8 (real(kind=rp), intent(in) day,
real(kind=rp), intent(in) utsec,
real(kind=rp), intent(in) z0,
real(kind=rp), intent(in) glat,
real(kind=rp), intent(in) glon,
real(kind=rp), intent(in) f107a,
real(kind=rp), intent(in) f107,
real(kind=rp), dimension(7), intent(in) ap,
real(kind=rp), intent(in) pres,
real(kind=rp), intent(out) alt,
real(kind=rp), dimension(10), intent(out) dn,
real(kind=rp), intent(out) tn 
)
+
+ +

Wrapper routine for calls to MSIS 2.1 for computing temperature and neutral density at a given pressure level.

+
Parameters
+ + + + + + + + + + + + + +
[in]dayCalendar day.
[in]utsecSeconds into UTC day.
[in]z0Initial guess for altitude in km.
[in]glatLatitude in degrees east.
[in]glonLongitude in degrees north.
[in]f107a41-day average of F10.7 Solar Flux.
[in]f107Current day F10.7 Solar Flux.
[in]apArray of Ap inputs to MSIS 2.1, documented within MSIS 2.1.
[in]presPressure level at which to solve for temp/den values.
[out]altAltitude at which the outputs are valid.
[out]dnArray of neutral density values, documented within MSIS 2.1.
[out]tnTemperature in K.
+
+
+
Author
Adam Kubaryk NCEP/SWPC
+ +

Definition at line 86 of file wam_climo_data.f90.

+ +

Referenced by gettemp().

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/wam__climo__data_8f90.js b/ver-1.11.0/chgres_cube/wam__climo__data_8f90.js new file mode 100644 index 000000000..345fedad0 --- /dev/null +++ b/ver-1.11.0/chgres_cube/wam__climo__data_8f90.js @@ -0,0 +1,5 @@ +var wam__climo__data_8f90 = +[ + [ "gettemp", "wam__climo__data_8f90.html#a6ccdccbc94bdcfab5909907dd077f6dc", null ], + [ "ghp8", "wam__climo__data_8f90.html#a00ec74c638da395fd3976b33720207a6", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/wam__climo__data_8f90_source.html b/ver-1.11.0/chgres_cube/wam__climo__data_8f90_source.html new file mode 100644 index 000000000..57a54106f --- /dev/null +++ b/ver-1.11.0/chgres_cube/wam__climo__data_8f90_source.html @@ -0,0 +1,107 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/wam_climo_data.f90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
wam_climo_data.f90
+
+
+Go to the documentation of this file.
1 
9 
23  subroutine gettemp(iday,xlat,pr,np,pf,temp,n_o,n_o2,n_n2)
24  use msis_init, only: msisinit
25  use msis_constants, only: rp
26  use esmf, only: esmf_kind_r8
27 
28  implicit none
29 
30  integer, intent(in) :: iday ! calender day
31  real(kind=esmf_kind_r8), intent(in) :: xlat ! latitude (degrees)
32  real(kind=esmf_kind_r8), intent(in) :: pr(np) ! pressure (hPa)
33  integer, intent(in) :: np ! number of pressure layers
34  character(*), intent(in) :: pf ! path to parmfile for msisinit
35  real(kind=esmf_kind_r8), intent(out) :: temp(np) ! temperature (K)
36  real(kind=esmf_kind_r8), intent(out) :: n_o(np) ! number density of o
37  real(kind=esmf_kind_r8), intent(out) :: n_o2(np) ! number density of o2
38  real(kind=esmf_kind_r8), intent(out) :: n_n2(np) ! number density of n2
39 ! Local variables
40  real(kind=rp), parameter :: alt=100, ut=0, f107=150, f107a=150, ap(7)=9, xlong=0
41  real(kind=rp) :: t, d(10), zkm
42  integer :: ip
43  real(4) :: switch_legacy(1:25)
44 
45 ! set swich 7,8,10,14 to zero to avoid diurnal changes in output tempe
46 ! #7 is for diurnal, #8 for semidiurnal, #10 is for all ut/longitudinal
47 ! effect, #14 is for terdiurnal
48  switch_legacy(:) = 1.
49  switch_legacy(7) = 0.
50  switch_legacy(8) = 0.
51  switch_legacy(10) = 0.
52  switch_legacy(14) = 0.
53 
54  call msisinit(parmfile=pf, switch_legacy=switch_legacy)
55 ! calculate temperature, species, for each pres level
56  do ip=1,np
57  call ghp8(real(iday, rp), ut, alt, real(xlat, rp), &
58  xlong , f107a, f107, ap, real(pr(ip), rp), &
59  zkm, d, t)
60  temp(ip)=real(t, esmf_kind_r8)
61  n_n2(ip)=real(d(2), esmf_kind_r8)
62  n_o2(ip)=real(d(3), esmf_kind_r8)
63  n_o( ip)=real(d(4), esmf_kind_r8)
64  enddo
65 
66  end subroutine gettemp
67 
85  subroutine ghp8(day,utsec,z0,glat,glon,f107a,f107,ap,pres,alt,dn,tn)
86 
87  use msis_constants, only: kb, na, g0, rp
88  use msis_calc, only: msiscalc
89  use msis_utils, only: alt2gph
90 
91  implicit none
92 
93  real(kind=rp),intent(in) :: day
94  real(kind=rp),intent(in) :: utsec
95  real(kind=rp),intent(in) :: z0 !! first guess
96  real(kind=rp),intent(in) :: glat,glon
97  real(kind=rp),intent(in) :: f107a,f107
98  real(kind=rp),intent(in) :: ap(7)
99  real(kind=rp),intent(in) :: pres !!! pressure in hPa
100  real(kind=rp),intent(out) :: alt
101  real(kind=rp),intent(out) :: dn(10)
102  real(kind=rp),intent(out) :: tn
103 ! Local variables
104  real, parameter :: tol = 0.000043
105  integer, parameter :: maxit = 30
106  real :: plog,delta
107  real(kind=rp) :: tex,zkm,pzkm
108  real :: xn,gz,xmbar,scl
109  integer :: n
110  real(8) :: xlat,alt0,alt1
111 
112  plog = log10(pres*100.0_rp)
113  zkm = z0
114  delta = 1.0_rp
115 
116  n = 0
117 
118  do while ( abs(delta) .ge. tol .and. n .le. maxit )
119  n = n + 1
120 
121  call msiscalc(day,utsec,zkm,glat,glon,f107a,f107,ap,tn,dn,tex)
122 
123  xn = sum(dn(2:8))
124  pzkm = kb * xn * tn
125  delta = plog - log10(pzkm)
126  xmbar = dn(1) / xn / 1.66e-24_rp
127  xlat = dble(glat)
128  alt0 = dble(zkm)
129  alt1 = alt0 + 1.0d0
130  gz = real((alt2gph(xlat,alt1) - alt2gph(xlat,alt0)) * g0)
131  scl = na * kb * tn / (xmbar * gz)
132 
133  ! difference
134  zkm = zkm - scl * delta / 1000.0_rp
135  end do
136  alt = zkm
137 
138  end subroutine ghp8
subroutine ghp8(day, utsec, z0, glat, glon, f107a, f107, ap, pres, alt, dn, tn)
Wrapper routine for calls to MSIS 2.1 for computing temperature and neutral density at a given pressu...
+
subroutine gettemp(iday, xlat, pr, np, pf, temp, n_o, n_o2, n_n2)
Routine that computes temperature and neutral density values utilizing MSIS 2.1.
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/write__data_8F90.html b/ver-1.11.0/chgres_cube/write__data_8F90.html new file mode 100644 index 000000000..97dc1dd0d --- /dev/null +++ b/ver-1.11.0/chgres_cube/write__data_8F90.html @@ -0,0 +1,261 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/write_data.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
write_data.F90 File Reference
+
+
+ +

Writes the tiled and header files expected by the forecast model. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions/Subroutines

subroutine, public write_data::write_fv3_atm_bndy_data_netcdf (localpet)
 Writes atmospheric fields along the lateral boundary. More...
 
subroutine, public write_data::write_fv3_atm_data_netcdf (localpet)
 Write atmospheric coldstart files (netcdf format). More...
 
subroutine, public write_data::write_fv3_atm_header_netcdf (localpet)
 Writes atmospheric header file in netcdf format. More...
 
subroutine, public write_data::write_fv3_sfc_data_netcdf (localpet)
 Writes surface and nst data into a 'coldstart' file (netcdf). More...
 
+

Detailed Description

+

Writes the tiled and header files expected by the forecast model.

+
Author
George Gayno NCEP/EMC
+

Write out target grid data into appropriate files for the forecast model.

+ +

Definition in file write_data.F90.

+

Function/Subroutine Documentation

+ +

◆ write_fv3_atm_bndy_data_netcdf()

+ + + +

◆ write_fv3_atm_data_netcdf()

+ +
+
+ + + + + + + + +
subroutine, public write_data::write_fv3_atm_data_netcdf (integer, intent(in) localpet)
+
+ +

Write atmospheric coldstart files (netcdf format).

+

Routine writes tiled files in parallel. Tile 1 is written by localpet 0; tile 2 by localpet 1, etc. The number of pets must be equal to or greater than the number of tiled files.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1198 of file write_data.F90.

+ +

References atmosphere_target_data::delp_target_grid, atmosphere_target_data::dzdt_target_grid, program_setup::halo_bndy, model_grid::i_target, program_setup::input_type, model_grid::ip1_target, model_grid::j_target, model_grid::jp1_target, model_grid::latitude_s_target_grid, model_grid::latitude_target_grid, model_grid::latitude_w_target_grid, atmosphere_target_data::lev_target, atmosphere_target_data::levp1_target, model_grid::longitude_s_target_grid, model_grid::longitude_target_grid, model_grid::longitude_w_target_grid, model_grid::num_tiles_target_grid, program_setup::num_tracers, atmosphere_target_data::ps_target_grid, atmosphere_target_data::qnifa_climo_target_grid, atmosphere_target_data::qnwfa_climo_target_grid, program_setup::regional, 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, program_setup::use_thomp_mp_climo, atmosphere_target_data::v_s_target_grid, atmosphere_target_data::v_w_target_grid, and atmosphere_target_data::zh_target_grid.

+ +
+
+ +

◆ write_fv3_atm_header_netcdf()

+ +
+
+ + + + + + + + +
subroutine, public write_data::write_fv3_atm_header_netcdf (integer, intent(in) localpet)
+
+ +

Writes atmospheric header file in netcdf format.

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 29 of file write_data.F90.

+ +

References atmosphere_target_data::levp1_target, program_setup::num_tracers, atmosphere_target_data::nvcoord_target, program_setup::use_thomp_mp_climo, and atmosphere_target_data::vcoord_target.

+ +
+
+ +

◆ write_fv3_sfc_data_netcdf()

+ +
+
+ + + + + + + + +
subroutine, public write_data::write_fv3_sfc_data_netcdf (integer, intent(in) localpet)
+
+ +

Writes surface and nst data into a 'coldstart' file (netcdf).

+
Parameters
+ + +
[in]localpetESMF local persistent execution thread
+
+
+
Author
George Gayno NCEP/EMC
+ +

Definition at line 1803 of file write_data.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::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, static_data::facsf_target_grid, static_data::facwf_target_grid, surface_target_data::ffmm_target_grid, program_setup::halo_bndy, model_grid::i_target, surface_target_data::ifd_target_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::longitude_target_grid, model_grid::lsoil_target, static_data::max_veg_greenness_target_grid, static_data::min_veg_greenness_target_grid, static_data::mxsno_albedo_target_grid, model_grid::num_tiles_target_grid, surface_target_data::q2m_target_grid, surface_target_data::qrain_target_grid, program_setup::regional, 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, static_data::slope_type_target_grid, surface_target_data::snow_depth_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::srflag_target_grid, static_data::substrate_temp_target_grid, surface_target_data::t2m_target_grid, surface_target_data::tprcp_target_grid, surface_target_data::tref_target_grid, surface_target_data::ustar_target_grid, static_data::veg_greenness_target_grid, static_data::veg_type_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::z0_target_grid, surface_target_data::z_c_target_grid, and surface_target_data::zm_target_grid.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/chgres_cube/write__data_8F90.js b/ver-1.11.0/chgres_cube/write__data_8F90.js new file mode 100644 index 000000000..f2f582507 --- /dev/null +++ b/ver-1.11.0/chgres_cube/write__data_8F90.js @@ -0,0 +1,7 @@ +var write__data_8F90 = +[ + [ "write_fv3_atm_bndy_data_netcdf", "write__data_8F90.html#aa38f7cbcabbd61e0fddf1ffda9e2b678", null ], + [ "write_fv3_atm_data_netcdf", "write__data_8F90.html#a05d382fbbf34728dc4661872a2ba66a1", null ], + [ "write_fv3_atm_header_netcdf", "write__data_8F90.html#a5a40bf4c58b659fd52bd46320caba2d8", null ], + [ "write_fv3_sfc_data_netcdf", "write__data_8F90.html#ac9b8e34a9a55d39277651a218d41b321", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/chgres_cube/write__data_8F90_source.html b/ver-1.11.0/chgres_cube/write__data_8F90_source.html new file mode 100644 index 000000000..779411b6e --- /dev/null +++ b/ver-1.11.0/chgres_cube/write__data_8F90_source.html @@ -0,0 +1,199 @@ + + + + + + + +chgres_cube: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/chgres_cube.fd/write_data.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
chgres_cube +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
write_data.F90
+
+
+Go to the documentation of this file.
1  module write_data
2 
3  use utilities, only : error_handler, netcdf_err
4 
5  private
6 
7  public :: write_fv3_atm_header_netcdf
8  public :: write_fv3_atm_bndy_data_netcdf
9  public :: write_fv3_atm_data_netcdf
10  public :: write_fv3_sfc_data_netcdf
11 
12  contains
13 
23 
28  subroutine write_fv3_atm_header_netcdf(localpet)
29 
30  use esmf
31 
32  use netcdf
33 
35  vcoord_target, &
37 
39 
40  implicit none
41 
42  integer, intent(in) :: localpet
43 
44  character(len=13) :: outfile
45 
46  integer :: header_buffer_val = 16384
47  integer :: error, ncid, dim_nvcoord
48  integer :: dim_levp1, id_ntrac, id_vcoord
49  integer :: num_tracers_output
50 
51  real(kind=esmf_kind_r8), allocatable :: tmp(:,:)
52 
53  if (localpet /= 0) return
54 
55  outfile="./gfs_ctrl.nc"
56 
57  print*,"- WRITE ATMOSPHERIC HEADER FILE: ", trim(outfile)
58 
59  error = nf90_create(outfile, nf90_netcdf4, ncid)
60  call netcdf_err(error, 'CREATING FILE='//trim(outfile) )
61 
62  error = nf90_def_dim(ncid, 'nvcoord', nvcoord_target, dim_nvcoord)
63  call netcdf_err(error, 'define dimension nvcoord for file='//trim(outfile) )
64 
65  error = nf90_def_dim(ncid, 'levsp', levp1_target, dim_levp1)
66  call netcdf_err(error, 'define dimension levsp for file='//trim(outfile) )
67 
68  error = nf90_def_var(ncid, 'ntrac', nf90_int, id_ntrac)
69  call netcdf_err(error, 'define var ntrac for file='//trim(outfile) )
70 
71  error = nf90_def_var(ncid, 'vcoord', nf90_double, (/dim_levp1, dim_nvcoord/), id_vcoord)
72  call netcdf_err(error, 'define var vcoord for file='//trim(outfile) )
73 
74  error = nf90_enddef(ncid, header_buffer_val,4,0,4)
75  call netcdf_err(error, 'end meta define for file='//trim(outfile) )
76 
77  num_tracers_output = num_tracers
78  if (use_thomp_mp_climo) num_tracers_output = num_tracers + 2
79  error = nf90_put_var( ncid, id_ntrac, num_tracers_output)
80  call netcdf_err(error, 'write var ntrac for file='//trim(outfile) )
81 
82  allocate(tmp(levp1_target, nvcoord_target))
83  tmp(1:levp1_target,:) = vcoord_target(levp1_target:1:-1,:)
84 
85  error = nf90_put_var( ncid, id_vcoord, tmp)
86  call netcdf_err(error, 'write var vcoord for file='//trim(outfile) )
87 
88  deallocate(tmp)
89 
90  error = nf90_close(ncid)
91 
92  end subroutine write_fv3_atm_header_netcdf
93 
99  subroutine write_fv3_atm_bndy_data_netcdf(localpet)
101 !---------------------------------------------------------------------------
102 !
103 ! Output data along the four halo boundaries. The naming convention
104 ! assumes point (1,1) is the lower left corner of the grid:
105 !
106 ! --------------- TOP ---------------
107 ! | |
108 ! | |
109 ! LEFT | | RIGHT
110 ! | |
111 ! |PT(1,1) |
112 ! ------------- BOTTOM --------------
113 !
114 !---------------------------------------------------------------------------
115 
116  use esmf
117  use netcdf
118 
125 
127 
128  use program_setup, only : halo_bndy, halo_blend, &
131 
132  implicit none
133 
134  integer, intent(in) :: localpet
135 
136  character(len=50) :: name
137 
138  integer :: header_buffer_val = 16384
139  integer :: ncid, error, tile, i, n
140  integer :: dim_lon, dim_lat
141  integer :: dim_lonp, dim_halo
142  integer :: dim_halop, dim_latm
143  integer :: dim_lev, dim_levp1
144  integer :: j_target2, halo, halo_p1
145  integer :: id_i_bottom, id_j_bottom
146  integer :: id_i_top, id_j_top
147  integer :: id_i_right, id_j_right
148  integer :: id_i_left, id_j_left
149  integer :: id_qnifa_bottom, id_qnifa_top
150  integer :: id_qnifa_right, id_qnifa_left
151  integer :: id_qnwfa_bottom, id_qnwfa_top
152  integer :: id_qnwfa_right, id_qnwfa_left
153  integer :: id_ps_bottom, id_ps_top
154  integer :: id_ps_right, id_ps_left
155  integer :: id_t_bottom, id_t_top
156  integer :: id_t_right, id_t_left
157  integer :: id_w_bottom, id_w_top
158  integer :: id_w_right, id_w_left
159  integer :: id_zh_bottom, id_zh_top
160  integer :: id_zh_right, id_zh_left
161  integer, allocatable :: id_tracer_bottom(:), id_tracer_top(:)
162  integer, allocatable :: id_tracer_right(:), id_tracer_left(:)
163  integer :: id_i_w_bottom, id_j_w_bottom
164  integer :: id_i_w_top, id_j_w_top
165  integer :: id_j_w_right, id_i_w_left
166  integer :: id_j_w_left, id_i_w_right
167  integer :: id_u_w_bottom, id_u_w_top
168  integer :: id_u_w_right, id_u_w_left
169  integer :: id_v_w_bottom, id_v_w_top
170  integer :: id_v_w_right, id_v_w_left
171  integer :: id_i_s_bottom, id_j_s_bottom
172  integer :: id_i_s_top, id_j_s_top
173  integer :: id_i_s_right, id_j_s_right
174  integer :: id_i_s_left, id_j_s_left
175  integer :: id_u_s_bottom, id_u_s_top
176  integer :: id_u_s_right, id_u_s_left
177  integer :: id_v_s_bottom, id_v_s_top
178  integer :: id_v_s_right, id_v_s_left
179  integer :: i_start_top, i_end_top
180  integer :: j_start_top, j_end_top
181  integer :: i_start_bottom, i_end_bottom
182  integer :: j_start_bottom, j_end_bottom
183  integer :: i_start_left, i_end_left
184  integer :: j_start_left, j_end_left
185  integer :: i_start_right, i_end_right
186  integer :: j_start_right, j_end_right
187  integer(kind=4), allocatable :: idum(:)
188 
189  real(kind=4), allocatable :: dum2d_top(:,:), dum2d_bottom(:,:)
190  real(kind=4), allocatable :: dum2d_left(:,:), dum2d_right(:,:)
191  real(kind=4), allocatable :: dum3d_top(:,:,:), dum3d_bottom(:,:,:)
192  real(kind=4), allocatable :: dum3d_left(:,:,:), dum3d_right(:,:,:)
193  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
194  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
195 
196  print*,"- OUTPUT LATERAL BOUNDARY DATA."
197 
198  halo = halo_bndy + halo_blend
199  halo_p1 = halo + 1
200 
201  allocate(id_tracer_bottom(num_tracers))
202  allocate(id_tracer_top(num_tracers))
203  allocate(id_tracer_left(num_tracers))
204  allocate(id_tracer_right(num_tracers))
205 
206  if (localpet == 0) then
207 
208 !--- open the file
209  error = nf90_create("./gfs.bndy.nc", nf90_netcdf4, ncid)
210  call netcdf_err(error, 'CREATING BNDY FILE' )
211 
212  error = nf90_def_dim(ncid, 'lon', i_target, dim_lon)
213  call netcdf_err(error, 'defining lon dimension')
214 
215  j_target2 = j_target - (2*halo_bndy)
216  error = nf90_def_dim(ncid, 'lat', j_target2, dim_lat)
217  call netcdf_err(error, 'DEFINING LAT DIMENSION')
218 
219  error = nf90_def_dim(ncid, 'lonp', ip1_target, dim_lonp)
220  call netcdf_err(error, 'DEFINING LONP DIMENSION')
221 
222  j_target2 = j_target - (2*halo_bndy) - 1
223  error = nf90_def_dim(ncid, 'latm', j_target2, dim_latm)
224  call netcdf_err(error, 'DEFINING LATM DIMENSION')
225 
226  error = nf90_def_dim(ncid, 'halo', halo, dim_halo)
227  call netcdf_err(error, 'DEFINING HALO DIMENSION')
228 
229  error = nf90_def_dim(ncid, 'halop', halo_p1, dim_halop)
230  call netcdf_err(error, 'DEFINING HALOP DIMENSION')
231 
232  error = nf90_def_dim(ncid, 'lev', lev_target, dim_lev)
233  call netcdf_err(error, 'DEFINING LEV DIMENSION')
234 
235  error = nf90_def_dim(ncid, 'levp', levp1_target, dim_levp1)
236  call netcdf_err(error, 'DEFINING LEVP DIMENSION')
237 
238  error = nf90_def_var(ncid, 'i_bottom', nf90_int, &
239  (/dim_lon/), id_i_bottom)
240  call netcdf_err(error, 'DEFINING I_BOTTOM')
241 
242  error = nf90_def_var(ncid, 'j_bottom', nf90_int, &
243  (/dim_halo/), id_j_bottom)
244  call netcdf_err(error, 'DEFINING J_BOTTOM')
245 
246  error = nf90_def_var(ncid, 'i_top', nf90_int, &
247  (/dim_lon/), id_i_top)
248  call netcdf_err(error, 'DEFINING I_TOP')
249 
250  error = nf90_def_var(ncid, 'j_top', nf90_int, &
251  (/dim_halo/), id_j_top)
252  call netcdf_err(error, 'DEFINING J_TOP')
253 
254  error = nf90_def_var(ncid, 'i_right', nf90_int, &
255  (/dim_halo/), id_i_right)
256  call netcdf_err(error, 'DEFINING I_RIGHT')
257 
258  error = nf90_def_var(ncid, 'j_right', nf90_int, &
259  (/dim_lat/), id_j_right)
260  call netcdf_err(error, 'DEFINING J_RIGHT')
261 
262  error = nf90_def_var(ncid, 'i_left', nf90_int, &
263  (/dim_halo/), id_i_left)
264  call netcdf_err(error, 'DEFINING I_LEFT')
265 
266  error = nf90_def_var(ncid, 'j_left', nf90_int, &
267  (/dim_lat/), id_j_left)
268  call netcdf_err(error, 'DEFINING J_LEFT')
269 
270  error = nf90_def_var(ncid, 'ps_bottom', nf90_float, &
271  (/dim_lon, dim_halo/), id_ps_bottom)
272  call netcdf_err(error, 'DEFINING PS_BOTTOM')
273 
274  error = nf90_def_var(ncid, 'ps_top', nf90_float, &
275  (/dim_lon, dim_halo/), id_ps_top)
276  call netcdf_err(error, 'DEFINING PS_TOP')
277 
278  error = nf90_def_var(ncid, 'ps_right', nf90_float, &
279  (/dim_halo, dim_lat/), id_ps_right)
280  call netcdf_err(error, 'DEFINING PS_RIGHT')
281 
282  error = nf90_def_var(ncid, 'ps_left', nf90_float, &
283  (/dim_halo, dim_lat/), id_ps_left)
284  call netcdf_err(error, 'DEFINING PS_LEFT')
285 
286  error = nf90_def_var(ncid, 't_bottom', nf90_float, &
287  (/dim_lon, dim_halo, dim_lev/), id_t_bottom)
288  call netcdf_err(error, 'DEFINING T_BOTTOM')
289 
290  error = nf90_def_var(ncid, 't_top', nf90_float, &
291  (/dim_lon, dim_halo, dim_lev/), id_t_top)
292  call netcdf_err(error, 'DEFINING T_TOP')
293 
294  error = nf90_def_var(ncid, 't_right', nf90_float, &
295  (/dim_halo, dim_lat, dim_lev/), id_t_right)
296  call netcdf_err(error, 'DEFINING T_RIGHT')
297 
298  error = nf90_def_var(ncid, 't_left', nf90_float, &
299  (/dim_halo, dim_lat, dim_lev/), id_t_left)
300  call netcdf_err(error, 'DEFINING T_LEFT')
301 
302  error = nf90_def_var(ncid, 'w_bottom', nf90_float, &
303  (/dim_lon, dim_halo, dim_lev/), id_w_bottom)
304  call netcdf_err(error, 'DEFINING W_BOTTOM')
305 
306  error = nf90_def_var(ncid, 'w_top', nf90_float, &
307  (/dim_lon, dim_halo, dim_lev/), id_w_top)
308  call netcdf_err(error, 'DEFINING W_TOP')
309 
310  error = nf90_def_var(ncid, 'w_right', nf90_float, &
311  (/dim_halo, dim_lat, dim_lev/), id_w_right)
312  call netcdf_err(error, 'DEFINING W_RIGHT')
313 
314  error = nf90_def_var(ncid, 'w_left', nf90_float, &
315  (/dim_halo, dim_lat, dim_lev/), id_w_left)
316  call netcdf_err(error, 'DEFINING W_LEFT')
317 
318  error = nf90_def_var(ncid, 'zh_bottom', nf90_float, &
319  (/dim_lon, dim_halo, dim_levp1/), id_zh_bottom)
320  call netcdf_err(error, 'DEFINING ZH_BOTTOM')
321 
322  error = nf90_def_var(ncid, 'zh_top', nf90_float, &
323  (/dim_lon, dim_halo, dim_levp1/), id_zh_top)
324  call netcdf_err(error, 'DEFINING ZH_TOP')
325 
326  error = nf90_def_var(ncid, 'zh_right', nf90_float, &
327  (/dim_halo, dim_lat, dim_levp1/), id_zh_right)
328  call netcdf_err(error, 'DEFINING ZH_RIGHT')
329 
330  error = nf90_def_var(ncid, 'zh_left', nf90_float, &
331  (/dim_halo, dim_lat, dim_levp1/), id_zh_left)
332  call netcdf_err(error, 'DEFINING ZH_LEFT')
333 
334  do n = 1, num_tracers
335 
336  name = trim(tracers(n)) // "_bottom"
337  error = nf90_def_var(ncid, name, nf90_float, &
338  (/dim_lon, dim_halo, dim_lev/), id_tracer_bottom(n))
339  call netcdf_err(error, 'DEFINING TRACER_BOTTOM')
340 
341  name = trim(tracers(n)) // "_top"
342  error = nf90_def_var(ncid, name, nf90_float, &
343  (/dim_lon, dim_halo, dim_lev/), id_tracer_top(n))
344  call netcdf_err(error, 'DEFINING TRACER_TOP')
345 
346  name = trim(tracers(n)) // "_right"
347  error = nf90_def_var(ncid, name, nf90_float, &
348  (/dim_halo, dim_lat, dim_lev/), id_tracer_right(n))
349  call netcdf_err(error, 'DEFINING TRACER_RIGHT')
350 
351  name = trim(tracers(n)) // "_left"
352  error = nf90_def_var(ncid, name, nf90_float, &
353  (/dim_halo, dim_lat, dim_lev/), id_tracer_left(n))
354  call netcdf_err(error, 'DEFINING TRACER_LEFT')
355 
356  enddo
357 
358  if (use_thomp_mp_climo) then
359 
360  name = "ice_aero_bottom"
361  error = nf90_def_var(ncid, name, nf90_float, &
362  (/dim_lon, dim_halo, dim_lev/), id_qnifa_bottom)
363  call netcdf_err(error, 'DEFINING QNIFA_BOTTOM')
364 
365  name = "ice_aero_top"
366  error = nf90_def_var(ncid, name, nf90_float, &
367  (/dim_lon, dim_halo, dim_lev/), id_qnifa_top)
368  call netcdf_err(error, 'DEFINING QNIFA_TOP')
369 
370  name = "ice_aero_right"
371  error = nf90_def_var(ncid, name, nf90_float, &
372  (/dim_halo, dim_lat, dim_lev/), id_qnifa_right)
373  call netcdf_err(error, 'DEFINING QNIFA_RIGHT')
374 
375  name = "ice_aero_left"
376  error = nf90_def_var(ncid, name, nf90_float, &
377  (/dim_halo, dim_lat, dim_lev/), id_qnifa_left)
378  call netcdf_err(error, 'DEFINING QNIFA_LEFT')
379 
380  name = "liq_aero_bottom"
381  error = nf90_def_var(ncid, name, nf90_float, &
382  (/dim_lon, dim_halo, dim_lev/), id_qnwfa_bottom)
383  call netcdf_err(error, 'DEFINING QNWFA_BOTTOM')
384 
385  name = "liq_aero_top"
386  error = nf90_def_var(ncid, name, nf90_float, &
387  (/dim_lon, dim_halo, dim_lev/), id_qnwfa_top)
388  call netcdf_err(error, 'DEFINING QNWFA_TOP')
389 
390  name = "liq_aero_right"
391  error = nf90_def_var(ncid, name, nf90_float, &
392  (/dim_halo, dim_lat, dim_lev/), id_qnwfa_right)
393  call netcdf_err(error, 'DEFINING QNWFA_RIGHT')
394 
395  name = "liq_aero_left"
396  error = nf90_def_var(ncid, name, nf90_float, &
397  (/dim_halo, dim_lat, dim_lev/), id_qnwfa_left)
398  call netcdf_err(error, 'DEFINING QNWFA_LEFT')
399 
400  endif
401 
402  error = nf90_def_var(ncid, 'i_w_bottom', nf90_int, &
403  (/dim_lonp/), id_i_w_bottom)
404  call netcdf_err(error, 'DEFINING I_W_BOTTOM')
405 
406  error = nf90_def_var(ncid, 'j_w_bottom', nf90_int, &
407  (/dim_halo/), id_j_w_bottom)
408  call netcdf_err(error, 'DEFINING J_W_BOTTOM')
409 
410  error = nf90_def_var(ncid, 'i_w_top', nf90_int, &
411  (/dim_lonp/), id_i_w_top)
412  call netcdf_err(error, 'DEFINING I_W_TOP')
413 
414  error = nf90_def_var(ncid, 'j_w_top', nf90_int, &
415  (/dim_halo/), id_j_w_top)
416  call netcdf_err(error, 'DEFINING J_W_TOP')
417 
418  error = nf90_def_var(ncid, 'i_w_right', nf90_int, &
419  (/dim_halop/), id_i_w_right)
420  call netcdf_err(error, 'DEFINING I_W_RIGHT')
421 
422  error = nf90_def_var(ncid, 'j_w_right', nf90_int, &
423  (/dim_lat/), id_j_w_right)
424  call netcdf_err(error, 'DEFINING J_W_RIGHT')
425 
426  error = nf90_def_var(ncid, 'i_w_left', nf90_int, &
427  (/dim_halop/), id_i_w_left)
428  call netcdf_err(error, 'DEFINING I_W_LEFT')
429 
430  error = nf90_def_var(ncid, 'j_w_left', nf90_int, &
431  (/dim_lat/), id_j_w_left)
432  call netcdf_err(error, 'DEFINING J_W_LEFT')
433 
434  error = nf90_def_var(ncid, 'u_w_bottom', nf90_float, &
435  (/dim_lonp, dim_halo, dim_lev/), id_u_w_bottom)
436  call netcdf_err(error, 'DEFINING U_W_BOTTOM')
437 
438  error = nf90_def_var(ncid, 'u_w_top', nf90_float, &
439  (/dim_lonp, dim_halo, dim_lev/), id_u_w_top)
440  call netcdf_err(error, 'DEFINING U_W_TOP')
441 
442  error = nf90_def_var(ncid, 'u_w_right', nf90_float, &
443  (/dim_halop, dim_lat, dim_lev/), id_u_w_right)
444  call netcdf_err(error, 'DEFINING U_W_RIGHT')
445 
446  error = nf90_def_var(ncid, 'u_w_left', nf90_float, &
447  (/dim_halop, dim_lat, dim_lev/), id_u_w_left)
448  call netcdf_err(error, 'DEFINING U_W_LEFT')
449 
450  error = nf90_def_var(ncid, 'v_w_bottom', nf90_float, &
451  (/dim_lonp, dim_halo, dim_lev/), id_v_w_bottom)
452  call netcdf_err(error, 'DEFINING V_W_BOTTOM')
453 
454  error = nf90_def_var(ncid, 'v_w_top', nf90_float, &
455  (/dim_lonp, dim_halo, dim_lev/), id_v_w_top)
456  call netcdf_err(error, 'DEFINING V_W_TOP')
457 
458  error = nf90_def_var(ncid, 'v_w_right', nf90_float, &
459  (/dim_halop, dim_lat, dim_lev/), id_v_w_right)
460  call netcdf_err(error, 'DEFINING V_W_RIGHT')
461 
462  error = nf90_def_var(ncid, 'v_w_left', nf90_float, &
463  (/dim_halop, dim_lat, dim_lev/), id_v_w_left)
464  call netcdf_err(error, 'DEFINING V_W_LEFT')
465 
466  error = nf90_def_var(ncid, 'i_s_bottom', nf90_int, &
467  (/dim_lon/), id_i_s_bottom)
468  call netcdf_err(error, 'DEFINING I_S_BOTTOM')
469 
470  error = nf90_def_var(ncid, 'j_s_bottom', nf90_int, &
471  (/dim_halop/), id_j_s_bottom)
472  call netcdf_err(error, 'DEFINING J_S_BOTTOM')
473 
474  error = nf90_def_var(ncid, 'i_s_top', nf90_int, &
475  (/dim_lon/), id_i_s_top)
476  call netcdf_err(error, 'DEFINING I_S_TOP')
477 
478  error = nf90_def_var(ncid, 'j_s_top', nf90_int, &
479  (/dim_halop/), id_j_s_top)
480  call netcdf_err(error, 'DEFINING J_S_TOP')
481 
482  error = nf90_def_var(ncid, 'i_s_right', nf90_int, &
483  (/dim_halo/), id_i_s_right)
484  call netcdf_err(error, 'DEFINING I_S_RIGHT')
485 
486  error = nf90_def_var(ncid, 'j_s_right', nf90_int, &
487  (/dim_latm/), id_j_s_right)
488  call netcdf_err(error, 'DEFINING J_S_RIGHT')
489 
490  error = nf90_def_var(ncid, 'i_s_left', nf90_int, &
491  (/dim_halo/), id_i_s_left)
492  call netcdf_err(error, 'DEFINING I_S_LEFT')
493 
494  error = nf90_def_var(ncid, 'j_s_left', nf90_int, &
495  (/dim_latm/), id_j_s_left)
496  call netcdf_err(error, 'DEFINING J_S_LEFT')
497 
498  error = nf90_def_var(ncid, 'u_s_bottom', nf90_float, &
499  (/dim_lon, dim_halop, dim_lev/), id_u_s_bottom)
500  call netcdf_err(error, 'DEFINING U_S_BOTTOM')
501 
502  error = nf90_def_var(ncid, 'u_s_top', nf90_float, &
503  (/dim_lon, dim_halop, dim_lev/), id_u_s_top)
504  call netcdf_err(error, 'DEFINING U_S_TOP')
505 
506  error = nf90_def_var(ncid, 'u_s_right', nf90_float, &
507  (/dim_halo, dim_latm, dim_lev/), id_u_s_right)
508  call netcdf_err(error, 'DEFINING U_S_RIGHT')
509 
510  error = nf90_def_var(ncid, 'u_s_left', nf90_float, &
511  (/dim_halo, dim_latm, dim_lev/), id_u_s_left)
512  call netcdf_err(error, 'DEFINING U_S_LEFT')
513 
514  error = nf90_def_var(ncid, 'v_s_bottom', nf90_float, &
515  (/dim_lon, dim_halop, dim_lev/), id_v_s_bottom)
516  call netcdf_err(error, 'DEFINING V_S_BOTTOM')
517 
518  error = nf90_def_var(ncid, 'v_s_top', nf90_float, &
519  (/dim_lon, dim_halop, dim_lev/), id_v_s_top)
520  call netcdf_err(error, 'DEFINING V_S_TOP')
521 
522  error = nf90_def_var(ncid, 'v_s_right', nf90_float, &
523  (/dim_halo, dim_latm, dim_lev/), id_v_s_right)
524  call netcdf_err(error, 'DEFINING V_S_RIGHT')
525 
526  error = nf90_def_var(ncid, 'v_s_left', nf90_float, &
527  (/dim_halo, dim_latm, dim_lev/), id_v_s_left)
528  call netcdf_err(error, 'DEFINING V_S_LEFT')
529 
530 !--- define global attributes
531  if (trim(input_type) == "gaussian_nemsio") then
532  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GAUSSIAN NEMSIO FILE')
533  elseif (trim(input_type) == "gfs_gaussian_nemsio") then
534  error = nf90_put_att(ncid, nf90_global, 'source', 'SPECTRAL GFS GAUSSIAN NEMSIO FILE')
535  elseif (trim(input_type) == "gfs_sigio") then
536  error = nf90_put_att(ncid, nf90_global, 'source', 'SPECTRAL GFS SIGIO FILE')
537  elseif (trim(input_type) == "history") then
538  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS TILED HISTORY FILE')
539  elseif (trim(input_type) == "restart") then
540  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS TILED RESTART FILE')
541  elseif (trim(input_type) == "gaussian_netcdf") then
542  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GAUSSIAN NETCDF FILE')
543  elseif (trim(input_type) == "grib2") then
544  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GRIB2 FILE')
545  endif
546 
547  error = nf90_enddef(ncid, header_buffer_val,4,0,4)
548  call netcdf_err(error, 'DEFINING END OF HEADER')
549 
550  endif
551 
552 !---------------------------------------------------------------------------
553 ! Set up bounds for mass points. Indices are with respect to the whole
554 ! grid - including total halo (boundary plus blending halo).
555 !---------------------------------------------------------------------------
556 
557  i_start_top = 1
558  i_end_top = i_target
559  j_start_top = j_target - halo + 1
560  j_end_top = j_target
561 
562  i_start_bottom = 1
563  i_end_bottom = i_target
564  j_start_bottom = 1
565  j_end_bottom = halo
566 
567  i_start_left = 1
568  i_end_left = halo
569  j_start_left = halo_bndy + 1
570  j_end_left = j_target - halo_bndy
571 
572  i_start_right = i_target - halo + 1
573  i_end_right = i_target
574  j_start_right = halo_bndy + 1
575  j_end_right = j_target - halo_bndy
576 
577  if (localpet == 0) then
578 
579 ! Indices here are with respect to the computational grid -
580 ! without lateral boundary halo but including blending halo.
581 
582  allocate(idum(i_start_top:i_end_top))
583  do i = i_start_top, i_end_top
584  idum(i) = i - halo_bndy
585  enddo
586  error = nf90_put_var(ncid, id_i_top, idum)
587  call netcdf_err(error, "WRITING I_TOP")
588  deallocate(idum)
589  allocate(idum(i_start_bottom:i_end_bottom))
590  do i = i_start_bottom, i_end_bottom
591  idum(i) = i - halo_bndy
592  enddo
593  error = nf90_put_var(ncid, id_i_bottom, idum)
594  call netcdf_err(error, "WRITING I_BOTTOM")
595  deallocate(idum)
596  allocate(idum(i_start_left:i_end_left))
597  do i = i_start_left, i_end_left
598  idum(i) = i - halo_bndy
599  enddo
600  error = nf90_put_var(ncid, id_i_left, idum)
601  call netcdf_err(error, "WRITING I_LEFT")
602  deallocate(idum)
603  allocate(idum(i_start_right:i_end_right))
604  do i = i_start_right, i_end_right
605  idum(i) = i - halo_bndy
606  enddo
607  error = nf90_put_var(ncid, id_i_right, idum)
608  call netcdf_err(error, "WRITING I_RIGHT")
609  deallocate(idum)
610  allocate(idum(j_start_top:j_end_top))
611  do i = j_start_top, j_end_top
612  idum(i) = i - halo_bndy
613  enddo
614  error = nf90_put_var(ncid, id_j_top, idum)
615  call netcdf_err(error, "WRITING J_TOP")
616  deallocate(idum)
617  allocate(idum(j_start_bottom:j_end_bottom))
618  do i = j_start_bottom, j_end_bottom
619  idum(i) = i - halo_bndy
620  enddo
621  error = nf90_put_var(ncid, id_j_bottom, idum)
622  call netcdf_err(error, "WRITING J_BOTTOM")
623  deallocate(idum)
624  allocate(idum(j_start_left:j_end_left))
625  do i = j_start_left, j_end_left
626  idum(i) = i - halo_bndy
627  enddo
628  error = nf90_put_var(ncid, id_j_left, idum)
629  call netcdf_err(error, "WRITING J_LEFT")
630  deallocate(idum)
631  allocate(idum(j_start_right:j_end_right))
632  do i = j_start_right, j_end_right
633  idum(i) = i - halo_bndy
634  enddo
635  error = nf90_put_var(ncid, id_j_right, idum)
636  call netcdf_err(error, "WRITING J_RIGHT")
637  deallocate(idum)
638  endif
639 
640 ! surface pressure
641 
642  if (localpet == 0) then
643  allocate(data_one_tile(i_target,j_target))
644  allocate(dum2d_top(i_start_top:i_end_top, j_start_top:j_end_top))
645  allocate(dum2d_bottom(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom))
646  allocate(dum2d_left(i_start_left:i_end_left, j_start_left:j_end_left))
647  allocate(dum2d_right(i_start_right:i_end_right, j_start_right:j_end_right))
648  else
649  allocate(data_one_tile(0,0))
650  allocate(dum2d_top(0,0))
651  allocate(dum2d_bottom(0,0))
652  allocate(dum2d_left(0,0))
653  allocate(dum2d_right(0,0))
654  endif
655 
656  tile = 1
657 
658  print*,"- CALL FieldGather FOR TARGET GRID SURFACE PRESSURE"
659  call esmf_fieldgather(ps_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
660  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
661  call error_handler("IN FieldGather", error)
662 
663  if (localpet == 0) then
664  dum2d_top(:,:) = real(data_one_tile(i_start_top:i_end_top, j_start_top:j_end_top),kind=4)
665  error = nf90_put_var( ncid, id_ps_top, dum2d_top)
666  call netcdf_err(error, 'WRITING PS TOP' )
667  dum2d_bottom(:,:) = real(data_one_tile(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom),kind=4)
668  error = nf90_put_var( ncid, id_ps_bottom, dum2d_bottom)
669  call netcdf_err(error, 'WRITING PS BOTTOM' )
670  dum2d_left(:,:) = real(data_one_tile(i_start_left:i_end_left, j_start_left:j_end_left),kind=4)
671  error = nf90_put_var( ncid, id_ps_left, dum2d_left)
672  call netcdf_err(error, 'WRITING PS LEFT' )
673  dum2d_right(:,:) = real(data_one_tile(i_start_right:i_end_right, j_start_right:j_end_right),kind=4)
674  error = nf90_put_var( ncid, id_ps_right, dum2d_right)
675  call netcdf_err(error, 'WRITING PS RIGHT' )
676  endif
677 
678  deallocate(dum2d_top, dum2d_bottom, dum2d_left, dum2d_right, data_one_tile)
679 
680 ! height
681 
682  if (localpet == 0) then
683  allocate(data_one_tile_3d(i_target,j_target,levp1_target))
684  allocate(dum3d_top(i_start_top:i_end_top, j_start_top:j_end_top, levp1_target))
685  allocate(dum3d_bottom(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom, levp1_target))
686  allocate(dum3d_left(i_start_left:i_end_left, j_start_left:j_end_left, levp1_target))
687  allocate(dum3d_right(i_start_right:i_end_right, j_start_right:j_end_right, levp1_target))
688  else
689  allocate(data_one_tile_3d(0,0,0))
690  allocate(dum3d_top(0,0,0))
691  allocate(dum3d_bottom(0,0,0))
692  allocate(dum3d_left(0,0,0))
693  allocate(dum3d_right(0,0,0))
694  endif
695 
696  print*,"- CALL FieldGather FOR TARGET GRID HEIGHT FOR TILE: ", tile
697  call esmf_fieldgather(zh_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
698  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
699  call error_handler("IN FieldGather", error)
700 
701  if (localpet == 0) then
702  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
703  dum3d_top(:,:,1:levp1_target) = dum3d_top(:,:,levp1_target:1:-1)
704  error = nf90_put_var( ncid, id_zh_top, dum3d_top)
705  call netcdf_err(error, 'WRITING ZH TOP' )
706  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
707  dum3d_bottom(:,:,1:levp1_target) = dum3d_bottom(:,:,levp1_target:1:-1)
708  error = nf90_put_var( ncid, id_zh_bottom, dum3d_bottom)
709  call netcdf_err(error, 'WRITING ZH BOTTOM' )
710  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
711  dum3d_left(:,:,1:levp1_target) = dum3d_left(:,:,levp1_target:1:-1)
712  error = nf90_put_var( ncid, id_zh_left, dum3d_left)
713  call netcdf_err(error, 'WRITING ZH LEFT' )
714  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
715  dum3d_right(:,:,1:levp1_target) = dum3d_right(:,:,levp1_target:1:-1)
716  error = nf90_put_var( ncid, id_zh_right, dum3d_right)
717  call netcdf_err(error, 'WRITING ZH RIGHT' )
718  endif
719 
720  deallocate(dum3d_top, dum3d_bottom, dum3d_left, dum3d_right, data_one_tile_3d)
721 
722 ! Tracers
723 
724  if (localpet == 0) then
725  allocate(data_one_tile_3d(i_target,j_target,lev_target))
726  allocate(dum3d_top(i_start_top:i_end_top, j_start_top:j_end_top, lev_target))
727  allocate(dum3d_bottom(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom, lev_target))
728  allocate(dum3d_left(i_start_left:i_end_left, j_start_left:j_end_left, lev_target))
729  allocate(dum3d_right(i_start_right:i_end_right, j_start_right:j_end_right, lev_target))
730  else
731  allocate(data_one_tile_3d(0,0,0))
732  allocate(dum3d_top(0,0,0))
733  allocate(dum3d_bottom(0,0,0))
734  allocate(dum3d_left(0,0,0))
735  allocate(dum3d_right(0,0,0))
736  endif
737 
738  do n = 1, num_tracers
739 
740  print*,"- CALL FieldGather FOR TARGET GRID TRACER FOR TILE: ", trim(tracers(n)), tile
741  call esmf_fieldgather(tracers_target_grid(n), data_one_tile_3d, rootpet=0, tile=tile, rc=error)
742  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
743  call error_handler("IN FieldGather", error)
744 
745  if (localpet == 0) then
746  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
747  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
748  error = nf90_put_var( ncid, id_tracer_top(n), dum3d_top)
749  call netcdf_err(error, 'WRITING TRACER TOP' )
750  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
751  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
752  error = nf90_put_var( ncid, id_tracer_bottom(n), dum3d_bottom)
753  call netcdf_err(error, 'WRITING TRACER BOTTOM' )
754  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
755  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
756  error = nf90_put_var( ncid, id_tracer_left(n), dum3d_left)
757  call netcdf_err(error, 'WRITING TRACER LEFT' )
758  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
759  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
760  error = nf90_put_var( ncid, id_tracer_right(n), dum3d_right)
761  call netcdf_err(error, 'WRITING TRACER RIGHT' )
762  endif
763 
764  enddo
765 
766 ! Vertical velocity
767 
768  print*,"- CALL FieldGather FOR TARGET GRID W FOR TILE: ", tile
769  call esmf_fieldgather(dzdt_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
770  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
771  call error_handler("IN FieldGather", error)
772 
773  if (localpet == 0) then
774  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
775  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
776  error = nf90_put_var( ncid, id_w_top, dum3d_top)
777  call netcdf_err(error, 'WRITING W TOP' )
778  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
779  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
780  error = nf90_put_var( ncid, id_w_bottom, dum3d_bottom)
781  call netcdf_err(error, 'WRITING W BOTTOM' )
782  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
783  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
784  error = nf90_put_var( ncid, id_w_left, dum3d_left)
785  call netcdf_err(error, 'WRITING W LEFT' )
786  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
787  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
788  error = nf90_put_var( ncid, id_w_right, dum3d_right)
789  call netcdf_err(error, 'WRITING W RIGHT' )
790  endif
791 
792 ! Temperature
793 
794  print*,"- CALL FieldGather FOR TARGET GRID TEMPERATURE FOR TILE: ", tile
795  call esmf_fieldgather(temp_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
796  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
797  call error_handler("IN FieldGather", error)
798 
799  if (localpet == 0) then
800  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
801  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
802  error = nf90_put_var( ncid, id_t_top, dum3d_top)
803  call netcdf_err(error, 'WRITING T TOP' )
804  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
805  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
806  error = nf90_put_var( ncid, id_t_bottom, dum3d_bottom)
807  call netcdf_err(error, 'WRITING T BOTTOM' )
808  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
809  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
810  error = nf90_put_var( ncid, id_t_left, dum3d_left)
811  call netcdf_err(error, 'WRITING T LEFT' )
812  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
813  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
814  error = nf90_put_var( ncid, id_t_right, dum3d_right)
815  call netcdf_err(error, 'WRITING T RIGHT' )
816  endif
817 
818  if (use_thomp_mp_climo) then
819 
820  print*,"- CALL FieldGather FOR TARGET GRID CLIMO QNIFA FOR TILE: ", tile
821  call esmf_fieldgather(qnifa_climo_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
822  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
823  call error_handler("IN FieldGather", error)
824 
825  if (localpet == 0) then
826  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
827  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
828  error = nf90_put_var( ncid, id_qnifa_top, dum3d_top)
829  call netcdf_err(error, 'WRITING QNIFA CLIMO TOP' )
830  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
831  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
832  error = nf90_put_var( ncid, id_qnifa_bottom, dum3d_bottom)
833  call netcdf_err(error, 'WRITING QNIFA CLIMO BOTTOM' )
834  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
835  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
836  error = nf90_put_var( ncid, id_qnifa_left, dum3d_left)
837  call netcdf_err(error, 'WRITING QNIFA CLIMO LEFT' )
838  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
839  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
840  error = nf90_put_var( ncid, id_qnifa_right, dum3d_right)
841  call netcdf_err(error, 'WRITING QNIFA CLIMO RIGHT' )
842  endif
843 
844  print*,"- CALL FieldGather FOR TARGET GRID CLIMO QNWFA FOR TILE: ", tile
845  call esmf_fieldgather(qnwfa_climo_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
846  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
847  call error_handler("IN FieldGather", error)
848 
849  if (localpet == 0) then
850  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
851  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
852  error = nf90_put_var( ncid, id_qnwfa_top, dum3d_top)
853  call netcdf_err(error, 'WRITING QNWFA CLIMO TOP' )
854  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
855  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
856  error = nf90_put_var( ncid, id_qnwfa_bottom, dum3d_bottom)
857  call netcdf_err(error, 'WRITING QNWFA CLIMO BOTTOM' )
858  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
859  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
860  error = nf90_put_var( ncid, id_qnwfa_left, dum3d_left)
861  call netcdf_err(error, 'WRITING QNWFA CLIMO LEFT' )
862  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
863  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
864  error = nf90_put_var( ncid, id_qnwfa_right, dum3d_right)
865  call netcdf_err(error, 'WRITING QNWFA CLIMO RIGHT' )
866  endif
867 
868  endif
869 
870  deallocate(dum3d_top, dum3d_bottom, dum3d_left, dum3d_right, data_one_tile_3d)
871 
872 !---------------------------------------------------------------------------
873 ! Set up bounds for 's' winds. Indices are with respect to the whole
874 ! grid - including total halo (boundary plus blending halo).
875 !---------------------------------------------------------------------------
876 
877  i_start_top = 1
878  i_end_top = i_target
879  j_start_top = jp1_target - halo_p1 + 1
880  j_end_top = jp1_target
881 
882  i_start_bottom = 1
883  i_end_bottom = i_target
884  j_start_bottom = 1
885  j_end_bottom = halo_p1
886 
887  i_start_left = 1
888  i_end_left = halo
889  j_start_left = halo_bndy + 2
890  j_end_left = j_target - halo_bndy
891 
892  i_start_right = i_target - halo + 1
893  i_end_right = i_target
894  j_start_right = halo_bndy + 2
895  j_end_right = j_target - halo_bndy
896 
897  if (localpet == 0) then
898 
899 ! Indices here are with respect to the computational grid -
900 ! without lateral boundary halo but including blending halo.
901 
902  allocate(idum(i_start_top:i_end_top))
903  do i = i_start_top, i_end_top
904  idum(i) = i - halo_bndy
905  enddo
906  error = nf90_put_var(ncid, id_i_s_top, idum)
907  call netcdf_err(error, "WRITING I_S_TOP")
908  deallocate(idum)
909  allocate(idum(i_start_bottom:i_end_bottom))
910  do i = i_start_bottom, i_end_bottom
911  idum(i) = i - halo_bndy
912  enddo
913  error = nf90_put_var(ncid, id_i_s_bottom, idum)
914  call netcdf_err(error, "WRITING I_S_BOTTOM")
915  deallocate(idum)
916  allocate(idum(i_start_left:i_end_left))
917  do i = i_start_left, i_end_left
918  idum(i) = i - halo_bndy
919  enddo
920  error = nf90_put_var(ncid, id_i_s_left, idum)
921  call netcdf_err(error, "WRITING I_S_LEFT")
922  deallocate(idum)
923  allocate(idum(i_start_right:i_end_right))
924  do i = i_start_right, i_end_right
925  idum(i) = i - halo_bndy
926  enddo
927  error = nf90_put_var(ncid, id_i_s_right, idum)
928  call netcdf_err(error, "WRITING I_S_RIGHT")
929  deallocate(idum)
930  allocate(idum(j_start_top:j_end_top))
931  do i = j_start_top, j_end_top
932  idum(i) = i - halo_bndy
933  enddo
934  error = nf90_put_var(ncid, id_j_s_top, idum)
935  call netcdf_err(error, "WRITING J_S_TOP")
936  deallocate(idum)
937  allocate(idum(j_start_bottom:j_end_bottom))
938  do i = j_start_bottom, j_end_bottom
939  idum(i) = i - halo_bndy
940  enddo
941  error = nf90_put_var(ncid, id_j_s_bottom, idum)
942  call netcdf_err(error, "WRITING J_S_BOTTOM")
943  deallocate(idum)
944  allocate(idum(j_start_left:j_end_left))
945  do i = j_start_left, j_end_left
946  idum(i) = i - halo_bndy
947  enddo
948  error = nf90_put_var(ncid, id_j_s_left, idum)
949  call netcdf_err(error, "WRITING J_S_LEFT")
950  deallocate(idum)
951  allocate(idum(j_start_right:j_end_right))
952  do i = j_start_right, j_end_right
953  idum(i) = i - halo_bndy
954  enddo
955  error = nf90_put_var(ncid, id_j_s_right, idum)
956  call netcdf_err(error, "WRITING J_S_RIGHT")
957  deallocate(idum)
958  endif
959 
960 ! U-WINDS 'S'
961 
962  if (localpet == 0) then
963  allocate(data_one_tile_3d(i_target,jp1_target,lev_target))
964  allocate(dum3d_top(i_start_top:i_end_top, j_start_top:j_end_top, lev_target))
965  allocate(dum3d_bottom(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom, lev_target))
966  allocate(dum3d_left(i_start_left:i_end_left, j_start_left:j_end_left, lev_target))
967  allocate(dum3d_right(i_start_right:i_end_right, j_start_right:j_end_right, lev_target))
968  else
969  allocate(data_one_tile_3d(0,0,0))
970  allocate(dum3d_top(0,0,0))
971  allocate(dum3d_bottom(0,0,0))
972  allocate(dum3d_left(0,0,0))
973  allocate(dum3d_right(0,0,0))
974  endif
975 
976  print*,"- CALL FieldGather FOR TARGET GRID U_S FOR TILE: ", tile
977  call esmf_fieldgather(u_s_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
978  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
979  call error_handler("IN FieldGather", error)
980 
981  if (localpet == 0) then
982  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
983  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
984  error = nf90_put_var( ncid, id_u_s_top, dum3d_top)
985  call netcdf_err(error, 'WRITING U_S TOP' )
986  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
987  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
988  error = nf90_put_var( ncid, id_u_s_bottom, dum3d_bottom)
989  call netcdf_err(error, 'WRITING U_S BOTTOM' )
990  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
991  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
992  error = nf90_put_var( ncid, id_u_s_left, dum3d_left)
993  call netcdf_err(error, 'WRITING U_S LEFT' )
994  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
995  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
996  error = nf90_put_var( ncid, id_u_s_right, dum3d_right)
997  call netcdf_err(error, 'WRITING U_S RIGHT' )
998  endif
999 
1000 ! V-WINDS 'S'
1001 
1002  print*,"- CALL FieldGather FOR TARGET GRID V_S FOR TILE: ", tile
1003  call esmf_fieldgather(v_s_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
1004  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1005  call error_handler("IN FieldGather", error)
1006 
1007  if (localpet == 0) then
1008  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
1009  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
1010  error = nf90_put_var( ncid, id_v_s_top, dum3d_top)
1011  call netcdf_err(error, 'WRITING V_S TOP' )
1012  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
1013  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
1014  error = nf90_put_var( ncid, id_v_s_bottom, dum3d_bottom)
1015  call netcdf_err(error, 'WRITING V_S BOTTOM' )
1016  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
1017  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
1018  error = nf90_put_var( ncid, id_v_s_left, dum3d_left)
1019  call netcdf_err(error, 'WRITING V_S LEFT' )
1020  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
1021  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
1022  error = nf90_put_var( ncid, id_v_s_right, dum3d_right)
1023  call netcdf_err(error, 'WRITING V_S RIGHT' )
1024  endif
1025 
1026  deallocate(dum3d_top, dum3d_bottom, dum3d_left, dum3d_right, data_one_tile_3d)
1027 
1028 !---------------------------------------------------------------------------
1029 ! Set up bounds for 'w' winds. Indices are with respect to the whole
1030 ! grid - including total halo (boundary plus blending halo).
1031 !---------------------------------------------------------------------------
1032 
1033  i_start_top = 1
1034  i_end_top = ip1_target
1035  j_start_top = j_target - halo + 1
1036  j_end_top = j_target
1037 
1038  i_start_bottom = 1
1039  i_end_bottom = ip1_target
1040  j_start_bottom = 1
1041  j_end_bottom = halo
1042 
1043  i_start_left = 1
1044  i_end_left = halo_p1
1045  j_start_left = halo_bndy + 1
1046  j_end_left = j_target - halo_bndy
1047 
1048  i_start_right = ip1_target - halo_p1 + 1
1049  i_end_right = ip1_target
1050  j_start_right = halo_bndy + 1
1051  j_end_right = j_target - halo_bndy
1052 
1053  if (localpet == 0) then
1054 
1055 ! Indices here are with respect to the computational grid -
1056 ! without lateral boundary halo but including blending halo.
1057 
1058  allocate(idum(i_start_top:i_end_top))
1059  do i = i_start_top, i_end_top
1060  idum(i) = i - halo_bndy
1061  enddo
1062  error = nf90_put_var(ncid, id_i_w_top, idum)
1063  call netcdf_err(error, "WRITING I_W_TOP")
1064  deallocate(idum)
1065  allocate(idum(i_start_bottom:i_end_bottom))
1066  do i = i_start_bottom, i_end_bottom
1067  idum(i) = i - halo_bndy
1068  enddo
1069  error = nf90_put_var(ncid, id_i_w_bottom, idum)
1070  call netcdf_err(error, "WRITING I_W_BOTTOM")
1071  deallocate(idum)
1072  allocate(idum(i_start_left:i_end_left))
1073  do i = i_start_left, i_end_left
1074  idum(i) = i - halo_bndy
1075  enddo
1076  error = nf90_put_var(ncid, id_i_w_left, idum)
1077  call netcdf_err(error, "WRITING I_W_LEFT")
1078  deallocate(idum)
1079  allocate(idum(i_start_right:i_end_right))
1080  do i = i_start_right, i_end_right
1081  idum(i) = i - halo_bndy
1082  enddo
1083  error = nf90_put_var(ncid, id_i_w_right, idum)
1084  call netcdf_err(error, "WRITING I_W_RIGHT")
1085  deallocate(idum)
1086  allocate(idum(j_start_top:j_end_top))
1087  do i = j_start_top, j_end_top
1088  idum(i) = i - halo_bndy
1089  enddo
1090  error = nf90_put_var(ncid, id_j_w_top, idum)
1091  call netcdf_err(error, "WRITING J_W_TOP")
1092  deallocate(idum)
1093  allocate(idum(j_start_bottom:j_end_bottom))
1094  do i = j_start_bottom, j_end_bottom
1095  idum(i) = i - halo_bndy
1096  enddo
1097  error = nf90_put_var(ncid, id_j_w_bottom, idum)
1098  call netcdf_err(error, "WRITING J_W_BOTTOM")
1099  deallocate(idum)
1100  allocate(idum(j_start_left:j_end_left))
1101  do i = j_start_left, j_end_left
1102  idum(i) = i - halo_bndy
1103  enddo
1104  error = nf90_put_var(ncid, id_j_w_left, idum)
1105  call netcdf_err(error, "WRITING J_W_LEFT")
1106  deallocate(idum)
1107  allocate(idum(j_start_right:j_end_right))
1108  do i = j_start_right, j_end_right
1109  idum(i) = i - halo_bndy
1110  enddo
1111  error = nf90_put_var(ncid, id_j_w_right, idum)
1112  call netcdf_err(error, "WRITING J_W_RIGHT")
1113  deallocate(idum)
1114  endif
1115 
1116 ! U-WINDS 'W'
1117 
1118  if (localpet == 0) then
1119  allocate(data_one_tile_3d(ip1_target,j_target,lev_target))
1120  allocate(dum3d_top(i_start_top:i_end_top, j_start_top:j_end_top, lev_target))
1121  allocate(dum3d_bottom(i_start_bottom:i_end_bottom, j_start_bottom:j_end_bottom, lev_target))
1122  allocate(dum3d_left(i_start_left:i_end_left, j_start_left:j_end_left, lev_target))
1123  allocate(dum3d_right(i_start_right:i_end_right, j_start_right:j_end_right, lev_target))
1124  else
1125  allocate(data_one_tile_3d(0,0,0))
1126  allocate(dum3d_top(0,0,0))
1127  allocate(dum3d_bottom(0,0,0))
1128  allocate(dum3d_left(0,0,0))
1129  allocate(dum3d_right(0,0,0))
1130  endif
1131 
1132  print*,"- CALL FieldGather FOR TARGET GRID U_W FOR TILE: ", tile
1133  call esmf_fieldgather(u_w_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
1134  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1135  call error_handler("IN FieldGather", error)
1136 
1137  if (localpet == 0) then
1138  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
1139  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
1140  error = nf90_put_var( ncid, id_u_w_top, dum3d_top)
1141  call netcdf_err(error, 'WRITING U_W TOP' )
1142  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
1143  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
1144  error = nf90_put_var( ncid, id_u_w_bottom, dum3d_bottom)
1145  call netcdf_err(error, 'WRITING U_W BOTTOM' )
1146  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
1147  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
1148  error = nf90_put_var( ncid, id_u_w_left, dum3d_left)
1149  call netcdf_err(error, 'WRITING U_W LEFT' )
1150  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
1151  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
1152  error = nf90_put_var( ncid, id_u_w_right, dum3d_right)
1153  call netcdf_err(error, 'WRITING U_W RIGHT' )
1154  endif
1155 
1156 ! V-WINDS 'W'
1157 
1158  print*,"- CALL FieldGather FOR TARGET GRID V_W FOR TILE: ", tile
1159  call esmf_fieldgather(v_w_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
1160  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1161  call error_handler("IN FieldGather", error)
1162 
1163  if (localpet == 0) then
1164  dum3d_top(:,:,:) = real(data_one_tile_3d(i_start_top:i_end_top,j_start_top:j_end_top,:),kind=4)
1165  dum3d_top(:,:,1:lev_target) = dum3d_top(:,:,lev_target:1:-1)
1166  error = nf90_put_var( ncid, id_v_w_top, dum3d_top)
1167  call netcdf_err(error, 'WRITING V_W TOP' )
1168  dum3d_bottom(:,:,:) = real(data_one_tile_3d(i_start_bottom:i_end_bottom,j_start_bottom:j_end_bottom,:),kind=4)
1169  dum3d_bottom(:,:,1:lev_target) = dum3d_bottom(:,:,lev_target:1:-1)
1170  error = nf90_put_var( ncid, id_v_w_bottom, dum3d_bottom)
1171  call netcdf_err(error, 'WRITING V_W BOTTOM' )
1172  dum3d_left(:,:,:) = real(data_one_tile_3d(i_start_left:i_end_left,j_start_left:j_end_left,:),kind=4)
1173  dum3d_left(:,:,1:lev_target) = dum3d_left(:,:,lev_target:1:-1)
1174  error = nf90_put_var( ncid, id_v_w_left, dum3d_left)
1175  call netcdf_err(error, 'WRITING V_W LEFT' )
1176  dum3d_right(:,:,:) = real(data_one_tile_3d(i_start_right:i_end_right,j_start_right:j_end_right,:),kind=4)
1177  dum3d_right(:,:,1:lev_target) = dum3d_right(:,:,lev_target:1:-1)
1178  error = nf90_put_var( ncid, id_v_w_right, dum3d_right)
1179  call netcdf_err(error, 'WRITING V_W RIGHT' )
1180  endif
1181 
1182  deallocate(dum3d_top, dum3d_bottom, dum3d_left, dum3d_right, data_one_tile_3d)
1183  deallocate(id_tracer_bottom, id_tracer_top, id_tracer_left, id_tracer_right)
1184 
1185  if (localpet == 0) error = nf90_close(ncid)
1186 
1187  end subroutine write_fv3_atm_bndy_data_netcdf
1188 
1197  subroutine write_fv3_atm_data_netcdf(localpet)
1199  use esmf
1200  use netcdf
1201 
1202  use program_setup, only : halo=>halo_bndy, &
1205  regional
1206 
1214 
1215  use model_grid, only : num_tiles_target_grid, &
1216  i_target, j_target, &
1224 
1225  implicit none
1226 
1227  integer, intent(in) :: localpet
1228 
1229  character(len=128) :: outfile
1230 
1231  integer :: error, ncid, tile, n
1232  integer :: header_buffer_val = 16384
1233  integer :: dim_lon, dim_lat
1234  integer :: dim_lonp, dim_latp
1235  integer :: dim_lev, dim_levp1, dim_ntracer
1236  integer, allocatable :: id_tracers(:)
1237  integer :: id_lon, id_lat, id_ps
1238  integer :: id_lat_s, id_lon_s
1239  integer :: id_lat_w, id_lon_w
1240  integer :: id_w, id_zh, id_u_w
1241  integer :: id_v_w, id_u_s, id_v_s
1242  integer :: id_t, id_delp, id_qnifa, id_qnwfa
1243  integer :: i_start, i_end, j_start, j_end
1244  integer :: i_target_out, j_target_out
1245  integer :: ip1_target_out, jp1_target_out
1246  integer :: ip1_end, jp1_end, num_tracers_output
1247 
1248  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1249  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1250  real(kind=4), allocatable :: dum2d(:,:)
1251  real(kind=4), allocatable :: dum3d(:,:,:)
1252 
1253 ! Remove any halo region.
1254 
1255  i_target_out = i_target-(2*halo)
1256  j_target_out = j_target-(2*halo)
1257 
1258  i_start = halo + 1
1259  j_start = halo + 1
1260  i_end = i_target - halo
1261  j_end = j_target - halo
1262 
1263  ip1_target_out = i_target_out + 1
1264  jp1_target_out = j_target_out + 1
1265 
1266  ip1_end = i_end + 1
1267  jp1_end = j_end + 1
1268 
1269  if (localpet < num_tiles_target_grid) then
1270  allocate(data_one_tile(i_target,j_target))
1271  allocate(dum2d(i_target_out,j_target_out))
1272  else
1273  allocate(data_one_tile(0,0))
1274  allocate(dum2d(0,0))
1275  endif
1276 
1277  allocate(id_tracers(num_tracers))
1278 
1279  header : if (localpet < num_tiles_target_grid) then
1280 
1281  tile = localpet + 1
1282  if (regional > 0) then
1283  outfile = "out.atm.tile7.nc"
1284  else
1285  WRITE(outfile, '(A, I1, A)') 'out.atm.tile', tile, '.nc'
1286  endif
1287 
1288 !--- open the file
1289  error = nf90_create(outfile, nf90_netcdf4, ncid)
1290  call netcdf_err(error, 'CREATING FILE='//trim(outfile) )
1291 
1292 !--- define dimension
1293  error = nf90_def_dim(ncid, 'lon', i_target_out, dim_lon)
1294  call netcdf_err(error, 'DEFINING LON DIMENSION' )
1295  error = nf90_def_dim(ncid, 'lat', j_target_out, dim_lat)
1296  call netcdf_err(error, 'DEFINING LAT DIMENSION' )
1297  error = nf90_def_dim(ncid, 'lonp', ip1_target_out, dim_lonp)
1298  call netcdf_err(error, 'DEFINING LONP DIMENSION' )
1299  error = nf90_def_dim(ncid, 'latp', jp1_target_out, dim_latp)
1300  call netcdf_err(error, 'DEFINING LATP DIMENSION' )
1301  error = nf90_def_dim(ncid, 'lev', lev_target, dim_lev)
1302  call netcdf_err(error, 'DEFINING LEV DIMENSION' )
1303  error = nf90_def_dim(ncid, 'levp', levp1_target, dim_levp1)
1304  call netcdf_err(error, 'DEFINING LEVP DIMENSION' )
1305  num_tracers_output = num_tracers
1306  if (use_thomp_mp_climo) num_tracers_output = num_tracers + 2
1307  error = nf90_def_dim(ncid, 'ntracer', num_tracers_output, dim_ntracer)
1308  call netcdf_err(error, 'DEFINING NTRACER DIMENSION' )
1309 
1310 !--- define global attributes
1311  if (trim(input_type) == "gaussian_nemsio") then
1312  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GAUSSIAN NEMSIO FILE')
1313  elseif (trim(input_type) == "gaussian_netcdf") then
1314  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GAUSSIAN NETCDF FILE')
1315  elseif (trim(input_type) == "gfs_gaussian_nemsio") then
1316  error = nf90_put_att(ncid, nf90_global, 'source', 'SPECTRAL GFS GAUSSIAN NEMSIO FILE')
1317  elseif (trim(input_type) == "gfs_sigio") then
1318  error = nf90_put_att(ncid, nf90_global, 'source', 'SPECTRAL GFS SIGIO FILE')
1319  elseif (trim(input_type) == "history") then
1320  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS TILED HISTORY FILE')
1321  elseif (trim(input_type) == "restart") then
1322  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS TILED RESTART FILE')
1323  elseif (trim(input_type) == "grib2") then
1324  error = nf90_put_att(ncid, nf90_global, 'source', 'FV3GFS GRIB2 FILE')
1325  endif
1326 
1327 !--- define field
1328  error = nf90_def_var(ncid, 'geolon', nf90_float, (/dim_lon,dim_lat/), id_lon)
1329  call netcdf_err(error, 'DEFINING GEOLON FIELD' )
1330  error = nf90_put_att(ncid, id_lon, "long_name", "Longitude")
1331  call netcdf_err(error, 'DEFINING GEOLON NAME' )
1332  error = nf90_put_att(ncid, id_lon, "units", "degrees_east")
1333  call netcdf_err(error, 'DEFINING GEOLON UNITS' )
1334 
1335  error = nf90_def_var(ncid, 'geolat', nf90_float, (/dim_lon,dim_lat/), id_lat)
1336  call netcdf_err(error, 'DEFINING GEOLAT FIELD' )
1337  error = nf90_put_att(ncid, id_lat, "long_name", "Latitude")
1338  call netcdf_err(error, 'DEFINING GEOLAT NAME' )
1339  error = nf90_put_att(ncid, id_lat, "units", "degrees_north")
1340  call netcdf_err(error, 'DEFINING GEOLAT UNITS' )
1341 
1342  error = nf90_def_var(ncid, 'geolon_s', nf90_float, (/dim_lon,dim_latp/), id_lon_s)
1343  call netcdf_err(error, 'DEFINING GEOLON_S FIELD' )
1344  error = nf90_put_att(ncid, id_lon_s, "long_name", "Longitude_s")
1345  call netcdf_err(error, 'DEFINING GEOLON_S NAME' )
1346  error = nf90_put_att(ncid, id_lon_s, "units", "degrees_east")
1347  call netcdf_err(error, 'DEFINING GEOLON_S UNITS' )
1348 
1349  error = nf90_def_var(ncid, 'geolat_s', nf90_float, (/dim_lon,dim_latp/), id_lat_s)
1350  call netcdf_err(error, 'DEFINING GEOLAT_S FIELD' )
1351  error = nf90_put_att(ncid, id_lat_s, "long_name", "Latitude_s")
1352  call netcdf_err(error, 'DEFINING GEOLAT_S NAME' )
1353  error = nf90_put_att(ncid, id_lat_s, "units", "degrees_north")
1354  call netcdf_err(error, 'DEFINING GEOLAT_S UNITS' )
1355 
1356  error = nf90_def_var(ncid, 'geolon_w', nf90_float, (/dim_lonp,dim_lat/), id_lon_w)
1357  call netcdf_err(error, 'DEFINING GEOLON_W FIELD' )
1358  error = nf90_put_att(ncid, id_lon_w, "long_name", "Longitude_w")
1359  call netcdf_err(error, 'DEFINING GEOLON_W NAME' )
1360  error = nf90_put_att(ncid, id_lon_w, "units", "degrees_east")
1361  call netcdf_err(error, 'DEFINING GEOLON_W UNITS' )
1362 
1363  error = nf90_def_var(ncid, 'geolat_w', nf90_float, (/dim_lonp,dim_lat/), id_lat_w)
1364  call netcdf_err(error, 'DEFINING GEOLAT_W FIELD' )
1365  error = nf90_put_att(ncid, id_lat_w, "long_name", "Latitude_w")
1366  call netcdf_err(error, 'DEFINING GEOLAT_W NAME' )
1367  error = nf90_put_att(ncid, id_lat_w, "units", "degrees_north")
1368  call netcdf_err(error, 'DEFINING GEOLAT_W UNITS' )
1369 
1370  error = nf90_def_var(ncid, 'ps', nf90_float, (/dim_lon,dim_lat/), id_ps)
1371  call netcdf_err(error, 'DEFINING PS' )
1372  error = nf90_put_att(ncid, id_ps, "coordinates", "geolon geolat")
1373  call netcdf_err(error, 'DEFINING PS COORD' )
1374 
1375  error = nf90_def_var(ncid, 'w', nf90_float, (/dim_lon,dim_lat,dim_lev/), id_w)
1376  call netcdf_err(error, 'DEFINING W' )
1377  error = nf90_put_att(ncid, id_w, "coordinates", "geolon geolat")
1378  call netcdf_err(error, 'DEFINING W COORD' )
1379 
1380  error = nf90_def_var(ncid, 'zh', nf90_float, (/dim_lon,dim_lat,dim_levp1/), id_zh)
1381  call netcdf_err(error, 'DEFINING ZH' )
1382  error = nf90_put_att(ncid, id_zh, "coordinates", "geolon geolat")
1383  call netcdf_err(error, 'DEFINING ZH COORD' )
1384 
1385  error = nf90_def_var(ncid, 't', nf90_float, (/dim_lon,dim_lat,dim_lev/), id_t)
1386  call netcdf_err(error, 'DEFINING T' )
1387  error = nf90_put_att(ncid, id_t, "coordinates", "geolon geolat")
1388  call netcdf_err(error, 'DEFINING T COORD' )
1389 
1390  error = nf90_def_var(ncid, 'delp', nf90_float, (/dim_lon,dim_lat,dim_lev/), id_delp)
1391  call netcdf_err(error, 'DEFINING DELP' )
1392  error = nf90_put_att(ncid, id_delp, "coordinates", "geolon geolat")
1393  call netcdf_err(error, 'DEFINING DELP COORD' )
1394 
1395  do n = 1, num_tracers
1396  if (localpet==0) print*, "write to file tracer ", trim(tracers(n))
1397  error = nf90_def_var(ncid, tracers(n), nf90_float, (/dim_lon,dim_lat,dim_lev/), id_tracers(n))
1398  call netcdf_err(error, 'DEFINING TRACERS' )
1399  error = nf90_put_att(ncid, id_tracers(n), "coordinates", "geolon geolat")
1400  call netcdf_err(error, 'DEFINING TRACERS COORD' )
1401  enddo
1402 
1403  if (use_thomp_mp_climo) then
1404  error = nf90_def_var(ncid, 'ice_aero', nf90_float, (/dim_lon,dim_lat,dim_lev/), id_qnifa)
1405  call netcdf_err(error, 'DEFINING QNIFA' )
1406  error = nf90_put_att(ncid, id_qnifa, "coordinates", "geolon geolat")
1407  call netcdf_err(error, 'DEFINING QNIFA COORD' )
1408 
1409  error = nf90_def_var(ncid, 'liq_aero', nf90_float, (/dim_lon,dim_lat,dim_lev/), id_qnwfa)
1410  call netcdf_err(error, 'DEFINING QNWFA' )
1411  error = nf90_put_att(ncid, id_qnwfa, "coordinates", "geolon geolat")
1412  call netcdf_err(error, 'DEFINING QNWFA COORD' )
1413  endif
1414 
1415  error = nf90_def_var(ncid, 'u_w', nf90_float, (/dim_lonp,dim_lat,dim_lev/), id_u_w)
1416  call netcdf_err(error, 'DEFINING U_W' )
1417  error = nf90_put_att(ncid, id_u_w, "coordinates", "geolon_w geolat_w")
1418  call netcdf_err(error, 'DEFINING U_W COORD' )
1419 
1420  error = nf90_def_var(ncid, 'v_w', nf90_float, (/dim_lonp,dim_lat,dim_lev/), id_v_w)
1421  call netcdf_err(error, 'DEFINING V_W' )
1422  error = nf90_put_att(ncid, id_v_w, "coordinates", "geolon_w geolat_w")
1423  call netcdf_err(error, 'DEFINING V_W COORD' )
1424 
1425  error = nf90_def_var(ncid, 'u_s', nf90_float, (/dim_lon,dim_latp,dim_lev/), id_u_s)
1426  call netcdf_err(error, 'DEFINING U_S' )
1427  error = nf90_put_att(ncid, id_u_s, "coordinates", "geolon_s geolat_s")
1428  call netcdf_err(error, 'DEFINING U_S COORD' )
1429 
1430  error = nf90_def_var(ncid, 'v_s', nf90_float, (/dim_lon,dim_latp,dim_lev/), id_v_s)
1431  call netcdf_err(error, 'DEFINING V_S' )
1432  error = nf90_put_att(ncid, id_v_s, "coordinates", "geolon_s geolat_s")
1433  call netcdf_err(error, 'DEFINING V_S COORD' )
1434 
1435  error = nf90_enddef(ncid, header_buffer_val,4,0,4)
1436  call netcdf_err(error, 'DEFINING HEADER' )
1437 
1438  endif header
1439 
1440 ! longitude
1441 
1442  do tile = 1, num_tiles_target_grid
1443  print*,"- CALL FieldGather FOR TARGET GRID LONGITUDE FOR TILE: ", tile
1444  call esmf_fieldgather(longitude_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1445  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1446  call error_handler("IN FieldGather", error)
1447  enddo
1448 
1449  if (localpet < num_tiles_target_grid) then
1450  dum2d(:,:) = real(data_one_tile(i_start:i_end, j_start:j_end),kind=4)
1451  error = nf90_put_var( ncid, id_lon, dum2d)
1452  call netcdf_err(error, 'WRITING LONGITUDE RECORD' )
1453  endif
1454 
1455 ! latitude
1456 
1457  do tile = 1, num_tiles_target_grid
1458  print*,"- CALL FieldGather FOR TARGET GRID LATITUDE FOR TILE: ", tile
1459  call esmf_fieldgather(latitude_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1460  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1461  call error_handler("IN FieldGather", error)
1462  enddo
1463 
1464  if (localpet < num_tiles_target_grid) then
1465  dum2d(:,:) = real(data_one_tile(i_start:i_end, j_start:j_end),kind=4)
1466  error = nf90_put_var( ncid, id_lat, dum2d)
1467  call netcdf_err(error, 'WRITING LATITUDE RECORD' )
1468  endif
1469 
1470 ! surface pressure
1471 
1472  do tile = 1, num_tiles_target_grid
1473  print*,"- CALL FieldGather FOR TARGET GRID SURFACE PRESSURE FOR TILE: ", tile
1474  call esmf_fieldgather(ps_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1475  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1476  call error_handler("IN FieldGather", error)
1477  enddo
1478 
1479  if (localpet < num_tiles_target_grid) then
1480  dum2d(:,:) = real(data_one_tile(i_start:i_end, j_start:j_end),kind=4)
1481  error = nf90_put_var( ncid, id_ps, dum2d)
1482  call netcdf_err(error, 'WRITING SURFACE PRESSURE RECORD' )
1483  endif
1484 
1485  deallocate(dum2d, data_one_tile)
1486 
1487 ! height
1488 
1489  if (localpet < num_tiles_target_grid) then
1490  allocate(dum3d(i_target_out,j_target_out,levp1_target))
1491  allocate(data_one_tile_3d(i_target,j_target,levp1_target))
1492  else
1493  allocate(dum3d(0,0,0))
1494  allocate(data_one_tile_3d(0,0,0))
1495  endif
1496 
1497  do tile = 1, num_tiles_target_grid
1498  print*,"- CALL FieldGather FOR TARGET GRID HEIGHT FOR TILE: ", tile
1499  call esmf_fieldgather(zh_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1500  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1501  call error_handler("IN FieldGather", error)
1502  enddo
1503 
1504  if (localpet < num_tiles_target_grid) then
1505  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1506  dum3d(:,:,1:levp1_target) = dum3d(:,:,levp1_target:1:-1)
1507  error = nf90_put_var( ncid, id_zh, dum3d)
1508  call netcdf_err(error, 'WRITING HEIGHT RECORD' )
1509  endif
1510 
1511  deallocate(dum3d, data_one_tile_3d)
1512 
1513 ! vertical velocity
1514 
1515  if (localpet < num_tiles_target_grid) then
1516  allocate(dum3d(i_target_out,j_target_out,lev_target))
1517  allocate(data_one_tile_3d(i_target,j_target,lev_target))
1518  else
1519  allocate(dum3d(0,0,0))
1520  allocate(data_one_tile_3d(0,0,0))
1521  endif
1522 
1523  do tile = 1, num_tiles_target_grid
1524  print*,"- CALL FieldGather FOR TARGET GRID VERTICAL VELOCITY FOR TILE: ", tile
1525  call esmf_fieldgather(dzdt_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1526  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1527  call error_handler("IN FieldGather", error)
1528  enddo
1529 
1530  if (localpet < num_tiles_target_grid) then
1531  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1532  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1533  print*,"MIN MAX W AT WRITE = ", minval(dum3d(:,:,:)), maxval(dum3d(:,:,:))
1534  error = nf90_put_var( ncid, id_w, dum3d)
1535  call netcdf_err(error, 'WRITING VERTICAL VELOCITY RECORD' )
1536  endif
1537 
1538 ! delp
1539 
1540  do tile = 1, num_tiles_target_grid
1541  print*,"- CALL FieldGather FOR TARGET GRID DELP FOR TILE: ", tile
1542  call esmf_fieldgather(delp_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1543  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1544  call error_handler("IN FieldGather", error)
1545  enddo
1546 
1547  if (localpet < num_tiles_target_grid) then
1548  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1549  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1550  error = nf90_put_var( ncid, id_delp, dum3d)
1551  call netcdf_err(error, 'WRITING DELP RECORD' )
1552  endif
1553 
1554 ! temperature
1555 
1556  do tile = 1, num_tiles_target_grid
1557  print*,"- CALL FieldGather FOR TARGET GRID TEMPERATURE FOR TILE: ", tile
1558  call esmf_fieldgather(temp_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1559  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1560  call error_handler("IN FieldGather", error)
1561  enddo
1562 
1563  if (localpet < num_tiles_target_grid) then
1564  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1565  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1566  error = nf90_put_var( ncid, id_t, dum3d)
1567  call netcdf_err(error, 'WRITING TEMPERTAURE RECORD' )
1568  endif
1569 
1570 ! tracers
1571 
1572  do n = 1, num_tracers
1573 
1574  do tile = 1, num_tiles_target_grid
1575  print*,"- CALL FieldGather FOR TARGET GRID TRACER ", trim(tracers(n)), " TILE: ", tile
1576  call esmf_fieldgather(tracers_target_grid(n), data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1577  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1578  call error_handler("IN FieldGather", error)
1579  enddo
1580 
1581  if (localpet < num_tiles_target_grid) then
1582  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1583  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1584  error = nf90_put_var( ncid, id_tracers(n), dum3d)
1585  call netcdf_err(error, 'WRITING TRACER RECORD' )
1586  endif
1587 
1588  enddo
1589 
1590 ! qnifa
1591 
1592  if (use_thomp_mp_climo) then
1593  do tile = 1, num_tiles_target_grid
1594  print*,"- CALL FieldGather FOR TARGET GRID QNIFA FOR TILE: ", tile
1595  call esmf_fieldgather(qnifa_climo_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1596  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1597  call error_handler("IN FieldGather", error)
1598  enddo
1599 
1600  if (localpet < num_tiles_target_grid) then
1601  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1602  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1603  error = nf90_put_var( ncid, id_qnifa, dum3d)
1604  call netcdf_err(error, 'WRITING QNIFA RECORD' )
1605  endif
1606 
1607 ! qnwfa
1608 
1609  do tile = 1, num_tiles_target_grid
1610  print*,"- CALL FieldGather FOR TARGET GRID QNWFA FOR TILE: ", tile
1611  call esmf_fieldgather(qnwfa_climo_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1612  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1613  call error_handler("IN FieldGather", error)
1614  enddo
1615 
1616  if (localpet < num_tiles_target_grid) then
1617  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:j_end,:),kind=4)
1618  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1619  error = nf90_put_var( ncid, id_qnwfa, dum3d)
1620  call netcdf_err(error, 'WRITING QNWFA RECORD' )
1621  endif
1622  endif
1623 
1624  deallocate(dum3d, data_one_tile_3d)
1625 
1626 ! lat/lon_s
1627 
1628  if (localpet < num_tiles_target_grid) then
1629  allocate(dum2d(i_target_out,jp1_target_out))
1630  allocate(data_one_tile(i_target,jp1_target))
1631  else
1632  allocate(dum2d(0,0))
1633  allocate(data_one_tile(0,0))
1634  endif
1635 
1636  do tile = 1, num_tiles_target_grid
1637  print*,"- CALL FieldGather FOR TARGET GRID LON_S FOR TILE: ", tile
1638  call esmf_fieldgather(longitude_s_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1639  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1640  call error_handler("IN FieldGather", error)
1641  enddo
1642 
1643  if (localpet < num_tiles_target_grid) then
1644  dum2d(:,:) = real(data_one_tile(i_start:i_end,j_start:jp1_end),kind=4)
1645  error = nf90_put_var( ncid, id_lon_s, dum2d)
1646  call netcdf_err(error, 'WRITING LON_S RECORD' )
1647  endif
1648 
1649  do tile = 1, num_tiles_target_grid
1650  print*,"- CALL FieldGather FOR TARGET GRID LAT_S FOR TILE: ", tile
1651  call esmf_fieldgather(latitude_s_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1652  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1653  call error_handler("IN FieldGather", error)
1654  enddo
1655 
1656  if (localpet < num_tiles_target_grid) then
1657  dum2d(:,:) = real(data_one_tile(i_start:i_end,j_start:jp1_end),kind=4)
1658  error = nf90_put_var( ncid, id_lat_s, dum2d)
1659  call netcdf_err(error, 'WRITING LAT_S RECORD' )
1660  endif
1661 
1662  deallocate(dum2d, data_one_tile)
1663 
1664 ! uwinds s
1665 
1666  if (localpet < num_tiles_target_grid) then
1667  allocate(dum3d(i_target_out,jp1_target_out,lev_target))
1668  allocate(data_one_tile_3d(i_target,jp1_target,lev_target))
1669  else
1670  allocate(dum3d(0,0,0))
1671  allocate(data_one_tile_3d(0,0,0))
1672  endif
1673 
1674  do tile = 1, num_tiles_target_grid
1675  print*,"- CALL FieldGather FOR TARGET GRID U_S FOR TILE: ", tile
1676  call esmf_fieldgather(u_s_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1677  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1678  call error_handler("IN FieldGather", error)
1679  enddo
1680 
1681  if (localpet < num_tiles_target_grid) then
1682  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:jp1_end,:),kind=4)
1683  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1684  print*,"MIN MAX US AT WRITE = ", minval(dum3d(:,:,:)), maxval(dum3d(:,:,:))
1685  error = nf90_put_var( ncid, id_u_s, dum3d)
1686  call netcdf_err(error, 'WRITING U_S RECORD' )
1687  endif
1688 
1689 ! vwinds s
1690 
1691  do tile = 1, num_tiles_target_grid
1692  print*,"- CALL FieldGather FOR TARGET GRID V_S FOR TILE: ", tile
1693  call esmf_fieldgather(v_s_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1694  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1695  call error_handler("IN FieldGather", error)
1696  enddo
1697 
1698  if (localpet < num_tiles_target_grid) then
1699  dum3d(:,:,:) = real(data_one_tile_3d(i_start:i_end,j_start:jp1_end,:),kind=4)
1700  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1701  print*,"MIN MAX VS AT WRITE = ", minval(dum3d(:,:,:)), maxval(dum3d(:,:,:))
1702  error = nf90_put_var( ncid, id_v_s, dum3d)
1703  call netcdf_err(error, 'WRITING V_S RECORD' )
1704  endif
1705 
1706  deallocate(dum3d, data_one_tile_3d)
1707 
1708 ! lat/lon_w
1709 
1710  if (localpet < num_tiles_target_grid) then
1711  allocate(dum2d(ip1_target_out,j_target_out))
1712  allocate(data_one_tile(ip1_target,j_target))
1713  else
1714  allocate(dum2d(0,0))
1715  allocate(data_one_tile(0,0))
1716  endif
1717 
1718  do tile = 1, num_tiles_target_grid
1719  print*,"- CALL FieldGather FOR TARGET GRID LON_W FOR TILE: ", tile
1720  call esmf_fieldgather(longitude_w_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1721  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1722  call error_handler("IN FieldGather", error)
1723  enddo
1724 
1725  if (localpet < num_tiles_target_grid) then
1726  dum2d(:,:) = real(data_one_tile(i_start:ip1_end,j_start:j_end),kind=4)
1727  error = nf90_put_var( ncid, id_lon_w, dum2d)
1728  call netcdf_err(error, 'WRITING LON_W RECORD' )
1729  endif
1730 
1731  do tile = 1, num_tiles_target_grid
1732  print*,"- CALL FieldGather FOR TARGET GRID LAT_W FOR TILE: ", tile
1733  call esmf_fieldgather(latitude_w_target_grid, data_one_tile, rootpet=tile-1, tile=tile, rc=error)
1734  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1735  call error_handler("IN FieldGather", error)
1736  enddo
1737 
1738  if (localpet < num_tiles_target_grid) then
1739  dum2d(:,:) = real(data_one_tile(i_start:ip1_end,j_start:j_end),kind=4)
1740  error = nf90_put_var( ncid, id_lat_w, dum2d)
1741  call netcdf_err(error, 'WRITING LAT_W RECORD' )
1742  endif
1743 
1744  deallocate(dum2d, data_one_tile)
1745 
1746 ! uwinds w
1747 
1748  if (localpet < num_tiles_target_grid) then
1749  allocate(dum3d(ip1_target_out,j_target_out,lev_target))
1750  allocate(data_one_tile_3d(ip1_target,j_target,lev_target))
1751  else
1752  allocate(dum3d(0,0,0))
1753  allocate(data_one_tile_3d(0,0,0))
1754  endif
1755 
1756  do tile = 1, num_tiles_target_grid
1757  print*,"- CALL FieldGather FOR TARGET GRID U_W FOR TILE: ", tile
1758  call esmf_fieldgather(u_w_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1759  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1760  call error_handler("IN FieldGather", error)
1761  enddo
1762 
1763  if (localpet < num_tiles_target_grid) then
1764  dum3d(:,:,:) = real(data_one_tile_3d(i_start:ip1_end,j_start:j_end,:),kind=4)
1765  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1766  print*,"MIN MAX UW AT WRITE = ", minval(dum3d(:,:,:)), maxval(dum3d(:,:,:))
1767  error = nf90_put_var( ncid, id_u_w, dum3d)
1768  call netcdf_err(error, 'WRITING U_W RECORD' )
1769  endif
1770 
1771 ! vwinds w
1772 
1773  do tile = 1, num_tiles_target_grid
1774  print*,"- CALL FieldGather FOR TARGET GRID V_W FOR TILE: ", tile
1775  call esmf_fieldgather(v_w_target_grid, data_one_tile_3d, rootpet=tile-1, tile=tile, rc=error)
1776  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
1777  call error_handler("IN FieldGather", error)
1778  enddo
1779 
1780  if (localpet < num_tiles_target_grid) then
1781  dum3d(:,:,:) = real(data_one_tile_3d(i_start:ip1_end,j_start:j_end,:),kind=4)
1782  dum3d(:,:,1:lev_target) = dum3d(:,:,lev_target:1:-1)
1783  print*,"MIN MAX VW AT WRITE = ", minval(dum3d(:,:,:)), maxval(dum3d(:,:,:))
1784  error = nf90_put_var( ncid, id_v_w, dum3d)
1785  call netcdf_err(error, 'WRITING V_W RECORD' )
1786  endif
1787 
1788  deallocate(dum3d, data_one_tile_3d, id_tracers)
1789 
1790 !-------------------------------------------------------------------------------
1791 ! close file
1792 !-------------------------------------------------------------------------------
1793 
1794  if (localpet < num_tiles_target_grid) error = nf90_close(ncid)
1795 
1796  end subroutine write_fv3_atm_data_netcdf
1797 
1802  subroutine write_fv3_sfc_data_netcdf(localpet)
1804  use esmf
1805  use netcdf
1806 
1807  use model_grid, only : num_tiles_target_grid, &
1812 
1813  use program_setup, only : convert_nst, halo=>halo_bndy, &
1815 
1817  f10m_target_grid, &
1818  ffmm_target_grid, &
1819  q2m_target_grid, &
1830  t2m_target_grid, &
1833  z0_target_grid, &
1834  lai_target_grid, &
1835  c_d_target_grid, &
1836  c_0_target_grid, &
1839  ifd_target_grid, &
1841  tref_target_grid, &
1842  w_d_target_grid, &
1843  w_0_target_grid, &
1844  xs_target_grid, &
1845  xt_target_grid, &
1846  xu_target_grid, &
1847  xv_target_grid, &
1848  xz_target_grid, &
1849  xtts_target_grid, &
1850  xzts_target_grid, &
1851  z_c_target_grid, &
1853 
1854  use static_data, only : alvsf_target_grid, &
1868 
1869  implicit none
1870 
1871  integer, intent(in) :: localpet
1872  character(len=128) :: outfile
1873 
1874  integer :: header_buffer_val = 16384
1875  integer :: dim_x, dim_y, dim_lsoil, dim_time
1876  integer :: error, i, ncid, tile
1877  integer :: id_x, id_y, id_lsoil
1878  integer :: id_slmsk, id_time
1879  integer :: id_lat, id_lon
1880  integer :: id_tsea, id_sheleg, id_tg3
1881  integer :: id_zorl, id_alvsf, id_alvwf
1882  integer :: id_alnsf, id_alnwf, id_vfrac
1883  integer :: id_canopy, id_f10m, id_t2m
1884  integer :: id_q2m, id_vtype, id_stype
1885  integer :: id_facsf, id_facwf, id_uustar
1886  integer :: id_ffmm, id_ffhh, id_hice
1887  integer :: id_fice, id_tisfc, id_tprcp
1888  integer :: id_srflag, id_snwdph, id_shdmin
1889  integer :: id_shdmax, id_slope, id_snoalb
1890  integer :: id_lai
1891  integer :: id_stc, id_smc, id_slc
1892  integer :: id_tref, id_z_c, id_c_0
1893  integer :: id_c_d, id_w_0, id_w_d
1894  integer :: id_xt, id_xs, id_xu, id_xv
1895  integer :: id_xz, id_zm, id_xtts, id_xzts
1896  integer :: id_d_conv, id_ifd, id_dt_cool
1897  integer :: id_qrain
1898  integer :: i_target_out, j_target_out
1899  integer :: istart, iend, jstart, jend
1900 
1901  integer(esmf_kind_i8), allocatable :: idata_one_tile(:,:)
1902 
1903  real(kind=4), allocatable :: lsoil_data(:), x_data(:), y_data(:)
1904  real(kind=8), allocatable :: dum2d(:,:), dum3d(:,:,:)
1905  real(kind=4) :: times
1906  real(esmf_kind_r8), allocatable :: data_one_tile(:,:)
1907  real(esmf_kind_r8), allocatable :: data_one_tile_3d(:,:,:)
1908 
1909 ! Remove any halo region.
1910 
1911  i_target_out = i_target-(2*halo)
1912  j_target_out = j_target-(2*halo)
1913 
1914  istart = halo + 1
1915  jstart = halo + 1
1916  iend = i_target - halo
1917  jend = j_target - halo
1918 
1919  allocate(lsoil_data(lsoil_target))
1920  do i = 1, lsoil_target
1921  lsoil_data(i) = real(float(i),kind=4)
1922  enddo
1923 
1924  allocate(x_data(i_target_out))
1925  do i = 1, i_target_out
1926  x_data(i) = real(float(i),kind=4)
1927  enddo
1928 
1929  allocate(y_data(j_target_out))
1930  do i = 1, j_target_out
1931  y_data(i) = real(float(i),kind=4)
1932  enddo
1933 
1934  if (convert_nst) then
1935  print*,'- WRITE FV3 SURFACE AND NST DATA TO NETCDF FILE'
1936  else
1937  print*,'- WRITE FV3 SURFACE DATA TO NETCDF FILE'
1938  endif
1939 
1940  if (localpet == 0) then
1941  allocate(data_one_tile(i_target,j_target))
1942  allocate(data_one_tile_3d(i_target,j_target,lsoil_target))
1943  allocate(idata_one_tile(i_target,j_target))
1944  allocate(dum2d(i_target_out,j_target_out))
1945  allocate(dum3d(i_target_out,j_target_out,lsoil_target))
1946  else
1947  allocate(data_one_tile(0,0))
1948  allocate(data_one_tile_3d(0,0,0))
1949  allocate(idata_one_tile(0,0))
1950  allocate(dum2d(0,0))
1951  allocate(dum3d(0,0,0))
1952  endif
1953 
1954  tile_loop : do tile = 1, num_tiles_target_grid
1955 
1956  local_pet : if (localpet == 0) then
1957 
1958  if (regional > 0) then
1959  outfile = "out.sfc.tile7.nc"
1960  else
1961  WRITE(outfile, '(A, I1, A)') 'out.sfc.tile', tile, '.nc'
1962  endif
1963 
1964 !--- open the file
1965  error = nf90_create(outfile, nf90_netcdf4, ncid)
1966  call netcdf_err(error, 'CREATING FILE='//trim(outfile) )
1967 
1968 !--- define dimensions
1969  error = nf90_def_dim(ncid, 'xaxis_1', i_target_out, dim_x)
1970  call netcdf_err(error, 'DEFINING XAXIS DIMENSION' )
1971  error = nf90_def_dim(ncid, 'yaxis_1', j_target_out, dim_y)
1972  call netcdf_err(error, 'DEFINING YAXIS DIMENSION' )
1973  error = nf90_def_dim(ncid, 'zaxis_1', lsoil_target, dim_lsoil)
1974  call netcdf_err(error, 'DEFINING ZAXIS DIMENSION' )
1975  error = nf90_def_dim(ncid, 'Time', 1, dim_time)
1976  call netcdf_err(error, 'DEFINING TIME DIMENSION' )
1977 
1978  !--- define fields
1979  error = nf90_def_var(ncid, 'xaxis_1', nf90_float, (/dim_x/), id_x)
1980  call netcdf_err(error, 'DEFINING XAXIS_1 FIELD' )
1981  error = nf90_put_att(ncid, id_x, "long_name", "xaxis_1")
1982  call netcdf_err(error, 'DEFINING XAXIS_1 LONG NAME' )
1983  error = nf90_put_att(ncid, id_x, "units", "none")
1984  call netcdf_err(error, 'DEFINING XAXIS_1 UNITS' )
1985  error = nf90_put_att(ncid, id_x, "cartesian_axis", "X")
1986  call netcdf_err(error, 'WRITING XAXIS_1 FIELD' )
1987 
1988  error = nf90_def_var(ncid, 'yaxis_1', nf90_float, (/dim_y/), id_y)
1989  call netcdf_err(error, 'DEFINING YAXIS_1 FIELD' )
1990  error = nf90_put_att(ncid, id_y, "long_name", "yaxis_1")
1991  call netcdf_err(error, 'DEFINING YAXIS_1 LONG NAME' )
1992  error = nf90_put_att(ncid, id_y, "units", "none")
1993  call netcdf_err(error, 'DEFINING YAXIS_1 UNITS' )
1994  error = nf90_put_att(ncid, id_y, "cartesian_axis", "Y")
1995  call netcdf_err(error, 'WRITING YAXIS_1 FIELD' )
1996 
1997  error = nf90_def_var(ncid, 'zaxis_1', nf90_float, (/dim_lsoil/), id_lsoil)
1998  call netcdf_err(error, 'DEFINING ZAXIS_1 FIELD' )
1999  error = nf90_put_att(ncid, id_lsoil, "long_name", "zaxis_1")
2000  call netcdf_err(error, 'DEFINING ZAXIS_1 LONG NAME' )
2001  error = nf90_put_att(ncid, id_lsoil, "units", "none")
2002  call netcdf_err(error, 'DEFINING ZAXIS_1 UNITS' )
2003  error = nf90_put_att(ncid, id_lsoil, "cartesian_axis", "Z")
2004  call netcdf_err(error, 'WRITING ZAXIS_1 FIELD' )
2005 
2006  error = nf90_def_var(ncid, 'Time', nf90_float, dim_time, id_time)
2007  call netcdf_err(error, 'DEFINING TIME FIELD' )
2008  error = nf90_put_att(ncid, id_time, "long_name", "Time")
2009  call netcdf_err(error, 'DEFINING TIME LONG NAME' )
2010  error = nf90_put_att(ncid, id_time, "units", "time level")
2011  call netcdf_err(error, 'DEFINING TIME UNITS' )
2012  error = nf90_put_att(ncid, id_time, "cartesian_axis", "T")
2013  call netcdf_err(error, 'WRITING TIME FIELD' )
2014 
2015  error = nf90_def_var(ncid, 'geolon', nf90_double, (/dim_x,dim_y/), id_lon)
2016  call netcdf_err(error, 'DEFINING GEOLON' )
2017  error = nf90_put_att(ncid, id_lon, "long_name", "Longitude")
2018  call netcdf_err(error, 'DEFINING GEOLON LONG NAME' )
2019  error = nf90_put_att(ncid, id_lon, "units", "degrees_east")
2020  call netcdf_err(error, 'DEFINING GEOLON UNITS' )
2021 
2022  error = nf90_def_var(ncid, 'geolat', nf90_double, (/dim_x,dim_y/), id_lat)
2023  call netcdf_err(error, 'DEFINING GEOLAT' )
2024  error = nf90_put_att(ncid, id_lat, "long_name", "Latitude")
2025  call netcdf_err(error, 'DEFINING GEOLAT LONG NAME' )
2026  error = nf90_put_att(ncid, id_lat, "units", "degrees_north")
2027  call netcdf_err(error, 'DEFINING GEOLAT UNITS' )
2028 
2029  error = nf90_def_var(ncid, 'slmsk', nf90_double, (/dim_x,dim_y,dim_time/), id_slmsk)
2030  call netcdf_err(error, 'DEFINING SLMSK' )
2031  error = nf90_put_att(ncid, id_slmsk, "long_name", "slmsk")
2032  call netcdf_err(error, 'DEFINING SLMSK LONG NAME' )
2033  error = nf90_put_att(ncid, id_slmsk, "units", "none")
2034  call netcdf_err(error, 'DEFINING SLMSK UNITS' )
2035  error = nf90_put_att(ncid, id_slmsk, "coordinates", "geolon geolat")
2036  call netcdf_err(error, 'DEFINING SLMSK COORD' )
2037 
2038  error = nf90_def_var(ncid, 'tsea', nf90_double, (/dim_x,dim_y,dim_time/), id_tsea)
2039  call netcdf_err(error, 'DEFINING TSEA' )
2040  error = nf90_put_att(ncid, id_tsea, "long_name", "tsea")
2041  call netcdf_err(error, 'DEFINING TSEA LONG NAME' )
2042  error = nf90_put_att(ncid, id_tsea, "units", "none")
2043  call netcdf_err(error, 'DEFINING TSEA UNITS' )
2044  error = nf90_put_att(ncid, id_tsea, "coordinates", "geolon geolat")
2045  call netcdf_err(error, 'DEFINING TSEA COORD' )
2046 
2047  error = nf90_def_var(ncid, 'sheleg', nf90_double, (/dim_x,dim_y,dim_time/), id_sheleg)
2048  call netcdf_err(error, 'DEFINING SHELEG' )
2049  error = nf90_put_att(ncid, id_sheleg, "long_name", "sheleg")
2050  call netcdf_err(error, 'DEFINING SHELEG LONG NAME' )
2051  error = nf90_put_att(ncid, id_sheleg, "units", "none")
2052  call netcdf_err(error, 'DEFINING SHELEG UNITS' )
2053  error = nf90_put_att(ncid, id_sheleg, "coordinates", "geolon geolat")
2054  call netcdf_err(error, 'DEFINING SHELEG COORD' )
2055 
2056  error = nf90_def_var(ncid, 'tg3', nf90_double, (/dim_x,dim_y,dim_time/), id_tg3)
2057  call netcdf_err(error, 'DEFINING TG3' )
2058  error = nf90_put_att(ncid, id_tg3, "long_name", "tg3")
2059  call netcdf_err(error, 'DEFINING TG3 LONG NAME' )
2060  error = nf90_put_att(ncid, id_tg3, "units", "none")
2061  call netcdf_err(error, 'DEFINING TG3 UNITS' )
2062  error = nf90_put_att(ncid, id_tg3, "coordinates", "geolon geolat")
2063  call netcdf_err(error, 'DEFINING TG3 COORD' )
2064 
2065  error = nf90_def_var(ncid, 'zorl', nf90_double, (/dim_x,dim_y,dim_time/), id_zorl)
2066  call netcdf_err(error, 'DEFINING ZORL' )
2067  error = nf90_put_att(ncid, id_zorl, "long_name", "zorl")
2068  call netcdf_err(error, 'DEFINING ZORL LONG NAME' )
2069  error = nf90_put_att(ncid, id_zorl, "units", "none")
2070  call netcdf_err(error, 'DEFINING ZORL UNITS' )
2071  error = nf90_put_att(ncid, id_zorl, "coordinates", "geolon geolat")
2072  call netcdf_err(error, 'DEFINING ZORL COORD' )
2073 
2074  error = nf90_def_var(ncid, 'alvsf', nf90_double, (/dim_x,dim_y,dim_time/), id_alvsf)
2075  call netcdf_err(error, 'DEFINING ALVSF' )
2076  error = nf90_put_att(ncid, id_alvsf, "long_name", "alvsf")
2077  call netcdf_err(error, 'DEFINING ALVSF LONG NAME' )
2078  error = nf90_put_att(ncid, id_alvsf, "units", "none")
2079  call netcdf_err(error, 'DEFINING ALVSF UNITS' )
2080  error = nf90_put_att(ncid, id_alvsf, "coordinates", "geolon geolat")
2081  call netcdf_err(error, 'DEFINING ALVSF COORD' )
2082 
2083  error = nf90_def_var(ncid, 'alvwf', nf90_double, (/dim_x,dim_y,dim_time/), id_alvwf)
2084  call netcdf_err(error, 'DEFINING ALVWF' )
2085  error = nf90_put_att(ncid, id_alvwf, "long_name", "alvwf")
2086  call netcdf_err(error, 'DEFINING ALVWF LONG NAME' )
2087  error = nf90_put_att(ncid, id_alvwf, "units", "none")
2088  call netcdf_err(error, 'DEFINING ALVWF UNITS' )
2089  error = nf90_put_att(ncid, id_alvwf, "coordinates", "geolon geolat")
2090  call netcdf_err(error, 'DEFINING ALVWF COORD' )
2091 
2092  error = nf90_def_var(ncid, 'alnsf', nf90_double, (/dim_x,dim_y,dim_time/), id_alnsf)
2093  call netcdf_err(error, 'DEFINING ALNSF' )
2094  error = nf90_put_att(ncid, id_alnsf, "long_name", "alnsf")
2095  call netcdf_err(error, 'DEFINING ALNSF LONG NAME' )
2096  error = nf90_put_att(ncid, id_alnsf, "units", "none")
2097  call netcdf_err(error, 'DEFINING ALNSF UNITS' )
2098  error = nf90_put_att(ncid, id_alnsf, "coordinates", "geolon geolat")
2099  call netcdf_err(error, 'DEFINING ALNSF COORD' )
2100 
2101  error = nf90_def_var(ncid, 'alnwf', nf90_double, (/dim_x,dim_y,dim_time/), id_alnwf)
2102  call netcdf_err(error, 'DEFINING ALNWF' )
2103  error = nf90_put_att(ncid, id_alnwf, "long_name", "alnwf")
2104  call netcdf_err(error, 'DEFINING ALNWF LONG NAME' )
2105  error = nf90_put_att(ncid, id_alnwf, "units", "none")
2106  call netcdf_err(error, 'DEFINING ALNWF UNITS' )
2107  error = nf90_put_att(ncid, id_alnwf, "coordinates", "geolon geolat")
2108  call netcdf_err(error, 'DEFINING ALNWF COORD' )
2109 
2110  error = nf90_def_var(ncid, 'facsf', nf90_double, (/dim_x,dim_y,dim_time/), id_facsf)
2111  call netcdf_err(error, 'DEFINING FACSF' )
2112  error = nf90_put_att(ncid, id_facsf, "long_name", "facsf")
2113  call netcdf_err(error, 'DEFINING FACSF LONG NAME' )
2114  error = nf90_put_att(ncid, id_facsf, "units", "none")
2115  call netcdf_err(error, 'DEFINING FACSF UNITS' )
2116  error = nf90_put_att(ncid, id_facsf, "coordinates", "geolon geolat")
2117  call netcdf_err(error, 'DEFINING FACSF COORD' )
2118 
2119  error = nf90_def_var(ncid, 'facwf', nf90_double, (/dim_x,dim_y,dim_time/), id_facwf)
2120  call netcdf_err(error, 'DEFINING FACWF' )
2121  error = nf90_put_att(ncid, id_facwf, "long_name", "facwf")
2122  call netcdf_err(error, 'DEFINING FACWF LONG NAME' )
2123  error = nf90_put_att(ncid, id_facwf, "units", "none")
2124  call netcdf_err(error, 'DEFINING FACWF UNITS' )
2125  error = nf90_put_att(ncid, id_facwf, "coordinates", "geolon geolat")
2126  call netcdf_err(error, 'DEFINING FACWF COORD' )
2127 
2128  error = nf90_def_var(ncid, 'vfrac', nf90_double, (/dim_x,dim_y,dim_time/), id_vfrac)
2129  call netcdf_err(error, 'DEFINING VFRAC' )
2130  error = nf90_put_att(ncid, id_vfrac, "long_name", "vfrac")
2131  call netcdf_err(error, 'DEFINING VFRAC LONG NAME' )
2132  error = nf90_put_att(ncid, id_vfrac, "units", "none")
2133  call netcdf_err(error, 'DEFINING VFRAC UNITS' )
2134  error = nf90_put_att(ncid, id_vfrac, "coordinates", "geolon geolat")
2135  call netcdf_err(error, 'DEFINING VFRAC COORD' )
2136 
2137  error = nf90_def_var(ncid, 'canopy', nf90_double, (/dim_x,dim_y,dim_time/), id_canopy)
2138  call netcdf_err(error, 'DEFINING CANOPY' )
2139  error = nf90_put_att(ncid, id_canopy, "long_name", "canopy")
2140  call netcdf_err(error, 'DEFINING CANOPY LONG NAME' )
2141  error = nf90_put_att(ncid, id_canopy, "units", "none")
2142  call netcdf_err(error, 'DEFINING CANOPY UNITS' )
2143  error = nf90_put_att(ncid, id_canopy, "coordinates", "geolon geolat")
2144  call netcdf_err(error, 'DEFINING CANOPY COORD' )
2145 
2146  error = nf90_def_var(ncid, 'f10m', nf90_double, (/dim_x,dim_y,dim_time/), id_f10m)
2147  call netcdf_err(error, 'DEFINING F10M' )
2148  error = nf90_put_att(ncid, id_f10m, "long_name", "f10m")
2149  call netcdf_err(error, 'DEFINING F10M LONG NAME' )
2150  error = nf90_put_att(ncid, id_f10m, "units", "none")
2151  call netcdf_err(error, 'DEFINING F10M UNITS' )
2152  error = nf90_put_att(ncid, id_f10m, "coordinates", "geolon geolat")
2153  call netcdf_err(error, 'DEFINING F10M COORD' )
2154 
2155  error = nf90_def_var(ncid, 't2m', nf90_double, (/dim_x,dim_y,dim_time/), id_t2m)
2156  call netcdf_err(error, 'DEFINING T2M' )
2157  error = nf90_put_att(ncid, id_t2m, "long_name", "t2m")
2158  call netcdf_err(error, 'DEFINING T2M LONG NAME' )
2159  error = nf90_put_att(ncid, id_t2m, "units", "none")
2160  call netcdf_err(error, 'DEFINING T2M UNITS' )
2161  error = nf90_put_att(ncid, id_t2m, "coordinates", "geolon geolat")
2162  call netcdf_err(error, 'DEFINING T2M COORD' )
2163 
2164  error = nf90_def_var(ncid, 'q2m', nf90_double, (/dim_x,dim_y,dim_time/), id_q2m)
2165  call netcdf_err(error, 'DEFINING Q2M' )
2166  error = nf90_put_att(ncid, id_q2m, "long_name", "q2m")
2167  call netcdf_err(error, 'DEFINING Q2M LONG NAME' )
2168  error = nf90_put_att(ncid, id_q2m, "units", "none")
2169  call netcdf_err(error, 'DEFINING Q2M UNITS' )
2170  error = nf90_put_att(ncid, id_q2m, "coordinates", "geolon geolat")
2171  call netcdf_err(error, 'DEFINING Q2M COORD' )
2172 
2173  error = nf90_def_var(ncid, 'vtype', nf90_double, (/dim_x,dim_y,dim_time/), id_vtype)
2174  call netcdf_err(error, 'DEFINING VTYPE' )
2175  error = nf90_put_att(ncid, id_vtype, "long_name", "vtype")
2176  call netcdf_err(error, 'DEFINING VTYPE LONG NAME' )
2177  error = nf90_put_att(ncid, id_vtype, "units", "none")
2178  call netcdf_err(error, 'DEFINING VTYPE UNITS' )
2179  error = nf90_put_att(ncid, id_vtype, "coordinates", "geolon geolat")
2180  call netcdf_err(error, 'DEFINING VTYPE COORD' )
2181 
2182  error = nf90_def_var(ncid, 'stype', nf90_double, (/dim_x,dim_y,dim_time/), id_stype)
2183  call netcdf_err(error, 'DEFINING STYPE' )
2184  error = nf90_put_att(ncid, id_stype, "long_name", "stype")
2185  call netcdf_err(error, 'DEFINING STYPE LONG NAME' )
2186  error = nf90_put_att(ncid, id_stype, "units", "none")
2187  call netcdf_err(error, 'DEFINING STYPE UNITS' )
2188  error = nf90_put_att(ncid, id_stype, "coordinates", "geolon geolat")
2189  call netcdf_err(error, 'DEFINING STYPE COORD' )
2190 
2191  error = nf90_def_var(ncid, 'uustar', nf90_double, (/dim_x,dim_y,dim_time/), id_uustar)
2192  call netcdf_err(error, 'DEFINING UUSTAR' )
2193  error = nf90_put_att(ncid, id_uustar, "long_name", "uustar")
2194  call netcdf_err(error, 'DEFINING UUSTAR LONG NAME' )
2195  error = nf90_put_att(ncid, id_uustar, "units", "none")
2196  call netcdf_err(error, 'DEFINING UUSTAR UNITS' )
2197  error = nf90_put_att(ncid, id_uustar, "coordinates", "geolon geolat")
2198  call netcdf_err(error, 'DEFINING UUSTAR COORD' )
2199 
2200  error = nf90_def_var(ncid, 'ffmm', nf90_double, (/dim_x,dim_y,dim_time/), id_ffmm)
2201  call netcdf_err(error, 'DEFINING FFMM' )
2202  error = nf90_put_att(ncid, id_ffmm, "long_name", "ffmm")
2203  call netcdf_err(error, 'DEFINING FFMM LONG NAME' )
2204  error = nf90_put_att(ncid, id_ffmm, "units", "none")
2205  call netcdf_err(error, 'DEFINING FFMM UNITS' )
2206  error = nf90_put_att(ncid, id_ffmm, "coordinates", "geolon geolat")
2207  call netcdf_err(error, 'DEFINING FFMM COORD' )
2208 
2209  error = nf90_def_var(ncid, 'ffhh', nf90_double, (/dim_x,dim_y,dim_time/), id_ffhh)
2210  call netcdf_err(error, 'DEFINING FFHH' )
2211  error = nf90_put_att(ncid, id_ffhh, "long_name", "ffhh")
2212  call netcdf_err(error, 'DEFINING FFHH LONG NAME' )
2213  error = nf90_put_att(ncid, id_ffhh, "units", "none")
2214  call netcdf_err(error, 'DEFINING FFHH UNITS' )
2215  error = nf90_put_att(ncid, id_ffhh, "coordinates", "geolon geolat")
2216  call netcdf_err(error, 'DEFINING FFHH COORD' )
2217 
2218  error = nf90_def_var(ncid, 'hice', nf90_double, (/dim_x,dim_y,dim_time/), id_hice)
2219  call netcdf_err(error, 'DEFINING HICE' )
2220  error = nf90_put_att(ncid, id_hice, "long_name", "hice")
2221  call netcdf_err(error, 'DEFINING HICE LONG NAME' )
2222  error = nf90_put_att(ncid, id_hice, "units", "none")
2223  call netcdf_err(error, 'DEFINING HICE UNITS' )
2224  error = nf90_put_att(ncid, id_hice, "coordinates", "geolon geolat")
2225  call netcdf_err(error, 'DEFINING HICE COORD' )
2226 
2227  error = nf90_def_var(ncid, 'fice', nf90_double, (/dim_x,dim_y,dim_time/), id_fice)
2228  call netcdf_err(error, 'DEFINING FICE' )
2229  error = nf90_put_att(ncid, id_fice, "long_name", "fice")
2230  call netcdf_err(error, 'DEFINING FICE LONG NAME' )
2231  error = nf90_put_att(ncid, id_fice, "units", "none")
2232  call netcdf_err(error, 'DEFINING FICE UNITS' )
2233  error = nf90_put_att(ncid, id_fice, "coordinates", "geolon geolat")
2234  call netcdf_err(error, 'DEFINING FICE COORD' )
2235 
2236  error = nf90_def_var(ncid, 'tisfc', nf90_double, (/dim_x,dim_y,dim_time/), id_tisfc)
2237  call netcdf_err(error, 'DEFINING TISFC' )
2238  error = nf90_put_att(ncid, id_tisfc, "long_name", "tisfc")
2239  call netcdf_err(error, 'DEFINING TISFC LONG NAME' )
2240  error = nf90_put_att(ncid, id_tisfc, "units", "none")
2241  call netcdf_err(error, 'DEFINING TISFC UNITS' )
2242  error = nf90_put_att(ncid, id_tisfc, "coordinates", "geolon geolat")
2243  call netcdf_err(error, 'DEFINING TISFC COORD' )
2244 
2245  error = nf90_def_var(ncid, 'tprcp', nf90_double, (/dim_x,dim_y,dim_time/), id_tprcp)
2246  call netcdf_err(error, 'DEFINING TPRCP' )
2247  error = nf90_put_att(ncid, id_tprcp, "long_name", "tprcp")
2248  call netcdf_err(error, 'DEFINING TPRCP LONG NAME' )
2249  error = nf90_put_att(ncid, id_tprcp, "units", "none")
2250  call netcdf_err(error, 'DEFINING TPRCP UNITS' )
2251  error = nf90_put_att(ncid, id_tprcp, "coordinates", "geolon geolat")
2252  call netcdf_err(error, 'DEFINING TPRCP COORD' )
2253 
2254  error = nf90_def_var(ncid, 'srflag', nf90_double, (/dim_x,dim_y,dim_time/), id_srflag)
2255  call netcdf_err(error, 'DEFINING SRFLAG' )
2256  error = nf90_put_att(ncid, id_srflag, "long_name", "srflag")
2257  call netcdf_err(error, 'DEFINING SRFLAG LONG NAME' )
2258  error = nf90_put_att(ncid, id_srflag, "units", "none")
2259  call netcdf_err(error, 'DEFINING SRFLAG UNITS' )
2260  error = nf90_put_att(ncid, id_srflag, "coordinates", "geolon geolat")
2261  call netcdf_err(error, 'DEFINING SRFLAG COORD' )
2262 
2263  error = nf90_def_var(ncid, 'snwdph', nf90_double, (/dim_x,dim_y,dim_time/), id_snwdph)
2264  call netcdf_err(error, 'DEFINING SNWDPH' )
2265  error = nf90_put_att(ncid, id_snwdph, "long_name", "snwdph")
2266  call netcdf_err(error, 'DEFINING SNWDPH LONG NAME' )
2267  error = nf90_put_att(ncid, id_snwdph, "units", "none")
2268  call netcdf_err(error, 'DEFINING SNWDPH UNITS' )
2269  error = nf90_put_att(ncid, id_snwdph, "coordinates", "geolon geolat")
2270  call netcdf_err(error, 'DEFINING SNWDPH COORD' )
2271 
2272  error = nf90_def_var(ncid, 'shdmin', nf90_double, (/dim_x,dim_y,dim_time/), id_shdmin)
2273  call netcdf_err(error, 'DEFINING SHDMIN' )
2274  error = nf90_put_att(ncid, id_shdmin, "long_name", "shdmin")
2275  call netcdf_err(error, 'DEFINING SHDMIN LONG NAME' )
2276  error = nf90_put_att(ncid, id_shdmin, "units", "none")
2277  call netcdf_err(error, 'DEFINING SHDMIN UNITS' )
2278  error = nf90_put_att(ncid, id_shdmin, "coordinates", "geolon geolat")
2279  call netcdf_err(error, 'DEFINING SHDMIN COORD' )
2280 
2281  error = nf90_def_var(ncid, 'shdmax', nf90_double, (/dim_x,dim_y,dim_time/), id_shdmax)
2282  call netcdf_err(error, 'DEFINING SHDMAX' )
2283  error = nf90_put_att(ncid, id_shdmax, "long_name", "shdmax")
2284  call netcdf_err(error, 'DEFINING SHDMAX LONG NAME' )
2285  error = nf90_put_att(ncid, id_shdmax, "units", "none")
2286  call netcdf_err(error, 'DEFINING SHDMAX UNITS' )
2287  error = nf90_put_att(ncid, id_shdmax, "coordinates", "geolon geolat")
2288  call netcdf_err(error, 'DEFINING SHDMAX COORD' )
2289 
2290  error = nf90_def_var(ncid, 'slope', nf90_double, (/dim_x,dim_y,dim_time/), id_slope)
2291  call netcdf_err(error, 'DEFINING SLOPE' )
2292  error = nf90_put_att(ncid, id_slope, "long_name", "slope")
2293  call netcdf_err(error, 'DEFINING SLOPE LONG NAME' )
2294  error = nf90_put_att(ncid, id_slope, "units", "none")
2295  call netcdf_err(error, 'DEFINING SLOPE UNITS' )
2296  error = nf90_put_att(ncid, id_slope, "coordinates", "geolon geolat")
2297  call netcdf_err(error, 'DEFINING SLOPE COORD' )
2298 
2299  error = nf90_def_var(ncid, 'snoalb', nf90_double, (/dim_x,dim_y,dim_time/), id_snoalb)
2300  call netcdf_err(error, 'DEFINING SNOALB' )
2301  error = nf90_put_att(ncid, id_snoalb, "long_name", "snoalb")
2302  call netcdf_err(error, 'DEFINING SNOALB LONG NAME' )
2303  error = nf90_put_att(ncid, id_snoalb, "units", "none")
2304  call netcdf_err(error, 'DEFINING SNOALB UNITS' )
2305  error = nf90_put_att(ncid, id_snoalb, "coordinates", "geolon geolat")
2306  call netcdf_err(error, 'DEFINING SNOALB COORD' )
2307 
2308  if (.not. lai_from_climo) then
2309  error = nf90_def_var(ncid, 'lai', nf90_double, (/dim_x,dim_y,dim_time/), id_lai)
2310  call netcdf_err(error, 'DEFINING LAI' )
2311  error = nf90_put_att(ncid, id_lai, "long_name", "lai")
2312  call netcdf_err(error, 'DEFINING LAI LONG NAME' )
2313  error = nf90_put_att(ncid, id_lai, "units", "none")
2314  call netcdf_err(error, 'DEFINING LAI UNITS' )
2315  error = nf90_put_att(ncid, id_lai, "coordinates", "geolon geolat")
2316  call netcdf_err(error, 'DEFINING LAI COORD' )
2317  endif
2318 
2319  error = nf90_def_var(ncid, 'stc', nf90_double, (/dim_x,dim_y,dim_lsoil,dim_time/), id_stc)
2320  call netcdf_err(error, 'DEFINING STC' )
2321  error = nf90_put_att(ncid, id_stc, "long_name", "stc")
2322  call netcdf_err(error, 'DEFINING STC LONG NAME' )
2323  error = nf90_put_att(ncid, id_stc, "units", "none")
2324  call netcdf_err(error, 'DEFINING STC UNITS' )
2325  error = nf90_put_att(ncid, id_stc, "coordinates", "geolon geolat")
2326  call netcdf_err(error, 'DEFINING STC COORD' )
2327 
2328  error = nf90_def_var(ncid, 'smc', nf90_double, (/dim_x,dim_y,dim_lsoil,dim_time/), id_smc)
2329  call netcdf_err(error, 'DEFINING SMC' )
2330  error = nf90_put_att(ncid, id_smc, "long_name", "smc")
2331  call netcdf_err(error, 'DEFINING SMC LONG NAME' )
2332  error = nf90_put_att(ncid, id_smc, "units", "none")
2333  call netcdf_err(error, 'DEFINING SMC UNITS' )
2334  error = nf90_put_att(ncid, id_smc, "coordinates", "geolon geolat")
2335  call netcdf_err(error, 'DEFINING SMC COORD' )
2336 
2337  error = nf90_def_var(ncid, 'slc', nf90_double, (/dim_x,dim_y,dim_lsoil,dim_time/), id_slc)
2338  call netcdf_err(error, 'DEFINING SLC' )
2339  error = nf90_put_att(ncid, id_slc, "long_name", "slc")
2340  call netcdf_err(error, 'DEFINING SLC LONG NAME' )
2341  error = nf90_put_att(ncid, id_slc, "units", "none")
2342  call netcdf_err(error, 'DEFINING SLC UNITS' )
2343  error = nf90_put_att(ncid, id_slc, "coordinates", "geolon geolat")
2344  call netcdf_err(error, 'DEFINING SLC COORD' )
2345 
2346  if (convert_nst) then
2347 
2348  error = nf90_def_var(ncid, 'tref', nf90_double, (/dim_x,dim_y,dim_time/), id_tref)
2349  call netcdf_err(error, 'DEFINING TREF' )
2350  error = nf90_put_att(ncid, id_tref, "long_name", "tref")
2351  call netcdf_err(error, 'DEFINING TREF LONG NAME' )
2352  error = nf90_put_att(ncid, id_tref, "units", "none")
2353  call netcdf_err(error, 'DEFINING TREF UNITS' )
2354  error = nf90_put_att(ncid, id_tref, "coordinates", "geolon geolat")
2355  call netcdf_err(error, 'DEFINING TREF COORD' )
2356 
2357  error = nf90_def_var(ncid, 'z_c', nf90_double, (/dim_x,dim_y,dim_time/), id_z_c)
2358  call netcdf_err(error, 'DEFINING Z_C' )
2359  error = nf90_put_att(ncid, id_z_c, "long_name", "z_c")
2360  call netcdf_err(error, 'DEFINING Z_C LONG NAME' )
2361  error = nf90_put_att(ncid, id_z_c, "units", "none")
2362  call netcdf_err(error, 'DEFINING Z_C UNITS' )
2363  error = nf90_put_att(ncid, id_z_c, "coordinates", "geolon geolat")
2364  call netcdf_err(error, 'DEFINING Z_C COORD' )
2365 
2366  error = nf90_def_var(ncid, 'c_0', nf90_double, (/dim_x,dim_y,dim_time/), id_c_0)
2367  call netcdf_err(error, 'DEFINING C_0' )
2368  error = nf90_put_att(ncid, id_c_0, "long_name", "c_0")
2369  call netcdf_err(error, 'DEFINING C_0 LONG NAME' )
2370  error = nf90_put_att(ncid, id_c_0, "units", "none")
2371  call netcdf_err(error, 'DEFINING C_0 UNITS' )
2372  error = nf90_put_att(ncid, id_c_0, "coordinates", "geolon geolat")
2373  call netcdf_err(error, 'DEFINING C_0 COORD' )
2374 
2375  error = nf90_def_var(ncid, 'c_d', nf90_double, (/dim_x,dim_y,dim_time/), id_c_d)
2376  call netcdf_err(error, 'DEFINING C_D' )
2377  error = nf90_put_att(ncid, id_c_d, "long_name", "c_d")
2378  call netcdf_err(error, 'DEFINING C_D LONG NAME' )
2379  error = nf90_put_att(ncid, id_c_d, "units", "none")
2380  call netcdf_err(error, 'DEFINING C_D UNITS' )
2381  error = nf90_put_att(ncid, id_c_d, "coordinates", "geolon geolat")
2382  call netcdf_err(error, 'DEFINING C_D COORD' )
2383 
2384  error = nf90_def_var(ncid, 'w_0', nf90_double, (/dim_x,dim_y,dim_time/), id_w_0)
2385  call netcdf_err(error, 'DEFINING W_0' )
2386  error = nf90_put_att(ncid, id_w_0, "long_name", "w_0")
2387  call netcdf_err(error, 'DEFINING W_0 LONG NAME' )
2388  error = nf90_put_att(ncid, id_w_0, "units", "none")
2389  call netcdf_err(error, 'DEFINING W_0 UNITS' )
2390  error = nf90_put_att(ncid, id_w_0, "coordinates", "geolon geolat")
2391  call netcdf_err(error, 'DEFINING W_0 COORD' )
2392 
2393  error = nf90_def_var(ncid, 'w_d', nf90_double, (/dim_x,dim_y,dim_time/), id_w_d)
2394  call netcdf_err(error, 'DEFINING W_D' )
2395  error = nf90_put_att(ncid, id_w_d, "long_name", "w_d")
2396  call netcdf_err(error, 'DEFINING W_D LONG NAME' )
2397  error = nf90_put_att(ncid, id_w_d, "units", "none")
2398  call netcdf_err(error, 'DEFINING W_D UNITS' )
2399  error = nf90_put_att(ncid, id_w_d, "coordinates", "geolon geolat")
2400  call netcdf_err(error, 'DEFINING W_D COORD' )
2401 
2402  error = nf90_def_var(ncid, 'xt', nf90_double, (/dim_x,dim_y,dim_time/), id_xt)
2403  call netcdf_err(error, 'DEFINING XT' )
2404  error = nf90_put_att(ncid, id_xt, "long_name", "xt")
2405  call netcdf_err(error, 'DEFINING XT LONG NAME' )
2406  error = nf90_put_att(ncid, id_xt, "units", "none")
2407  call netcdf_err(error, 'DEFINING XT UNITS' )
2408  error = nf90_put_att(ncid, id_xt, "coordinates", "geolon geolat")
2409  call netcdf_err(error, 'DEFINING XT COORD' )
2410 
2411  error = nf90_def_var(ncid, 'xs', nf90_double, (/dim_x,dim_y,dim_time/), id_xs)
2412  call netcdf_err(error, 'DEFINING XS' )
2413  error = nf90_put_att(ncid, id_xs, "long_name", "xs")
2414  call netcdf_err(error, 'DEFINING XS LONG NAME' )
2415  error = nf90_put_att(ncid, id_xs, "units", "none")
2416  call netcdf_err(error, 'DEFINING XS UNITS' )
2417  error = nf90_put_att(ncid, id_xs, "coordinates", "geolon geolat")
2418  call netcdf_err(error, 'DEFINING XS COORD' )
2419 
2420  error = nf90_def_var(ncid, 'xu', nf90_double, (/dim_x,dim_y,dim_time/), id_xu)
2421  call netcdf_err(error, 'DEFINING XU' )
2422  error = nf90_put_att(ncid, id_xu, "long_name", "xu")
2423  call netcdf_err(error, 'DEFINING XU LONG NAME' )
2424  error = nf90_put_att(ncid, id_xu, "units", "none")
2425  call netcdf_err(error, 'DEFINING XU UNITS' )
2426  error = nf90_put_att(ncid, id_xu, "coordinates", "geolon geolat")
2427  call netcdf_err(error, 'DEFINING XU COORD' )
2428 
2429  error = nf90_def_var(ncid, 'xv', nf90_double, (/dim_x,dim_y,dim_time/), id_xv)
2430  call netcdf_err(error, 'DEFINING XV' )
2431  error = nf90_put_att(ncid, id_xv, "long_name", "xv")
2432  call netcdf_err(error, 'DEFINING XV LONG NAME' )
2433  error = nf90_put_att(ncid, id_xv, "units", "none")
2434  call netcdf_err(error, 'DEFINING XV UNITS' )
2435  error = nf90_put_att(ncid, id_xv, "coordinates", "geolon geolat")
2436  call netcdf_err(error, 'DEFINING XV COORD' )
2437 
2438  error = nf90_def_var(ncid, 'xz', nf90_double, (/dim_x,dim_y,dim_time/), id_xz)
2439  call netcdf_err(error, 'DEFINING XZ' )
2440  error = nf90_put_att(ncid, id_xz, "long_name", "xz")
2441  call netcdf_err(error, 'DEFINING XZ LONG NAME' )
2442  error = nf90_put_att(ncid, id_xz, "units", "none")
2443  call netcdf_err(error, 'DEFINING XZ UNITS' )
2444  error = nf90_put_att(ncid, id_xz, "coordinates", "geolon geolat")
2445  call netcdf_err(error, 'DEFINING XZ COORD' )
2446 
2447  error = nf90_def_var(ncid, 'zm', nf90_double, (/dim_x,dim_y,dim_time/), id_zm)
2448  call netcdf_err(error, 'DEFINING ZM' )
2449  error = nf90_put_att(ncid, id_zm, "long_name", "zm")
2450  call netcdf_err(error, 'DEFINING ZM LONG NAME' )
2451  error = nf90_put_att(ncid, id_zm, "units", "none")
2452  call netcdf_err(error, 'DEFINING ZM UNITS' )
2453  error = nf90_put_att(ncid, id_zm, "coordinates", "geolon geolat")
2454  call netcdf_err(error, 'DEFINING ZM COORD' )
2455 
2456  error = nf90_def_var(ncid, 'xtts', nf90_double, (/dim_x,dim_y,dim_time/), id_xtts)
2457  call netcdf_err(error, 'DEFINING XTTS' )
2458  error = nf90_put_att(ncid, id_xtts, "long_name", "xtts")
2459  call netcdf_err(error, 'DEFINING XTTS LONG NAME' )
2460  error = nf90_put_att(ncid, id_xtts, "units", "none")
2461  call netcdf_err(error, 'DEFINING XTTS UNITS' )
2462  error = nf90_put_att(ncid, id_xtts, "coordinates", "geolon geolat")
2463  call netcdf_err(error, 'DEFINING XTTS COORD' )
2464 
2465  error = nf90_def_var(ncid, 'xzts', nf90_double, (/dim_x,dim_y,dim_time/), id_xzts)
2466  call netcdf_err(error, 'DEFINING XZTS' )
2467  error = nf90_put_att(ncid, id_xzts, "long_name", "xzts")
2468  call netcdf_err(error, 'DEFINING XZTS LONG NAME' )
2469  error = nf90_put_att(ncid, id_xzts, "units", "none")
2470  call netcdf_err(error, 'DEFINING XZTS UNITS' )
2471  error = nf90_put_att(ncid, id_xzts, "coordinates", "geolon geolat")
2472  call netcdf_err(error, 'DEFINING XZTS COORD' )
2473 
2474  error = nf90_def_var(ncid, 'd_conv', nf90_double, (/dim_x,dim_y,dim_time/), id_d_conv)
2475  call netcdf_err(error, 'DEFINING D_CONV' )
2476  error = nf90_put_att(ncid, id_d_conv, "long_name", "d_conv")
2477  call netcdf_err(error, 'DEFINING D_CONV LONG NAME' )
2478  error = nf90_put_att(ncid, id_d_conv, "units", "none")
2479  call netcdf_err(error, 'DEFINING D_CONV UNITS' )
2480  error = nf90_put_att(ncid, id_d_conv, "coordinates", "geolon geolat")
2481  call netcdf_err(error, 'DEFINING D_CONV COORD' )
2482 
2483  error = nf90_def_var(ncid, 'ifd', nf90_double, (/dim_x,dim_y,dim_time/), id_ifd)
2484  call netcdf_err(error, 'DEFINING IFD' )
2485  error = nf90_put_att(ncid, id_ifd, "long_name", "ifd")
2486  call netcdf_err(error, 'DEFINING IFD LONG NAME' )
2487  error = nf90_put_att(ncid, id_ifd, "units", "none")
2488  call netcdf_err(error, 'DEFINING IFD UNITS' )
2489  error = nf90_put_att(ncid, id_ifd, "coordinates", "geolon geolat")
2490  call netcdf_err(error, 'DEFINING IFD COORD' )
2491 
2492  error = nf90_def_var(ncid, 'dt_cool', nf90_double, (/dim_x,dim_y,dim_time/), id_dt_cool)
2493  call netcdf_err(error, 'DEFINING DT_COOL' )
2494  error = nf90_put_att(ncid, id_dt_cool, "long_name", "dt_cool")
2495  call netcdf_err(error, 'DEFINING DT_COOL LONG NAME' )
2496  error = nf90_put_att(ncid, id_dt_cool, "units", "none")
2497  call netcdf_err(error, 'DEFINING DT_COOL UNITS' )
2498  error = nf90_put_att(ncid, id_dt_cool, "coordinates", "geolon geolat")
2499  call netcdf_err(error, 'DEFINING DT_COOL COORD' )
2500 
2501  error = nf90_def_var(ncid, 'qrain', nf90_double, (/dim_x,dim_y,dim_time/), id_qrain)
2502  call netcdf_err(error, 'DEFINING QRAIN' )
2503  error = nf90_put_att(ncid, id_qrain, "long_name", "qrain")
2504  call netcdf_err(error, 'DEFINING QRAIN LONG NAME' )
2505  error = nf90_put_att(ncid, id_qrain, "units", "none")
2506  call netcdf_err(error, 'DEFINING QRAIN UNITS' )
2507  error = nf90_put_att(ncid, id_qrain, "coordinates", "geolon geolat")
2508  call netcdf_err(error, 'DEFINING QRAIN COORD' )
2509 
2510  endif ! nsst records
2511 
2512  error = nf90_enddef(ncid, header_buffer_val,4,0,4)
2513  call netcdf_err(error, 'DEFINING HEADER' )
2514 
2515  endif local_pet ! is localpet 0?
2516 
2517  if (localpet == 0) then
2518  error = nf90_put_var( ncid, id_lsoil, lsoil_data)
2519  call netcdf_err(error, 'WRITING ZAXIS RECORD' )
2520  error = nf90_put_var( ncid, id_x, x_data)
2521  call netcdf_err(error, 'WRITING XAXIS RECORD' )
2522  error = nf90_put_var( ncid, id_y, y_data)
2523  call netcdf_err(error, 'WRITING YAXIS RECORD' )
2524  times = 1.0
2525  error = nf90_put_var( ncid, id_time, times)
2526  call netcdf_err(error, 'WRITING TIME RECORD' )
2527  endif
2528 
2529  print*,"- CALL FieldGather FOR TARGET GRID LATITUDE FOR TILE: ", tile
2530  call esmf_fieldgather(latitude_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2531  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2532  call error_handler("IN FieldGather", error)
2533 
2534  if (localpet == 0) then
2535  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2536  error = nf90_put_var( ncid, id_lat, dum2d)
2537  call netcdf_err(error, 'WRITING LATITUDE RECORD' )
2538  endif
2539 
2540  print*,"- CALL FieldGather FOR TARGET GRID LONGITUDE FOR TILE: ", tile
2541  call esmf_fieldgather(longitude_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2542  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2543  call error_handler("IN FieldGather", error)
2544 
2545  if (localpet == 0) then
2546  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2547  error = nf90_put_var( ncid, id_lon, dum2d)
2548  call netcdf_err(error, 'WRITING LONGITUDE RECORD' )
2549  endif
2550 
2551  print*,"- CALL FieldGather FOR TARGET GRID SNOW LIQ EQUIV FOR TILE: ", tile
2552  call esmf_fieldgather(snow_liq_equiv_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2553  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2554  call error_handler("IN FieldGather", error)
2555 
2556  if (localpet == 0) then
2557  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2558  error = nf90_put_var( ncid, id_sheleg, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2559  call netcdf_err(error, 'WRITING SNOW LIQ EQUIV RECORD' )
2560  endif
2561 
2562  print*,"- CALL FieldGather FOR TARGET GRID SNOW DEPTH FOR TILE: ", tile
2563  call esmf_fieldgather(snow_depth_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2564  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2565  call error_handler("IN FieldGather", error)
2566 
2567  if (localpet == 0) then
2568  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2569  error = nf90_put_var( ncid, id_snwdph, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2570  call netcdf_err(error, 'WRITING SNWDPH RECORD' )
2571  endif
2572 
2573  print*,"- CALL FieldGather FOR TARGET GRID SLOPE TYPE FOR TILE: ", tile
2574  call esmf_fieldgather(slope_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2575  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2576  call error_handler("IN FieldGather", error)
2577 
2578  if (localpet == 0) then
2579  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2580  error = nf90_put_var( ncid, id_slope, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2581  call netcdf_err(error, 'WRITING SLOPE RECORD' )
2582  endif
2583 
2584  print*,"- CALL FieldGather FOR TARGET GRID Z0 FOR TILE: ", tile
2585  call esmf_fieldgather(z0_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2586  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2587  call error_handler("IN FieldGather", error)
2588 
2589  if (localpet == 0) then
2590  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2591  error = nf90_put_var( ncid, id_zorl, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2592  call netcdf_err(error, 'WRITING Z0 RECORD' )
2593  endif
2594 
2595  print*,"- CALL FieldGather FOR TARGET GRID MAX SNOW ALBEDO FOR TILE: ", tile
2596  call esmf_fieldgather(mxsno_albedo_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2597  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2598  call error_handler("IN FieldGather", error)
2599 
2600  if (localpet == 0) then
2601  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2602  error = nf90_put_var( ncid, id_snoalb, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2603  call netcdf_err(error, 'WRITING MAX SNOW ALBEDO RECORD' )
2604  endif
2605 
2606  if (.not. lai_from_climo) then
2607  print*,"- CALL FieldGather FOR TARGET GRID LEAF AREA INDEX FOR TILE: ", tile
2608  call esmf_fieldgather(lai_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2609  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2610  call error_handler("IN FieldGather", error)
2611 
2612  if (localpet == 0) then
2613  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2614  error = nf90_put_var( ncid, id_lai, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2615  call netcdf_err(error, 'WRITING LEAF AREA INDEX RECORD' )
2616  endif
2617  endif
2618 
2619  print*,"- CALL FieldGather FOR TARGET GRID SOIL TYPE FOR TILE: ", tile
2620  call esmf_fieldgather(soil_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2621  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2622  call error_handler("IN FieldGather", error)
2623 
2624  if (localpet == 0) then
2625  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2626  error = nf90_put_var( ncid, id_stype, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2627  call netcdf_err(error, 'WRITING SOIL TYPE RECORD' )
2628  endif
2629 
2630  print*,"- CALL FieldGather FOR TARGET GRID VEGETATION TYPE FOR TILE: ", tile
2631  call esmf_fieldgather(veg_type_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2632  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2633  call error_handler("IN FieldGather", error)
2634 
2635  if (localpet == 0) then
2636  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2637  error = nf90_put_var( ncid, id_vtype, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2638  call netcdf_err(error, 'WRITING VEGETATION TYPE RECORD' )
2639  endif
2640 
2641  print*,"- CALL FieldGather FOR TARGET GRID VEGETATION GREENNESS FOR TILE: ", tile
2642  call esmf_fieldgather(veg_greenness_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2643  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2644  call error_handler("IN FieldGather", error)
2645 
2646  if (localpet == 0) then
2647  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2648  error = nf90_put_var( ncid, id_vfrac, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2649  call netcdf_err(error, 'WRITING VEGETATION GREENNESS RECORD' )
2650  endif
2651 
2652  print*,"- CALL FieldGather FOR TARGET GRID SUBSTRATE TEMPERATURE FOR TILE: ", tile
2653  call esmf_fieldgather(substrate_temp_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2654  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2655  call error_handler("IN FieldGather", error)
2656 
2657  if (localpet == 0) then
2658  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2659  error = nf90_put_var( ncid, id_tg3, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2660  call netcdf_err(error, 'WRITING SUBSTRATE TEMPERATURE RECORD' )
2661  endif
2662 
2663  print*,"- CALL FieldGather FOR TARGET GRID FACSF FOR TILE: ", tile
2664  call esmf_fieldgather(facsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2665  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2666  call error_handler("IN FieldGather", error)
2667 
2668  if (localpet == 0) then
2669  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2670  error = nf90_put_var( ncid, id_facsf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2671  call netcdf_err(error, 'WRITING FACSF RECORD' )
2672  endif
2673 
2674  print*,"- CALL FieldGather FOR TARGET GRID FACWF FOR TILE: ", tile
2675  call esmf_fieldgather(facwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2676  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2677  call error_handler("IN FieldGather", error)
2678 
2679  if (localpet == 0) then
2680  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2681  error = nf90_put_var( ncid, id_facwf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2682  call netcdf_err(error, 'WRITING FACWF RECORD' )
2683  endif
2684 
2685  print*,"- CALL FieldGather FOR TARGET GRID ALNSF FOR TILE: ", tile
2686  call esmf_fieldgather(alnsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2687  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2688  call error_handler("IN FieldGather", error)
2689 
2690  if (localpet == 0) then
2691  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2692  error = nf90_put_var( ncid, id_alnsf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2693  call netcdf_err(error, 'WRITING ALNSF RECORD' )
2694  endif
2695 
2696  print*,"- CALL FieldGather FOR TARGET GRID ALNWF FOR TILE: ", tile
2697  call esmf_fieldgather(alnwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2698  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2699  call error_handler("IN FieldGather", error)
2700 
2701  if (localpet == 0) then
2702  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2703  error = nf90_put_var( ncid, id_alnwf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2704  call netcdf_err(error, 'WRITING ALNWF RECORD' )
2705  endif
2706 
2707  print*,"- CALL FieldGather FOR TARGET GRID ALVSF FOR TILE: ", tile
2708  call esmf_fieldgather(alvsf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2709  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2710  call error_handler("IN FieldGather", error)
2711 
2712  if (localpet == 0) then
2713  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2714  error = nf90_put_var( ncid, id_alvsf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2715  call netcdf_err(error, 'WRITING ALVSF RECORD' )
2716  endif
2717 
2718  print*,"- CALL FieldGather FOR TARGET GRID ALVWF FOR TILE: ", tile
2719  call esmf_fieldgather(alvwf_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2720  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2721  call error_handler("IN FieldGather", error)
2722 
2723  if (localpet == 0) then
2724  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2725  error = nf90_put_var( ncid, id_alvwf, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2726  call netcdf_err(error, 'WRITING ALVWF RECORD' )
2727  endif
2728 
2729  print*,"- CALL FieldGather FOR TARGET GRID MAX VEGETATION GREENNESS FOR TILE: ", tile
2730  call esmf_fieldgather(max_veg_greenness_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2731  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2732  call error_handler("IN FieldGather", error)
2733 
2734  if (localpet == 0) then
2735  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2736  error = nf90_put_var( ncid, id_shdmax, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2737  call netcdf_err(error, 'WRITING MAX VEGETATION GREENNESS RECORD' )
2738  endif
2739 
2740  print*,"- CALL FieldGather FOR TARGET GRID MIN VEGETATION GREENNESS FOR TILE: ", tile
2741  call esmf_fieldgather(min_veg_greenness_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2742  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2743  call error_handler("IN FieldGather", error)
2744 
2745  if (localpet == 0) then
2746  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2747  error = nf90_put_var( ncid, id_shdmin, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2748  call netcdf_err(error, 'WRITING MIN VEGETATION GREENNESS RECORD' )
2749  endif
2750 
2751  print*,"- CALL FieldGather FOR TARGET GRID T2M FOR TILE: ", tile
2752  call esmf_fieldgather(t2m_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2753  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2754  call error_handler("IN FieldGather", error)
2755 
2756  if (localpet == 0) then
2757  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2758  error = nf90_put_var( ncid, id_t2m, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2759  call netcdf_err(error, 'WRITING T2M RECORD' )
2760  endif
2761 
2762  print*,"- CALL FieldGather FOR TARGET GRID Q2M FOR TILE: ", tile
2763  call esmf_fieldgather(q2m_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2764  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2765  call error_handler("IN FieldGather", error)
2766 
2767  if (localpet == 0) then
2768  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2769  error = nf90_put_var( ncid, id_q2m, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2770  call netcdf_err(error, 'WRITING Q2M RECORD' )
2771  endif
2772 
2773  print*,"- CALL FieldGather FOR TARGET GRID TPRCP FOR TILE: ", tile
2774  call esmf_fieldgather(tprcp_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2775  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2776  call error_handler("IN FieldGather", error)
2777 
2778  if (localpet == 0) then
2779  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2780  error = nf90_put_var( ncid, id_tprcp, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2781  call netcdf_err(error, 'WRITING TPRCP RECORD' )
2782  endif
2783 
2784  print*,"- CALL FieldGather FOR TARGET GRID F10M FOR TILE: ", tile
2785  call esmf_fieldgather(f10m_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2786  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2787  call error_handler("IN FieldGather", error)
2788 
2789  if (localpet == 0) then
2790  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2791  error = nf90_put_var( ncid, id_f10m, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2792  call netcdf_err(error, 'WRITING F10M RECORD' )
2793  endif
2794 
2795  print*,"- CALL FieldGather FOR TARGET GRID FFMM FOR TILE: ", tile
2796  call esmf_fieldgather(ffmm_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2797  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2798  call error_handler("IN FieldGather", error)
2799 
2800  if (localpet == 0) then
2801  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2802  error = nf90_put_var( ncid, id_ffmm, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2803  call netcdf_err(error, 'WRITING FFMM RECORD' )
2804  dum2d = 0.0
2805  error = nf90_put_var( ncid, id_ffhh, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2806  call netcdf_err(error, 'WRITING FFHH RECORD' )
2807  endif
2808 
2809  print*,"- CALL FieldGather FOR TARGET GRID USTAR FOR TILE: ", tile
2810  call esmf_fieldgather(ustar_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2811  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2812  call error_handler("IN FieldGather", error)
2813 
2814  if (localpet == 0) then
2815  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2816  error = nf90_put_var( ncid, id_uustar, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2817  call netcdf_err(error, 'WRITING USTAR RECORD' )
2818  endif
2819 
2820  print*,"- CALL FieldGather FOR TARGET GRID SRFLAG FOR TILE: ", tile
2821  call esmf_fieldgather(srflag_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2822  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2823  call error_handler("IN FieldGather", error)
2824 
2825  if (localpet == 0) then
2826  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2827  error = nf90_put_var( ncid, id_srflag, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2828  call netcdf_err(error, 'WRITING SRFLAG RECORD' )
2829  endif
2830 
2831  print*,"- CALL FieldGather FOR TARGET GRID SEA ICE FRACTION FOR TILE: ", tile
2832  call esmf_fieldgather(seaice_fract_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2833  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2834  call error_handler("IN FieldGather", error)
2835 
2836  if (localpet == 0) then
2837  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2838  error = nf90_put_var( ncid, id_fice, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2839  call netcdf_err(error, 'WRITING FICE RECORD' )
2840  endif
2841 
2842  print*,"- CALL FieldGather FOR TARGET GRID SEA ICE DEPTH FOR TILE: ", tile
2843  call esmf_fieldgather(seaice_depth_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2844  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2845  call error_handler("IN FieldGather", error)
2846 
2847  if (localpet == 0) then
2848  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2849  error = nf90_put_var( ncid, id_hice, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2850  call netcdf_err(error, 'WRITING HICE RECORD' )
2851  endif
2852 
2853  print*,"- CALL FieldGather FOR TARGET GRID SEA ICE SKIN TEMP FOR TILE: ", tile
2854  call esmf_fieldgather(seaice_skin_temp_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2855  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2856  call error_handler("IN FieldGather", error)
2857 
2858  if (localpet == 0) then
2859  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2860  error = nf90_put_var( ncid, id_tisfc, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2861  call netcdf_err(error, 'WRITING TISFC RECORD' )
2862  endif
2863 
2864  print*,"- CALL FieldGather FOR TARGET GRID SKIN TEMP FOR TILE: ", tile
2865  call esmf_fieldgather(skin_temp_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2866  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2867  call error_handler("IN FieldGather", error)
2868 
2869  if (localpet == 0) then
2870  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2871  error = nf90_put_var( ncid, id_tsea, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2872  call netcdf_err(error, 'WRITING TSEA RECORD' )
2873  endif
2874 
2875  print*,"- CALL FieldGather FOR TARGET GRID LANDMASK FOR TILE: ", tile
2876  call esmf_fieldgather(landmask_target_grid, idata_one_tile, rootpet=0, tile=tile, rc=error)
2877  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2878  call error_handler("IN FieldGather", error)
2879 
2880  if (localpet == 0) then
2881  dum2d(:,:) = float(idata_one_tile(istart:iend, jstart:jend))
2882  error = nf90_put_var( ncid, id_slmsk, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2883  call netcdf_err(error, 'WRITING LANDMASK RECORD' )
2884  endif
2885 
2886  print*,"- CALL FieldGather FOR TARGET GRID CANOPY MOISTURE CONTENT FOR TILE: ", tile
2887  call esmf_fieldgather(canopy_mc_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2888  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2889  call error_handler("IN FieldGather", error)
2890 
2891  if (localpet == 0) then
2892  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2893  error = nf90_put_var( ncid, id_canopy, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2894  call netcdf_err(error, 'WRITING CANOPY MC RECORD' )
2895  endif
2896 
2897 ! soil temperature
2898 
2899  print*,"- CALL FieldGather FOR TARGET GRID SOIL TEMPERATURE FOR TILE: ", tile
2900  call esmf_fieldgather(soil_temp_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
2901  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2902  call error_handler("IN FieldGather", error)
2903 
2904  if (localpet == 0) then
2905  dum3d(:,:,:) = data_one_tile_3d(istart:iend, jstart:jend,:)
2906  error = nf90_put_var( ncid, id_stc, dum3d, start=(/1,1,1,1/), count=(/i_target_out,j_target_out,lsoil_target,1/))
2907  call netcdf_err(error, 'WRITING SOIL TEMP RECORD' )
2908  endif
2909 
2910 ! soil moisture (total)
2911 
2912  print*,"- CALL FieldGather FOR TARGET GRID TOTAL SOIL MOISTURE FOR TILE: ", tile
2913  call esmf_fieldgather(soilm_tot_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
2914  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2915  call error_handler("IN FieldGather", error)
2916 
2917  if (localpet == 0) then
2918  dum3d(:,:,:) = data_one_tile_3d(istart:iend, jstart:jend,:)
2919  error = nf90_put_var( ncid, id_smc, dum3d, start=(/1,1,1,1/), count=(/i_target_out,j_target_out,lsoil_target,1/))
2920  call netcdf_err(error, 'WRITING TOTAL SOIL MOISTURE RECORD' )
2921  endif
2922 
2923 ! soil moisture (liquid)
2924 
2925  print*,"- CALL FieldGather FOR TARGET GRID LIQUID SOIL MOISTURE FOR TILE: ", tile
2926  call esmf_fieldgather(soilm_liq_target_grid, data_one_tile_3d, rootpet=0, tile=tile, rc=error)
2927  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2928  call error_handler("IN FieldGather", error)
2929 
2930  if (localpet == 0) then
2931  dum3d(:,:,:) = data_one_tile_3d(istart:iend, jstart:jend,:)
2932  error = nf90_put_var( ncid, id_slc, dum3d, start=(/1,1,1,1/), count=(/i_target_out,j_target_out,lsoil_target,1/))
2933  call netcdf_err(error, 'WRITING LIQUID SOIL MOISTURE RECORD' )
2934  endif
2935 
2936  if (convert_nst) then
2937 
2938  print*,"- CALL FieldGather FOR TARGET C_D FOR TILE: ", tile
2939  call esmf_fieldgather(c_d_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2940  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2941  call error_handler("IN FieldGather", error)
2942 
2943  if (localpet == 0) then
2944  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2945  error = nf90_put_var( ncid, id_c_d, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2946  call netcdf_err(error, 'WRITING C_D RECORD' )
2947  endif
2948 
2949  print*,"- CALL FieldGather FOR TARGET C_0 FOR TILE: ", tile
2950  call esmf_fieldgather(c_0_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2951  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2952  call error_handler("IN FieldGather", error)
2953 
2954  if (localpet == 0) then
2955  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2956  error = nf90_put_var( ncid, id_c_0, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2957  call netcdf_err(error, 'WRITING C_0 RECORD' )
2958  endif
2959 
2960  print*,"- CALL FieldGather FOR TARGET D_CONV FOR TILE: ", tile
2961  call esmf_fieldgather(d_conv_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2962  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2963  call error_handler("IN FieldGather", error)
2964 
2965  if (localpet == 0) then
2966  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2967  error = nf90_put_var( ncid, id_d_conv, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2968  call netcdf_err(error, 'WRITING D_CONV RECORD' )
2969  endif
2970 
2971  print*,"- CALL FieldGather FOR TARGET DT_COOL FOR TILE: ", tile
2972  call esmf_fieldgather(dt_cool_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2973  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2974  call error_handler("IN FieldGather", error)
2975 
2976  if (localpet == 0) then
2977  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2978  error = nf90_put_var( ncid, id_dt_cool, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2979  call netcdf_err(error, 'WRITING DT_COOL RECORD' )
2980  endif
2981 
2982  print*,"- CALL FieldGather FOR TARGET IFD FOR TILE: ", tile
2983  call esmf_fieldgather(ifd_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2984  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2985  call error_handler("IN FieldGather", error)
2986 
2987  if (localpet == 0) then
2988  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
2989  error = nf90_put_var( ncid, id_ifd, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
2990  call netcdf_err(error, 'WRITING IFD RECORD' )
2991  endif
2992 
2993  print*,"- CALL FieldGather FOR TARGET QRAIN FOR TILE: ", tile
2994  call esmf_fieldgather(qrain_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
2995  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
2996  call error_handler("IN FieldGather", error)
2997 
2998  if (localpet == 0) then
2999  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3000  error = nf90_put_var( ncid, id_qrain, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3001  call netcdf_err(error, 'WRITING QRAIN RECORD' )
3002  endif
3003 
3004  print*,"- CALL FieldGather FOR TARGET TREF FOR TILE: ", tile
3005  call esmf_fieldgather(tref_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3006  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3007  call error_handler("IN FieldGather", error)
3008 
3009  if (localpet == 0) then
3010  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3011  error = nf90_put_var( ncid, id_tref, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3012  call netcdf_err(error, 'WRITING TREF RECORD' )
3013  endif
3014 
3015  print*,"- CALL FieldGather FOR TARGET W_D FOR TILE: ", tile
3016  call esmf_fieldgather(w_d_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3017  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3018  call error_handler("IN FieldGather", error)
3019 
3020  if (localpet == 0) then
3021  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3022  error = nf90_put_var( ncid, id_w_d, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3023  call netcdf_err(error, 'WRITING W_D RECORD' )
3024  endif
3025 
3026  print*,"- CALL FieldGather FOR TARGET W_0 FOR TILE: ", tile
3027  call esmf_fieldgather(w_0_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3028  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3029  call error_handler("IN FieldGather", error)
3030 
3031  if (localpet == 0) then
3032  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3033  error = nf90_put_var( ncid, id_w_0, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3034  call netcdf_err(error, 'WRITING W_0 RECORD' )
3035  endif
3036 
3037  print*,"- CALL FieldGather FOR TARGET XS FOR TILE: ", tile
3038  call esmf_fieldgather(xs_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3039  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3040  call error_handler("IN FieldGather", error)
3041 
3042  if (localpet == 0) then
3043  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3044  error = nf90_put_var( ncid, id_xs, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3045  call netcdf_err(error, 'WRITING XS RECORD' )
3046  endif
3047 
3048  print*,"- CALL FieldGather FOR TARGET XT FOR TILE: ", tile
3049  call esmf_fieldgather(xt_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3050  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3051  call error_handler("IN FieldGather", error)
3052 
3053  if (localpet == 0) then
3054  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3055  error = nf90_put_var( ncid, id_xt, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3056  call netcdf_err(error, 'WRITING XT RECORD' )
3057  endif
3058 
3059  print*,"- CALL FieldGather FOR TARGET XU FOR TILE: ", tile
3060  call esmf_fieldgather(xu_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3061  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3062  call error_handler("IN FieldGather", error)
3063 
3064  if (localpet == 0) then
3065  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3066  error = nf90_put_var( ncid, id_xu, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3067  call netcdf_err(error, 'WRITING XU RECORD' )
3068  endif
3069 
3070  print*,"- CALL FieldGather FOR TARGET XV FOR TILE: ", tile
3071  call esmf_fieldgather(xv_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3072  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3073  call error_handler("IN FieldGather", error)
3074 
3075  if (localpet == 0) then
3076  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3077  error = nf90_put_var( ncid, id_xv, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3078  call netcdf_err(error, 'WRITING XV RECORD' )
3079  endif
3080 
3081  print*,"- CALL FieldGather FOR TARGET XZ FOR TILE: ", tile
3082  call esmf_fieldgather(xz_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3083  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3084  call error_handler("IN FieldGather", error)
3085 
3086  if (localpet == 0) then
3087  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3088  error = nf90_put_var( ncid, id_xz, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3089  call netcdf_err(error, 'WRITING XZ RECORD' )
3090  endif
3091 
3092  print*,"- CALL FieldGather FOR TARGET XTTS FOR TILE: ", tile
3093  call esmf_fieldgather(xtts_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3094  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3095  call error_handler("IN FieldGather", error)
3096 
3097  if (localpet == 0) then
3098  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3099  error = nf90_put_var( ncid, id_xtts, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3100  call netcdf_err(error, 'WRITING XTTS RECORD' )
3101  endif
3102 
3103  print*,"- CALL FieldGather FOR TARGET XZTS FOR TILE: ", tile
3104  call esmf_fieldgather(xzts_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3105  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3106  call error_handler("IN FieldGather", error)
3107 
3108  if (localpet == 0) then
3109  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3110  error = nf90_put_var( ncid, id_xzts, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3111  call netcdf_err(error, 'WRITING XZTS RECORD' )
3112  endif
3113 
3114  print*,"- CALL FieldGather FOR TARGET Z_C FOR TILE: ", tile
3115  call esmf_fieldgather(z_c_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3116  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3117  call error_handler("IN FieldGather", error)
3118 
3119  if (localpet == 0) then
3120  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3121  error = nf90_put_var( ncid, id_z_c, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3122  call netcdf_err(error, 'WRITING Z_C RECORD' )
3123  endif
3124 
3125  print*,"- CALL FieldGather FOR TARGET ZM FOR TILE: ", tile
3126  call esmf_fieldgather(zm_target_grid, data_one_tile, rootpet=0, tile=tile, rc=error)
3127  if(esmf_logfounderror(rctocheck=error,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
3128  call error_handler("IN FieldGather", error)
3129 
3130  if (localpet == 0) then
3131  dum2d(:,:) = data_one_tile(istart:iend, jstart:jend)
3132  error = nf90_put_var( ncid, id_zm, dum2d, start=(/1,1,1/), count=(/i_target_out,j_target_out,1/))
3133  call netcdf_err(error, 'WRITING ZM RECORD' )
3134  endif
3135 
3136  endif ! convert nst
3137 
3138 !-------------------------------------------------------------------------------
3139 ! close file
3140 !-------------------------------------------------------------------------------
3141 
3142  error = nf90_close(ncid)
3143 
3144  enddo tile_loop
3145 
3146  deallocate(lsoil_data, x_data, y_data)
3147  deallocate(data_one_tile, data_one_tile_3d, idata_one_tile, dum2d, dum3d)
3148 
3149  return
3150 
3151  end subroutine write_fv3_sfc_data_netcdf
3152 
3153  end module write_data
type(esmf_field), public d_conv_target_grid
Thickness of free convection layer.
+
integer, public j_target
j dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:40
+
type(esmf_field), public zm_target_grid
Oceanic mixed layer depth.
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data...
+
integer, public num_tiles_target_grid
Number of tiles, target grid.
Definition: model_grid.F90:49
+
integer, public lsoil_target
Number of soil layers, target grid.
Definition: model_grid.F90:25
+
type(esmf_field), public canopy_mc_target_grid
Canopy moisture content.
+
type(esmf_field), public v_w_target_grid
V-wind, &#39;west&#39; edge of grid cell.
+
type(esmf_field), public longitude_w_target_grid
longitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:90
+
type(esmf_field), public f10m_target_grid
log((z0+10)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public c_d_target_grid
Coefficient 2 to calculate d(tz)/d(ts).
+
type(esmf_field), public ifd_target_grid
Model mode index.
+
type(esmf_field), public w_d_target_grid
Coefficient 4 to calculate d(tz)/d(ts).
+
type(esmf_field), public xtts_target_grid
d(xt)/d(ts).
+
logical, public lai_from_climo
If false, interpolate leaf area index from the input data to the target grid instead of using data fr...
+
integer, public regional
For regional target grids.
+
type(esmf_field), public srflag_target_grid
Snow/rain flag.
+
type(esmf_field), public xu_target_grid
u-current content in diurnal thermocline layer.
+
character(len=20), dimension(max_tracers), public tracers
Name of each atmos tracer to be processed.
+
real(esmf_kind_r8), dimension(:,:), allocatable, public vcoord_target
Vertical coordinate.
+
Module to hold ESMF fields associated with the target grid surface data.
+
type(esmf_field), public min_veg_greenness_target_grid
minimum annual greenness fraction
Definition: static_data.F90:30
+
type(esmf_field), public tprcp_target_grid
Precipitation.
+
type(esmf_field), public max_veg_greenness_target_grid
maximum annual greenness fraction
Definition: static_data.F90:29
+
type(esmf_field), public mxsno_albedo_target_grid
maximum snow albedo
Definition: static_data.F90:31
+
type(esmf_field), public longitude_s_target_grid
longitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:87
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
Definition: model_grid.F90:9
+
type(esmf_field), public alvwf_target_grid
visible white sky albedo
Definition: static_data.F90:24
+
type(esmf_field), public qnifa_climo_target_grid
Number concentration of ice friendly aerosols.
+
type(esmf_field), public latitude_target_grid
latitude of grid center, target grid
Definition: model_grid.F90:77
+
integer, public i_target
i dimension of each global tile, or of a nest, target grid.
Definition: model_grid.F90:37
+
integer, public halo_bndy
Number of row/cols of lateral halo, where pure lateral bndy conditions are applied (regional target g...
+
type(esmf_field), public xzts_target_grid
d(xz)/d(ts).
+
type(esmf_field), public latitude_s_target_grid
latitude of &#39;south&#39; edge of grid box, target grid
Definition: model_grid.F90:79
+
type(esmf_field), public c_0_target_grid
Coefficient 1 to calculate d(tz)/d(ts).
+
type(esmf_field), public soilm_liq_target_grid
3-d liquid soil moisture.
+
type(esmf_field), public zh_target_grid
3-d height.
+
type(esmf_field), public alnsf_target_grid
near ir black sky albedo
Definition: static_data.F90:25
+
type(esmf_field), public xz_target_grid
Diurnal thermocline layer thickness.
+
type(esmf_field), public latitude_w_target_grid
latitude of &#39;west&#39; edge of grid box, target grid
Definition: model_grid.F90:82
+
type(esmf_field), public delp_target_grid
Pressure thickness.
+
type(esmf_field), public z_c_target_grid
Sub-layer cooling thickness.
+
integer, public lev_target
Number of vertical levels.
+
type(esmf_field), public lai_target_grid
Leaf area index.
+
type(esmf_field), public landmask_target_grid
land mask target grid - &#39;1&#39; land; &#39;0&#39; non-land
Definition: model_grid.F90:74
+
type(esmf_field), public seaice_fract_target_grid
Sea ice fraction.
+
logical, public convert_nst
Convert nst data when true.
+
type(esmf_field), public snow_liq_equiv_target_grid
Liquid equivalent snow depth.
+
type(esmf_field), public qrain_target_grid
Sensible heat flux due to rainfall.
+
type(esmf_field), public soilm_tot_target_grid
3-d total soil moisture.
+
Module to hold variables and ESMF fields associated with the target grid atmospheric data...
+
type(esmf_field), public seaice_depth_target_grid
Sea ice depth.
+
type(esmf_field), public ffmm_target_grid
log((z0+z1)*1/z0) See sfc_diff.f for details.
+
type(esmf_field), public seaice_skin_temp_target_grid
Sea ice skin temperature.
+
type(esmf_field), public longitude_target_grid
longitude of grid center, target grid
Definition: model_grid.F90:85
+
type(esmf_field), public alvsf_target_grid
visible black sky albedo
Definition: static_data.F90:23
+
type(esmf_field), public slope_type_target_grid
slope type
Definition: static_data.F90:32
+
Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation ty...
Definition: static_data.F90:13
+
type(esmf_field), public qnwfa_climo_target_grid
Number concentration of water friendly aerosols.
+
type(esmf_field), public v_s_target_grid
V-wind, &#39;south&#39; edge of grid cell.
+
type(esmf_field), public xs_target_grid
Salinity content in diurnal thermocline layer.
+
integer, public nvcoord_target
Number of vertical coordinate variables.
+
type(esmf_field), public ustar_target_grid
Friction velocity.
+
type(esmf_field), public u_s_target_grid
U-wind, &#39;south&#39; edge of grid cell.
+
type(esmf_field), public tref_target_grid
Reference temperature.
+
type(esmf_field), public q2m_target_grid
2-m specific humidity.
+
type(esmf_field), public ps_target_grid
Surface pressure.
+
type(esmf_field), public u_w_target_grid
U-wind, &#39;west&#39; edge of grid cell.
+
integer, public ip1_target
ip1_target plus 1
Definition: model_grid.F90:43
+
character(len=25), public input_type
Input data type:
+
integer, public num_tracers
Number of atmospheric tracers to be processed.
+
type(esmf_field), public substrate_temp_target_grid
soil subtrate temperature
Definition: static_data.F90:34
+
type(esmf_field), public veg_greenness_target_grid
vegetation greenness fraction
Definition: static_data.F90:35
+
type(esmf_field), public skin_temp_target_grid
Skin temperature/sst.
+
type(esmf_field), public temp_target_grid
Temperautre.
+
integer, public levp1_target
Number of vertical levels plus 1.
+
type(esmf_field), public xv_target_grid
v-current content in diurnal thermocline layer.
+
type(esmf_field), public xt_target_grid
Heat content in diurnal thermocline layer.
+
logical, public use_thomp_mp_climo
When true, read and process Thompson MP climatological tracers.
+
type(esmf_field), public veg_type_target_grid
vegetation type
Definition: static_data.F90:36
+
type(esmf_field), dimension(:), allocatable, public tracers_target_grid
Tracers.
+
type(esmf_field), public z0_target_grid
Roughness length.
+
type(esmf_field), public facwf_target_grid
fractional coverage for weak zenith angle dependent albedo
Definition: static_data.F90:28
+
integer, public halo_blend
Number of row/cols of blending halo, where model tendencies and lateral boundary tendencies are appli...
+
type(esmf_field), public dzdt_target_grid
Vertical velocity.
+
type(esmf_field), public t2m_target_grid
2-m temperatrure.
+
type(esmf_field), public soil_temp_target_grid
3-d soil temperature.
+
type(esmf_field), public alnwf_target_grid
near ir white sky albedo
Definition: static_data.F90:26
+
type(esmf_field), public dt_cool_target_grid
Sub-layer cooling amount.
+
type(esmf_field), public w_0_target_grid
Coefficient 3 to calculate d(tz)/d(ts).
+
type(esmf_field), public facsf_target_grid
fractional coverage for strong zenith angle dependent albedo
Definition: static_data.F90:27
+
integer, public jp1_target
jp1_target plus 1
Definition: model_grid.F90:45
+
type(esmf_field), public snow_depth_target_grid
Physical snow depth.
+
type(esmf_field), public soil_type_target_grid
soil type
Definition: static_data.F90:33
+
+
+ + + + diff --git a/ver-1.11.0/closed.png b/ver-1.11.0/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/README_8md_source.html b/ver-1.11.0/cpld_gridgen/README_8md_source.html new file mode 100644 index 000000000..3be754679 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/docs/README.md Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/docs/README.md
+
+
+
1 This program creates the files required for the Fix and IC files for
2 the coupled model.
3 
4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/angles_8F90.html b/ver-1.11.0/cpld_gridgen/angles_8F90.html new file mode 100644 index 000000000..5b5ef0270 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/angles_8F90.html @@ -0,0 +1,223 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/angles.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
angles.F90 File Reference
+
+
+ +

Determine the rotation angle on center and corner points. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions/Subroutines

subroutine angles::find_ang
 Find the rotation angle on center (Ct) grid points. More...
 
subroutine angles::find_angq
 Find the rotation angle on corner grid (Bu) points using the full MOM6 supergrid. More...
 
real(dbl_kind) function angles::modulo_around_point (x, xc, Lx)
 Return the modulo value of x in an interval [xc-(Lx/2) xc+(Lx/2)] If Lx<=0, then it returns x without applying modulo arithmetic. More...
 
+

Detailed Description

+

Determine the rotation angle on center and corner points.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This module finds the rotation angle for at both center and corner points It utilizes the MOM6 function modulo_around_point

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file angles.F90.

+

Function/Subroutine Documentation

+ +

◆ find_ang()

+ +
+
+ + + + + + + +
subroutine angles::find_ang ()
+
+ +

Find the rotation angle on center (Ct) grid points.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 132 of file angles.F90.

+ +
+
+ +

◆ find_angq()

+ +
+
+ + + + + + + +
subroutine angles::find_angq ()
+
+ +

Find the rotation angle on corner grid (Bu) points using the full MOM6 supergrid.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 26 of file angles.F90.

+ +
+
+ +

◆ modulo_around_point()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
real(dbl_kind) function angles::modulo_around_point (real(dbl_kind), intent(in) x,
real(dbl_kind), intent(in) xc,
real(dbl_kind), intent(in) Lx 
)
+
+ +

Return the modulo value of x in an interval [xc-(Lx/2) xc+(Lx/2)] If Lx<=0, then it returns x without applying modulo arithmetic.

+

From src/initialization/MOM_shared_initialization.F90:

Parameters
+ + + + +
[in]xValue to which to apply modulo arithmetic
[in]xcCenter of modulo range
[in]LxModulo range width
+
+
+
Returns
x_mod Value x shifted by an integer multiple of Lx to be close to xc
+ +

Definition at line 189 of file angles.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/angles_8F90.js b/ver-1.11.0/cpld_gridgen/angles_8F90.js new file mode 100644 index 000000000..5e0260d54 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/angles_8F90.js @@ -0,0 +1,6 @@ +var angles_8F90 = +[ + [ "find_ang", "angles_8F90.html#a94833b0aebb5d29fa125ec1925699a1c", null ], + [ "find_angq", "angles_8F90.html#a2bc63950e8d24894d9f584e9b07292b6", null ], + [ "modulo_around_point", "angles_8F90.html#ab1ed53b3e9e6d449e7180ed6b1ab6006", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/angles_8F90_source.html b/ver-1.11.0/cpld_gridgen/angles_8F90_source.html new file mode 100644 index 000000000..5fa09db59 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/angles_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/angles.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
angles.F90
+
+
+Go to the documentation of this file.
1 
9 
10 module angles
11 
12  use gengrid_kinds, only : dbl_kind, int_kind
13  use grdvars, only : ni,nj,nx,ny
14  use grdvars, only : x,y,xsgp1,ysgp1,sg_maxlat
15  use grdvars, only : latbu,lonbu,lonct
16  use grdvars, only : angq,anglet
17  use grdvars, only : debug
18 
19  implicit none
20 
21 contains
25  subroutine find_angq
26 
27  ! local variables
28  integer :: i,j,i1,i2,m,n
29 
30  ! pole locations on SG
31  integer(int_kind) :: ipolesg(2)
32 
33  ! from geolonB fix in MOM6
34  real(dbl_kind) :: len_lon ! The periodic range of longitudes, usually 360 degrees.
35  real(dbl_kind) :: pi_720deg ! One quarter the conversion factor from degrees to radians.
36  real(dbl_kind) :: lonB(2,2) ! The longitude of a point, shifted to have about the same value.
37  real(dbl_kind) :: lon_scale = 0.0
38 
39  !---------------------------------------------------------------------
40  ! to find angleq on seam, replicate supergrid values across seam
41  !---------------------------------------------------------------------
42 
43  angq = 0.0
44  xsgp1 = 0.0; ysgp1 = 0.0
45  !pole on supergrid
46  ipolesg = -1
47  j = ny
48  do i = 1,nx/2
49  if(y(i,j) .eq. sg_maxlat)ipolesg(1) = i
50  enddo
51  do i = nx/2+1,nx
52  if(y(i,j) .eq. sg_maxlat)ipolesg(2) = i
53  enddo
54  if(debug)print *,'poles found at ',ipolesg
55 
56  xsgp1(:,0:ny) = x(:,0:ny)
57  ysgp1(:,0:ny) = y(:,0:ny)
58 
59  !check
60  do i = ipolesg(1)-5,ipolesg(1)+5
61  i2 = ipolesg(2)+(ipolesg(1)-i)+1
62  if(debug)print *,i,i2
63  enddo
64  print *
65  do i = ipolesg(2)-5,ipolesg(2)+5
66  i2 = ipolesg(2)+(ipolesg(1)-i)+1
67  if(debug)print *,i,i2
68  enddo
69 
70  !replicate supergrid across pole
71  do i = 1,nx
72  i2 = ipolesg(2)+(ipolesg(1)-i)
73  xsgp1(i,ny+1) = xsgp1(i2,ny)
74  ysgp1(i,ny+1) = ysgp1(i2,ny)
75  enddo
76 
77  !check
78  j = ny+1
79  i1 = ipolesg(1); i2 = ipolesg(2)-(ipolesg(1)-i1)
80  print *,'replicate X across seam on SG'
81  print *,xsgp1(i1-2,j),xsgp1(i2+2,j)
82  print *,xsgp1(i1-1,j),xsgp1(i2+1,j)
83  print *,xsgp1(i1, j),xsgp1(i2, j)
84  print *,xsgp1(i1+1,j),xsgp1(i2-1,j)
85  print *,xsgp1(i1+2,j),xsgp1(i2-2,j)
86 
87  print *,'replicate Y across seam on SG'
88  print *,ysgp1(i1-2,j),ysgp1(i2+2,j)
89  print *,ysgp1(i1-1,j),ysgp1(i2+1,j)
90  print *,ysgp1(i1, j),ysgp1(i2, j)
91  print *,ysgp1(i1+1,j),ysgp1(i2-1,j)
92  print *,ysgp1(i1+2,j),ysgp1(i2-2,j)
93 
94  !---------------------------------------------------------------------
95  ! rotation angle on supergrid vertices
96  ! lonB: x(i-1,j-1) has same relationship to x(i,j) on SG as
97  ! geolonT(i,j) has to geolonBu(i,j) on the reduced grid
98  !---------------------------------------------------------------------
99 
100  ! constants as defined in MOM
101  pi_720deg = atan(1.0) / 180.0
102  len_lon = 360.0
103  do j=1,ny ; do i=1,nx-1
104  do n=1,2 ; do m=1,2
105  lonb(m,n) = modulo_around_point(xsgp1(i+m-2,j+n-2), xsgp1(i-1,j-1), len_lon)
106  enddo; enddo
107  lon_scale = cos(pi_720deg*(ysgp1(i-1,j-1) + ysgp1(i+1,j-1) + &
108  ysgp1(i-1,j+1) + ysgp1(i+1,j+1)) )
109  angq(i,j) = atan2(lon_scale*((lonb(1,2) - lonb(2,1)) + (lonb(2,2) - lonb(1,1))), &
110  ysgp1(i-1,j+1) + ysgp1(i+1,j+1) - &
111  ysgp1(i-1,j-1) - ysgp1(i+1,j-1) )
112  enddo; enddo
113 
114  !check
115  if(debug) then
116  j = ny
117  i1 = ipolesg(1); i2 = ipolesg(2)-(ipolesg(1)-i1)
118  print *,'angq along seam on SG'
119  print *,angq(i1-2,j),angq(i2+2,j)
120  print *,angq(i1-1,j),angq(i2+1,j)
121  print *,angq(i1, j),angq(i2, j)
122  print *,angq(i1+1,j),angq(i2-1,j)
123  print *,angq(i1+2,j),angq(i2-2,j)
124  end if
125 
126  end subroutine find_angq
127 
131  subroutine find_ang
133  ! local variables
134  integer :: i,j,m,n
135  integer :: ii,jj
136 
137  ! from geolonB fix in MOM6
138  real(dbl_kind) :: len_lon ! The periodic range of longitudes, usually 360 degrees.
139  real(dbl_kind) :: pi_720deg ! One quarter the conversion factor from degrees to radians.
140  real(dbl_kind) :: lonB(2,2) ! The longitude of a point, shifted to have about the same value.
141  real(dbl_kind) :: lon_scale = 0.0
142 
143  !---------------------------------------------------------------------
144  ! rotation angle for "use_bugs" = false case from MOM6
145  ! src/initialization/MOM_shared_initialization.F90 but allow for not
146  ! having halo values
147  ! note this does not reproduce sin_rot,cos_rot found in MOM6 output
148  ! differences are ~O 10-6
149  !---------------------------------------------------------------------
150 
151  anglet = 0.0
152  pi_720deg = atan(1.0) / 180.0
153  len_lon = 360.0
154  do j=1,nj; do i = 1,ni
155  do n=1,2 ; do m=1,2
156  jj = j+n-2; ii = i+m-2
157  if(jj .eq. 0)jj = 1
158  if(ii .eq. 0)ii = ni
159  lonb(m,n) = modulo_around_point(lonbu(ii,jj), lonct(i,j), len_lon)
160  ! lonB(m,n) = modulo_around_point(LonBu(I+m-2,J+n-2), LonCt(i,j), len_lon)
161  enddo; enddo
162  jj = j-1; ii = i-1
163  if(jj .eq. 0)jj = 1
164  if(ii .eq. 0)ii = ni
165  lon_scale = cos(pi_720deg*((latbu(ii,jj) + latbu(i,j)) + &
166  (latbu(i,jj) + latbu(ii,j)) ) )
167  anglet(i,j) = atan2(lon_scale*((lonb(1,2) - lonb(2,1)) + (lonb(2,2) - lonb(1,1))), &
168  (latbu(ii,j) - latbu(i,jj)) + &
169  (latbu(i,j) - latbu(ii,jj)) )
170 
171  !lon_scale = cos(pi_720deg*((LatBu(I-1,J-1) + LatBu(I,J)) + &
172  ! (LatBu(I,J-1) + LatBu(I-1,J)) ) )
173  !anglet(i,j) = atan2(lon_scale*((lonB(1,2) - lonB(2,1)) + (lonB(2,2) - lonB(1,1))), &
174  ! (LatBu(I-1,J) - LatBu(I,J-1)) + &
175  ! (LatBu(I,J) - LatBu(I-1,J-1)) )
176  enddo; enddo
177 
178  end subroutine find_ang
179  ! -----------------------------------------------------------------------------
188  function modulo_around_point(x, xc, Lx) result(x_mod)
189  use gengrid_kinds, only : dbl_kind
190 
191  real(dbl_kind), intent(in) :: x
192  real(dbl_kind), intent(in) :: xc
193  real(dbl_kind), intent(in) :: lx
194  real(dbl_kind) :: x_mod
195 
196  if (lx > 0.0) then
197  x_mod = modulo(x - (xc - 0.5*lx), lx) + (xc - 0.5*lx)
198  else
199  x_mod = x
200  endif
201  end function modulo_around_point
202 end module angles
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/annotated.html b/ver-1.11.0/cpld_gridgen/annotated.html new file mode 100644 index 000000000..f0ddf1c3b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/annotated.html @@ -0,0 +1,110 @@ + + + + + + + +cpld_gridgen: Data Types List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Types List
+
+
+
Here are the data types with brief descriptions:
+
[detail level 12]
+ + +
 Nvartypedefs
 Cvardefs
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/annotated_dup.js b/ver-1.11.0/cpld_gridgen/annotated_dup.js new file mode 100644 index 000000000..8b687aff7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/annotated_dup.js @@ -0,0 +1,6 @@ +var annotated_dup = +[ + [ "vartypedefs", null, [ + [ "vardefs", "structvartypedefs_1_1vardefs.html", "structvartypedefs_1_1vardefs" ] + ] ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/bc_s.png b/ver-1.11.0/cpld_gridgen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/bdwn.png b/ver-1.11.0/cpld_gridgen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/charstrings.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
charstrings.F90 File Reference
+
+
+ +

Define required character string variables. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

character(len=cs) charstrings::atmres
 The ATM resolution, e.g. More...
 
character(len=cs) charstrings::cdate
 The date stamp of file creation. More...
 
character(len=cl) charstrings::dirout
 The directory where output files will be written. More...
 
character(len=cl) charstrings::dirsrc
 The source directory containing the fix files for MOM6. More...
 
character(len=cl) charstrings::editsfile
 The name of the topo edits file (resolution specific) More...
 
character(len=cl) charstrings::fv3dir
 The directory containing the FV3 mosaic files. More...
 
character(len=cl) charstrings::history
 A documentation string. More...
 
character(len=cl) charstrings::logmsg
 An informational message. More...
 
character(len=cl) charstrings::maskfile = 'ocean_mask.nc'
 The name of the MOM6 mask file. More...
 
character(len=cs) charstrings::maskname = 'mask'
 The variable name of the mask field. More...
 
character(len=cs) charstrings::res
 The Ocean/Ice resolution, e.g. More...
 
character(len=2), dimension(4) charstrings::staggerlocs = (/'Ct','Cu','Cv','Bu'/)
 The named stagger locations of the grid. More...
 
character(len=cl) charstrings::topofile
 The name of the MOM6 bathymetry file. More...
 
character(len=cs) charstrings::toponame = 'depth'
 The name of the bathymetry field. More...
 
+

Detailed Description

+

Define required character string variables.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This module contains the character string variables

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file charstrings.F90.

+

Variable Documentation

+ +

◆ atmres

+ +
+
+ + + + +
character(len=cs) charstrings::atmres
+
+ +

The ATM resolution, e.g.

+

C96, C192, C384

+ +

Definition at line 19 of file charstrings.F90.

+ +
+
+ +

◆ cdate

+ +
+
+ + + + +
character(len=cs) charstrings::cdate
+
+ +

The date stamp of file creation.

+ +

Definition at line 30 of file charstrings.F90.

+ +
+
+ +

◆ dirout

+ +
+
+ + + + +
character(len=cl) charstrings::dirout
+
+ +

The directory where output files will be written.

+ +

Definition at line 15 of file charstrings.F90.

+ +
+
+ +

◆ dirsrc

+ +
+
+ + + + +
character(len=cl) charstrings::dirsrc
+
+ +

The source directory containing the fix files for MOM6.

+ +

Definition at line 14 of file charstrings.F90.

+ +
+
+ +

◆ editsfile

+ +
+
+ + + + +
character(len=cl) charstrings::editsfile
+
+ +

The name of the topo edits file (resolution specific)

+ +

Definition at line 24 of file charstrings.F90.

+ +
+
+ +

◆ fv3dir

+ +
+
+ + + + +
character(len=cl) charstrings::fv3dir
+
+ +

The directory containing the FV3 mosaic files.

+ +

Definition at line 16 of file charstrings.F90.

+ +
+
+ +

◆ history

+ +
+
+ + + + +
character(len=cl) charstrings::history
+
+ +

A documentation string.

+ +

Definition at line 29 of file charstrings.F90.

+ +
+
+ +

◆ logmsg

+ +
+
+ + + + +
character(len=cl) charstrings::logmsg
+
+ +

An informational message.

+ +

Definition at line 20 of file charstrings.F90.

+ +
+
+ +

◆ maskfile

+ +
+
+ + + + +
character(len=cl) charstrings::maskfile = 'ocean_mask.nc'
+
+ +

The name of the MOM6 mask file.

+ +

Definition at line 22 of file charstrings.F90.

+ +
+
+ +

◆ maskname

+ +
+
+ + + + +
character(len=cs) charstrings::maskname = 'mask'
+
+ +

The variable name of the mask field.

+ +

Definition at line 23 of file charstrings.F90.

+ +
+
+ +

◆ res

+ +
+
+ + + + +
character(len=cs) charstrings::res
+
+ +

The Ocean/Ice resolution, e.g.

+

500 (5deg), 100 (1deg) 050 (1/2deg), 025 (1/4deg)

+ +

Definition at line 17 of file charstrings.F90.

+ +
+
+ +

◆ staggerlocs

+ +
+
+ + + + +
character(len= 2), dimension(4) charstrings::staggerlocs = (/'Ct','Cu','Cv','Bu'/)
+
+ +

The named stagger locations of the grid.

+ +

Definition at line 32 of file charstrings.F90.

+ +
+
+ +

◆ topofile

+ +
+
+ + + + +
character(len=cl) charstrings::topofile
+
+ +

The name of the MOM6 bathymetry file.

+ +

Definition at line 26 of file charstrings.F90.

+ +
+
+ +

◆ toponame

+ +
+
+ + + + +
character(len=cs) charstrings::toponame = 'depth'
+
+ +

The name of the bathymetry field.

+ +

Definition at line 27 of file charstrings.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/charstrings_8F90.js b/ver-1.11.0/cpld_gridgen/charstrings_8F90.js new file mode 100644 index 000000000..98be91a6e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/charstrings_8F90.js @@ -0,0 +1,17 @@ +var charstrings_8F90 = +[ + [ "atmres", "charstrings_8F90.html#a9f3e87f6ebd4f0f1a9707183c44f292d", null ], + [ "cdate", "charstrings_8F90.html#a7fa369f66b996dd27540438a0baf48f1", null ], + [ "dirout", "charstrings_8F90.html#aa55b71f4a67b50aa5d3a6827200d4a15", null ], + [ "dirsrc", "charstrings_8F90.html#ac9f77f0509af0d6c4ae84f7e9eb3ee26", null ], + [ "editsfile", "charstrings_8F90.html#a85522620f3052d435834589591f85bad", null ], + [ "fv3dir", "charstrings_8F90.html#a15dc2ae29b501b3a334ab4e3d2e72b6c", null ], + [ "history", "charstrings_8F90.html#a21e98a7c5d7f097bf9ef63e308f67405", null ], + [ "logmsg", "charstrings_8F90.html#a7e839b077a33bd6979918c0a68e586ca", null ], + [ "maskfile", "charstrings_8F90.html#aa85024703aa16d5714437bc0c0b9f42c", null ], + [ "maskname", "charstrings_8F90.html#ad96111223ad5249c12f9a44ba377c55d", null ], + [ "res", "charstrings_8F90.html#a12b5fde65f416b90f9596a84f560c793", null ], + [ "staggerlocs", "charstrings_8F90.html#a26dd13fc727d787a54d0af45d50f635d", null ], + [ "topofile", "charstrings_8F90.html#ab2e1d6a1d79db8c11593d013d49bee9c", null ], + [ "toponame", "charstrings_8F90.html#a64d3683140bb747f98b34728cae9317b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/charstrings_8F90_source.html b/ver-1.11.0/cpld_gridgen/charstrings_8F90_source.html new file mode 100644 index 000000000..82b31be9a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/charstrings_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/charstrings.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
charstrings.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module charstrings
9 
10  use gengrid_kinds, only : cl,cm,cs
11 
12  implicit none
13 
14  character(len=CL) :: dirsrc
15  character(len=CL) :: dirout
16  character(len=CL) :: fv3dir
17  character(len=CS) :: res
19  character(len=CS) :: atmres
20  character(len=CL) :: logmsg
21 
22  character(len=CL) :: maskfile = 'ocean_mask.nc'
23  character(len=CS) :: maskname = 'mask'
24  character(len=CL) :: editsfile
25 
26  character(len=CL) :: topofile
27  character(len=CS) :: toponame = 'depth'
28 
29  character(len=CL) :: history
30  character(len=CS) :: cdate
31 
32  character(len= 2), dimension(4) :: staggerlocs = (/'Ct','Cu','Cv','Bu'/)
33 
34 end module charstrings
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/cicegrid_8F90.html b/ver-1.11.0/cpld_gridgen/cicegrid_8F90.html new file mode 100644 index 000000000..40c49c87d --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/cicegrid_8F90.html @@ -0,0 +1,155 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/cicegrid.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
cicegrid.F90 File Reference
+
+
+ +

Write the CICE6 grid file. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Functions/Subroutines

subroutine, public cicegrid::write_cicegrid (fname)
 Write the CICE6 grid file. More...
 
+

Detailed Description

+

Write the CICE6 grid file.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

Write the CICE6 grid file

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file cicegrid.F90.

+

Function/Subroutine Documentation

+ +

◆ write_cicegrid()

+ +
+
+ + + + + + + + +
subroutine, public cicegrid::write_cicegrid (character(len=*), intent(in) fname)
+
+ +

Write the CICE6 grid file.

+
Parameters
+ + +
[in]fnamethe name of the CICE6 grid file to write
+
+
+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 29 of file cicegrid.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/cicegrid_8F90.js b/ver-1.11.0/cpld_gridgen/cicegrid_8F90.js new file mode 100644 index 000000000..f87a359fc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/cicegrid_8F90.js @@ -0,0 +1,4 @@ +var cicegrid_8F90 = +[ + [ "write_cicegrid", "cicegrid_8F90.html#a4cf75bb124f26b83be629f76e220c1f4", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/cicegrid_8F90_source.html b/ver-1.11.0/cpld_gridgen/cicegrid_8F90_source.html new file mode 100644 index 000000000..ab6cd3757 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/cicegrid_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/cicegrid.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cicegrid.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module cicegrid
9 
10  use grdvars, only: ni,nj,ulat,ulon,htn,hte,angle,wet4
11  use charstrings, only: history, logmsg
12  use vartypedefs, only: maxvars, cicevars, cicevars_typedefine
13  use gengrid_kinds, only: cm
14  use netcdf
15 
16  implicit none
17  private
18 
19  public write_cicegrid
20 
21 contains
27 
28  subroutine write_cicegrid(fname)
29 
30  character(len=*), intent(in) :: fname
31 
32  ! local variables
33  integer :: ii,id,rc, ncid, dim2(2)
34  integer :: idimid,jdimid
35 
36  character(len=2) :: vtype
37  character(len=CM) :: vname
38  character(len=CM) :: vlong
39  character(len=CM) :: vunit
40 
41  !---------------------------------------------------------------------
42  ! create the netcdf file
43  !---------------------------------------------------------------------
44 
45  ! define the output variables and file name
46  call cicevars_typedefine
47 
48  rc = nf90_create(fname, nf90_write, ncid)
49  logmsg = '==> writing CICE grid to '//trim(fname)
50  print '(a)', trim(logmsg)
51  if(rc .ne. 0)print '(a)', 'nf90_create = '//trim(nf90_strerror(rc))
52 
53  rc = nf90_def_dim(ncid, 'ni', ni, idimid)
54  rc = nf90_def_dim(ncid, 'nj', nj, jdimid)
55 
56  do ii = 1,maxvars
57  if(len_trim(cicevars(ii)%var_name) .gt. 0)then
58  vname = trim(cicevars(ii)%var_name)
59  vlong = trim(cicevars(ii)%long_name)
60  vunit = trim(cicevars(ii)%unit_name)
61  vtype = trim(cicevars(ii)%var_type)
62 
63  dim2(:) = (/idimid, jdimid/)
64  if(vtype .eq. 'r8')rc = nf90_def_var(ncid, vname, nf90_double, dim2, id)
65  if(vtype .eq. 'r4')rc = nf90_def_var(ncid, vname, nf90_float, dim2, id)
66  if(vtype .eq. 'i4')rc = nf90_def_var(ncid, vname, nf90_int, dim2, id)
67  rc = nf90_put_att(ncid, id, 'units', vunit)
68  rc = nf90_put_att(ncid, id, 'long_name', vlong)
69  end if
70  enddo
71  rc = nf90_put_att(ncid, nf90_global, 'history', trim(history))
72  rc = nf90_enddef(ncid)
73 
74  rc = nf90_inq_varid(ncid, 'ulon', id)
75  rc = nf90_put_var(ncid, id, ulon)
76 
77  rc = nf90_inq_varid(ncid, 'ulat', id)
78  rc = nf90_put_var(ncid, id, ulat)
79 
80  rc = nf90_inq_varid(ncid, 'htn', id)
81  rc = nf90_put_var(ncid, id, htn)
82 
83  rc = nf90_inq_varid(ncid, 'hte', id)
84  rc = nf90_put_var(ncid, id, hte)
85 
86  rc = nf90_inq_varid(ncid, 'angle', id)
87  rc = nf90_put_var(ncid, id, angle)
88 
89  rc = nf90_inq_varid(ncid, 'kmt', id)
90  rc = nf90_put_var(ncid, id, int(wet4))
91 
92  rc = nf90_close(ncid)
93 
94  end subroutine write_cicegrid
95 end module cicegrid
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/classes.html b/ver-1.11.0/cpld_gridgen/classes.html new file mode 100644 index 000000000..c9e5d68b9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/classes.html @@ -0,0 +1,113 @@ + + + + + + + +cpld_gridgen: Data Types + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Types
+
+
+ + + + + + +
  v  
+
vardefs (vartypedefs)   
+ +
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/closed.png b/ver-1.11.0/cpld_gridgen/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/cpld__gridgen_8md_source.html b/ver-1.11.0/cpld_gridgen/cpld__gridgen_8md_source.html new file mode 100644 index 000000000..ffe2b087f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/cpld__gridgen_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md
+
+
+
1 # cpldgrid_gen
2 
3 # Introduction
4 
5 The cpld_gengrid program and associated script related functions create the files required for Fix and IC files for the coupled model.
6 
7 This document is part of the <a href="../index.html">UFS_UTILS
8 documentation</a>.
9 
10 The cpld_gengrid program is part of the
11 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
12 
13 ## Creating Fix and IC files required for the Coupled Model
14 
15 For the UFS coupled model application S2S or S2SW, the following fix files are required:
16 
17 - The CICE6 grid and mask file
18 
19 - The mesh file for the desired OCN/ICE resolution, which is identical for MOM6 and CICE6.
20 
21 - The mapped ocean mask on the FV3 tiles
22 
23 - The ESMF regridding weights required to create the CICE6 IC from CPC (SIS2) reanalysis.
24 
25 - The ESMF regridding weights required to remap the CICE6 or MOM6 output from tripole grid to a rectilinear grid (optional).
26 
27 Since MOM6 creates the model grid at runtime (including adjusting the land mask, if required), the required files for CICE and UFSAtm must be created in a pre-processing step using only the MOM6 supergrid, topography and land mask files as input. This allows the mapped ocean mask (used for creating of the ATM ICs) and the CICE6 grid and mask files to be consistent with the run-time configuration of MOM6.
28 
29 ## Background:
30 
31 ### MOM6 grids
32 
33 The MOM6 supergrid contains a MOM6 grid at twice the desired resolution. The indexing of the supergrid vs the reduced grid is:
34 
35 
36  Super Grid Reduced Grid
37 
38 
39  I-1,J+1 I+1,J+1
40  X─────X─────X I-1,J i,j
41  │ │ │ X─────X
42  │ │ │ │ │
43  │ i│j │ │ T │
44  X─────X─────X │ │
45  │ │ │ X─────X
46  │ │ │ I-1,J-1 I,J-1
47  │ │ │
48  X─────X─────X
49  I-1,J-1 I+1,J-1
50 
51 
52 MOM6 uses an Arakawa C grid. Within cpld_gridgen, these are referred to as "stagger" locations, and named as follows:
53 
54  Bu────Cv─────Bu
55  │ │
56  │ │
57  Cu Ct Cu
58  │ │
59  │ │
60  Bu────Cv─────Bu
61 
62 
63 ### Rotation angles
64 
65 For the tripole grid, a rotation angle is defined to translate vectors to/from the grid (i-j) orientation from/to true E-W. The rotation angle is calculated at run-time in MOM6 (src/initialization/MOM_shared_initialization.F90). However, CICE6 requires a rotation at the corner (``Bu``) grid points, which for points along the tripole seam requires values on the other side of the tripole fold. In cpld_gridgen, these values are found by "flipping over" the values on the last row of the MOM6 super-grid. If ``ipL`` and ``ipR`` are the i-indices of the poles along the last j-row:
66 
67 
68  ipL-1 ipL ipL+1 ipR-1 ipR ipR+1
69  x-------x-------x ||| x-------x-------x
70 
71 then after folding along the tripole seam, ``ipL`` and ``ipR`` must align:
72 
73 
74  ipR+1 ipR ipR-1
75  x-------x-------x
76  ipL-1 ipL ipL+1
77  x-------x-------x
78 
79 
80 Using the folded seam, the values required for calculating the rotation angle on the ``Bu`` grid points are available and can be calculated in the same way as MOM6 calculates rotation angles for the ``Ct`` grid points.
81 
82 ### SCRIP format files
83 
84 For calculating interpolation weights using ESMF, a SCRIP file needs to be provided. A SCIP file contains the both the grid locations of any stagger grid location (e.g. ``Ct``) and the associated grid vertices for that point. As seen from the above diagram, for the ``Ct`` points, those grid vertices are given by the ``Bu`` grid locations.
85 
86 SCRIP requires that the vertices be ordered counter-clockwise so that the center grid point is always to the left of the vertex. In cpld_gridgen, vertices are defined counter-clockwise from upper right. ``Ct`` vertices are located on the ``Bu`` grid (as shown above), ``Cu`` vertices on the ``Cv`` grid, ``Cv`` vertices on the ``Cu`` grid and ``Bu`` vertices on the ``Ct`` grid. For example, for the ``Ct`` grid, the vertices are:
87 
88  Vertex #2 Vertex #1
89  Bu(i-1,j) Bu(i,j)
90  Ct(i,j)
91  Bu(i-1,j-1) Bu(i,j-1)
92  Vertex #3 Vertex #4
93 
94 
95 so that the vertices for the ``Ct`` grid are found as off-sets of the i,j index of the ``Bu`` grid
96 
97  iVertCt(4) = (/0, -1, -1, 0/)
98  jVertCt(4) = (/0, 0, -1, -1/)
99 
100 Careful examination of the remaining stagger locations lead to similar definitions for the i,j offsets required to extract the vertices, all of which can be defined in terms of the ``iVertCt`` and ``jVertCt`` values.
101 
102 Special treatment is require at the bottom of the grid, where the vertices of the ``Ct`` and ``Cu`` grid must be set manually (note, these points are on land.) The top of the grid also requires special treatment because the required vertices are located across the tripole seam. This is accomplished by creating 1-d arrays which hold the ``Ct`` and ``Cu`` grid point locations across the matched seam.
103 
104 
105 ## Generating the grid files
106 
107 The cpld_gridgen program and associated script related functions perform the following tasks:
108 
109 1. read the MOM6 supergrid and ocean mask file and optionally creates the required *topo_edits* file if the land mask for MOM6 is to be changed at runtime.
110 2. create a master grid file containing all stagger locations of the grid fully defined
111 3. create the CICE6 grid variables and writes the required CICE6 grid file
112 4. create a SCRIP file for the center stagger (``Ct``) grid points and a second SCRIP file also containing the land mask
113 5. create the ESMF conservative regridding weights to map the ocean mask to the FV3 tiles and write the mapped mask to 6 tile files
114 6. create the ESMF regridding weights to map the 1/4 CICE6 restart file to a lower resolution tripole grid
115 7. optionally call a routine to generate ESMF regridding weights to map the tripole grid to a set of rectilinear grids
116 8. use the command line command *ESMF_Scrip2Unstruct* to generate the ocean mesh from the SCRIP file containing the land mask (item 4)
117 9. use an NCO command line command to generate the CICE6 land mask file from the CICE6 grid file
118 
119 ## The generated files
120 
121 The exact list of files produced by the *cpld_gridgen.sh* script will vary depending on several factors. For example, if the *DO_POSTWGHTS* flag is true, then a SCRIP format file will be produced for each rectilinear destination grid desired and a file containing the regridding weights to map from the center ``Ct`` stagger point to the rectilinear grid will also be written. Because both MOM6 and CICE6 velocity variables are located at ``Cu``,``Cv`` or ``Bu`` locations, additional files will also be created to regrid from the velocity stagger locations to the center ``Ct`` location. If an OCN/ICE grid resolution less than 1/4 degree is chosen, then a file containing regridding weights from the 1/4 degree grid to a lower resolution grid will also be written. Note also that multiple intermediate SCRIP format files may be produced depending on the options chosen.
122 
123 <br>
124 
125 * Executing the script for the 1/4 deg OCN/ICE resolution will result in the following files being produced in the output location:
126 
127 
128 <table>
129 <caption id="foutmx025">Output files for 1/4 deg</caption>
130 <tr><th>File name <th>Description <th>Function
131 <tr><td row=1>tripole.mx025.nc <td>master grid file <td>Creating all subsequent grid or mapping files
132 <tr><td row=2>grid_cice_NEMS_mx025.nc <td>the CICE grid file <td>used at runtime by CICE6
133 <tr><td row=3>kmtu_cice_NEMS_mx025.nc <td>the CICE mask file <td>used at runtime by CICE6
134 <tr><td row=4>mesh.mx025.nc <td>the ocean and ice mesh file <td>used at runtime by CICE6, MOM6, and CMEPS
135 <tr><td row=5>C384.mx025.tile[1-6].nc <td>the mapped ocean mask on the ATM tiles <td>used to create ATM ICs consistent with the <br> fractional grid
136 </table>
137 
138 <br>
139 
140 * If the optional post-weights are generated, the following files will be produced in the output location:
141 
142 
143 <table>
144 <caption id="foutpost">Optional post-weights files for 1/4deg</caption>
145 <tr><th>File name <th>Function
146 <tr><td row=1>tripole.mx025.[Cu][Cv][Bu].to.Ct.bilinear.nc <td>the ESMF weights for mapping OCN or ICE <br> output fields from the various stagger <br> locations on the tripole grid to the <br> center (Ct) stagger location on the <br>
147  same tripole grid using bilinear mapping
148 <tr><td row=2>tripole.mx025.Ct.to.rect.[destination resolution].[bilinear][conserve].nc <td>the ESMF weights for mapping variables <br> on the center (Ct) stagger location on <br> the tripole grid to a rectilinear grid <br> with [destination resolution] using <br> either bilinear or conservative mapping
149 </table>
150 
151 <br>
152 
153 * If a resolution other than 1/4 degree is used in *cpld_gridgen.sh*, the following file will be produced in the output location:
154 
155 
156 <table>
157 <caption id="foutcice6">Output files for CICE6 IC creation at tripole destination resolution</caption>
158 <tr><th>File name <th>Function
159 <tr><td row=1>tripole.mx025.Ct.to.mx[destination resolution].Ct.neareststod.nc <td>the ESMF weights for mapping the 1/4 CICE ICs to <br>
160  a tripole [destination resolution] using nearest <br> source-to-destination mapping
161 </table>
162 
163 <br>
164 
165 * If run-time land mask changes for MOM6 are requested, the following file will be produced in the output location:
166 
167 
168 <table>
169 <caption id="fouttopo">Output files for run-time modification of MOM6 land mask</caption>
170 <tr><th>File name <th>Function
171 <tr><td row=1>ufs.[Default filename].nc <td>Topo-edits required for UFS application. These are appended to the existing default topo <br> edits file and implemented at run time with the parameter flag <br> ``ALLOW_LANDMASK_CHANGES=true``. All files produced by the *cpld_gridgen.sh* will be <br> consistent with this run-time land mask.
172 </table>
173 
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/debugprint_8F90.html b/ver-1.11.0/cpld_gridgen/debugprint_8F90.html new file mode 100644 index 000000000..c306ae64a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/debugprint_8F90.html @@ -0,0 +1,198 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/debugprint.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
debugprint.F90 File Reference
+
+
+ +

Print debugging information. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions/Subroutines

subroutine, public debugprint::checkpoint
 Print values at specified point. More...
 
subroutine, public debugprint::checkseam
 Print values across the tripole seam. More...
 
subroutine, public debugprint::checkxlatlon
 Print values near the poles and along the domain edges. More...
 
+

Detailed Description

+

Print debugging information.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

Print values for debugging

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file debugprint.F90.

+

Function/Subroutine Documentation

+ +

◆ checkpoint()

+ +
+
+ + + + + + + +
subroutine, public debugprint::checkpoint ()
+
+ +

Print values at specified point.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 171 of file debugprint.F90.

+ +
+
+ +

◆ checkseam()

+ +
+
+ + + + + + + +
subroutine, public debugprint::checkseam ()
+
+ +

Print values across the tripole seam.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 28 of file debugprint.F90.

+ +
+
+ +

◆ checkxlatlon()

+ +
+
+ + + + + + + +
subroutine, public debugprint::checkxlatlon ()
+
+ +

Print values near the poles and along the domain edges.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 109 of file debugprint.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/debugprint_8F90.js b/ver-1.11.0/cpld_gridgen/debugprint_8F90.js new file mode 100644 index 000000000..0fedde253 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/debugprint_8F90.js @@ -0,0 +1,6 @@ +var debugprint_8F90 = +[ + [ "checkpoint", "debugprint_8F90.html#af2adf7c97516f729e073c09ae4980101", null ], + [ "checkseam", "debugprint_8F90.html#a2730a04b9d771b1fdbc8818691225bd1", null ], + [ "checkxlatlon", "debugprint_8F90.html#af4f4c396691073b4105fa8adfaf7af46", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/debugprint_8F90_source.html b/ver-1.11.0/cpld_gridgen/debugprint_8F90_source.html new file mode 100644 index 000000000..b12694bf6 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/debugprint_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/debugprint.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
debugprint.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module debugprint
9 
10  use esmf, only : esmf_logfounderror, esmf_logerr_passthru
11  use grdvars, only : ni,nj,ipole,angle,anglet
12  use grdvars, only : htn,latct,lonct,latcv,loncv,latcu,loncu,latbu,lonbu
13  use grdvars, only : xlatct,xlonct,xlatcu,xloncu
14  use grdvars, only : latbu_vert,lonbu_vert,latcv_vert,loncv_vert
15  use grdvars, only : latct_vert,lonct_vert,latcu_vert,loncu_vert
16 
17  implicit none
18  private
19 
20  public :: checkseam, checkxlatlon, checkpoint
21 
22 contains
26 
27  subroutine checkseam
28 
29  ! local variables
30  integer :: j,i1,i2
31 
32  j = nj
33  i1 = ipole(1); i2 = ipole(2)+1
34 
35  !htn must be the same along seam
36  j = nj
37  i1 = ipole(1); i2 = ipole(2)+1
38  print *,'HTN across seam '
39  print *,htn(i1-2,j),htn(i2+2,j)
40  print *,htn(i1-1,j),htn(i2+1,j)
41  print *,htn(i1, j),htn(i2, j)
42  print *,htn(i1+1,j),htn(i2-1,j)
43  print *,htn(i1+2,j),htn(i2-2,j)
44 
45  print *,'latCv across seam '
46  print *,latcv(i1-2,j),latcv(i2+2,j)
47  print *,latcv(i1-1,j),latcv(i2+1,j)
48  print *,latcv(i1, j),latcv(i2, j)
49  print *,latcv(i1+1,j),latcv(i2-1,j)
50  print *,latcv(i1+2,j),latcv(i2-2,j)
51 
52  print *,'lonCv across seam '
53  print *,loncv(i1-2,j),loncv(i2+2,j)
54  print *,loncv(i1-1,j),loncv(i2+1,j)
55  print *,loncv(i1, j),loncv(i2, j)
56  print *,loncv(i1+1,j),loncv(i2-1,j)
57  print *,loncv(i1+2,j),loncv(i2-2,j)
58 
59  print *,'angleT across seam '
60  print *,anglet(i1-2,j),anglet(i2+2,j)
61  print *,anglet(i1-1,j),anglet(i2+1,j)
62  print *,anglet(i1, j),anglet(i2, j)
63  print *,anglet(i1+1,j),anglet(i2-1,j)
64  print *,anglet(i1+2,j),anglet(i2-2,j)
65 
66  print *,'latCu across seam '
67  print *,latcu(i1-3,j),latcu(i2+2,j),latcu(i1-3,j)-latcu(i2+2,j)
68  print *,latcu(i1-2,j),latcu(i2+1,j)
69  print *,latcu(i1-1,j),latcu(i2+0,j)
70  print *,latcu(i1, j),latcu(i2-1,j)
71  print *,latcu(i1+1,j),latcu(i2-2,j)
72  print *,latcu(i1+2,j),latcu(i2-3,j)
73  print *,latcu(i1+3,j),latcu(i2-4,j)
74 
75  print *,'lonCu across seam '
76  print *,loncu(i1-3,j),loncu(i2+2,j),loncu(i1-3,j)+loncu(i2+2,j)
77  print *,loncu(i1-2,j),loncu(i2+1,j)
78  print *,loncu(i1-1,j),loncu(i2+0,j)
79  print *,loncu(i1, j),loncu(i2-1,j)
80  print *,loncu(i1+1,j),loncu(i2-2,j)
81  print *,loncu(i1+2,j),loncu(i2-3,j)
82  print *,loncu(i1+3,j),loncu(i2-4,j)
83 
84  print *,'latCt across seam '
85  print *,latct(i1-3,j),latct(i2+3,j),latct(i1-3,j)-latct(i2+3,j)
86  print *,latct(i1-2,j),latct(i2+2,j)
87  print *,latct(i1-1,j),latct(i2+1,j)
88  print *,latct(i1, j),latct(i2, j)
89  print *,latct(i1+1,j),latct(i2-1,j)
90  print *,latct(i1+2,j),latct(i2-2,j)
91  print *,latct(i1+3,j),latct(i2-3,j)
92 
93  print *,'lonCt across seam '
94  print *,lonct(i1-3,j),lonct(i2+3,j),lonct(i1-3,j)+lonct(i2+3,j)
95  print *,lonct(i1-2,j),lonct(i2+2,j)
96  print *,lonct(i1-1,j),lonct(i2+1,j)
97  print *,lonct(i1, j),lonct(i2, j)
98  print *,lonct(i1+1,j),lonct(i2-1,j)
99  print *,lonct(i1+2,j),lonct(i2-2,j)
100  print *,lonct(i1+3,j),lonct(i2-3,j)
101  print *
102  end subroutine checkseam
103 
107 
108  subroutine checkxlatlon
110  ! local variables
111  integer :: i
112 
113  print *,'============== Ct grid ==============='
114  print *,'============== Left pole ============'
115  do i = ipole(1)-3,ipole(1)+3
116  print '(i5,6f12.5)',i,lonct(i,nj),xlonct(i),lonct(i,nj)+xlonct(i),latct(i,nj),xlatct(i),latct(i,nj)-xlatct(i)
117  enddo
118  print *
119 
120  print *,'============ Right pole ============'
121  do i = ipole(2)-3,ipole(2)+3
122  print '(i5,6f12.5)',i,lonct(i,nj),xlonct(i),lonct(i,nj)+xlonct(i),latct(i,nj),xlatct(i),latct(i,nj)-xlatct(i)
123  enddo
124  print *
125 
126  print *,'============== Ct grid ==============='
127  print *,'============== Left edge ============'
128  do i = 1,5
129  print '(i5,6f12.5)',i,lonct(i,nj),xlonct(i),lonct(i,nj)+xlonct(i),latct(i,nj),xlatct(i),latct(i,nj)-xlatct(i)
130  enddo
131  print *
132  print *,'============== Right edge ==========='
133  do i = ni-4,ni
134  print '(i5,6f12.5)',i,lonct(i,nj),xlonct(i),lonct(i,nj)+xlonct(i),latct(i,nj),xlatct(i),latct(i,nj)-xlatct(i)
135  enddo
136  print *
137 
138 
139  print *,'============== Cu grid ==============='
140  print *,'============== Left pole ============='
141  do i = ipole(1)-3,ipole(1)+3
142  print '(i5,6f12.5)',i,loncu(i,nj),xloncu(i),loncu(i,nj)+xloncu(i),latcu(i,nj),xlatcu(i),latcu(i,nj)-xlatcu(i)
143  enddo
144  print *
145 
146  print *,'============ Right pole ============'
147  do i = ipole(2)-3,ipole(2)+3
148  print '(i5,6f12.5)',i,loncu(i,nj),xloncu(i),loncu(i,nj)+xloncu(i),latcu(i,nj),xlatcu(i),latcu(i,nj)-xlatcu(i)
149  enddo
150  print *
151 
152  print *,'============== Cu grid ==============='
153  print *,'============== Left edge ============'
154  do i = 1,5
155  print '(i5,6f12.5)',i,loncu(i,nj),xloncu(i),loncu(i,nj)+xloncu(i),latcu(i,nj),xlatcu(i),latcu(i,nj)-xlatcu(i)
156  enddo
157  print *
158  print *,'============== Right edge ==========='
159  do i = ni-4,ni
160  print '(i5,6f12.5)',i,loncu(i,nj),xloncu(i),loncu(i,nj)+xloncu(i),latcu(i,nj),xlatcu(i),latcu(i,nj)-xlatcu(i)
161  enddo
162  print *
163 
164  end subroutine checkxlatlon
165 
169 
170  subroutine checkpoint
172  ! local variables
173  integer :: i,j
174 
175  ! check
176  i = 1; j = nj
177  print '(f12.5,a,f12.5)',latbu_vert(i,j,2),' ',latbu_vert(i,j,1)
178  print '(a12,f12.5)',' ',latbu(i,j)
179  print '(f12.5,a,f12.5)',latbu_vert(i,j,3),' ',latbu_vert(i,j,4)
180  print *
181  print '(f12.5,a,f12.5)',lonbu_vert(i,j,2),' ',lonbu_vert(i,j,1)
182  print '(a12,f12.5)',' ',lonbu(i,j)
183  print '(f12.5,a,f12.5)',lonbu_vert(i,j,3),' ',lonbu_vert(i,j,4)
184  print *
185  print *
186  ! check
187  print '(f12.5,a,f12.5)',latcv_vert(i,j,2),' ',latcv_vert(i,j,1)
188  print '(a12,f12.5)',' ',latcv(i,j)
189  print '(f12.5,a,f12.5)',latcv_vert(i,j,3),' ',latcv_vert(i,j,4)
190  print *
191  print '(f12.5,a,f12.5)',loncv_vert(i,j,2),' ',loncv_vert(i,j,1)
192  print '(a12,f12.5)',' ',loncv(i,j)
193  print '(f12.5,a,f12.5)',loncv_vert(i,j,3),' ',loncv_vert(i,j,4)
194 
195  print *
196  print *
197 
198  i = 1; j = 10
199  print '(f12.5,a,f12.5)',latct_vert(i,j,2),' ',latct_vert(i,j,1)
200  print '(a12,f12.5)',' ',latct(i,j)
201  print '(f12.5,a,f12.5)',latct_vert(i,j,3),' ',latct_vert(i,j,4)
202  print *
203  print '(f12.5,a,f12.5)',lonct_vert(i,j,2),' ',lonct_vert(i,j,1)
204  print '(a12,f12.5)',' ',lonct(i,j)
205  print '(f12.5,a,f12.5)',lonct_vert(i,j,3),' ',lonct_vert(i,j,4)
206  print *
207  print *
208  ! check
209  print '(f12.5,a,f12.5)',latcu_vert(i,j,2),' ',latcu_vert(i,j,1)
210  print '(a12,f12.5)',' ',latcu(i,j)
211  print '(f12.5,a,f12.5)',latcu_vert(i,j,3),' ',latcu_vert(i,j,4)
212  print *
213  print '(f12.5,a,f12.5)',loncu_vert(i,j,2),' ',loncu_vert(i,j,1)
214  print '(a12,f12.5)',' ',loncu(i,j)
215  print '(f12.5,a,f12.5)',loncu_vert(i,j,3),' ',loncu_vert(i,j,4)
216 
217 
218  i = ni; j = 10
219  print '(f12.5,a,f12.5)',latct_vert(i,j,2),' ',latct_vert(i,j,1)
220  print '(a12,f12.5)',' ',latct(i,j)
221  print '(f12.5,a,f12.5)',latct_vert(i,j,3),' ',latct_vert(i,j,4)
222  print *
223  print '(f12.5,a,f12.5)',lonct_vert(i,j,2),' ',lonct_vert(i,j,1)
224  print '(a12,f12.5)',' ',lonct(i,j)
225  print '(f12.5,a,f12.5)',lonct_vert(i,j,3),' ',lonct_vert(i,j,4)
226  print *
227  print *
228  ! check
229  print '(f12.5,a,f12.5)',latcu_vert(i,j,2),' ',latcu_vert(i,j,1)
230  print '(a12,f12.5)',' ',latcu(i,j)
231  print '(f12.5,a,f12.5)',latcu_vert(i,j,3),' ',latcu_vert(i,j,4)
232  print *
233  print '(f12.5,a,f12.5)',loncu_vert(i,j,2),' ',loncu_vert(i,j,1)
234  print '(a12,f12.5)',' ',loncu(i,j)
235  print '(f12.5,a,f12.5)',loncu_vert(i,j,3),' ',loncu_vert(i,j,4)
236 
237  print *,"latCt minmax ",minval(latct),maxval(latct)
238  print *,"latCu minmax ",minval(latcu),maxval(latcu)
239  print *,"latCv minmax ",minval(latcv),maxval(latcv)
240  print *,"latBu minmax ",minval(latbu),maxval(latbu)
241 
242  ! print *,minval(latCt_vert),maxval(latCt_vert)
243  ! print *,minval(lonCt_vert),maxval(lonCt_vert)
244  ! print *,minval(latBu_vert),maxval(latBu_vert)
245  ! print *,minval(lonBu_vert),maxval(lonBu_vert)
246  end subroutine checkpoint
247 end module debugprint
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..fe3c91fe1 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
sorc Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..71f020ca9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "cpld_gridgen.fd", "dir_e7e52723ff2c442e43d7bd8270995a6b.html", "dir_e7e52723ff2c442e43d7bd8270995a6b" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.html b/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.html new file mode 100644 index 000000000..594d1f81f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.html @@ -0,0 +1,154 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cpld_gridgen.fd Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  angles.F90 [code]
 Determine the rotation angle on center and corner points.
 
file  charstrings.F90 [code]
 Define required character string variables.
 
file  cicegrid.F90 [code]
 Write the CICE6 grid file.
 
file  debugprint.F90 [code]
 Print debugging information.
 
file  gen_fixgrid.F90 [code]
 Generate fixed grid files required for coupled model.
 
file  gengrid_kinds.F90 [code]
 Define type-kind variables.
 
file  grdvars.F90 [code]
 Define and allocate required grid variables.
 
file  inputnml.F90 [code]
 Define the input namelist variables.
 
file  mapped_mask.F90 [code]
 Create the mapped ocean mask files.
 
file  postwgts.F90 [code]
 Create the ESMF weights for post.
 
file  scripgrid.F90 [code]
 Write a SCRIP format file.
 
file  topoedits.F90 [code]
 Add required topo-edits to adjust the run-time MOM6 land mask.
 
file  tripolegrid.F90 [code]
 Write the tripole grid file.
 
file  vartypedefs.F90 [code]
 Define the variables for output.
 
file  vertices.F90 [code]
 Fill the vertices for any stagger location.
 
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.js b/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.js new file mode 100644 index 000000000..e755833ef --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/dir_e7e52723ff2c442e43d7bd8270995a6b.js @@ -0,0 +1,18 @@ +var dir_e7e52723ff2c442e43d7bd8270995a6b = +[ + [ "angles.F90", "angles_8F90.html", "angles_8F90" ], + [ "charstrings.F90", "charstrings_8F90.html", "charstrings_8F90" ], + [ "cicegrid.F90", "cicegrid_8F90.html", "cicegrid_8F90" ], + [ "debugprint.F90", "debugprint_8F90.html", "debugprint_8F90" ], + [ "gen_fixgrid.F90", "gen__fixgrid_8F90.html", "gen__fixgrid_8F90" ], + [ "gengrid_kinds.F90", "gengrid__kinds_8F90.html", "gengrid__kinds_8F90" ], + [ "grdvars.F90", "grdvars_8F90.html", "grdvars_8F90" ], + [ "inputnml.F90", "inputnml_8F90.html", "inputnml_8F90" ], + [ "mapped_mask.F90", "mapped__mask_8F90.html", "mapped__mask_8F90" ], + [ "postwgts.F90", "postwgts_8F90.html", "postwgts_8F90" ], + [ "scripgrid.F90", "scripgrid_8F90.html", "scripgrid_8F90" ], + [ "topoedits.F90", "topoedits_8F90.html", "topoedits_8F90" ], + [ "tripolegrid.F90", "tripolegrid_8F90.html", "tripolegrid_8F90" ], + [ "vartypedefs.F90", "vartypedefs_8F90.html", "vartypedefs_8F90" ], + [ "vertices.F90", "vertices_8F90.html", "vertices_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/doc.png b/ver-1.11.0/cpld_gridgen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/doxygen.css b/ver-1.11.0/cpld_gridgen/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/cpld_gridgen/doxygen.png b/ver-1.11.0/cpld_gridgen/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/dynsections.js b/ver-1.11.0/cpld_gridgen/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +cpld_gridgen: File List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + +
  sorc
  cpld_gridgen.fd
 angles.F90Determine the rotation angle on center and corner points
 charstrings.F90Define required character string variables
 cicegrid.F90Write the CICE6 grid file
 debugprint.F90Print debugging information
 gen_fixgrid.F90Generate fixed grid files required for coupled model
 gengrid_kinds.F90Define type-kind variables
 grdvars.F90Define and allocate required grid variables
 inputnml.F90Define the input namelist variables
 mapped_mask.F90Create the mapped ocean mask files
 postwgts.F90Create the ESMF weights for post
 scripgrid.F90Write a SCRIP format file
 topoedits.F90Add required topo-edits to adjust the run-time MOM6 land mask
 tripolegrid.F90Write the tripole grid file
 vartypedefs.F90Define the variables for output
 vertices.F90Fill the vertices for any stagger location
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/files_dup.js b/ver-1.11.0/cpld_gridgen/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/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/ver-1.11.0/cpld_gridgen/folderclosed.png b/ver-1.11.0/cpld_gridgen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/functions.html b/ver-1.11.0/cpld_gridgen/functions.html new file mode 100644 index 000000000..869ad5242 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/functions.html @@ -0,0 +1,117 @@ + + + + + + + +cpld_gridgen: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented data types members with links to the data structure documentation for each member
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/functions_vars.html b/ver-1.11.0/cpld_gridgen/functions_vars.html new file mode 100644 index 000000000..1487ba0c6 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/functions_vars.html @@ -0,0 +1,117 @@ + + + + + + + +cpld_gridgen: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.html b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.html new file mode 100644 index 000000000..07d78f7c3 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.html @@ -0,0 +1,150 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/gen_fixgrid.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
gen_fixgrid.F90 File Reference
+
+
+ +

Generate fixed grid files required for coupled model. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Functions/Subroutines

program gen_fixgrid
 Generate fixed grid files required for coupled model using the MOM6 super grid file and ocean mask file. More...
 
+

Detailed Description

+

Generate fixed grid files required for coupled model.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file gen_fixgrid.F90.

+

Function/Subroutine Documentation

+ +

◆ gen_fixgrid()

+ +
+
+ + + + + + + +
program gen_fixgrid ()
+
+ +

Generate fixed grid files required for coupled model using the MOM6 super grid file and ocean mask file.

+

It creates a main grid file which is then used to create subsequent files which are required to create the fix and IC files required for the S2S or S2SW application.

+

This executable created with this source code runs within the shell scrip cpld_gridgen.sh in ../../ush, which utilizes both NCO (netCDF Operators) and ESMF command line functions. The shell script creates a run-time grid.nml from grid.nml.IN

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+
Returns
0 for success, error code otherwise.
+ +

Definition at line 16 of file gen_fixgrid.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.js b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.js new file mode 100644 index 000000000..08900ede7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90.js @@ -0,0 +1,4 @@ +var gen__fixgrid_8F90 = +[ + [ "gen_fixgrid", "gen__fixgrid_8F90.html#a12dccdc4464390081318f36e1b8b2e0c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90_source.html b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90_source.html new file mode 100644 index 000000000..f77ca8a62 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gen__fixgrid_8F90_source.html @@ -0,0 +1,106 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/gen_fixgrid.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gen_fixgrid.F90
+
+
+Go to the documentation of this file.
1 
5 
16 program gen_fixgrid
17 
18  use esmf
19 
20  use grdvars
21  use inputnml
22  use gengrid_kinds, only: cl, cs, dbl_kind, real_kind, int_kind
23  use angles, only: find_angq, find_ang
24  use vertices, only: fill_vertices, fill_bottom, fill_top
25  use mapped_mask, only: make_frac_land
26  use postwgts, only: make_postwgts
27  use tripolegrid, only: write_tripolegrid
28  use cicegrid, only: write_cicegrid
29  use scripgrid, only: write_scripgrid
30  use topoedits, only: add_topoedits, apply_topoedits
31  use charstrings, only: logmsg, res, dirsrc, dirout, atmres, fv3dir, editsfile
32  use charstrings, only: maskfile, maskname, topofile, toponame, editsfile, staggerlocs, cdate, history
33  use debugprint, only: checkseam, checkxlatlon, checkpoint
34  use netcdf
35 
36  implicit none
37 
38  ! local variables
39  real(dbl_kind) :: dxt, dyt
40 
41  real(kind=dbl_kind), parameter :: pi = 3.14159265358979323846_dbl_kind
42  real(kind=dbl_kind), parameter :: deg2rad = pi/180.0_dbl_kind
43 
44  real(real_kind), allocatable, dimension(:,:) :: ww3dpth
45  integer(int_kind), allocatable, dimension(:,:) :: ww3mask
46 
47  character(len=CL) :: fsrc, fdst, fwgt
48  character(len= 2) :: cstagger
49 
50  integer :: rc,ncid,id,xtype
51  integer :: i,j,k,i2,j2
52  integer :: ii,jj
53  integer :: localpet, npet
54  logical :: fexist = .false.
55 
56  type(esmf_regridmethod_flag) :: method
57  type(esmf_vm) :: vm
58 
59  !WW3 file format for mod_def generation
60  character(len= 6) :: i4fmt = '(i4.4)'
61  character(len=CS) :: form1
62  character(len=CS) :: form2
63  character(len= 6) :: cnx
64 
65  !-------------------------------------------------------------------------
66  ! Initialize esmf environment.
67  !-------------------------------------------------------------------------
68 
69  call esmf_vmgetglobal(vm, rc=rc)
70  call esmf_initialize(vm=vm, logkindflag=esmf_logkind_multi, rc=rc)
71  call esmf_vmget(vm, localpet=localpet, pecount=npet, rc=rc)
72  if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
73  line=__line__, file=__file__)) call esmf_finalize(endflag=esmf_end_abort)
74  roottask = .false.
75  if (localpet == 0) roottask =.true.
76  if (npet /= 1) then
77  print *,npet,' More than one task specified; Aborting '
78  call esmf_finalize(endflag=esmf_end_abort)
79  end if
80 
81  !---------------------------------------------------------------------
82  !
83  !---------------------------------------------------------------------
84 
85  call read_inputnml('grid.nml')
86 
87  print '(a,2i6)',' output grid requested ',ni,nj
88  print '(a,2i6)',' supergrid size used ', nx,ny
89  print '(a)',' output grid tag '//trim(res)
90  print '(a)',' supergrid source directory '//trim(dirsrc)
91  print '(a)',' output grid directory '//trim(dirout)
92  print '(a)',' atm resolution '//trim(atmres)
93  print '(a,i6)',' fv3 tile grid size ',npx
94  print '(a)',' atm mosaic directory '//trim(fv3dir)
95  print '(a)',' MOM6 topography file '//trim(topofile)
96  print '(a)',' MOM6 edits file '//trim(editsfile)
97  print *,'editmask flag ',editmask
98  print *,'debug flag ',debug
99  print *,'do_postwgts flag ',do_postwgts
100  print *
101 
102  call allocate_all
103 
104  call esmf_logwrite("Starting gen_fixgrid", esmf_logmsg_info)
105  !---------------------------------------------------------------------
106  ! set up the arrays to retrieve the vertices
107  !---------------------------------------------------------------------
108 
109  ivertcu = ivertct + 1; jvertcu = jvertct + 0
110  ivertcv = ivertct + 0; jvertcv = jvertct + 1
111  ivertbu = ivertct + 1; jvertbu = jvertct + 1
112 
113  print '(a8,4i6)','iVertCt ',(ivertct(i),i=1,4)
114  print '(a8,4i6)','jVertCt ',(jvertct(i),i=1,4)
115  print *
116  print '(a8,4i6)','iVertCu ',(ivertcu(i),i=1,4)
117  print '(a8,4i6)','jVertCu ',(jvertcu(i),i=1,4)
118  print *
119  print '(a8,4i6)','iVertCv ',(ivertcv(i),i=1,4)
120  print '(a8,4i6)','jVertCv ',(jvertcv(i),i=1,4)
121  print *
122  print '(a8,4i6)','iVertBu ',(ivertbu(i),i=1,4)
123  print '(a8,4i6)','jVertBu ',(jvertbu(i),i=1,4)
124  print *
125 
126  latct_vert = -9999.0 ; lonct_vert = -9999.0
127  latcu_vert = -9999.0 ; loncu_vert = -9999.0
128  latcv_vert = -9999.0 ; loncv_vert = -9999.0
129  latbu_vert = -9999.0 ; lonbu_vert = -9999.0
130 
131  !---------------------------------------------------------------------
132  ! read the MOM6 land mask
133  !---------------------------------------------------------------------
134 
135  fsrc = trim(dirsrc)//'/'//trim(maskfile)
136 
137  rc = nf90_open(fsrc, nf90_nowrite, ncid)
138  print '(a)', 'reading ocean mask from '//trim(fsrc)
139  if(rc .ne. 0)print '(a)', 'nf90_open = '//trim(nf90_strerror(rc))
140 
141  wet4 = 0.0; wet8 = 0.0
142  rc = nf90_inq_varid(ncid, trim(maskname), id)
143  rc = nf90_inquire_variable(ncid, id, xtype=xtype)
144  if(xtype .eq. 5)rc = nf90_get_var(ncid, id, wet4)
145  if(xtype .eq. 6)rc = nf90_get_var(ncid, id, wet8)
146  rc = nf90_close(ncid)
147 
148  if(xtype.eq. 6)wet4 = real(wet8,4)
149 
150  !print *,minval(wet8),maxval(wet8)
151  !print *,minval(wet4),maxval(wet4)
152 
153  !---------------------------------------------------------------------
154  ! read the MOM6 depth file
155  !---------------------------------------------------------------------
156 
157  fsrc = trim(dirsrc)//'/'//trim(topofile)
158 
159  rc = nf90_open(fsrc, nf90_nowrite, ncid)
160  print '(a)', 'reading ocean topography from '//trim(fsrc)
161  if(rc .ne. 0)print '(a)', 'nf90_open = '//trim(nf90_strerror(rc))
162 
163  dp4 = 0.0; dp8 = 0.0
164  rc = nf90_inq_varid(ncid, trim(toponame), id)
165  rc = nf90_inquire_variable(ncid, id, xtype=xtype)
166  if(xtype .eq. 5)rc = nf90_get_var(ncid, id, dp4)
167  if(xtype .eq. 6)rc = nf90_get_var(ncid, id, dp8)
168  rc = nf90_close(ncid)
169 
170  if(xtype.eq. 6)dp4 = real(dp8,4)
171 
172  !print *,minval(dp8),maxval(dp8)
173  !print *,minval(dp4),maxval(dp4)
174 
175  if(editmask)then
176  !---------------------------------------------------------------------
177  ! apply topoedits run time mask changes if required for this config
178  !---------------------------------------------------------------------
179 
180  if(trim(editsfile) == 'none')then
181  print '(a)', 'Need a valid editsfile to make mask edits '
182  stop
183  end if
184 
185  fsrc = trim(dirsrc)//'/'//trim(editsfile)
186  fdst = trim(dirout)//'/'//'ufs.'//trim(editsfile)
187  call add_topoedits(fsrc,fdst)
188  endif
189 
190  !---------------------------------------------------------------------
191  ! MOM6 reads the depth file, applies the topo edits and then adjusts
192  ! depth using masking_depth and min/max depth. This call mimics
193  ! MOM6 routines apply_topography_edits_from_file and limit_topography
194  !---------------------------------------------------------------------
195 
196  fsrc = trim(dirsrc)//'/'//trim(editsfile)
197  if(editmask)fsrc = trim(dirout)//'/'//'ufs.'//trim(editsfile)
198  call apply_topoedits(fsrc)
199 
200  !---------------------------------------------------------------------
201  ! read MOM6 supergrid file
202  !---------------------------------------------------------------------
203 
204  fsrc = trim(dirsrc)//'/'//'ocean_hgrid.nc'
205 
206  rc = nf90_open(fsrc, nf90_nowrite, ncid)
207  print '(a)', 'reading supergrid from '//trim(fsrc)
208  if(rc .ne. 0)print '(a)', 'nf90_open = '//trim(nf90_strerror(rc))
209 
210  rc = nf90_inq_varid(ncid, 'x', id) !lon
211  rc = nf90_get_var(ncid, id, x)
212 
213  rc = nf90_inq_varid(ncid, 'y', id) !lat
214  rc = nf90_get_var(ncid, id, y)
215 
216  rc = nf90_inq_varid(ncid, 'dx', id)
217  rc = nf90_get_var(ncid, id, dx)
218 
219  rc = nf90_inq_varid(ncid, 'dy', id)
220  rc = nf90_get_var(ncid, id, dy)
221 
222  rc = nf90_close(ncid)
223  !print *,'super grid size ',size(y,1),size(y,2)
224  !print *,'max lat in super grid ',maxval(y)
225  sg_maxlat = maxval(y)
226 
227  !---------------------------------------------------------------------
228  ! find the angle on corners---this requires the supergrid
229  !---------------------------------------------------------------------
230 
231  call find_angq
232 
233  !---------------------------------------------------------------------
234  ! fill grid variables
235  !---------------------------------------------------------------------
236 
237  do j = 1,nj
238  do i = 1,ni
239  i2 = 2*i ; j2 = 2*j
240  !deg->rad
241  ulon(i,j) = x(i2,j2)*deg2rad
242  ulat(i,j) = y(i2,j2)*deg2rad
243  !in rad already
244  angle(i,j) = -angq(i2,j2)
245  !m->cm
246  htn(i,j) = (dx(i2-1,j2) + dx(i2,j2))*100._dbl_kind
247  hte(i,j) = (dy(i2,j2-1) + dy(i2,j2))*100._dbl_kind
248  !deg
249  lonbu(i,j) = x(i2,j2)
250  latbu(i,j) = y(i2,j2)
251  !deg
252  lonct(i,j) = x(i2-1,j2-1)
253  loncu(i,j) = x(i2, j2-1)
254  loncv(i,j) = x(i2-1,j2 )
255  !deg
256  latct(i,j) = y(i2-1,j2-1)
257  latcu(i,j) = y(i2, j2-1)
258  latcv(i,j) = y(i2-1,j2 )
259  !m2
260  dxt = dx(i2-1,j2-1) + dx(i2,j2-1)
261  dyt = dy(i2-1,j2-1) + dy(i2-1,j2)
262  areact(i,j) = dxt*dyt
263  enddo
264  enddo
265 
266  !---------------------------------------------------------------------
267  ! find the angle on centers---this does not requires the supergrid
268  !---------------------------------------------------------------------
269 
270  call find_ang
271  print *,'ANGLET ',minval(anglet),maxval(anglet)
272  print *,'ANGLE ',minval(angle),maxval(angle)
273 
274  !---------------------------------------------------------------------
275  ! For the 1/4deg grid, hte at j=720 and j = 1440 is identically=0.0 for
276  ! j > 840 (64.0N). These are land points, but since CICE uses hte to
277  ! generate remaining variables, setting them to zero will cause problems
278  ! For 1deg grid, hte at ni/2 and ni are very small O~10-12, so test for
279  ! hte < 1.0
280  !---------------------------------------------------------------------
281 
282  write(logmsg,'(a,2e12.5)')'min vals of hte at folds ', &
283  minval(hte(ni/2,:)),minval(hte(ni,:))
284  print '(a)',trim(logmsg)
285  do j = 1,nj
286  ii = ni/2
287  if(hte(ii,j) .le. 1.0)hte(ii,j) = 0.5*(hte(ii-1,j) + hte(ii+1,j))
288  ii = ni
289  if(hte(ii,j) .le. 1.0)hte(ii,j) = 0.5*(hte(ii-1,j) + hte( 1,j))
290  enddo
291  write(logmsg,'(a,2e12.5)')'min vals of hte at folds ', &
292  minval(hte(ni/2,:)),minval(hte(ni,:))
293  print '(a)',trim(logmsg)
294 
295  !---------------------------------------------------------------------
296  !
297  !---------------------------------------------------------------------
298 
299  where(lonct .lt. 0.0)lonct = lonct + 360._dbl_kind
300  where(loncu .lt. 0.0)loncu = loncu + 360._dbl_kind
301  where(loncv .lt. 0.0)loncv = loncv + 360._dbl_kind
302  where(lonbu .lt. 0.0)lonbu = lonbu + 360._dbl_kind
303 
304  !---------------------------------------------------------------------
305  ! some basic error checking
306  ! find the i-th index of the poles at j= nj
307  ! the corner points must lie on the pole
308  !---------------------------------------------------------------------
309 
310  ipole = -1
311  j = nj
312  do i = 1,ni/2
313  if(latbu(i,j) .eq. sg_maxlat)ipole(1) = i
314  enddo
315  do i = ni/2+1,ni
316  if(latbu(i,j) .eq. sg_maxlat)ipole(2) = i
317  enddo
318  write(logmsg,'(a,2i6,2f12.2)')'poles found at i = ',ipole,latbu(ipole(1),nj), &
319  latbu(ipole(2),nj)
320  print '(a)',trim(logmsg)
321 
322  if(debug)call checkseam
323 
324  do i = 1,ni
325  i2 = ipole(2)+(ipole(1)-i)+1
326  xlonct(i) = lonct(i2,nj)
327  xlatct(i) = latct(i2,nj)
328  enddo
329 
330  do i = 1,ni
331  i2 = ipole(2)+(ipole(1)-i)
332  if(i2 .lt. 1)i2 = ni
333  xloncu(i) = loncu(i2,nj)
334  xlatcu(i) = latcu(i2,nj)
335  enddo
336 
337  if(debug)call checkxlatlon
338 
339  !approx lat at grid bottom
340  do i = 1,ni
341  dlatbu(i) = latbu(i,1) + 2.0*(latcu(i,1) - latbu(i,1))
342  dlatcv(i) = latct(i,1) + 2.0*(latct(i,1) - latcv(i,1))
343  enddo
344 
345  !---------------------------------------------------------------------
346  ! fill grid vertices variables
347  !---------------------------------------------------------------------
348 
349  !Ct and Cu grids align in j
350  call fill_vertices(2,nj , ivertct,jvertct, latbu,lonbu, latct_vert,lonct_vert)
351  call fill_bottom(ivertct,jvertct, latbu,lonbu, latct_vert,lonct_vert,dlatbu)
352 
353  call fill_vertices(2,nj , ivertcu,jvertcu, latcv,loncv, latcu_vert,loncu_vert)
354  call fill_bottom(ivertcu,jvertcu, latcv,loncv, latcu_vert,loncu_vert,dlatcv)
355 
356  !Cv and Bu grids align in j
357  call fill_vertices(1,nj-1, ivertcv,jvertcv, latcu,loncu, latcv_vert,loncv_vert)
358  call fill_top(ivertcv,jvertcv, latcu,loncu, latcv_vert,loncv_vert, xlatcu, xloncu)
359 
360  call fill_vertices(1,nj-1, ivertbu,jvertbu, latct,lonct, latbu_vert,lonbu_vert)
361  call fill_top(ivertbu,jvertbu, latct,lonct, latbu_vert,lonbu_vert, xlatct, xlonct)
362 
363  if(debug)call checkpoint
364 
365  if(minval(latct_vert) .lt. -1.e3)stop
366  if(minval(lonct_vert) .lt. -1.e3)stop
367  if(minval(latcu_vert) .lt. -1.e3)stop
368  if(minval(loncu_vert) .lt. -1.e3)stop
369  if(minval(latcv_vert) .lt. -1.e3)stop
370  if(minval(loncv_vert) .lt. -1.e3)stop
371  if(minval(latbu_vert) .lt. -1.e3)stop
372  if(minval(lonbu_vert) .lt. -1.e3)stop
373  deallocate(xlonct, xlatct, xloncu, xlatcu, dlatbu, dlatcv)
374 
375  !---------------------------------------------------------------------
376  ! write out grid file files
377  !---------------------------------------------------------------------
378 
379  ! create a history attribute
380  call date_and_time(date=cdate)
381  history = 'created on '//trim(cdate)//' from '//trim(fsrc)
382 
383  ! write fix grid
384  fdst = trim(dirout)//'/'//'tripole.mx'//trim(res)//'.nc'
385  call write_tripolegrid(trim(fdst))
386 
387  ! write cice grid
388  fdst = trim(dirout)//'/'//'grid_cice_NEMS_mx'//trim(res)//'.nc'
389  call write_cicegrid(trim(fdst))
390  deallocate(ulon, ulat, htn, hte)
391  ! write scrip grids; only the Ct is required, the remaining
392  ! staggers are used only in the postweights generation
393  do k = 1,nv
394  cstagger = trim(staggerlocs(k))
395  fdst = trim(dirout)//'/'//trim(cstagger)//'.mx'//trim(res)//'_SCRIP.nc'
396  logmsg = 'creating SCRIP file '//trim(fdst)
397  print '(a)',trim(logmsg)
398  call write_scripgrid(trim(fdst),trim(cstagger))
399  end do
400  deallocate(latcv_vert, loncv_vert)
401  deallocate(latcu_vert, loncu_vert)
402  deallocate(latbu_vert, lonbu_vert)
403 
404  ! write SCRIP file with land mask, used for mapped ocean mask
405  ! and mesh creation
406  cstagger = trim(staggerlocs(1))
407  fdst= trim(dirout)//'/'//trim(cstagger)//'.mx'//trim(res)//'_SCRIP_land.nc'
408  logmsg = 'creating SCRIP file '//trim(fdst)
409  print '(a)',trim(logmsg)
410  call write_scripgrid(trim(fdst),trim(cstagger),imask=int(wet4))
411  deallocate(latct_vert, lonct_vert)
412 
413  !---------------------------------------------------------------------
414  ! write lat,lon,depth and mask arrays required by ww3 in creating
415  ! mod_def file
416  !---------------------------------------------------------------------
417 
418  write(cnx,i4fmt)nx
419  write(form1,'(a)')'('//trim(cnx)//'f14.8)'
420  write(form2,'(a)')'('//trim(cnx)//'i2)'
421 
422  allocate(ww3mask(1:ni,1:nj)); ww3mask = wet4
423  allocate(ww3dpth(1:ni,1:nj)); ww3dpth = dp4
424 
425  where(latct .ge. maximum_lat)ww3mask = 3
426  !close last row
427  ww3mask(:,nj) = 3
428 
429  open(unit=21,file=trim(dirout)//'/'//'ww3.mx'//trim(res)//'_x.inp',form='formatted')
430  open(unit=22,file=trim(dirout)//'/'//'ww3.mx'//trim(res)//'_y.inp',form='formatted')
431  open(unit=23,file=trim(dirout)//'/'//'ww3.mx'//trim(res)//'_bottom.inp',form='formatted')
432  open(unit=24,file=trim(dirout)//'/'//'ww3.mx'//trim(res)//'_mapsta.inp',form='formatted')
433  ! cice0 .ne. cicen requires obstruction map, should be initialized as zeros (w3grid,ln3032)
434  open(unit=25,file=trim(dirout)//'/'//'ww3.mx'//trim(res)//'_obstr.inp',form='formatted')
435 
436  do j = 1,nj
437  write( 21,trim(form1))lonct(:,j)
438  write( 22,trim(form1))latct(:,j)
439  end do
440  do j = 1,nj
441  write( 23,trim(form1))ww3dpth(:,j)
442  write( 24,trim(form2))ww3mask(:,j)
443  !'obsx' and 'obsy' arrays ???
444  write( 25,trim(form2))ww3mask(:,j)*0
445  write( 25,trim(form2))ww3mask(:,j)*0
446  end do
447 
448  close(21); close(22); close(23); close(24); close(25)
449  deallocate(ww3mask); deallocate(ww3dpth)
450  deallocate(wet4, wet8)
451 
452  !---------------------------------------------------------------------
453  ! use ESMF regridding to produce mapped ocean mask; first generate
454  ! conservative regrid weights from ocean to tiles; then generate the
455  ! tiled files containing the mapped ocean mask
456  !---------------------------------------------------------------------
457 
458  method=esmf_regridmethod_conserve
459  fsrc = trim(dirout)//'/'//'Ct.mx'//trim(res)//'_SCRIP_land.nc'
460  fdst = trim(fv3dir)//'/'//trim(atmres)//'/'//trim(atmres)//'_mosaic.nc'
461  fwgt = trim(dirout)//'/'//'Ct.mx'//trim(res)//'.to.'//trim(atmres)//'.nc'
462  logmsg = 'creating weight file '//trim(fwgt)
463  print '(a)',trim(logmsg)
464 
465  call esmf_regridweightgen(srcfile=trim(fsrc),dstfile=trim(fdst), &
466  weightfile=trim(fwgt), regridmethod=method, &
467  unmappedaction=esmf_unmappedaction_ignore, ignoredegenerate=.true., &
468  netcdf4fileflag=.true., tilefilepath=trim(fv3dir)//'/'//trim(atmres)//'/', rc=rc)
469  if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
470  line=__line__, file=__file__)) call esmf_finalize(endflag=esmf_end_abort)
471 
472  logmsg = 'creating mapped ocean mask for '//trim(atmres)
473  print '(a)',trim(logmsg)
474  call make_frac_land(trim(fsrc), trim(fwgt))
475 
476  !---------------------------------------------------------------------
477  ! use ESMF to find the tripole:tripole weights for creation
478  ! of CICE ICs; the source grid is always mx025; don't create this
479  ! file if destination is also mx025
480  !---------------------------------------------------------------------
481 
482  if(trim(res) .ne. '025') then
483  fsrc = trim(dirout)//'/'//'Ct.mx025_SCRIP.nc'
484  inquire(file=trim(fsrc), exist=fexist)
485  if (fexist ) then
486  method=esmf_regridmethod_nearest_stod
487  fdst = trim(dirout)//'/'//'Ct.mx'//trim(res)//'_SCRIP.nc'
488  fwgt = trim(dirout)//'/'//'tripole.mx025.Ct.to.mx'//trim(res)//'.Ct.neareststod.nc'
489  logmsg = 'creating weight file '//trim(fwgt)
490  print '(a)',trim(logmsg)
491 
492  call esmf_regridweightgen(srcfile=trim(fsrc),dstfile=trim(fdst), &
493  weightfile=trim(fwgt), regridmethod=method, &
494  ignoredegenerate=.true., unmappedaction=esmf_unmappedaction_ignore, rc=rc)
495  if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
496  line=__line__, file=__file__)) call esmf_finalize(endflag=esmf_end_abort)
497  else
498  logmsg = 'ERROR: '//trim(fsrc)//' is required to generate tripole:triple weights'
499  print '(a)',trim(logmsg)
500  stop
501  end if
502  end if
503 
504  !---------------------------------------------------------------------
505  !
506  !---------------------------------------------------------------------
507 
508  if(do_postwgts)call make_postwgts
509 
510  !---------------------------------------------------------------------
511  ! clean up
512  !---------------------------------------------------------------------
513 
514  deallocate(x,y, angq, dx, dy, xsgp1, ysgp1)
515  deallocate(areact, anglet, angle)
516  deallocate(latct, lonct)
517  deallocate(latcv, loncv)
518  deallocate(latcu, loncu)
519  deallocate(latbu, lonbu)
520 
521 end program gen_fixgrid
program gen_fixgrid
Generate fixed grid files required for coupled model using the MOM6 super grid file and ocean mask fi...
Definition: gen_fixgrid.F90:16
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.html b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.html new file mode 100644 index 000000000..3cbd13359 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.html @@ -0,0 +1,270 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/gengrid_kinds.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
gengrid_kinds.F90 File Reference
+
+
+ +

Define type-kind variables. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + +

+Variables

integer, parameter gengrid_kinds::cl = 256
 a long length character string More...
 
integer, parameter gengrid_kinds::cm = 64
 a medium length character string More...
 
integer, parameter gengrid_kinds::cs = 24
 a short length character string More...
 
integer, parameter gengrid_kinds::dbl_kind = selected_real_kind(12)
 8 byte real More...
 
integer, parameter gengrid_kinds::int8_kind = selected_int_kind (13)
 8 byte integer More...
 
integer, parameter gengrid_kinds::int_kind = selected_int_kind ( 6)
 4 byte integer More...
 
integer, parameter gengrid_kinds::real_kind = selected_real_kind( 6)
 4 byte real More...
 
+

Detailed Description

+

Define type-kind variables.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This module defines the type-kind variables

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file gengrid_kinds.F90.

+

Variable Documentation

+ +

◆ cl

+ +
+
+ + + + +
integer, parameter gengrid_kinds::cl = 256
+
+ +

a long length character string

+ +

Definition at line 18 of file gengrid_kinds.F90.

+ +
+
+ +

◆ cm

+ +
+
+ + + + +
integer, parameter gengrid_kinds::cm = 64
+
+ +

a medium length character string

+ +

Definition at line 19 of file gengrid_kinds.F90.

+ +
+
+ +

◆ cs

+ +
+
+ + + + +
integer, parameter gengrid_kinds::cs = 24
+
+ +

a short length character string

+ +

Definition at line 20 of file gengrid_kinds.F90.

+ +
+
+ +

◆ dbl_kind

+ +
+
+ + + + +
integer, parameter gengrid_kinds::dbl_kind = selected_real_kind(12)
+
+ +

8 byte real

+ +

Definition at line 13 of file gengrid_kinds.F90.

+ +
+
+ +

◆ int8_kind

+ +
+
+ + + + +
integer, parameter gengrid_kinds::int8_kind = selected_int_kind (13)
+
+ +

8 byte integer

+ +

Definition at line 16 of file gengrid_kinds.F90.

+ +
+
+ +

◆ int_kind

+ +
+
+ + + + +
integer, parameter gengrid_kinds::int_kind = selected_int_kind ( 6)
+
+ +

4 byte integer

+ +

Definition at line 15 of file gengrid_kinds.F90.

+ +
+
+ +

◆ real_kind

+ +
+
+ + + + +
integer, parameter gengrid_kinds::real_kind = selected_real_kind( 6)
+
+ +

4 byte real

+ +

Definition at line 12 of file gengrid_kinds.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.js b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.js new file mode 100644 index 000000000..e3629105d --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90.js @@ -0,0 +1,10 @@ +var gengrid__kinds_8F90 = +[ + [ "cl", "gengrid__kinds_8F90.html#a08b6cddcba7a019d38620a78d98771f3", null ], + [ "cm", "gengrid__kinds_8F90.html#a8147800d74606b143e53695555acbbfa", null ], + [ "cs", "gengrid__kinds_8F90.html#adaecbd4ded96fcfcfb1d52e790d2ed6f", null ], + [ "dbl_kind", "gengrid__kinds_8F90.html#aac8cdc5201fdcf6520f0ca7b633dbe09", null ], + [ "int8_kind", "gengrid__kinds_8F90.html#a31b580be1664a7d63a0e3a24621dea7e", null ], + [ "int_kind", "gengrid__kinds_8F90.html#abcad634e6a284e2c43c6c36912e8aa2c", null ], + [ "real_kind", "gengrid__kinds_8F90.html#a123f02f5ed8f6cbb209b214b39058d0f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90_source.html b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90_source.html new file mode 100644 index 000000000..79b4882bc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/gengrid__kinds_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/gengrid_kinds.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gengrid_kinds.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module gengrid_kinds
9 
10  implicit none
11 
12  integer,parameter :: real_kind = selected_real_kind( 6)
13  integer,parameter :: dbl_kind = selected_real_kind(12)
14 
15  integer,parameter :: int_kind = selected_int_kind ( 6)
16  integer,parameter :: int8_kind = selected_int_kind (13)
17 
18  integer, parameter :: cl = 256
19  integer, parameter :: cm = 64
20  integer, parameter :: cs = 24
21 
22 end module gengrid_kinds
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/globals.html b/ver-1.11.0/cpld_gridgen/globals.html new file mode 100644 index 000000000..2db9b83b6 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/globals.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/globals_func.html b/ver-1.11.0/cpld_gridgen/globals_func.html new file mode 100644 index 000000000..0a4a92c1f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/globals_func.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: Globals + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/grdvars_8F90.html b/ver-1.11.0/cpld_gridgen/grdvars_8F90.html new file mode 100644 index 000000000..35fcc5114 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/grdvars_8F90.html @@ -0,0 +1,1565 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/grdvars.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
grdvars.F90 File Reference
+
+
+ +

Define and allocate required grid variables. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Functions/Subroutines

subroutine grdvars::allocate_all
 Allocate grid variables. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

real(dbl_kind), dimension(:,:), allocatable grdvars::angle
 The rotation angle on Bu points. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::anglet
 The rotation angle on Ct points (opposite sense from angle) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::angq
 The grid rotation angle at the Bu (or corner) grid points of the super grid. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::areact
 The grid areas of the Ct grid cell in m2. More...
 
logical grdvars::debug
 flag indicating whether grid information should be printed for debugging purposes Default is false More...
 
real(dbl_kind), dimension(:), allocatable grdvars::dlatbu
 The latitude spacing between Bu points at the grid bottom. More...
 
real(dbl_kind), dimension(:), allocatable grdvars::dlatcv
 The latitude spacing between Cv points at the grid bottom. More...
 
logical grdvars::do_postwgts
 flag indicating whether then ESMF weights to regrid from the tripole grid to a rectilinear grid should be generated. More...
 
real(real_kind), dimension(:,:), allocatable grdvars::dp4
 The ocean depth from a MOM6 topog file, stored as real*4 (m) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::dp8
 The ocean depth from a MOM6 topog file, stored as real*8 (m) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::dx
 The grid cell width in meters of the supergrid in the x-direction (i-dimension) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::dy
 The grid cell width in meters of the supergrid in the y-direction (j-dimension) More...
 
logical grdvars::editmask
 flag indicating whether the MOM6 land mask should be edited. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::hte
 The grid cell width in centimeters of the CICE6 grid in the y-direction (j-dimension) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::htn
 The grid cell width in centimeters of the CICE6 grid in the x-direction (i-dimension) More...
 
integer(int_kind), dimension(2) grdvars::ipole
 the i-index for both pole locations along the top-most row More...
 
integer, dimension(nv) grdvars::ivertbu
 The i-offsets of the Ct grid at each Bu(i,j) which determine the 4 vertices of each Bu grid point in i. More...
 
integer, dimension(nv), parameter grdvars::ivertct = (/0, -1, -1, 0/)
 The i-offsets of the Bu grid at each Ct(i,j) which determine the 4 vertices of each Ct grid grid point in i. More...
 
integer, dimension(nv) grdvars::ivertcu
 The i-offsets of the Cv grid at each Cu(i,j) which determine the 4 vertices of each Cu grid point in i. More...
 
integer, dimension(nv) grdvars::ivertcv
 The i-offsets of the Cu grid at each Cv(i,j) which determine the 4 vertices of each Cv grid point in i. More...
 
integer, dimension(nv) grdvars::jvertbu
 The j-offsets of the Ct grid at each Bu(i,j) which determine the 4 vertices of each Bu grid point in j. More...
 
integer, dimension(nv), parameter grdvars::jvertct = (/0, 0, -1, -1/)
 The j-offsets of the Bu grid at each Ct(i,j) which determine the 4 vertices of each Ct grid point in j. More...
 
integer, dimension(nv) grdvars::jvertcu
 The j-offsets of the Cv grid at each Cu(i,j) which determine the 4 vertices of each Cu grid point in j. More...
 
integer, dimension(nv) grdvars::jvertcv
 The j-offsets of the Cu grid at each Cv(i,j) which determine the 4 vertices of each Cv grid point in j. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::latbu
 The latitude of the corner points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latbu_vert
 The latitudes of the 4 vertices of each Bu grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::latct
 The latitude of the center (tracer) grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latct_vert
 The latitudes of the 4 vertices of each Ct grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::latcu
 The latitude of the u-velocity grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latcu_vert
 The latitudes of the 4 vertices of each Cu grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::latcv
 The latitude of the v-velocity grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latcv_vert
 The latitudes of the 4 vertices of each Cv grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::lonbu
 The longitude of the corner points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::lonbu_vert
 The longitudes of the 4 vertices of each Bu grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::lonct
 The longitude of the center (tracer) grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::lonct_vert
 The longitudes of the 4 vertices of each Ct grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::loncu
 The longitude of the u-velocity grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::loncu_vert
 The longitudes of the 4 vertices of each Cu grid point. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::loncv
 The longitude of the v-velocity grid points on the C-grid. More...
 
real(dbl_kind), dimension(:,:,:), allocatable grdvars::loncv_vert
 The longitudes of the 4 vertices of each Cv grid point. More...
 
real(kind=real_kind), parameter grdvars::masking_depth = 0.0
 The masking depth for MOM6. More...
 
real(kind=real_kind), parameter grdvars::maximum_depth = 6500.0
 The maximum depth for MOM6. More...
 
real(kind=real_kind), parameter grdvars::maximum_lat = 88.0
 The maximum latitude for water points for WW3. More...
 
real(kind=real_kind), parameter grdvars::minimum_depth = 9.5
 The minimum depth for MOM6. More...
 
integer, parameter grdvars::ncoord = 2*4.
 the number of coord pairs (lat,lon) for each of 4 stagger locations More...
 
integer grdvars::ni
 i-dimension of output grid More...
 
integer grdvars::nj
 j-dimension of output grid More...
 
integer grdvars::npx
 i or j-dimension of fv3 tile More...
 
integer, parameter grdvars::nv = 4.
 the number of vertices for each stagger location More...
 
integer, parameter grdvars::nvars = ncoord + nverts
 the total number of cooridinate variables More...
 
integer, parameter grdvars::nverts = 2*4.
 the number of coord pairs (lat,lon) for the vertices of each stagger location More...
 
integer grdvars::nx
 i-dimension of MOM6 supergrid More...
 
integer grdvars::ny
 j-dimension of MOM6 supergrid More...
 
logical grdvars::roottask
 flag indicating whether this is the roottask More...
 
real(dbl_kind) grdvars::sg_maxlat
 the maximum latitute present in the supergrid file More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::ulat
 The latitude points (on the Bu grid) for CICE6 (radians) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::ulon
 The longitude points (on the Bu grid) for CICE6 (radians) More...
 
real(real_kind), dimension(:,:), allocatable grdvars::wet4
 The ocean mask from a MOM6 mask file, stored as real*4 (nd) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::wet8
 The ocean mask from a MOM6 mask file, stored as real*8 (nd) More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::x
 The longitudes of the MOM6 supergrid. More...
 
real(dbl_kind), dimension(:), allocatable grdvars::xlatct
 The latitude of the Ct grid points on the opposite side of the tripole seam. More...
 
real(dbl_kind), dimension(:), allocatable grdvars::xlatcu
 The latitude of the Cu grid points on the opposite side of the tripole seam. More...
 
real(dbl_kind), dimension(:), allocatable grdvars::xlonct
 The longitude of the Ct grid points on the opposite side of the tripole seam. More...
 
real(dbl_kind), dimension(:), allocatable grdvars::xloncu
 The longitude of the Cu grid points on the opposite side of the tripole seam. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::xsgp1
 The longitudes of the super-grid replicated across the tripole seam. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::y
 The latitudes of the MOM6 supergrid. More...
 
real(dbl_kind), dimension(:,:), allocatable grdvars::ysgp1
 The latitudes of the super-grid replicated across the tripole seam. More...
 
+

Detailed Description

+

Define and allocate required grid variables.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This module contains the grid variables

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file grdvars.F90.

+

Function/Subroutine Documentation

+ +

◆ allocate_all()

+ +
+
+ + + + + + + +
subroutine grdvars::allocate_all ()
+
+ +

Allocate grid variables.

+
Author
Denise Worthen
+ +

Definition at line 174 of file grdvars.F90.

+ +
+
+

Variable Documentation

+ +

◆ angle

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::angle
+
+ +

The rotation angle on Bu points.

+ +

Definition at line 105 of file grdvars.F90.

+ +
+
+ +

◆ anglet

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::anglet
+
+ +

The rotation angle on Ct points (opposite sense from angle)

+ +

Definition at line 103 of file grdvars.F90.

+ +
+
+ +

◆ angq

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::angq
+
+ +

The grid rotation angle at the Bu (or corner) grid points of the super grid.

+ +

Definition at line 71 of file grdvars.F90.

+ +
+
+ +

◆ areact

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::areact
+
+ +

The grid areas of the Ct grid cell in m2.

+ +

Definition at line 102 of file grdvars.F90.

+ +
+
+ +

◆ debug

+ +
+
+ + + + +
logical grdvars::debug
+
+ +

flag indicating whether grid information should be printed for debugging purposes Default is false

+ +

Definition at line 23 of file grdvars.F90.

+ +
+
+ +

◆ dlatbu

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::dlatbu
+
+ +

The latitude spacing between Bu points at the grid bottom.

+ +

Definition at line 136 of file grdvars.F90.

+ +
+
+ +

◆ dlatcv

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::dlatcv
+
+ +

The latitude spacing between Cv points at the grid bottom.

+ +

Definition at line 138 of file grdvars.F90.

+ +
+
+ +

◆ do_postwgts

+ +
+
+ + + + +
logical grdvars::do_postwgts
+
+ +

flag indicating whether then ESMF weights to regrid from the tripole grid to a rectilinear grid should be generated.

+

Default is false.

+ +

Definition at line 26 of file grdvars.F90.

+ +
+
+ +

◆ dp4

+ +
+
+ + + + +
real(real_kind), dimension(:,:), allocatable grdvars::dp4
+
+ +

The ocean depth from a MOM6 topog file, stored as real*4 (m)

+ +

Definition at line 146 of file grdvars.F90.

+ +
+
+ +

◆ dp8

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::dp8
+
+ +

The ocean depth from a MOM6 topog file, stored as real*8 (m)

+ +

Definition at line 148 of file grdvars.F90.

+ +
+
+ +

◆ dx

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::dx
+
+ +

The grid cell width in meters of the supergrid in the x-direction (i-dimension)

+ +

Definition at line 74 of file grdvars.F90.

+ +
+
+ +

◆ dy

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::dy
+
+ +

The grid cell width in meters of the supergrid in the y-direction (j-dimension)

+ +

Definition at line 76 of file grdvars.F90.

+ +
+
+ +

◆ editmask

+ +
+
+ + + + +
logical grdvars::editmask
+
+ +

flag indicating whether the MOM6 land mask should be edited.

+

Default is false

+ +

Definition at line 21 of file grdvars.F90.

+ +
+
+ +

◆ hte

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::hte
+
+ +

The grid cell width in centimeters of the CICE6 grid in the y-direction (j-dimension)

+ +

Definition at line 158 of file grdvars.F90.

+ +
+
+ +

◆ htn

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::htn
+
+ +

The grid cell width in centimeters of the CICE6 grid in the x-direction (i-dimension)

+ +

Definition at line 156 of file grdvars.F90.

+ +
+
+ +

◆ ipole

+ +
+
+ + + + +
integer(int_kind), dimension(2) grdvars::ipole
+
+ +

the i-index for both pole locations along the top-most row

+ +

Definition at line 41 of file grdvars.F90.

+ +
+
+ +

◆ ivertbu

+ +
+
+ + + + +
integer, dimension(nv) grdvars::ivertbu
+
+ +

The i-offsets of the Ct grid at each Bu(i,j) which determine the 4 vertices of each Bu grid point in i.

+ +

Definition at line 62 of file grdvars.F90.

+ +
+
+ +

◆ ivertct

+ +
+
+ + + + +
integer, dimension(nv), parameter grdvars::ivertct = (/0, -1, -1, 0/)
+
+ +

The i-offsets of the Bu grid at each Ct(i,j) which determine the 4 vertices of each Ct grid grid point in i.

+ +

Definition at line 44 of file grdvars.F90.

+ +
+
+ +

◆ ivertcu

+ +
+
+ + + + +
integer, dimension(nv) grdvars::ivertcu
+
+ +

The i-offsets of the Cv grid at each Cu(i,j) which determine the 4 vertices of each Cu grid point in i.

+ +

Definition at line 56 of file grdvars.F90.

+ +
+
+ +

◆ ivertcv

+ +
+
+ + + + +
integer, dimension(nv) grdvars::ivertcv
+
+ +

The i-offsets of the Cu grid at each Cv(i,j) which determine the 4 vertices of each Cv grid point in i.

+ +

Definition at line 50 of file grdvars.F90.

+ +
+
+ +

◆ jvertbu

+ +
+
+ + + + +
integer, dimension(nv) grdvars::jvertbu
+
+ +

The j-offsets of the Ct grid at each Bu(i,j) which determine the 4 vertices of each Bu grid point in j.

+ +

Definition at line 65 of file grdvars.F90.

+ +
+
+ +

◆ jvertct

+ +
+
+ + + + +
integer, dimension(nv), parameter grdvars::jvertct = (/0, 0, -1, -1/)
+
+ +

The j-offsets of the Bu grid at each Ct(i,j) which determine the 4 vertices of each Ct grid point in j.

+ +

Definition at line 47 of file grdvars.F90.

+ +
+
+ +

◆ jvertcu

+ +
+
+ + + + +
integer, dimension(nv) grdvars::jvertcu
+
+ +

The j-offsets of the Cv grid at each Cu(i,j) which determine the 4 vertices of each Cu grid point in j.

+ +

Definition at line 59 of file grdvars.F90.

+ +
+
+ +

◆ jvertcv

+ +
+
+ + + + +
integer, dimension(nv) grdvars::jvertcv
+
+ +

The j-offsets of the Cu grid at each Cv(i,j) which determine the 4 vertices of each Cv grid point in j.

+ +

Definition at line 53 of file grdvars.F90.

+ +
+
+ +

◆ latbu

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::latbu
+
+ +

The latitude of the corner points on the C-grid.

+

These are equivalent to u,v velocity grid points on the B-grid

+ +

Definition at line 96 of file grdvars.F90.

+ +
+
+ +

◆ latbu_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latbu_vert
+
+ +

The latitudes of the 4 vertices of each Bu grid point.

+ +

Definition at line 122 of file grdvars.F90.

+ +
+
+ +

◆ latct

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::latct
+
+ +

The latitude of the center (tracer) grid points on the C-grid.

+ +

Definition at line 84 of file grdvars.F90.

+ +
+
+ +

◆ latct_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latct_vert
+
+ +

The latitudes of the 4 vertices of each Ct grid point.

+ +

Definition at line 107 of file grdvars.F90.

+ +
+
+ +

◆ latcu

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::latcu
+
+ +

The latitude of the u-velocity grid points on the C-grid.

+ +

Definition at line 92 of file grdvars.F90.

+ +
+
+ +

◆ latcu_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latcu_vert
+
+ +

The latitudes of the 4 vertices of each Cu grid point.

+ +

Definition at line 117 of file grdvars.F90.

+ +
+
+ +

◆ latcv

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::latcv
+
+ +

The latitude of the v-velocity grid points on the C-grid.

+ +

Definition at line 88 of file grdvars.F90.

+ +
+
+ +

◆ latcv_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::latcv_vert
+
+ +

The latitudes of the 4 vertices of each Cv grid point.

+ +

Definition at line 112 of file grdvars.F90.

+ +
+
+ +

◆ lonbu

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::lonbu
+
+ +

The longitude of the corner points on the C-grid.

+

These are equivalent to u,v velocity grid points on the B-grid

+ +

Definition at line 99 of file grdvars.F90.

+ +
+
+ +

◆ lonbu_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::lonbu_vert
+
+ +

The longitudes of the 4 vertices of each Bu grid point.

+ +

Definition at line 124 of file grdvars.F90.

+ +
+
+ +

◆ lonct

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::lonct
+
+ +

The longitude of the center (tracer) grid points on the C-grid.

+ +

Definition at line 86 of file grdvars.F90.

+ +
+
+ +

◆ lonct_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::lonct_vert
+
+ +

The longitudes of the 4 vertices of each Ct grid point.

+ +

Definition at line 109 of file grdvars.F90.

+ +
+
+ +

◆ loncu

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::loncu
+
+ +

The longitude of the u-velocity grid points on the C-grid.

+ +

Definition at line 94 of file grdvars.F90.

+ +
+
+ +

◆ loncu_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::loncu_vert
+
+ +

The longitudes of the 4 vertices of each Cu grid point.

+ +

Definition at line 119 of file grdvars.F90.

+ +
+
+ +

◆ loncv

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::loncv
+
+ +

The longitude of the v-velocity grid points on the C-grid.

+ +

Definition at line 90 of file grdvars.F90.

+ +
+
+ +

◆ loncv_vert

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:,:), allocatable grdvars::loncv_vert
+
+ +

The longitudes of the 4 vertices of each Cv grid point.

+ +

Definition at line 114 of file grdvars.F90.

+ +
+
+ +

◆ masking_depth

+ +
+
+ + + + +
real(kind=real_kind), parameter grdvars::masking_depth = 0.0
+
+ +

The masking depth for MOM6.

+

Depths shallower than minimum_depth but deeper than masking_depth are rounded to minimum_depth

+ +

Definition at line 163 of file grdvars.F90.

+ +
+
+ +

◆ maximum_depth

+ +
+
+ + + + +
real(kind=real_kind), parameter grdvars::maximum_depth = 6500.0
+
+ +

The maximum depth for MOM6.

+ +

Definition at line 162 of file grdvars.F90.

+ +
+
+ +

◆ maximum_lat

+ +
+
+ + + + +
real(kind=real_kind), parameter grdvars::maximum_lat = 88.0
+
+ +

The maximum latitude for water points for WW3.

+ +

Definition at line 166 of file grdvars.F90.

+ +
+
+ +

◆ minimum_depth

+ +
+
+ + + + +
real(kind=real_kind), parameter grdvars::minimum_depth = 9.5
+
+ +

The minimum depth for MOM6.

+ +

Definition at line 161 of file grdvars.F90.

+ +
+
+ +

◆ ncoord

+ +
+
+ + + + +
integer, parameter grdvars::ncoord = 2*4.
+
+ +

the number of coord pairs (lat,lon) for each of 4 stagger locations

+ +

Definition at line 32 of file grdvars.F90.

+ +
+
+ +

◆ ni

+ +
+
+ + + + +
integer grdvars::ni
+
+ +

i-dimension of output grid

+ +

Definition at line 14 of file grdvars.F90.

+ +
+
+ +

◆ nj

+ +
+
+ + + + +
integer grdvars::nj
+
+ +

j-dimension of output grid

+ +

Definition at line 15 of file grdvars.F90.

+ +
+
+ +

◆ npx

+ +
+
+ + + + +
integer grdvars::npx
+
+ +

i or j-dimension of fv3 tile

+ +

Definition at line 16 of file grdvars.F90.

+ +
+
+ +

◆ nv

+ +
+
+ + + + +
integer, parameter grdvars::nv = 4.
+
+ +

the number of vertices for each stagger location

+ +

Definition at line 31 of file grdvars.F90.

+ +
+
+ +

◆ nvars

+ +
+
+ + + + +
integer, parameter grdvars::nvars = ncoord + nverts
+
+ +

the total number of cooridinate variables

+ +

Definition at line 36 of file grdvars.F90.

+ +
+
+ +

◆ nverts

+ +
+
+ + + + +
integer, parameter grdvars::nverts = 2*4.
+
+ +

the number of coord pairs (lat,lon) for the vertices of each stagger location

+ +

Definition at line 34 of file grdvars.F90.

+ +
+
+ +

◆ nx

+ +
+
+ + + + +
integer grdvars::nx
+
+ +

i-dimension of MOM6 supergrid

+ +

Definition at line 18 of file grdvars.F90.

+ +
+
+ +

◆ ny

+ +
+
+ + + + +
integer grdvars::ny
+
+ +

j-dimension of MOM6 supergrid

+ +

Definition at line 19 of file grdvars.F90.

+ +
+
+ +

◆ roottask

+ +
+
+ + + + +
logical grdvars::roottask
+
+ +

flag indicating whether this is the roottask

+ +

Definition at line 29 of file grdvars.F90.

+ +
+
+ +

◆ sg_maxlat

+ +
+
+ + + + +
real(dbl_kind) grdvars::sg_maxlat
+
+ +

the maximum latitute present in the supergrid file

+ +

Definition at line 39 of file grdvars.F90.

+ +
+
+ +

◆ ulat

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::ulat
+
+ +

The latitude points (on the Bu grid) for CICE6 (radians)

+ +

Definition at line 154 of file grdvars.F90.

+ +
+
+ +

◆ ulon

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::ulon
+
+ +

The longitude points (on the Bu grid) for CICE6 (radians)

+ +

Definition at line 152 of file grdvars.F90.

+ +
+
+ +

◆ wet4

+ +
+
+ + + + +
real(real_kind), dimension(:,:), allocatable grdvars::wet4
+
+ +

The ocean mask from a MOM6 mask file, stored as real*4 (nd)

+ +

Definition at line 141 of file grdvars.F90.

+ +
+
+ +

◆ wet8

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::wet8
+
+ +

The ocean mask from a MOM6 mask file, stored as real*8 (nd)

+ +

Definition at line 143 of file grdvars.F90.

+ +
+
+ +

◆ x

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::x
+
+ +

The longitudes of the MOM6 supergrid.

+ +

Definition at line 69 of file grdvars.F90.

+ +
+
+ +

◆ xlatct

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::xlatct
+
+ +

The latitude of the Ct grid points on the opposite side of the tripole seam.

+ +

Definition at line 130 of file grdvars.F90.

+ +
+
+ +

◆ xlatcu

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::xlatcu
+
+ +

The latitude of the Cu grid points on the opposite side of the tripole seam.

+ +

Definition at line 134 of file grdvars.F90.

+ +
+
+ +

◆ xlonct

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::xlonct
+
+ +

The longitude of the Ct grid points on the opposite side of the tripole seam.

+ +

Definition at line 128 of file grdvars.F90.

+ +
+
+ +

◆ xloncu

+ +
+
+ + + + +
real(dbl_kind), dimension(:), allocatable grdvars::xloncu
+
+ +

The longitude of the Cu grid points on the opposite side of the tripole seam.

+ +

Definition at line 132 of file grdvars.F90.

+ +
+
+ +

◆ xsgp1

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::xsgp1
+
+ +

The longitudes of the super-grid replicated across the tripole seam.

+ +

Definition at line 78 of file grdvars.F90.

+ +
+
+ +

◆ y

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::y
+
+ +

The latitudes of the MOM6 supergrid.

+ +

Definition at line 70 of file grdvars.F90.

+ +
+
+ +

◆ ysgp1

+ +
+
+ + + + +
real(dbl_kind), dimension(:,:), allocatable grdvars::ysgp1
+
+ +

The latitudes of the super-grid replicated across the tripole seam.

+ +

Definition at line 80 of file grdvars.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/grdvars_8F90.js b/ver-1.11.0/cpld_gridgen/grdvars_8F90.js new file mode 100644 index 000000000..e5d374ebe --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/grdvars_8F90.js @@ -0,0 +1,71 @@ +var grdvars_8F90 = +[ + [ "allocate_all", "grdvars_8F90.html#a328728def7fe66a571d827098703ef11", null ], + [ "angle", "grdvars_8F90.html#a0e385d357aa508d205d034e70f22aba6", null ], + [ "anglet", "grdvars_8F90.html#ab489a917aac77e880f9a34fe38675691", null ], + [ "angq", "grdvars_8F90.html#a62d978631e2fd36b42904614a1e64bef", null ], + [ "areact", "grdvars_8F90.html#ac01f4dfee093500cd43338df47f31a81", null ], + [ "debug", "grdvars_8F90.html#a8b1584b2eabaddbccac20a7e092b5945", null ], + [ "dlatbu", "grdvars_8F90.html#a07732707fe68e6ff4ec666d799c24c86", null ], + [ "dlatcv", "grdvars_8F90.html#af897c6ba7de3c51e9662d55747802be8", null ], + [ "do_postwgts", "grdvars_8F90.html#a5ad08fb541418501627e8ab31de25ed9", null ], + [ "dp4", "grdvars_8F90.html#a8c28cb10e25e122e236e785518ee0b66", null ], + [ "dp8", "grdvars_8F90.html#a31728217720e19257efdb25ac5a3364d", null ], + [ "dx", "grdvars_8F90.html#a49ad1797fd0c4dceebf620617ca7f77c", null ], + [ "dy", "grdvars_8F90.html#a6113cc80b6095395b066e1483d679f51", null ], + [ "editmask", "grdvars_8F90.html#a5194fb7fb3c86589c1f5d93b622b514e", null ], + [ "hte", "grdvars_8F90.html#af22c09b727c538aaf830e64d928f2b7c", null ], + [ "htn", "grdvars_8F90.html#a8bbd10e3ddfbb7fc72ae0f96b92da5fb", null ], + [ "ipole", "grdvars_8F90.html#a7a38dda76b7f5fd076b5314492c14aa8", null ], + [ "ivertbu", "grdvars_8F90.html#a819746477399d85d393ed9e72da8d666", null ], + [ "ivertct", "grdvars_8F90.html#a23f3aec46800e7bf9c1820825592d2e9", null ], + [ "ivertcu", "grdvars_8F90.html#ac9c4e94f20e8f58eea2f1b5dc1f6ba9e", null ], + [ "ivertcv", "grdvars_8F90.html#a3b2d0b559ca18e5809e16932c59d8e26", null ], + [ "jvertbu", "grdvars_8F90.html#a5e08cfa5b99a2d5283ec9f4beb6eaeb6", null ], + [ "jvertct", "grdvars_8F90.html#af24489bee27822c47b8e986f0ea563e9", null ], + [ "jvertcu", "grdvars_8F90.html#af90a71415465c5fbc22cf204eaab1fc5", null ], + [ "jvertcv", "grdvars_8F90.html#aedcf5ef30a1ff9c10df1744bfb750d96", null ], + [ "latbu", "grdvars_8F90.html#a1d50d7a29d4497a00ac0002f46c576f0", null ], + [ "latbu_vert", "grdvars_8F90.html#a55f2b7e1bbca711e0f1a0f75d0eb368e", null ], + [ "latct", "grdvars_8F90.html#ac0f195cc905f80fe69f72bbf971cdeed", null ], + [ "latct_vert", "grdvars_8F90.html#afca7b7e1a1cedcdf844079922084474a", null ], + [ "latcu", "grdvars_8F90.html#a0caaebffaf05b908aa34df40f4d9448c", null ], + [ "latcu_vert", "grdvars_8F90.html#ad7fa7f129a25369663cd572053f5b45b", null ], + [ "latcv", "grdvars_8F90.html#a4578f746f307159d1fc05265fc963725", null ], + [ "latcv_vert", "grdvars_8F90.html#ac3a0b1c629003322533b688399fe5f0b", null ], + [ "lonbu", "grdvars_8F90.html#a1eeff04e52a3a061164ef7384d5216a7", null ], + [ "lonbu_vert", "grdvars_8F90.html#a987e7e9a4a96fd323cff526364aa32ba", null ], + [ "lonct", "grdvars_8F90.html#aa7ad651120fed8d4948cd9f81bfd47d4", null ], + [ "lonct_vert", "grdvars_8F90.html#a36f7c345d9b787a4956e99beb3b1a9bf", null ], + [ "loncu", "grdvars_8F90.html#a5886bacae93178b0e08db66bde1249a7", null ], + [ "loncu_vert", "grdvars_8F90.html#a794e74698074e5da6bed508acba81c82", null ], + [ "loncv", "grdvars_8F90.html#aaa244d80145056fa3070bf52267efa73", null ], + [ "loncv_vert", "grdvars_8F90.html#ac6c23c5be7ca4fd67344e5b3852a88ef", null ], + [ "masking_depth", "grdvars_8F90.html#a435598dba041e0bc7d08df4b38d9bbdd", null ], + [ "maximum_depth", "grdvars_8F90.html#a87e55332b7fbdf58eb6d358e9a83db62", null ], + [ "maximum_lat", "grdvars_8F90.html#a3cf9b75a8b19de88d4b9915fe8d8d2f4", null ], + [ "minimum_depth", "grdvars_8F90.html#a905b13bcf0b7c85412837facaac0d46e", null ], + [ "ncoord", "grdvars_8F90.html#aa5d1f52f0ef1e3ca9e73a34423a841c3", null ], + [ "ni", "grdvars_8F90.html#ab4e40ea0e4d4c14fae837b09470a3e57", null ], + [ "nj", "grdvars_8F90.html#ad12d0c225bbf6584c432de0f864246ca", null ], + [ "npx", "grdvars_8F90.html#a4a953d8e228956010ad72dba3f4a13c2", null ], + [ "nv", "grdvars_8F90.html#acd72e2c13d07e3c0839cf2895c997055", null ], + [ "nvars", "grdvars_8F90.html#a1bda99f6192cb48078ae06ee3bf3c1ea", null ], + [ "nverts", "grdvars_8F90.html#a40d2911a2aced56fcd0ff6965adc16b4", null ], + [ "nx", "grdvars_8F90.html#a99285d1b6d717ab1447d11914d57799a", null ], + [ "ny", "grdvars_8F90.html#a0ee0447ff5535317aa9de6202e53ebc4", null ], + [ "roottask", "grdvars_8F90.html#a4e159c25718a8413af83ebc172c01516", null ], + [ "sg_maxlat", "grdvars_8F90.html#a3d2757edca0e0dc8bfb70d63debcba95", null ], + [ "ulat", "grdvars_8F90.html#a98094bfd99fce13a1659c59eed70619e", null ], + [ "ulon", "grdvars_8F90.html#aa07d123c429ada0542546cc7241fb27d", null ], + [ "wet4", "grdvars_8F90.html#aa4f6251fd1cc62eb6e16cb6d0212a5d3", null ], + [ "wet8", "grdvars_8F90.html#ac1763db1c5a77d24c63c8796e8c4b3b7", null ], + [ "x", "grdvars_8F90.html#a945aaee1f1cb229b0d7211e17ddc1d53", null ], + [ "xlatct", "grdvars_8F90.html#aafda856d193d771c1000b4319f633055", null ], + [ "xlatcu", "grdvars_8F90.html#aedf78b8050a6b8a862762b04f3f84363", null ], + [ "xlonct", "grdvars_8F90.html#a7767b784a2aaa851007bf6495baf52d8", null ], + [ "xloncu", "grdvars_8F90.html#afa15e8cd4d86472a0b190baabd592520", null ], + [ "xsgp1", "grdvars_8F90.html#af741d24b6869a3d5022bb507cd23c322", null ], + [ "y", "grdvars_8F90.html#a3e8e7cd5d3ef5e6363d94135c76143b6", null ], + [ "ysgp1", "grdvars_8F90.html#ae6d7a5ba05d47956d177de22c447cd63", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/grdvars_8F90_source.html b/ver-1.11.0/cpld_gridgen/grdvars_8F90_source.html new file mode 100644 index 000000000..14a6f03fb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/grdvars_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/grdvars.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
grdvars.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module grdvars
9 
10  use gengrid_kinds, only : dbl_kind, real_kind, int_kind
11 
12  implicit none
13 
14  integer :: ni
15  integer :: nj
16  integer :: npx
17 
18  integer :: nx
19  integer :: ny
20 
21  logical :: editmask
23  logical :: debug
26  logical :: do_postwgts
29  logical :: roottask
30 
31  integer, parameter :: nv = 4.
32  integer, parameter :: ncoord = 2*4.
34  integer, parameter :: nverts = 2*4.
36  integer, parameter :: nvars = ncoord + nverts
37 
38 
39  real(dbl_kind) :: sg_maxlat
41  integer(int_kind) :: ipole(2)
43 
44  integer, parameter, dimension(nv) :: ivertct = (/0, -1, -1, 0/)
47  integer, parameter, dimension(nv) :: jvertct = (/0, 0, -1, -1/)
50  integer, dimension(nv) :: ivertcv
53  integer, dimension(nv) :: jvertcv
56  integer, dimension(nv) :: ivertcu
59  integer, dimension(nv) :: jvertcu
62  integer, dimension(nv) :: ivertbu
65  integer, dimension(nv) :: jvertbu
68  ! Super-grid source grid variables
69  real(dbl_kind), allocatable, dimension(:,:) :: x
70  real(dbl_kind), allocatable, dimension(:,:) :: y
71  real(dbl_kind), allocatable, dimension(:,:) :: angq
73 
74  real(dbl_kind), allocatable, dimension(:,:) :: dx
76  real(dbl_kind), allocatable, dimension(:,:) :: dy
78  real(dbl_kind), allocatable, dimension(:,:) :: xsgp1
80  real(dbl_kind), allocatable, dimension(:,:) :: ysgp1
82 
83  ! Output grid variables
84  real(dbl_kind), allocatable, dimension(:,:) :: latct
86  real(dbl_kind), allocatable, dimension(:,:) :: lonct
88  real(dbl_kind), allocatable, dimension(:,:) :: latcv
90  real(dbl_kind), allocatable, dimension(:,:) :: loncv
92  real(dbl_kind), allocatable, dimension(:,:) :: latcu
94  real(dbl_kind), allocatable, dimension(:,:) :: loncu
96  real(dbl_kind), allocatable, dimension(:,:) :: latbu
99  real(dbl_kind), allocatable, dimension(:,:) :: lonbu
102  real(dbl_kind), allocatable, dimension(:,:) :: areact
103  real(dbl_kind), allocatable, dimension(:,:) :: anglet
105  real(dbl_kind), allocatable, dimension(:,:) :: angle
106 
107  real(dbl_kind), allocatable, dimension(:,:,:) :: latct_vert
109  real(dbl_kind), allocatable, dimension(:,:,:) :: lonct_vert
111 
112  real(dbl_kind), allocatable, dimension(:,:,:) :: latcv_vert
114  real(dbl_kind), allocatable, dimension(:,:,:) :: loncv_vert
116 
117  real(dbl_kind), allocatable, dimension(:,:,:) :: latcu_vert
119  real(dbl_kind), allocatable, dimension(:,:,:) :: loncu_vert
121 
122  real(dbl_kind), allocatable, dimension(:,:,:) :: latbu_vert
124  real(dbl_kind), allocatable, dimension(:,:,:) :: lonbu_vert
126 
127 
128  real(dbl_kind), allocatable, dimension(:) :: xlonct
130  real(dbl_kind), allocatable, dimension(:) :: xlatct
132  real(dbl_kind), allocatable, dimension(:) :: xloncu
134  real(dbl_kind), allocatable, dimension(:) :: xlatcu
136  real(dbl_kind), allocatable, dimension(:) :: dlatbu
138  real(dbl_kind), allocatable, dimension(:) :: dlatcv
140  ! MOM6 fix fields
141  real(real_kind), allocatable, dimension(:,:) :: wet4
143  real(dbl_kind), allocatable, dimension(:,:) :: wet8
145 
146  real(real_kind), allocatable, dimension(:,:) :: dp4
148  real(dbl_kind), allocatable, dimension(:,:) :: dp8
150 
151  ! CICE6 fields
152  real(dbl_kind), allocatable, dimension(:,:) :: ulon
154  real(dbl_kind), allocatable, dimension(:,:) :: ulat
156  real(dbl_kind), allocatable, dimension(:,:) :: htn
158  real(dbl_kind), allocatable, dimension(:,:) :: hte
160 
161  real(kind=real_kind), parameter :: minimum_depth = 9.5
162  real(kind=real_kind), parameter :: maximum_depth = 6500.0
163  real(kind=real_kind), parameter :: masking_depth = 0.0
166  real(kind=real_kind), parameter :: maximum_lat = 88.0
167 
168 contains
172 
173  subroutine allocate_all
175  allocate( x(0:nx,0:ny), y(0:nx,0:ny), angq(0:nx,0:ny) )
176  allocate( dx(nx,0:ny), dy(0:nx,ny) )
177 
178  allocate( xsgp1(0:nx,0:ny+1), ysgp1(0:nx,0:ny+1) )
179 
180  allocate( latct(ni,nj), lonct(ni,nj) )
181  allocate( latcv(ni,nj), loncv(ni,nj) )
182  allocate( latcu(ni,nj), loncu(ni,nj) )
183  allocate( latbu(ni,nj), lonbu(ni,nj) )
184 
185  allocate( areact(ni,nj), anglet(ni,nj), angle(ni,nj) )
186 
187  allocate( latct_vert(ni,nj,nv), lonct_vert(ni,nj,nv) )
188  allocate( latcv_vert(ni,nj,nv), loncv_vert(ni,nj,nv) )
189  allocate( latcu_vert(ni,nj,nv), loncu_vert(ni,nj,nv) )
190  allocate( latbu_vert(ni,nj,nv), lonbu_vert(ni,nj,nv) )
191 
192  allocate( xlonct(ni), xlatct(ni) )
193  allocate( xloncu(ni), xlatcu(ni) )
194  allocate( dlatbu(ni), dlatcv(ni) )
195 
196  allocate( wet4(ni,nj) )
197  allocate( wet8(ni,nj) )
198 
199  allocate( dp4(ni,nj) )
200  allocate( dp8(ni,nj) )
201 
202  allocate( ulon(ni,nj), ulat(ni,nj) )
203  allocate( htn(ni,nj), hte(ni,nj) )
204 
205  end subroutine allocate_all
206 
207 end module grdvars
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/index.html b/ver-1.11.0/cpld_gridgen/index.html new file mode 100644 index 000000000..a718628d2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/index.html @@ -0,0 +1,262 @@ + + + + + + + +cpld_gridgen: cpldgrid_gen + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cpldgrid_gen
+
+
+

+Introduction

+

The cpld_gengrid program and associated script related functions create the files required for Fix and IC files for the coupled model.

+

This document is part of the UFS_UTILS documentation.

+

The cpld_gengrid program is part of the UFS_UTILS project.

+

+Creating Fix and IC files required for the Coupled Model

+

For the UFS coupled model application S2S or S2SW, the following fix files are required:

+
    +
  • The CICE6 grid and mask file
  • +
  • The mesh file for the desired OCN/ICE resolution, which is identical for MOM6 and CICE6.
  • +
  • The mapped ocean mask on the FV3 tiles
  • +
  • The ESMF regridding weights required to create the CICE6 IC from CPC (SIS2) reanalysis.
  • +
  • The ESMF regridding weights required to remap the CICE6 or MOM6 output from tripole grid to a rectilinear grid (optional).
  • +
+

Since MOM6 creates the model grid at runtime (including adjusting the land mask, if required), the required files for CICE and UFSAtm must be created in a pre-processing step using only the MOM6 supergrid, topography and land mask files as input. This allows the mapped ocean mask (used for creating of the ATM ICs) and the CICE6 grid and mask files to be consistent with the run-time configuration of MOM6.

+

+Background:

+

+MOM6 grids

+

The MOM6 supergrid contains a MOM6 grid at twice the desired resolution. The indexing of the supergrid vs the reduced grid is:

+
        Super Grid               Reduced Grid
+
+
+    I-1,J+1     I+1,J+1
+       X─────X─────X            I-1,J   i,j
+       │     │     │               X─────X
+       │     │     │               │     │
+       │    i│j    │               │  T  │
+       X─────X─────X               │     │
+       │     │     │               X─────X
+       │     │     │          I-1,J-1    I,J-1
+       │     │     │
+       X─────X─────X
+    I-1,J-1     I+1,J-1
+

MOM6 uses an Arakawa C grid. Within cpld_gridgen, these are referred to as "stagger" locations, and named as follows:

             Bu────Cv─────Bu
+             │            │
+             │            │
+             Cu    Ct     Cu
+             │            │
+             │            │
+             Bu────Cv─────Bu
+

+Rotation angles

+

For the tripole grid, a rotation angle is defined to translate vectors to/from the grid (i-j) orientation from/to true E-W. The rotation angle is calculated at run-time in MOM6 (src/initialization/MOM_shared_initialization.F90). However, CICE6 requires a rotation at the corner (Bu) grid points, which for points along the tripole seam requires values on the other side of the tripole fold. In cpld_gridgen, these values are found by "flipping over" the values on the last row of the MOM6 super-grid. If ipL and ipR are the i-indices of the poles along the last j-row:

+
            ipL-1     ipL    ipL+1            ipR-1     ipR    ipR+1
+               x-------x-------x     |||        x-------x-------x
+

then after folding along the tripole seam, ipL and ipR must align:

+
                           ipR+1     ipR    ipR-1
+                              x-------x-------x
+                           ipL-1     ipL    ipL+1
+                              x-------x-------x
+

Using the folded seam, the values required for calculating the rotation angle on the Bu grid points are available and can be calculated in the same way as MOM6 calculates rotation angles for the Ct grid points.

+

+SCRIP format files

+

For calculating interpolation weights using ESMF, a SCRIP file needs to be provided. A SCIP file contains the both the grid locations of any stagger grid location (e.g. Ct) and the associated grid vertices for that point. As seen from the above diagram, for the Ct points, those grid vertices are given by the Bu grid locations.

+

SCRIP requires that the vertices be ordered counter-clockwise so that the center grid point is always to the left of the vertex. In cpld_gridgen, vertices are defined counter-clockwise from upper right. Ct vertices are located on the Bu grid (as shown above), Cu vertices on the Cv grid, Cv vertices on the Cu grid and Bu vertices on the Ct grid. For example, for the Ct grid, the vertices are:

         Vertex #2             Vertex #1
+         Bu(i-1,j)             Bu(i,j)
+                     Ct(i,j)
+       Bu(i-1,j-1)             Bu(i,j-1)
+         Vertex #3             Vertex #4
+

so that the vertices for the Ct grid are found as off-sets of the i,j index of the Bu grid

 iVertCt(4) = (/0, -1, -1,  0/)
+ jVertCt(4) = (/0,  0, -1, -1/)
+

Careful examination of the remaining stagger locations lead to similar definitions for the i,j offsets required to extract the vertices, all of which can be defined in terms of the iVertCt and jVertCt values.

+

Special treatment is require at the bottom of the grid, where the vertices of the Ct and Cu grid must be set manually (note, these points are on land.) The top of the grid also requires special treatment because the required vertices are located across the tripole seam. This is accomplished by creating 1-d arrays which hold the Ct and Cu grid point locations across the matched seam.

+

+Generating the grid files

+

The cpld_gridgen program and associated script related functions perform the following tasks:

+
    +
  1. read the MOM6 supergrid and ocean mask file and optionally creates the required topo_edits file if the land mask for MOM6 is to be changed at runtime.
  2. +
  3. create a master grid file containing all stagger locations of the grid fully defined
  4. +
  5. create the CICE6 grid variables and writes the required CICE6 grid file
  6. +
  7. create a SCRIP file for the center stagger (Ct) grid points and a second SCRIP file also containing the land mask
  8. +
  9. create the ESMF conservative regridding weights to map the ocean mask to the FV3 tiles and write the mapped mask to 6 tile files
  10. +
  11. create the ESMF regridding weights to map the 1/4 CICE6 restart file to a lower resolution tripole grid
  12. +
  13. optionally call a routine to generate ESMF regridding weights to map the tripole grid to a set of rectilinear grids
  14. +
  15. use the command line command ESMF_Scrip2Unstruct to generate the ocean mesh from the SCRIP file containing the land mask (item 4)
  16. +
  17. use an NCO command line command to generate the CICE6 land mask file from the CICE6 grid file
  18. +
+

+The generated files

+

The exact list of files produced by the cpld_gridgen.sh script will vary depending on several factors. For example, if the DO_POSTWGHTS flag is true, then a SCRIP format file will be produced for each rectilinear destination grid desired and a file containing the regridding weights to map from the center Ct stagger point to the rectilinear grid will also be written. Because both MOM6 and CICE6 velocity variables are located at Cu,Cv or Bu locations, additional files will also be created to regrid from the velocity stagger locations to the center Ct location. If an OCN/ICE grid resolution less than 1/4 degree is chosen, then a file containing regridding weights from the 1/4 degree grid to a lower resolution grid will also be written. Note also that multiple intermediate SCRIP format files may be produced depending on the options chosen.

+


+

+
    +
  • Executing the script for the 1/4 deg OCN/ICE resolution will result in the following files being produced in the output location:
  • +
+ + + + + + + + + + + + + + + +
Output files for 1/4 deg
File name Description Function
tripole.mx025.nc master grid file Creating all subsequent grid or mapping files
grid_cice_NEMS_mx025.nc the CICE grid file used at runtime by CICE6
kmtu_cice_NEMS_mx025.nc the CICE mask file used at runtime by CICE6
mesh.mx025.nc the ocean and ice mesh file used at runtime by CICE6, MOM6, and CMEPS
C384.mx025.tile[1-6].nc the mapped ocean mask on the ATM tiles used to create ATM ICs consistent with the
+ fractional grid
+


+

+
    +
  • If the optional post-weights are generated, the following files will be produced in the output location:
  • +
+ + + + + + + + + +
Optional post-weights files for 1/4deg
File name Function
tripole.mx025.[Cu][Cv][Bu].to.Ct.bilinear.nc the ESMF weights for mapping OCN or ICE
+ output fields from the various stagger
+ locations on the tripole grid to the
+ center (Ct) stagger location on the
+ same tripole grid using bilinear mapping
tripole.mx025.Ct.to.rect.[destination resolution].[bilinear][conserve].nc the ESMF weights for mapping variables
+ on the center (Ct) stagger location on
+ the tripole grid to a rectilinear grid
+ with [destination resolution] using
+ either bilinear or conservative mapping
+


+

+
    +
  • If a resolution other than 1/4 degree is used in cpld_gridgen.sh, the following file will be produced in the output location:
  • +
+ + + + + + + +
Output files for CICE6 IC creation at tripole destination resolution
File name Function
tripole.mx025.Ct.to.mx[destination resolution].Ct.neareststod.nc the ESMF weights for mapping the 1/4 CICE ICs to
+ a tripole [destination resolution] using nearest
+ source-to-destination mapping
+


+

+
    +
  • If run-time land mask changes for MOM6 are requested, the following file will be produced in the output location:
  • +
+ + + + + + + +
Output files for run-time modification of MOM6 land mask
File name Function
ufs.[Default filename].nc Topo-edits required for UFS application. These are appended to the existing default topo
+ edits file and implemented at run time with the parameter flag
+ ALLOW_LANDMASK_CHANGES=true. All files produced by the cpld_gridgen.sh will be
+ consistent with this run-time land mask.
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/inputnml_8F90.html b/ver-1.11.0/cpld_gridgen/inputnml_8F90.html new file mode 100644 index 000000000..6bd4a8097 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/inputnml_8F90.html @@ -0,0 +1,155 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/inputnml.F90 File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
inputnml.F90 File Reference
+
+
+ +

Define the input namelist variables. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Functions/Subroutines

subroutine inputnml::read_inputnml (fname)
 Read input namelist file. More...
 
+

Detailed Description

+

Define the input namelist variables.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This module contains the namelist variables

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file inputnml.F90.

+

Function/Subroutine Documentation

+ +

◆ read_inputnml()

+ +
+
+ + + + + + + + +
subroutine inputnml::read_inputnml (character(len=*), intent(in) fname)
+
+ +

Read input namelist file.

+
Parameters
+ + +
[in]fnamethe file name to read
+
+
+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 25 of file inputnml.F90.

+ +
+
+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/inputnml_8F90.js b/ver-1.11.0/cpld_gridgen/inputnml_8F90.js new file mode 100644 index 000000000..8ea0a1087 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/inputnml_8F90.js @@ -0,0 +1,4 @@ +var inputnml_8F90 = +[ + [ "read_inputnml", "inputnml_8F90.html#a95ea828a3b96cbb324b1fe4e3319743f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/inputnml_8F90_source.html b/ver-1.11.0/cpld_gridgen/inputnml_8F90_source.html new file mode 100644 index 000000000..ffb3789d8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/inputnml_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/inputnml.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
inputnml.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module inputnml
9 
10  use grdvars, only : nx,ny,ni,nj,npx
11  use grdvars, only : editmask, debug, do_postwgts
12  use charstrings, only : dirsrc, dirout, fv3dir, res, atmres, topofile, editsfile
13 
14  implicit none
15 
16 contains
17 
23 
24  subroutine read_inputnml(fname)
25 
26  character(len=*), intent(in) :: fname
27 
28  ! local variables
29  integer :: stderr, iounit, rc
30 
31  namelist /grid_nml/ ni, nj, dirsrc, dirout, fv3dir, topofile, editsfile, &
32  res, atmres, npx, editmask, debug, &
33  do_postwgts
34 
35  ! Check whether file exists.
36  inquire (file=trim(fname), iostat=rc)
37 
38  if (rc /= 0) then
39  write (stderr, '(3a)') 'Error: input file "', trim(fname), '" does not exist.'
40  return
41  end if
42 
43  ! Open and read Namelist file.
44  open (action='read', file=trim(fname), iostat=rc, newunit=iounit)
45  read (nml=grid_nml, iostat=rc, unit=iounit)
46 
47  ! set supergrid dimensions
48  nx = ni*2
49  ny = nj*2
50 
51  if (rc /= 0) then
52  write (stderr, '(a)') 'Error: invalid Namelist format.'
53  end if
54 
55  close (iounit)
56  end subroutine read_inputnml
57 end module inputnml
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/jquery.js b/ver-1.11.0/cpld_gridgen/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+ +
+
mapped_mask.F90 File Reference
+
+
+ +

Create the mapped ocean mask files. +More...

+ +

Go to the source code of this file.

+
+ + + + +

+Functions/Subroutines

subroutine mapped_mask::make_frac_land (src, wgt)
 Use ESMF weights to map the ocean land mask to the FV3 tiles and write the mapped mask to 6 tile files. More...
 
+

Detailed Description

+

Create the mapped ocean mask files.

+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+

This writes the mapped ocean mask on the FV3 tiles

Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition in file mapped_mask.F90.

+

Function/Subroutine Documentation

+ +

◆ make_frac_land()

+ +
+
+ + + + + + + + + + + + + + + + + + +
subroutine mapped_mask::make_frac_land (character(len=*), intent(in) src,
character(len=*), intent(in) wgt 
)
+
+ +

Use ESMF weights to map the ocean land mask to the FV3 tiles and write the mapped mask to 6 tile files.

+
Parameters
+ + + +
[in]srca SCRIP file containing the land mask for the ocean domain
[in]wgta file containing the ESMF weights to regrid from the ocean domain to the FV3 tile domain
+
+
+
Author
Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
+ +

Definition at line 27 of file mapped_mask.F90.

+ +
+
+ + + + + + diff --git a/ver-1.11.0/cpld_gridgen/mapped__mask_8F90.js b/ver-1.11.0/cpld_gridgen/mapped__mask_8F90.js new file mode 100644 index 000000000..a8051edbd --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/mapped__mask_8F90.js @@ -0,0 +1,4 @@ +var mapped__mask_8F90 = +[ + [ "make_frac_land", "mapped__mask_8F90.html#a294833098b0022e556300aef737edb21", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/mapped__mask_8F90_source.html b/ver-1.11.0/cpld_gridgen/mapped__mask_8F90_source.html new file mode 100644 index 000000000..4b34b0f13 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/mapped__mask_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/mapped_mask.F90 Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mapped_mask.F90
+
+
+Go to the documentation of this file.
1 
7 
8 module mapped_mask
9 
10  use gengrid_kinds, only : dbl_kind,int_kind,cl,cm,cs
11  use grdvars, only : ni,nj,npx
12  use charstrings, only : dirout,res,atmres,logmsg
13  use netcdf
14 
15  implicit none
16 
17 contains
18 
25 
26  subroutine make_frac_land(src, wgt)
27 
28  character(len=*), intent(in) :: src, wgt
29 
30  ! local variables
31  integer, parameter :: ntile = 6
32  integer(int_kind) :: n_a, n_b, n_s
33 
34  integer(int_kind), allocatable, dimension(:) :: col, row
35  real(dbl_kind), allocatable, dimension(:) :: S
36  real(dbl_kind), allocatable, dimension(:) :: lat1d, lon1d
37 
38  integer(int_kind), allocatable, dimension(:) :: src_field
39  real(dbl_kind), allocatable, dimension(:) :: dst_field
40 
41  real(dbl_kind), allocatable, dimension(:,:) :: dst2d
42  real(dbl_kind), allocatable, dimension(:,:) :: lat2d,lon2d
43 
44  character(len=CS) :: ctile
45  character(len=CL) :: fdst
46  integer :: i,ii,jj,id,rc,ncid, dim2(2)
47  integer :: istr,iend
48  integer :: idimid,jdimid
49 
50  character(len=CM) :: vname
51  !---------------------------------------------------------------------
52  ! retrieve the weights
53  !---------------------------------------------------------------------
54 
55  rc = nf90_open(trim(wgt), nf90_nowrite, ncid)
56  rc = nf90_inq_dimid(ncid, 'n_s', id)
57  rc = nf90_inquire_dimension(ncid, id, len=n_s)
58  rc = nf90_inq_dimid(ncid, 'n_a', id)
59  rc = nf90_inquire_dimension(ncid, id, len=n_a)
60  rc = nf90_inq_dimid(ncid, 'n_b', id)
61  rc = nf90_inquire_dimension(ncid, id, len=n_b)
62 
63  allocate(col(1:n_s))
64  allocate(row(1:n_s))
65  allocate( s(1:n_s))
66 
67  allocate(lat1d(1:n_b))
68  allocate(lon1d(1:n_b))
69 
70  rc = nf90_inq_varid(ncid, 'col', id)
71  rc = nf90_get_var(ncid, id, col)
72  rc = nf90_inq_varid(ncid, 'row', id)
73  rc = nf90_get_var(ncid, id, row)
74  rc = nf90_inq_varid(ncid, 'S', id)
75  rc = nf90_get_var(ncid, id, s)
76 
77  ! 1d-tiled lat,lon
78  rc = nf90_inq_varid(ncid, 'yc_b', id)
79  rc = nf90_get_var(ncid, id, lat1d)
80  rc = nf90_inq_varid(ncid, 'xc_b', id)
81  rc = nf90_get_var(ncid, id, lon1d)
82  rc = nf90_close(ncid)
83 
84  !---------------------------------------------------------------------
85  ! retrieve 1-d land mask from the SCRIP file and map it
86  !---------------------------------------------------------------------
87 
88  allocate(src_field(1:n_a))
89  allocate(dst_field(1:n_b))
90 
91  rc = nf90_open(trim(src), nf90_nowrite, ncid)
92 
93  !1-d ocean mask (integer)
94  rc = nf90_inq_varid(ncid, 'grid_imask', id)
95  rc = nf90_get_var(ncid, id, src_field)
96  rc = nf90_close(ncid)
97 
98  dst_field = 0.0
99  do i = 1,n_s
100  ii = row(i); jj = col(i)
101  dst_field(ii) = dst_field(ii) + s(i)*real(src_field(jj),dbl_kind)
102  enddo
103 
104  !---------------------------------------------------------------------
105  !
106  !---------------------------------------------------------------------
107 
108  allocate(dst2d(npx,npx))
109  allocate(lon2d(npx,npx)); allocate(lat2d(npx,npx))
110 
111  do i = 0,ntile-1
112  istr = i*npx*npx+1
113  iend = istr+npx*npx-1
114  !print *,i,istr,iend
115 
116  write(ctile,'(a5,i1)')'.tile',i+1
117  fdst = trim(dirout)//'/'//trim(atmres)//'.mx'//trim(res)//trim(ctile)//'.nc'
118  logmsg = 'creating mapped ocean mask file '//trim(fdst)
119  print '(a)',trim(logmsg)
120 
121  dst2d(:,:) = reshape(dst_field(istr:iend), (/npx,npx/))
122  lat2d(:,:) = reshape( lat1d(istr:iend), (/npx,npx/))
123  lon2d(:,:) = reshape( lon1d(istr:iend), (/npx,npx/))
124 
125  rc = nf90_create(trim(fdst), nf90_64bit_offset, ncid)
126  rc = nf90_def_dim(ncid, 'grid_xt', npx, idimid)
127  rc = nf90_def_dim(ncid, 'grid_yt', npx, jdimid)
128 
129  dim2(:) = (/idimid, jdimid/)
130  vname = 'grid_xt'
131  rc = nf90_def_var(ncid, vname, nf90_double, dim2, id)
132  vname = 'grid_yt'
133  rc = nf90_def_var(ncid, vname, nf90_double, dim2, id)
134  vname = 'land_frac'
135  rc = nf90_def_var(ncid, vname, nf90_double, dim2, id)
136  rc = nf90_enddef(ncid)
137 
138  rc = nf90_inq_varid(ncid, 'grid_xt', id)
139  rc = nf90_put_var(ncid, id, lon2d)
140  rc = nf90_inq_varid(ncid, 'grid_yt', id)
141  rc = nf90_put_var(ncid, id, lat2d)
142  rc = nf90_inq_varid(ncid, 'land_frac', id)
143  rc = nf90_put_var(ncid, id, dst2d)
144  rc = nf90_close(ncid)
145  end do
146 
147  !---------------------------------------------------------------------
148  ! clean up
149  !---------------------------------------------------------------------
150 
151  deallocate(col, row, s, lat1d, lon1d, src_field, dst_field)
152  deallocate(dst2d,lon2d,lat2d)
153 
154  end subroutine make_frac_land
155 end module mapped_mask
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html b/ver-1.11.0/cpld_gridgen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html new file mode 100644 index 000000000..d6331e651 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html @@ -0,0 +1,106 @@ + + + + + + + +cpld_gridgen: README + + + + + + + + + + + + + + +
+
+ + + + + + +
+
cpld_gridgen +  1.11.0 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
README
+
+
+

This program creates the files required for the Fix and IC files for the coupled model.

+

Documentation may be found at https://ufs-community.github.io/UFS_UTILS

+
+
+ + + + diff --git a/ver-1.11.0/cpld_gridgen/menu.js b/ver-1.11.0/cpld_gridgen/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/cpld_gridgen/menudata.js b/ver-1.11.0/cpld_gridgen/menudata.js new file mode 100644 index 000000000..7acb0baf7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/menudata.js @@ -0,0 +1,36 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/cpld_gridgen/nav_f.png b/ver-1.11.0/cpld_gridgen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/nav_g.png b/ver-1.11.0/cpld_gridgen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +cpld_gridgen: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/postwgts_8F90.html b/ver-1.11.0/cpld_gridgen/postwgts_8F90.html new file mode 100644 index 000000000..ab9576fc0 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/postwgts_8F90.html @@ -0,0 +1,149 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/postwgts.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    postwgts.F90 File Reference
    +
    +
    + +

    Create the ESMF weights for post. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine postwgts::make_postwgts
     Create the ESMF weights files to remap velocity points from their native stagger location to the center (Ct) location. More...
     
    +

    Detailed Description

    +

    Create the ESMF weights for post.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module creates the ESMF weights used to remap from the tripole grid to a rectilinear grid

    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file postwgts.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ make_postwgts()

    + +
    +
    + + + + + + + +
    subroutine postwgts::make_postwgts ()
    +
    + +

    Create the ESMF weights files to remap velocity points from their native stagger location to the center (Ct) location.

    +

    Create the ESMF weights file to remap from the Ct location to a rectilinear grid

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 25 of file postwgts.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/postwgts_8F90.js b/ver-1.11.0/cpld_gridgen/postwgts_8F90.js new file mode 100644 index 000000000..7e426b8a4 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/postwgts_8F90.js @@ -0,0 +1,4 @@ +var postwgts_8F90 = +[ + [ "make_postwgts", "postwgts_8F90.html#a131c35fd7b9524da32b5274b9a19780a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/postwgts_8F90_source.html b/ver-1.11.0/cpld_gridgen/postwgts_8F90_source.html new file mode 100644 index 000000000..64068c38c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/postwgts_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/postwgts.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    postwgts.F90
    +
    +
    +Go to the documentation of this file.
    1 
    7 module postwgts
    8 
    9  use esmf
    10 
    11  use gengrid_kinds, only : cl,cm,cs
    12  use grdvars, only : nv
    13  use charstrings, only : dirout, res, staggerlocs, logmsg
    14  use netcdf
    15 
    16  implicit none
    17 
    18 contains
    23 
    24  subroutine make_postwgts
    25 
    26  ! local variables
    27  character(len=CL) :: fsrc, fdst, fwgt
    28  character(len= 2) :: cstagger
    29 
    30  character(len=CM), dimension(2) :: methodname = (/'conserve', 'bilinear'/)
    31 
    32  type(ESMF_RegridMethod_Flag) :: method
    33  ! the number of possible destination grids depends on the source grid resolution
    34  integer :: k,rc,nd,ndest
    35  character(len=CS), allocatable, dimension(:) :: destgrds
    36 
    37  !---------------------------------------------------------------------
    38  ! set the destination grids
    39  !---------------------------------------------------------------------
    40 
    41  if(trim(res) .eq. '400')return
    42 
    43  if(trim(res) .eq. '100')then
    44  ndest = 1
    45  allocate(destgrds(ndest))
    46  destgrds = (/'1p0 '/)
    47  end if
    48  if(trim(res) .eq. '050')then
    49  ndest = 2
    50  allocate(destgrds(ndest))
    51  destgrds = (/'1p0 ', '0p5 '/)
    52  end if
    53  if(trim(res) .eq. '025')then
    54  ndest = 3
    55  allocate(destgrds(ndest))
    56  destgrds = (/'1p0 ', '0p5 ', '0p25'/)
    57  end if
    58 
    59  !---------------------------------------------------------------------
    60  ! use ESMF to create the weights for unstaggering the points onto
    61  ! the Ct staggers for post; the destination is always Ct
    62  !---------------------------------------------------------------------
    63 
    64  method=esmf_regridmethod_bilinear
    65  fdst = trim(dirout)//'/'//'Ct.mx'//trim(res)//'_SCRIP.nc'
    66  do k = 2,nv
    67  cstagger = trim(staggerlocs(k))
    68  fsrc = trim(dirout)//'/'//trim(cstagger)//'.mx'//trim(res)//'_SCRIP.nc'
    69  fwgt = trim(dirout)//'/'//'tripole.mx'//trim(res)//'.'//trim(cstagger)//'.to.Ct.bilinear.nc'
    70  logmsg = 'creating weight file '//trim(fwgt)
    71  print '(a)',trim(logmsg)
    72 
    73  call esmf_regridweightgen(srcfile=trim(fsrc),dstfile=trim(fdst), &
    74  weightfile=trim(fwgt), regridmethod=method, &
    75  ignoredegenerate=.true., &
    76  unmappedaction=esmf_unmappedaction_ignore, rc=rc)
    77  if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
    78  line=__line__, file=__file__)) call esmf_finalize(endflag=esmf_end_abort)
    79  end do
    80 
    81  !---------------------------------------------------------------------
    82  ! use ESMF to create the weights from the Ct tripole to the rectilinear
    83  ! grids with conservative and bilinear methods for post; the source
    84  ! file is always Ct
    85  !---------------------------------------------------------------------
    86 
    87  do nd = 1,ndest
    88  fsrc = trim(dirout)//'/'//'Ct.mx'//trim(res)//'_SCRIP.nc'
    89  fdst = trim(dirout)//'/rect.'//trim(destgrds(nd))//'_SCRIP.nc'
    90 
    91  do k = 1,size(methodname)
    92  if(trim(methodname(k)) .eq. 'bilinear')method=esmf_regridmethod_bilinear
    93  if(trim(methodname(k)) .eq. 'conserve')method=esmf_regridmethod_conserve
    94 
    95  fwgt = trim(dirout)//'/'//'tripole.mx'//trim(res)//'.Ct.to.rect.'//trim(destgrds(nd)) &
    96  //'.'//trim(methodname(k))//'.nc'
    97  logmsg = 'creating weight file '//trim(fwgt)
    98  print '(a)',trim(logmsg)
    99 
    100  call esmf_regridweightgen(srcfile=trim(fsrc),dstfile=trim(fdst), &
    101  weightfile=trim(fwgt), regridmethod=method, &
    102  ignoredegenerate=.true., &
    103  unmappedaction=esmf_unmappedaction_ignore, rc=rc)
    104  if (esmf_logfounderror(rctocheck=rc, msg=esmf_logerr_passthru, &
    105  line=__line__, file=__file__)) call esmf_finalize(endflag=esmf_end_abort)
    106  end do
    107  end do
    108 
    109  deallocate(destgrds)
    110 
    111  end subroutine make_postwgts
    112 end module postwgts
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/resize.js b/ver-1.11.0/cpld_gridgen/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/cpld_gridgen/scripgrid_8F90.html b/ver-1.11.0/cpld_gridgen/scripgrid_8F90.html new file mode 100644 index 000000000..234a957cf --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/scripgrid_8F90.html @@ -0,0 +1,173 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/scripgrid.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    scripgrid.F90 File Reference
    +
    +
    + +

    Write a SCRIP format file. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine, public scripgrid::write_scripgrid (fname, cstagger, imask)
     Write a SCRIP grid file. More...
     
    +

    Detailed Description

    +

    Write a SCRIP format file.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module writes a SCRIP format file

    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file scripgrid.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ write_scripgrid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public scripgrid::write_scripgrid (character(len=*), intent(in) fname,
    character(len=*), intent(in) cstagger,
    integer(int_kind), dimension(:,:), intent(in), optional imask 
    )
    +
    + +

    Write a SCRIP grid file.

    +
    Parameters
    + + + + +
    [in]fnamethe file name to write
    [in]cstaggerthe name of the stagger location
    [in]imask(optional) the land mask values
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 35 of file scripgrid.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/scripgrid_8F90.js b/ver-1.11.0/cpld_gridgen/scripgrid_8F90.js new file mode 100644 index 000000000..148bf784b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/scripgrid_8F90.js @@ -0,0 +1,4 @@ +var scripgrid_8F90 = +[ + [ "write_scripgrid", "scripgrid_8F90.html#a238db9c1112a9b9fe0187472947e5eef", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/scripgrid_8F90_source.html b/ver-1.11.0/cpld_gridgen/scripgrid_8F90_source.html new file mode 100644 index 000000000..c351d98a2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/scripgrid_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/scripgrid.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    scripgrid.F90
    +
    +
    +Go to the documentation of this file.
    1 
    7 
    8 module scripgrid
    9 
    10  use gengrid_kinds, only: dbl_kind,int_kind,cm
    11  use grdvars, only: ni,nj,nv
    12  use grdvars, only: lonct,latct,lonct_vert,latct_vert
    13  use grdvars, only: loncu,latcu,loncu_vert,latcu_vert
    14  use grdvars, only: loncv,latcv,loncv_vert,latcv_vert
    15  use grdvars, only: lonbu,latbu,lonbu_vert,latbu_vert
    16  use charstrings, only: logmsg
    17  use vartypedefs, only: maxvars, scripvars, scripvars_typedefine
    18  use netcdf
    19 
    20  implicit none
    21  private
    22 
    23  public write_scripgrid
    24 
    25 contains
    33 
    34  subroutine write_scripgrid(fname,cstagger, imask)
    35 
    36  character(len=*) , intent(in) :: fname
    37  character(len=*) , intent(in) :: cstagger
    38  integer(int_kind), optional, intent(in) :: imask(:,:)
    39 
    40  ! local variables
    41  integer, parameter :: grid_rank = 2
    42 
    43  integer :: ii,n,id,rc, ncid, dim2(2),dim1(1)
    44  integer :: idimid,jdimid,kdimid
    45 
    46  integer, dimension(grid_rank) :: gdims
    47  integer(int_kind), dimension(ni*nj) :: cnmask !1-d mask
    48  real(dbl_kind), dimension(ni*nj) :: cnlons, cnlats !1-d center lats,lons
    49  real(dbl_kind), dimension(nv,ni*nj) :: crlons, crlats !2-d corner lats,lons
    50 
    51  real(dbl_kind), dimension(ni,nj) :: tmp
    52 
    53  character(len=2) :: vtype
    54  character(len=CM) :: vname
    55  character(len=CM) :: vunit
    56 
    57  !---------------------------------------------------------------------
    58  !
    59  !---------------------------------------------------------------------
    60 
    61  gdims(:) = (/ni,nj/)
    62  if(trim(cstagger) .eq. 'Ct')then
    63  cnlons = reshape(lonct, (/ni*nj/))
    64  cnlats = reshape(latct, (/ni*nj/))
    65  do n = 1,nv
    66  tmp(:,:) = lonct_vert(:,:,n)
    67  crlons(n,:) = reshape(tmp, (/ni*nj/))
    68  tmp(:,:) = latct_vert(:,:,n)
    69  crlats(n,:) = reshape(tmp, (/ni*nj/))
    70  end do
    71  end if
    72 
    73  if(trim(cstagger) .eq. 'Cu')then
    74  cnlons = reshape(loncu, (/ni*nj/))
    75  cnlats = reshape(latcu, (/ni*nj/))
    76  do n = 1,nv
    77  tmp(:,:) = loncu_vert(:,:,n)
    78  crlons(n,:) = reshape(tmp, (/ni*nj/))
    79  tmp(:,:) = latcu_vert(:,:,n)
    80  crlats(n,:) = reshape(tmp, (/ni*nj/))
    81  end do
    82  end if
    83 
    84  if(trim(cstagger) .eq. 'Cv')then
    85  cnlons = reshape(loncv, (/ni*nj/))
    86  cnlats = reshape(latcv, (/ni*nj/))
    87  do n = 1,nv
    88  tmp(:,:) = loncv_vert(:,:,n)
    89  crlons(n,:) = reshape(tmp, (/ni*nj/))
    90  tmp(:,:) = latcv_vert(:,:,n)
    91  crlats(n,:) = reshape(tmp, (/ni*nj/))
    92  end do
    93  end if
    94 
    95  if(trim(cstagger) .eq. 'Bu')then
    96  cnlons = reshape(lonbu, (/ni*nj/))
    97  cnlats = reshape(latbu, (/ni*nj/))
    98  do n = 1,nv
    99  tmp(:,:) = lonbu_vert(:,:,n)
    100  crlons(n,:) = reshape(tmp, (/ni*nj/))
    101  tmp(:,:) = latbu_vert(:,:,n)
    102  crlats(n,:) = reshape(tmp, (/ni*nj/))
    103  end do
    104  end if
    105 
    106  if(present(imask))then
    107  cnmask = reshape(imask, (/ni*nj/))
    108  else
    109  cnmask = 1
    110  end if
    111 
    112  !---------------------------------------------------------------------
    113  ! create the netcdf file
    114  !---------------------------------------------------------------------
    115 
    116  ! define the output variables and file name
    117  call scripvars_typedefine
    118  ! create the file
    119  ! 64_bit offset reqd for 008 grid
    120  ! produces b4b results for smaller grids
    121  rc = nf90_create(trim(fname), nf90_64bit_offset, ncid)
    122  logmsg = '==> writing SCRIP grid to '//trim(fname)
    123  print '(a)',trim(logmsg)
    124  if(rc .ne. 0)print '(a)', 'nf90_create = '//trim(nf90_strerror(rc))
    125 
    126  rc = nf90_def_dim(ncid, 'grid_size', ni*nj, idimid)
    127  rc = nf90_def_dim(ncid, 'grid_corners', nv, jdimid)
    128  rc = nf90_def_dim(ncid, 'grid_rank', grid_rank, kdimid)
    129 
    130  !grid_dims
    131  dim1(:) = (/kdimid/)
    132  rc = nf90_def_var(ncid, 'grid_dims', nf90_int, dim1, id)
    133  ! mask
    134  dim1(:) = (/idimid/)
    135  rc = nf90_def_var(ncid, 'grid_imask', nf90_int, dim1, id)
    136  rc = nf90_put_att(ncid, id, 'units', 'unitless')
    137 
    138  ! centers
    139  do ii = 1,2
    140  vname = trim(scripvars(ii)%var_name)
    141  vunit = trim(scripvars(ii)%unit_name)
    142  vtype = trim(scripvars(ii)%var_type)
    143  dim1(:) = (/idimid/)
    144  if(vtype .eq. 'r8')rc = nf90_def_var(ncid, vname, nf90_double, dim1, id)
    145  if(vtype .eq. 'r4')rc = nf90_def_var(ncid, vname, nf90_float, dim1, id)
    146  if(vtype .eq. 'i4')rc = nf90_def_var(ncid, vname, nf90_int, dim1, id)
    147  rc = nf90_put_att(ncid, id, 'units', vunit)
    148  enddo
    149 
    150  ! corners
    151  do ii = 3,4
    152  vname = trim(scripvars(ii)%var_name)
    153  vunit = trim(scripvars(ii)%unit_name)
    154  vtype = trim(scripvars(ii)%var_type)
    155  dim2(:) = (/jdimid,idimid/)
    156  if(vtype .eq. 'r8')rc = nf90_def_var(ncid, vname, nf90_double, dim2, id)
    157  if(vtype .eq. 'r4')rc = nf90_def_var(ncid, vname, nf90_float, dim2, id)
    158  if(vtype .eq. 'i4')rc = nf90_def_var(ncid, vname, nf90_int, dim2, id)
    159  rc = nf90_put_att(ncid, id, 'units', vunit)
    160  enddo
    161  rc = nf90_enddef(ncid)
    162 
    163  rc = nf90_inq_varid(ncid, 'grid_dims', id)
    164  rc = nf90_put_var(ncid, id, gdims)
    165  rc = nf90_inq_varid(ncid, 'grid_imask', id)
    166  rc = nf90_put_var(ncid, id, cnmask)
    167 
    168  rc = nf90_inq_varid(ncid, 'grid_center_lon', id)
    169  rc = nf90_put_var(ncid, id, cnlons)
    170  rc = nf90_inq_varid(ncid, 'grid_center_lat', id)
    171  rc = nf90_put_var(ncid, id, cnlats)
    172 
    173  rc = nf90_inq_varid(ncid, 'grid_corner_lon', id)
    174  rc = nf90_put_var(ncid, id, crlons)
    175  rc = nf90_inq_varid(ncid, 'grid_corner_lat', id)
    176  rc = nf90_put_var(ncid, id, crlats)
    177 
    178  rc = nf90_close(ncid)
    179 
    180  end subroutine write_scripgrid
    181 end module scripgrid
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_0.html b/ver-1.11.0/cpld_gridgen/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_0.js b/ver-1.11.0/cpld_gridgen/search/all_0.js new file mode 100644 index 000000000..9d1b07dca --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['add_5ftopoedits',['add_topoedits',['../topoedits_8F90.html#a7d88a77c88a8e321108880ad9f362349',1,'topoedits']]], + ['allocate_5fall',['allocate_all',['../grdvars_8F90.html#a328728def7fe66a571d827098703ef11',1,'grdvars']]], + ['angle',['angle',['../grdvars_8F90.html#a0e385d357aa508d205d034e70f22aba6',1,'grdvars']]], + ['angles_2ef90',['angles.F90',['../angles_8F90.html',1,'']]], + ['anglet',['anglet',['../grdvars_8F90.html#ab489a917aac77e880f9a34fe38675691',1,'grdvars']]], + ['angq',['angq',['../grdvars_8F90.html#a62d978631e2fd36b42904614a1e64bef',1,'grdvars']]], + ['apply_5ftopoedits',['apply_topoedits',['../topoedits_8F90.html#a644584cdf4abf64c2771a578f96ed431',1,'topoedits']]], + ['areact',['areact',['../grdvars_8F90.html#ac01f4dfee093500cd43338df47f31a81',1,'grdvars']]], + ['atmres',['atmres',['../charstrings_8F90.html#a9f3e87f6ebd4f0f1a9707183c44f292d',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_1.html b/ver-1.11.0/cpld_gridgen/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_1.js b/ver-1.11.0/cpld_gridgen/search/all_1.js new file mode 100644 index 000000000..99ed5c648 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_1.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['cdate',['cdate',['../charstrings_8F90.html#a7fa369f66b996dd27540438a0baf48f1',1,'charstrings']]], + ['charstrings_2ef90',['charstrings.F90',['../charstrings_8F90.html',1,'']]], + ['checkpoint',['checkpoint',['../debugprint_8F90.html#af2adf7c97516f729e073c09ae4980101',1,'debugprint']]], + ['checkseam',['checkseam',['../debugprint_8F90.html#a2730a04b9d771b1fdbc8818691225bd1',1,'debugprint']]], + ['checkxlatlon',['checkxlatlon',['../debugprint_8F90.html#af4f4c396691073b4105fa8adfaf7af46',1,'debugprint']]], + ['cicegrid_2ef90',['cicegrid.F90',['../cicegrid_8F90.html',1,'']]], + ['cicevars',['cicevars',['../vartypedefs_8F90.html#a583add28e4bd36482c2faa3107f71ad1',1,'vartypedefs']]], + ['cicevars_5ftypedefine',['cicevars_typedefine',['../vartypedefs_8F90.html#a70321bd88f309398f70f2ba4583a7f0c',1,'vartypedefs']]], + ['cl',['cl',['../gengrid__kinds_8F90.html#a08b6cddcba7a019d38620a78d98771f3',1,'gengrid_kinds']]], + ['cm',['cm',['../gengrid__kinds_8F90.html#a8147800d74606b143e53695555acbbfa',1,'gengrid_kinds']]], + ['cs',['cs',['../gengrid__kinds_8F90.html#adaecbd4ded96fcfcfb1d52e790d2ed6f',1,'gengrid_kinds']]], + ['cpldgrid_5fgen',['cpldgrid_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_10.html b/ver-1.11.0/cpld_gridgen/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_10.js b/ver-1.11.0/cpld_gridgen/search/all_10.js new file mode 100644 index 000000000..6bbba8a57 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ulat',['ulat',['../grdvars_8F90.html#a98094bfd99fce13a1659c59eed70619e',1,'grdvars']]], + ['ulon',['ulon',['../grdvars_8F90.html#aa07d123c429ada0542546cc7241fb27d',1,'grdvars']]], + ['unit_5fname',['unit_name',['../structvartypedefs_1_1vardefs.html#a327acfaba5e472b08d24baa1eaf0ee74',1,'vartypedefs::vardefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_11.html b/ver-1.11.0/cpld_gridgen/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_11.js b/ver-1.11.0/cpld_gridgen/search/all_11.js new file mode 100644 index 000000000..57b6f99bf --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_11.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['var_5fname',['var_name',['../structvartypedefs_1_1vardefs.html#a9338b32cc4dd99a0912f0ee9e5801f96',1,'vartypedefs::vardefs']]], + ['var_5ftype',['var_type',['../structvartypedefs_1_1vardefs.html#a9dae51b4e3e4677251e90d63473aee93',1,'vartypedefs::vardefs']]], + ['vardefs',['vardefs',['../structvartypedefs_1_1vardefs.html',1,'vartypedefs']]], + ['vartypedefs_2ef90',['vartypedefs.F90',['../vartypedefs_8F90.html',1,'']]], + ['vertices',['vertices',['../structvartypedefs_1_1vardefs.html#a4c54e61c8eb65bd4b4de414bfe6ebac5',1,'vartypedefs::vardefs']]], + ['vertices_2ef90',['vertices.F90',['../vertices_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_12.html b/ver-1.11.0/cpld_gridgen/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_12.js b/ver-1.11.0/cpld_gridgen/search/all_12.js new file mode 100644 index 000000000..1209240c7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['wet4',['wet4',['../grdvars_8F90.html#aa4f6251fd1cc62eb6e16cb6d0212a5d3',1,'grdvars']]], + ['wet8',['wet8',['../grdvars_8F90.html#ac1763db1c5a77d24c63c8796e8c4b3b7',1,'grdvars']]], + ['write_5fcicegrid',['write_cicegrid',['../cicegrid_8F90.html#a4cf75bb124f26b83be629f76e220c1f4',1,'cicegrid']]], + ['write_5fscripgrid',['write_scripgrid',['../scripgrid_8F90.html#a238db9c1112a9b9fe0187472947e5eef',1,'scripgrid']]], + ['write_5ftripolegrid',['write_tripolegrid',['../tripolegrid_8F90.html#ae742f1e251f18a246382d643b4bd70a5',1,'tripolegrid']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_13.html b/ver-1.11.0/cpld_gridgen/search/all_13.html new file mode 100644 index 000000000..04f66e2fe --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_13.js b/ver-1.11.0/cpld_gridgen/search/all_13.js new file mode 100644 index 000000000..21ea557cb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['x',['x',['../grdvars_8F90.html#a945aaee1f1cb229b0d7211e17ddc1d53',1,'grdvars']]], + ['xlatct',['xlatct',['../grdvars_8F90.html#aafda856d193d771c1000b4319f633055',1,'grdvars']]], + ['xlatcu',['xlatcu',['../grdvars_8F90.html#aedf78b8050a6b8a862762b04f3f84363',1,'grdvars']]], + ['xlonct',['xlonct',['../grdvars_8F90.html#a7767b784a2aaa851007bf6495baf52d8',1,'grdvars']]], + ['xloncu',['xloncu',['../grdvars_8F90.html#afa15e8cd4d86472a0b190baabd592520',1,'grdvars']]], + ['xsgp1',['xsgp1',['../grdvars_8F90.html#af741d24b6869a3d5022bb507cd23c322',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_14.html b/ver-1.11.0/cpld_gridgen/search/all_14.html new file mode 100644 index 000000000..285f34bd2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_14.js b/ver-1.11.0/cpld_gridgen/search/all_14.js new file mode 100644 index 000000000..c2349d00a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y',['y',['../grdvars_8F90.html#a3e8e7cd5d3ef5e6363d94135c76143b6',1,'grdvars']]], + ['ysgp1',['ysgp1',['../grdvars_8F90.html#ae6d7a5ba05d47956d177de22c447cd63',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_2.html b/ver-1.11.0/cpld_gridgen/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_2.js b/ver-1.11.0/cpld_gridgen/search/all_2.js new file mode 100644 index 000000000..cc65cefcc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['dbl_5fkind',['dbl_kind',['../gengrid__kinds_8F90.html#aac8cdc5201fdcf6520f0ca7b633dbe09',1,'gengrid_kinds']]], + ['debug',['debug',['../grdvars_8F90.html#a8b1584b2eabaddbccac20a7e092b5945',1,'grdvars']]], + ['debugprint_2ef90',['debugprint.F90',['../debugprint_8F90.html',1,'']]], + ['dirout',['dirout',['../charstrings_8F90.html#aa55b71f4a67b50aa5d3a6827200d4a15',1,'charstrings']]], + ['dirsrc',['dirsrc',['../charstrings_8F90.html#ac9f77f0509af0d6c4ae84f7e9eb3ee26',1,'charstrings']]], + ['dlatbu',['dlatbu',['../grdvars_8F90.html#a07732707fe68e6ff4ec666d799c24c86',1,'grdvars']]], + ['dlatcv',['dlatcv',['../grdvars_8F90.html#af897c6ba7de3c51e9662d55747802be8',1,'grdvars']]], + ['do_5fpostwgts',['do_postwgts',['../grdvars_8F90.html#a5ad08fb541418501627e8ab31de25ed9',1,'grdvars']]], + ['dp4',['dp4',['../grdvars_8F90.html#a8c28cb10e25e122e236e785518ee0b66',1,'grdvars']]], + ['dp8',['dp8',['../grdvars_8F90.html#a31728217720e19257efdb25ac5a3364d',1,'grdvars']]], + ['dx',['dx',['../grdvars_8F90.html#a49ad1797fd0c4dceebf620617ca7f77c',1,'grdvars']]], + ['dy',['dy',['../grdvars_8F90.html#a6113cc80b6095395b066e1483d679f51',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_3.html b/ver-1.11.0/cpld_gridgen/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_3.js b/ver-1.11.0/cpld_gridgen/search/all_3.js new file mode 100644 index 000000000..905a7ca03 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['editmask',['editmask',['../grdvars_8F90.html#a5194fb7fb3c86589c1f5d93b622b514e',1,'grdvars']]], + ['editsfile',['editsfile',['../charstrings_8F90.html#a85522620f3052d435834589591f85bad',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_4.html b/ver-1.11.0/cpld_gridgen/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_4.js b/ver-1.11.0/cpld_gridgen/search/all_4.js new file mode 100644 index 000000000..7b864448e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['fill_5fbottom',['fill_bottom',['../vertices_8F90.html#a807c3ed2e29f43d2054ffe2352248e02',1,'vertices']]], + ['fill_5ftop',['fill_top',['../vertices_8F90.html#ade5a20aaa5c5b0011bcec12512ea1b80',1,'vertices']]], + ['fill_5fvertices',['fill_vertices',['../vertices_8F90.html#a6e242198634b6672399bb0e8f21821b9',1,'vertices']]], + ['find_5fang',['find_ang',['../angles_8F90.html#a94833b0aebb5d29fa125ec1925699a1c',1,'angles']]], + ['find_5fangq',['find_angq',['../angles_8F90.html#a2bc63950e8d24894d9f584e9b07292b6',1,'angles']]], + ['fixvars',['fixvars',['../vartypedefs_8F90.html#a90243ff68655eb2f76ec0b50d85ff102',1,'vartypedefs']]], + ['fixvars_5ftypedefine',['fixvars_typedefine',['../vartypedefs_8F90.html#ab61a40e833aaee54a06da3ecd063cb3c',1,'vartypedefs']]], + ['fv3dir',['fv3dir',['../charstrings_8F90.html#a15dc2ae29b501b3a334ab4e3d2e72b6c',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_5.html b/ver-1.11.0/cpld_gridgen/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_5.js b/ver-1.11.0/cpld_gridgen/search/all_5.js new file mode 100644 index 000000000..19ac327ac --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['gen_5ffixgrid',['gen_fixgrid',['../gen__fixgrid_8F90.html#a12dccdc4464390081318f36e1b8b2e0c',1,'gen_fixgrid.F90']]], + ['gen_5ffixgrid_2ef90',['gen_fixgrid.F90',['../gen__fixgrid_8F90.html',1,'']]], + ['gengrid_5fkinds_2ef90',['gengrid_kinds.F90',['../gengrid__kinds_8F90.html',1,'']]], + ['grdvars_2ef90',['grdvars.F90',['../grdvars_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_6.html b/ver-1.11.0/cpld_gridgen/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_6.js b/ver-1.11.0/cpld_gridgen/search/all_6.js new file mode 100644 index 000000000..422f3f584 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['history',['history',['../charstrings_8F90.html#a21e98a7c5d7f097bf9ef63e308f67405',1,'charstrings']]], + ['hte',['hte',['../grdvars_8F90.html#af22c09b727c538aaf830e64d928f2b7c',1,'grdvars']]], + ['htn',['htn',['../grdvars_8F90.html#a8bbd10e3ddfbb7fc72ae0f96b92da5fb',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_7.html b/ver-1.11.0/cpld_gridgen/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_7.js b/ver-1.11.0/cpld_gridgen/search/all_7.js new file mode 100644 index 000000000..1b7113f78 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['inputnml_2ef90',['inputnml.F90',['../inputnml_8F90.html',1,'']]], + ['int8_5fkind',['int8_kind',['../gengrid__kinds_8F90.html#a31b580be1664a7d63a0e3a24621dea7e',1,'gengrid_kinds']]], + ['int_5fkind',['int_kind',['../gengrid__kinds_8F90.html#abcad634e6a284e2c43c6c36912e8aa2c',1,'gengrid_kinds']]], + ['ipole',['ipole',['../grdvars_8F90.html#a7a38dda76b7f5fd076b5314492c14aa8',1,'grdvars']]], + ['ivertbu',['ivertbu',['../grdvars_8F90.html#a819746477399d85d393ed9e72da8d666',1,'grdvars']]], + ['ivertct',['ivertct',['../grdvars_8F90.html#a23f3aec46800e7bf9c1820825592d2e9',1,'grdvars']]], + ['ivertcu',['ivertcu',['../grdvars_8F90.html#ac9c4e94f20e8f58eea2f1b5dc1f6ba9e',1,'grdvars']]], + ['ivertcv',['ivertcv',['../grdvars_8F90.html#a3b2d0b559ca18e5809e16932c59d8e26',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_8.html b/ver-1.11.0/cpld_gridgen/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_8.js b/ver-1.11.0/cpld_gridgen/search/all_8.js new file mode 100644 index 000000000..0b7a797d8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['jvertbu',['jvertbu',['../grdvars_8F90.html#a5e08cfa5b99a2d5283ec9f4beb6eaeb6',1,'grdvars']]], + ['jvertct',['jvertct',['../grdvars_8F90.html#af24489bee27822c47b8e986f0ea563e9',1,'grdvars']]], + ['jvertcu',['jvertcu',['../grdvars_8F90.html#af90a71415465c5fbc22cf204eaab1fc5',1,'grdvars']]], + ['jvertcv',['jvertcv',['../grdvars_8F90.html#aedcf5ef30a1ff9c10df1744bfb750d96',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_9.html b/ver-1.11.0/cpld_gridgen/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_9.js b/ver-1.11.0/cpld_gridgen/search/all_9.js new file mode 100644 index 000000000..64a3ec9aa --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_9.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['latbu',['latbu',['../grdvars_8F90.html#a1d50d7a29d4497a00ac0002f46c576f0',1,'grdvars']]], + ['latbu_5fvert',['latbu_vert',['../grdvars_8F90.html#a55f2b7e1bbca711e0f1a0f75d0eb368e',1,'grdvars']]], + ['latct',['latct',['../grdvars_8F90.html#ac0f195cc905f80fe69f72bbf971cdeed',1,'grdvars']]], + ['latct_5fvert',['latct_vert',['../grdvars_8F90.html#afca7b7e1a1cedcdf844079922084474a',1,'grdvars']]], + ['latcu',['latcu',['../grdvars_8F90.html#a0caaebffaf05b908aa34df40f4d9448c',1,'grdvars']]], + ['latcu_5fvert',['latcu_vert',['../grdvars_8F90.html#ad7fa7f129a25369663cd572053f5b45b',1,'grdvars']]], + ['latcv',['latcv',['../grdvars_8F90.html#a4578f746f307159d1fc05265fc963725',1,'grdvars']]], + ['latcv_5fvert',['latcv_vert',['../grdvars_8F90.html#ac3a0b1c629003322533b688399fe5f0b',1,'grdvars']]], + ['logmsg',['logmsg',['../charstrings_8F90.html#a7e839b077a33bd6979918c0a68e586ca',1,'charstrings']]], + ['lonbu',['lonbu',['../grdvars_8F90.html#a1eeff04e52a3a061164ef7384d5216a7',1,'grdvars']]], + ['lonbu_5fvert',['lonbu_vert',['../grdvars_8F90.html#a987e7e9a4a96fd323cff526364aa32ba',1,'grdvars']]], + ['lonct',['lonct',['../grdvars_8F90.html#aa7ad651120fed8d4948cd9f81bfd47d4',1,'grdvars']]], + ['lonct_5fvert',['lonct_vert',['../grdvars_8F90.html#a36f7c345d9b787a4956e99beb3b1a9bf',1,'grdvars']]], + ['loncu',['loncu',['../grdvars_8F90.html#a5886bacae93178b0e08db66bde1249a7',1,'grdvars']]], + ['loncu_5fvert',['loncu_vert',['../grdvars_8F90.html#a794e74698074e5da6bed508acba81c82',1,'grdvars']]], + ['loncv',['loncv',['../grdvars_8F90.html#aaa244d80145056fa3070bf52267efa73',1,'grdvars']]], + ['loncv_5fvert',['loncv_vert',['../grdvars_8F90.html#ac6c23c5be7ca4fd67344e5b3852a88ef',1,'grdvars']]], + ['long_5fname',['long_name',['../structvartypedefs_1_1vardefs.html#a8dc3375c6d39785faf9888ebb27bff07',1,'vartypedefs::vardefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_a.html b/ver-1.11.0/cpld_gridgen/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_a.js b/ver-1.11.0/cpld_gridgen/search/all_a.js new file mode 100644 index 000000000..21e07d869 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_a.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['make_5ffrac_5fland',['make_frac_land',['../mapped__mask_8F90.html#a294833098b0022e556300aef737edb21',1,'mapped_mask']]], + ['make_5fpostwgts',['make_postwgts',['../postwgts_8F90.html#a131c35fd7b9524da32b5274b9a19780a',1,'postwgts']]], + ['mapped_5fmask_2ef90',['mapped_mask.F90',['../mapped__mask_8F90.html',1,'']]], + ['maskfile',['maskfile',['../charstrings_8F90.html#aa85024703aa16d5714437bc0c0b9f42c',1,'charstrings']]], + ['masking_5fdepth',['masking_depth',['../grdvars_8F90.html#a435598dba041e0bc7d08df4b38d9bbdd',1,'grdvars']]], + ['maskname',['maskname',['../charstrings_8F90.html#ad96111223ad5249c12f9a44ba377c55d',1,'charstrings']]], + ['maximum_5fdepth',['maximum_depth',['../grdvars_8F90.html#a87e55332b7fbdf58eb6d358e9a83db62',1,'grdvars']]], + ['maximum_5flat',['maximum_lat',['../grdvars_8F90.html#a3cf9b75a8b19de88d4b9915fe8d8d2f4',1,'grdvars']]], + ['maxvars',['maxvars',['../vartypedefs_8F90.html#a878f2e5a9cc17301181e00ab56a4aed4',1,'vartypedefs']]], + ['minimum_5fdepth',['minimum_depth',['../grdvars_8F90.html#a905b13bcf0b7c85412837facaac0d46e',1,'grdvars']]], + ['modulo_5faround_5fpoint',['modulo_around_point',['../angles_8F90.html#ab1ed53b3e9e6d449e7180ed6b1ab6006',1,'angles']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_b.html b/ver-1.11.0/cpld_gridgen/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_b.js b/ver-1.11.0/cpld_gridgen/search/all_b.js new file mode 100644 index 000000000..4487b6797 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ncoord',['ncoord',['../grdvars_8F90.html#aa5d1f52f0ef1e3ca9e73a34423a841c3',1,'grdvars']]], + ['ni',['ni',['../grdvars_8F90.html#ab4e40ea0e4d4c14fae837b09470a3e57',1,'grdvars']]], + ['nj',['nj',['../grdvars_8F90.html#ad12d0c225bbf6584c432de0f864246ca',1,'grdvars']]], + ['npx',['npx',['../grdvars_8F90.html#a4a953d8e228956010ad72dba3f4a13c2',1,'grdvars']]], + ['nv',['nv',['../grdvars_8F90.html#acd72e2c13d07e3c0839cf2895c997055',1,'grdvars']]], + ['nvars',['nvars',['../grdvars_8F90.html#a1bda99f6192cb48078ae06ee3bf3c1ea',1,'grdvars']]], + ['nverts',['nverts',['../grdvars_8F90.html#a40d2911a2aced56fcd0ff6965adc16b4',1,'grdvars']]], + ['nx',['nx',['../grdvars_8F90.html#a99285d1b6d717ab1447d11914d57799a',1,'grdvars']]], + ['ny',['ny',['../grdvars_8F90.html#a0ee0447ff5535317aa9de6202e53ebc4',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_c.html b/ver-1.11.0/cpld_gridgen/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_c.js b/ver-1.11.0/cpld_gridgen/search/all_c.js new file mode 100644 index 000000000..abe1dc4d9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['postwgts_2ef90',['postwgts.F90',['../postwgts_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_d.html b/ver-1.11.0/cpld_gridgen/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_d.js b/ver-1.11.0/cpld_gridgen/search/all_d.js new file mode 100644 index 000000000..75f57800a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html',1,'']]], + ['read_5finputnml',['read_inputnml',['../inputnml_8F90.html#a95ea828a3b96cbb324b1fe4e3319743f',1,'inputnml']]], + ['real_5fkind',['real_kind',['../gengrid__kinds_8F90.html#a123f02f5ed8f6cbb209b214b39058d0f',1,'gengrid_kinds']]], + ['res',['res',['../charstrings_8F90.html#a12b5fde65f416b90f9596a84f560c793',1,'charstrings']]], + ['roottask',['roottask',['../grdvars_8F90.html#a4e159c25718a8413af83ebc172c01516',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_e.html b/ver-1.11.0/cpld_gridgen/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_e.js b/ver-1.11.0/cpld_gridgen/search/all_e.js new file mode 100644 index 000000000..e1437c690 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scripgrid_2ef90',['scripgrid.F90',['../scripgrid_8F90.html',1,'']]], + ['scripvars',['scripvars',['../vartypedefs_8F90.html#ac3971a41f6b697110e33f07a3c9a6a68',1,'vartypedefs']]], + ['scripvars_5ftypedefine',['scripvars_typedefine',['../vartypedefs_8F90.html#a4e3c402f0de97609f86175bd7c2e6808',1,'vartypedefs']]], + ['sg_5fmaxlat',['sg_maxlat',['../grdvars_8F90.html#a3d2757edca0e0dc8bfb70d63debcba95',1,'grdvars']]], + ['staggerlocs',['staggerlocs',['../charstrings_8F90.html#a26dd13fc727d787a54d0af45d50f635d',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/all_f.html b/ver-1.11.0/cpld_gridgen/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/all_f.js b/ver-1.11.0/cpld_gridgen/search/all_f.js new file mode 100644 index 000000000..c4d868edd --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/all_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['topoedits_2ef90',['topoedits.F90',['../topoedits_8F90.html',1,'']]], + ['topofile',['topofile',['../charstrings_8F90.html#ab2e1d6a1d79db8c11593d013d49bee9c',1,'charstrings']]], + ['toponame',['toponame',['../charstrings_8F90.html#a64d3683140bb747f98b34728cae9317b',1,'charstrings']]], + ['tripolegrid_2ef90',['tripolegrid.F90',['../tripolegrid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/classes_0.html b/ver-1.11.0/cpld_gridgen/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/classes_0.js b/ver-1.11.0/cpld_gridgen/search/classes_0.js new file mode 100644 index 000000000..ddbf08210 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vardefs',['vardefs',['../structvartypedefs_1_1vardefs.html',1,'vartypedefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/close.png b/ver-1.11.0/cpld_gridgen/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/search/files_0.html b/ver-1.11.0/cpld_gridgen/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_0.js b/ver-1.11.0/cpld_gridgen/search/files_0.js new file mode 100644 index 000000000..274468a90 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['angles_2ef90',['angles.F90',['../angles_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_1.html b/ver-1.11.0/cpld_gridgen/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_1.js b/ver-1.11.0/cpld_gridgen/search/files_1.js new file mode 100644 index 000000000..98cf473fa --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['charstrings_2ef90',['charstrings.F90',['../charstrings_8F90.html',1,'']]], + ['cicegrid_2ef90',['cicegrid.F90',['../cicegrid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_2.html b/ver-1.11.0/cpld_gridgen/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_2.js b/ver-1.11.0/cpld_gridgen/search/files_2.js new file mode 100644 index 000000000..42c066950 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debugprint_2ef90',['debugprint.F90',['../debugprint_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_3.html b/ver-1.11.0/cpld_gridgen/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_3.js b/ver-1.11.0/cpld_gridgen/search/files_3.js new file mode 100644 index 000000000..0cb2838e4 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gen_5ffixgrid_2ef90',['gen_fixgrid.F90',['../gen__fixgrid_8F90.html',1,'']]], + ['gengrid_5fkinds_2ef90',['gengrid_kinds.F90',['../gengrid__kinds_8F90.html',1,'']]], + ['grdvars_2ef90',['grdvars.F90',['../grdvars_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_4.html b/ver-1.11.0/cpld_gridgen/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_4.js b/ver-1.11.0/cpld_gridgen/search/files_4.js new file mode 100644 index 000000000..a920f4637 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inputnml_2ef90',['inputnml.F90',['../inputnml_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_5.html b/ver-1.11.0/cpld_gridgen/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_5.js b/ver-1.11.0/cpld_gridgen/search/files_5.js new file mode 100644 index 000000000..a4f92e6ee --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mapped_5fmask_2ef90',['mapped_mask.F90',['../mapped__mask_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_6.html b/ver-1.11.0/cpld_gridgen/search/files_6.html new file mode 100644 index 000000000..98fc6666c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_6.js b/ver-1.11.0/cpld_gridgen/search/files_6.js new file mode 100644 index 000000000..abe1dc4d9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['postwgts_2ef90',['postwgts.F90',['../postwgts_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_7.html b/ver-1.11.0/cpld_gridgen/search/files_7.html new file mode 100644 index 000000000..49507dedb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_7.js b/ver-1.11.0/cpld_gridgen/search/files_7.js new file mode 100644 index 000000000..130dc09c3 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scripgrid_2ef90',['scripgrid.F90',['../scripgrid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_8.html b/ver-1.11.0/cpld_gridgen/search/files_8.html new file mode 100644 index 000000000..12c6630be --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_8.js b/ver-1.11.0/cpld_gridgen/search/files_8.js new file mode 100644 index 000000000..4aff48236 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['topoedits_2ef90',['topoedits.F90',['../topoedits_8F90.html',1,'']]], + ['tripolegrid_2ef90',['tripolegrid.F90',['../tripolegrid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/files_9.html b/ver-1.11.0/cpld_gridgen/search/files_9.html new file mode 100644 index 000000000..cabcae2f8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/files_9.js b/ver-1.11.0/cpld_gridgen/search/files_9.js new file mode 100644 index 000000000..65719cd6e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vartypedefs_2ef90',['vartypedefs.F90',['../vartypedefs_8F90.html',1,'']]], + ['vertices_2ef90',['vertices.F90',['../vertices_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_0.html b/ver-1.11.0/cpld_gridgen/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_0.js b/ver-1.11.0/cpld_gridgen/search/functions_0.js new file mode 100644 index 000000000..117d9c4d1 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['add_5ftopoedits',['add_topoedits',['../topoedits_8F90.html#a7d88a77c88a8e321108880ad9f362349',1,'topoedits']]], + ['allocate_5fall',['allocate_all',['../grdvars_8F90.html#a328728def7fe66a571d827098703ef11',1,'grdvars']]], + ['apply_5ftopoedits',['apply_topoedits',['../topoedits_8F90.html#a644584cdf4abf64c2771a578f96ed431',1,'topoedits']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_1.html b/ver-1.11.0/cpld_gridgen/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_1.js b/ver-1.11.0/cpld_gridgen/search/functions_1.js new file mode 100644 index 000000000..f36af584c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['checkpoint',['checkpoint',['../debugprint_8F90.html#af2adf7c97516f729e073c09ae4980101',1,'debugprint']]], + ['checkseam',['checkseam',['../debugprint_8F90.html#a2730a04b9d771b1fdbc8818691225bd1',1,'debugprint']]], + ['checkxlatlon',['checkxlatlon',['../debugprint_8F90.html#af4f4c396691073b4105fa8adfaf7af46',1,'debugprint']]], + ['cicevars_5ftypedefine',['cicevars_typedefine',['../vartypedefs_8F90.html#a70321bd88f309398f70f2ba4583a7f0c',1,'vartypedefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_2.html b/ver-1.11.0/cpld_gridgen/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_2.js b/ver-1.11.0/cpld_gridgen/search/functions_2.js new file mode 100644 index 000000000..10a8633f4 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['fill_5fbottom',['fill_bottom',['../vertices_8F90.html#a807c3ed2e29f43d2054ffe2352248e02',1,'vertices']]], + ['fill_5ftop',['fill_top',['../vertices_8F90.html#ade5a20aaa5c5b0011bcec12512ea1b80',1,'vertices']]], + ['fill_5fvertices',['fill_vertices',['../vertices_8F90.html#a6e242198634b6672399bb0e8f21821b9',1,'vertices']]], + ['find_5fang',['find_ang',['../angles_8F90.html#a94833b0aebb5d29fa125ec1925699a1c',1,'angles']]], + ['find_5fangq',['find_angq',['../angles_8F90.html#a2bc63950e8d24894d9f584e9b07292b6',1,'angles']]], + ['fixvars_5ftypedefine',['fixvars_typedefine',['../vartypedefs_8F90.html#ab61a40e833aaee54a06da3ecd063cb3c',1,'vartypedefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_3.html b/ver-1.11.0/cpld_gridgen/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_3.js b/ver-1.11.0/cpld_gridgen/search/functions_3.js new file mode 100644 index 000000000..d5485a0cd --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gen_5ffixgrid',['gen_fixgrid',['../gen__fixgrid_8F90.html#a12dccdc4464390081318f36e1b8b2e0c',1,'gen_fixgrid.F90']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_4.html b/ver-1.11.0/cpld_gridgen/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_4.js b/ver-1.11.0/cpld_gridgen/search/functions_4.js new file mode 100644 index 000000000..1638a61bb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['make_5ffrac_5fland',['make_frac_land',['../mapped__mask_8F90.html#a294833098b0022e556300aef737edb21',1,'mapped_mask']]], + ['make_5fpostwgts',['make_postwgts',['../postwgts_8F90.html#a131c35fd7b9524da32b5274b9a19780a',1,'postwgts']]], + ['modulo_5faround_5fpoint',['modulo_around_point',['../angles_8F90.html#ab1ed53b3e9e6d449e7180ed6b1ab6006',1,'angles']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_5.html b/ver-1.11.0/cpld_gridgen/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_5.js b/ver-1.11.0/cpld_gridgen/search/functions_5.js new file mode 100644 index 000000000..0b4ff2438 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5finputnml',['read_inputnml',['../inputnml_8F90.html#a95ea828a3b96cbb324b1fe4e3319743f',1,'inputnml']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_6.html b/ver-1.11.0/cpld_gridgen/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_6.js b/ver-1.11.0/cpld_gridgen/search/functions_6.js new file mode 100644 index 000000000..76b6ed11f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scripvars_5ftypedefine',['scripvars_typedefine',['../vartypedefs_8F90.html#a4e3c402f0de97609f86175bd7c2e6808',1,'vartypedefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/functions_7.html b/ver-1.11.0/cpld_gridgen/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/functions_7.js b/ver-1.11.0/cpld_gridgen/search/functions_7.js new file mode 100644 index 000000000..ca8583ecc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/functions_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['write_5fcicegrid',['write_cicegrid',['../cicegrid_8F90.html#a4cf75bb124f26b83be629f76e220c1f4',1,'cicegrid']]], + ['write_5fscripgrid',['write_scripgrid',['../scripgrid_8F90.html#a238db9c1112a9b9fe0187472947e5eef',1,'scripgrid']]], + ['write_5ftripolegrid',['write_tripolegrid',['../tripolegrid_8F90.html#ae742f1e251f18a246382d643b4bd70a5',1,'tripolegrid']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/mag_sel.png b/ver-1.11.0/cpld_gridgen/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/search/nomatches.html b/ver-1.11.0/cpld_gridgen/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/pages_0.html b/ver-1.11.0/cpld_gridgen/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/pages_0.js b/ver-1.11.0/cpld_gridgen/search/pages_0.js new file mode 100644 index 000000000..d8286f0e8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cpldgrid_5fgen',['cpldgrid_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/pages_1.html b/ver-1.11.0/cpld_gridgen/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/pages_1.js b/ver-1.11.0/cpld_gridgen/search/pages_1.js new file mode 100644 index 000000000..70e355562 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_cpld_gridgen_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/search.css b/ver-1.11.0/cpld_gridgen/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/cpld_gridgen/search/search.js b/ver-1.11.0/cpld_gridgen/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/search/search_r.png b/ver-1.11.0/cpld_gridgen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_0.js b/ver-1.11.0/cpld_gridgen/search/variables_0.js new file mode 100644 index 000000000..1253f3810 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['angle',['angle',['../grdvars_8F90.html#a0e385d357aa508d205d034e70f22aba6',1,'grdvars']]], + ['anglet',['anglet',['../grdvars_8F90.html#ab489a917aac77e880f9a34fe38675691',1,'grdvars']]], + ['angq',['angq',['../grdvars_8F90.html#a62d978631e2fd36b42904614a1e64bef',1,'grdvars']]], + ['areact',['areact',['../grdvars_8F90.html#ac01f4dfee093500cd43338df47f31a81',1,'grdvars']]], + ['atmres',['atmres',['../charstrings_8F90.html#a9f3e87f6ebd4f0f1a9707183c44f292d',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_1.html b/ver-1.11.0/cpld_gridgen/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_1.js b/ver-1.11.0/cpld_gridgen/search/variables_1.js new file mode 100644 index 000000000..93960feea --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['cdate',['cdate',['../charstrings_8F90.html#a7fa369f66b996dd27540438a0baf48f1',1,'charstrings']]], + ['cicevars',['cicevars',['../vartypedefs_8F90.html#a583add28e4bd36482c2faa3107f71ad1',1,'vartypedefs']]], + ['cl',['cl',['../gengrid__kinds_8F90.html#a08b6cddcba7a019d38620a78d98771f3',1,'gengrid_kinds']]], + ['cm',['cm',['../gengrid__kinds_8F90.html#a8147800d74606b143e53695555acbbfa',1,'gengrid_kinds']]], + ['cs',['cs',['../gengrid__kinds_8F90.html#adaecbd4ded96fcfcfb1d52e790d2ed6f',1,'gengrid_kinds']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_10.html b/ver-1.11.0/cpld_gridgen/search/variables_10.html new file mode 100644 index 000000000..b62b717e9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_10.js b/ver-1.11.0/cpld_gridgen/search/variables_10.js new file mode 100644 index 000000000..8de0b94a8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wet4',['wet4',['../grdvars_8F90.html#aa4f6251fd1cc62eb6e16cb6d0212a5d3',1,'grdvars']]], + ['wet8',['wet8',['../grdvars_8F90.html#ac1763db1c5a77d24c63c8796e8c4b3b7',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_11.html b/ver-1.11.0/cpld_gridgen/search/variables_11.html new file mode 100644 index 000000000..2ce8561a1 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_11.js b/ver-1.11.0/cpld_gridgen/search/variables_11.js new file mode 100644 index 000000000..21ea557cb --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_11.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['x',['x',['../grdvars_8F90.html#a945aaee1f1cb229b0d7211e17ddc1d53',1,'grdvars']]], + ['xlatct',['xlatct',['../grdvars_8F90.html#aafda856d193d771c1000b4319f633055',1,'grdvars']]], + ['xlatcu',['xlatcu',['../grdvars_8F90.html#aedf78b8050a6b8a862762b04f3f84363',1,'grdvars']]], + ['xlonct',['xlonct',['../grdvars_8F90.html#a7767b784a2aaa851007bf6495baf52d8',1,'grdvars']]], + ['xloncu',['xloncu',['../grdvars_8F90.html#afa15e8cd4d86472a0b190baabd592520',1,'grdvars']]], + ['xsgp1',['xsgp1',['../grdvars_8F90.html#af741d24b6869a3d5022bb507cd23c322',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_12.html b/ver-1.11.0/cpld_gridgen/search/variables_12.html new file mode 100644 index 000000000..bba5857f5 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_12.js b/ver-1.11.0/cpld_gridgen/search/variables_12.js new file mode 100644 index 000000000..c2349d00a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y',['y',['../grdvars_8F90.html#a3e8e7cd5d3ef5e6363d94135c76143b6',1,'grdvars']]], + ['ysgp1',['ysgp1',['../grdvars_8F90.html#ae6d7a5ba05d47956d177de22c447cd63',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_2.html b/ver-1.11.0/cpld_gridgen/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_2.js b/ver-1.11.0/cpld_gridgen/search/variables_2.js new file mode 100644 index 000000000..88615a460 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_2.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['dbl_5fkind',['dbl_kind',['../gengrid__kinds_8F90.html#aac8cdc5201fdcf6520f0ca7b633dbe09',1,'gengrid_kinds']]], + ['debug',['debug',['../grdvars_8F90.html#a8b1584b2eabaddbccac20a7e092b5945',1,'grdvars']]], + ['dirout',['dirout',['../charstrings_8F90.html#aa55b71f4a67b50aa5d3a6827200d4a15',1,'charstrings']]], + ['dirsrc',['dirsrc',['../charstrings_8F90.html#ac9f77f0509af0d6c4ae84f7e9eb3ee26',1,'charstrings']]], + ['dlatbu',['dlatbu',['../grdvars_8F90.html#a07732707fe68e6ff4ec666d799c24c86',1,'grdvars']]], + ['dlatcv',['dlatcv',['../grdvars_8F90.html#af897c6ba7de3c51e9662d55747802be8',1,'grdvars']]], + ['do_5fpostwgts',['do_postwgts',['../grdvars_8F90.html#a5ad08fb541418501627e8ab31de25ed9',1,'grdvars']]], + ['dp4',['dp4',['../grdvars_8F90.html#a8c28cb10e25e122e236e785518ee0b66',1,'grdvars']]], + ['dp8',['dp8',['../grdvars_8F90.html#a31728217720e19257efdb25ac5a3364d',1,'grdvars']]], + ['dx',['dx',['../grdvars_8F90.html#a49ad1797fd0c4dceebf620617ca7f77c',1,'grdvars']]], + ['dy',['dy',['../grdvars_8F90.html#a6113cc80b6095395b066e1483d679f51',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_3.html b/ver-1.11.0/cpld_gridgen/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_3.js b/ver-1.11.0/cpld_gridgen/search/variables_3.js new file mode 100644 index 000000000..905a7ca03 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['editmask',['editmask',['../grdvars_8F90.html#a5194fb7fb3c86589c1f5d93b622b514e',1,'grdvars']]], + ['editsfile',['editsfile',['../charstrings_8F90.html#a85522620f3052d435834589591f85bad',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_4.html b/ver-1.11.0/cpld_gridgen/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_4.js b/ver-1.11.0/cpld_gridgen/search/variables_4.js new file mode 100644 index 000000000..968586ac5 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fixvars',['fixvars',['../vartypedefs_8F90.html#a90243ff68655eb2f76ec0b50d85ff102',1,'vartypedefs']]], + ['fv3dir',['fv3dir',['../charstrings_8F90.html#a15dc2ae29b501b3a334ab4e3d2e72b6c',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_5.html b/ver-1.11.0/cpld_gridgen/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_5.js b/ver-1.11.0/cpld_gridgen/search/variables_5.js new file mode 100644 index 000000000..422f3f584 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['history',['history',['../charstrings_8F90.html#a21e98a7c5d7f097bf9ef63e308f67405',1,'charstrings']]], + ['hte',['hte',['../grdvars_8F90.html#af22c09b727c538aaf830e64d928f2b7c',1,'grdvars']]], + ['htn',['htn',['../grdvars_8F90.html#a8bbd10e3ddfbb7fc72ae0f96b92da5fb',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_6.html b/ver-1.11.0/cpld_gridgen/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_6.js b/ver-1.11.0/cpld_gridgen/search/variables_6.js new file mode 100644 index 000000000..6cf774e2c --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['int8_5fkind',['int8_kind',['../gengrid__kinds_8F90.html#a31b580be1664a7d63a0e3a24621dea7e',1,'gengrid_kinds']]], + ['int_5fkind',['int_kind',['../gengrid__kinds_8F90.html#abcad634e6a284e2c43c6c36912e8aa2c',1,'gengrid_kinds']]], + ['ipole',['ipole',['../grdvars_8F90.html#a7a38dda76b7f5fd076b5314492c14aa8',1,'grdvars']]], + ['ivertbu',['ivertbu',['../grdvars_8F90.html#a819746477399d85d393ed9e72da8d666',1,'grdvars']]], + ['ivertct',['ivertct',['../grdvars_8F90.html#a23f3aec46800e7bf9c1820825592d2e9',1,'grdvars']]], + ['ivertcu',['ivertcu',['../grdvars_8F90.html#ac9c4e94f20e8f58eea2f1b5dc1f6ba9e',1,'grdvars']]], + ['ivertcv',['ivertcv',['../grdvars_8F90.html#a3b2d0b559ca18e5809e16932c59d8e26',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_7.html b/ver-1.11.0/cpld_gridgen/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_7.js b/ver-1.11.0/cpld_gridgen/search/variables_7.js new file mode 100644 index 000000000..0b7a797d8 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['jvertbu',['jvertbu',['../grdvars_8F90.html#a5e08cfa5b99a2d5283ec9f4beb6eaeb6',1,'grdvars']]], + ['jvertct',['jvertct',['../grdvars_8F90.html#af24489bee27822c47b8e986f0ea563e9',1,'grdvars']]], + ['jvertcu',['jvertcu',['../grdvars_8F90.html#af90a71415465c5fbc22cf204eaab1fc5',1,'grdvars']]], + ['jvertcv',['jvertcv',['../grdvars_8F90.html#aedcf5ef30a1ff9c10df1744bfb750d96',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_8.html b/ver-1.11.0/cpld_gridgen/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_8.js b/ver-1.11.0/cpld_gridgen/search/variables_8.js new file mode 100644 index 000000000..64a3ec9aa --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_8.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['latbu',['latbu',['../grdvars_8F90.html#a1d50d7a29d4497a00ac0002f46c576f0',1,'grdvars']]], + ['latbu_5fvert',['latbu_vert',['../grdvars_8F90.html#a55f2b7e1bbca711e0f1a0f75d0eb368e',1,'grdvars']]], + ['latct',['latct',['../grdvars_8F90.html#ac0f195cc905f80fe69f72bbf971cdeed',1,'grdvars']]], + ['latct_5fvert',['latct_vert',['../grdvars_8F90.html#afca7b7e1a1cedcdf844079922084474a',1,'grdvars']]], + ['latcu',['latcu',['../grdvars_8F90.html#a0caaebffaf05b908aa34df40f4d9448c',1,'grdvars']]], + ['latcu_5fvert',['latcu_vert',['../grdvars_8F90.html#ad7fa7f129a25369663cd572053f5b45b',1,'grdvars']]], + ['latcv',['latcv',['../grdvars_8F90.html#a4578f746f307159d1fc05265fc963725',1,'grdvars']]], + ['latcv_5fvert',['latcv_vert',['../grdvars_8F90.html#ac3a0b1c629003322533b688399fe5f0b',1,'grdvars']]], + ['logmsg',['logmsg',['../charstrings_8F90.html#a7e839b077a33bd6979918c0a68e586ca',1,'charstrings']]], + ['lonbu',['lonbu',['../grdvars_8F90.html#a1eeff04e52a3a061164ef7384d5216a7',1,'grdvars']]], + ['lonbu_5fvert',['lonbu_vert',['../grdvars_8F90.html#a987e7e9a4a96fd323cff526364aa32ba',1,'grdvars']]], + ['lonct',['lonct',['../grdvars_8F90.html#aa7ad651120fed8d4948cd9f81bfd47d4',1,'grdvars']]], + ['lonct_5fvert',['lonct_vert',['../grdvars_8F90.html#a36f7c345d9b787a4956e99beb3b1a9bf',1,'grdvars']]], + ['loncu',['loncu',['../grdvars_8F90.html#a5886bacae93178b0e08db66bde1249a7',1,'grdvars']]], + ['loncu_5fvert',['loncu_vert',['../grdvars_8F90.html#a794e74698074e5da6bed508acba81c82',1,'grdvars']]], + ['loncv',['loncv',['../grdvars_8F90.html#aaa244d80145056fa3070bf52267efa73',1,'grdvars']]], + ['loncv_5fvert',['loncv_vert',['../grdvars_8F90.html#ac6c23c5be7ca4fd67344e5b3852a88ef',1,'grdvars']]], + ['long_5fname',['long_name',['../structvartypedefs_1_1vardefs.html#a8dc3375c6d39785faf9888ebb27bff07',1,'vartypedefs::vardefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_9.html b/ver-1.11.0/cpld_gridgen/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_9.js b/ver-1.11.0/cpld_gridgen/search/variables_9.js new file mode 100644 index 000000000..fb11e6504 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['maskfile',['maskfile',['../charstrings_8F90.html#aa85024703aa16d5714437bc0c0b9f42c',1,'charstrings']]], + ['masking_5fdepth',['masking_depth',['../grdvars_8F90.html#a435598dba041e0bc7d08df4b38d9bbdd',1,'grdvars']]], + ['maskname',['maskname',['../charstrings_8F90.html#ad96111223ad5249c12f9a44ba377c55d',1,'charstrings']]], + ['maximum_5fdepth',['maximum_depth',['../grdvars_8F90.html#a87e55332b7fbdf58eb6d358e9a83db62',1,'grdvars']]], + ['maximum_5flat',['maximum_lat',['../grdvars_8F90.html#a3cf9b75a8b19de88d4b9915fe8d8d2f4',1,'grdvars']]], + ['maxvars',['maxvars',['../vartypedefs_8F90.html#a878f2e5a9cc17301181e00ab56a4aed4',1,'vartypedefs']]], + ['minimum_5fdepth',['minimum_depth',['../grdvars_8F90.html#a905b13bcf0b7c85412837facaac0d46e',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_a.html b/ver-1.11.0/cpld_gridgen/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_a.js b/ver-1.11.0/cpld_gridgen/search/variables_a.js new file mode 100644 index 000000000..4487b6797 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ncoord',['ncoord',['../grdvars_8F90.html#aa5d1f52f0ef1e3ca9e73a34423a841c3',1,'grdvars']]], + ['ni',['ni',['../grdvars_8F90.html#ab4e40ea0e4d4c14fae837b09470a3e57',1,'grdvars']]], + ['nj',['nj',['../grdvars_8F90.html#ad12d0c225bbf6584c432de0f864246ca',1,'grdvars']]], + ['npx',['npx',['../grdvars_8F90.html#a4a953d8e228956010ad72dba3f4a13c2',1,'grdvars']]], + ['nv',['nv',['../grdvars_8F90.html#acd72e2c13d07e3c0839cf2895c997055',1,'grdvars']]], + ['nvars',['nvars',['../grdvars_8F90.html#a1bda99f6192cb48078ae06ee3bf3c1ea',1,'grdvars']]], + ['nverts',['nverts',['../grdvars_8F90.html#a40d2911a2aced56fcd0ff6965adc16b4',1,'grdvars']]], + ['nx',['nx',['../grdvars_8F90.html#a99285d1b6d717ab1447d11914d57799a',1,'grdvars']]], + ['ny',['ny',['../grdvars_8F90.html#a0ee0447ff5535317aa9de6202e53ebc4',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_b.html b/ver-1.11.0/cpld_gridgen/search/variables_b.html new file mode 100644 index 000000000..b306931e2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_b.js b/ver-1.11.0/cpld_gridgen/search/variables_b.js new file mode 100644 index 000000000..42878fdbc --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['real_5fkind',['real_kind',['../gengrid__kinds_8F90.html#a123f02f5ed8f6cbb209b214b39058d0f',1,'gengrid_kinds']]], + ['res',['res',['../charstrings_8F90.html#a12b5fde65f416b90f9596a84f560c793',1,'charstrings']]], + ['roottask',['roottask',['../grdvars_8F90.html#a4e159c25718a8413af83ebc172c01516',1,'grdvars']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_c.html b/ver-1.11.0/cpld_gridgen/search/variables_c.html new file mode 100644 index 000000000..75709df8f --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_c.js b/ver-1.11.0/cpld_gridgen/search/variables_c.js new file mode 100644 index 000000000..c8840cf55 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['scripvars',['scripvars',['../vartypedefs_8F90.html#ac3971a41f6b697110e33f07a3c9a6a68',1,'vartypedefs']]], + ['sg_5fmaxlat',['sg_maxlat',['../grdvars_8F90.html#a3d2757edca0e0dc8bfb70d63debcba95',1,'grdvars']]], + ['staggerlocs',['staggerlocs',['../charstrings_8F90.html#a26dd13fc727d787a54d0af45d50f635d',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_d.html b/ver-1.11.0/cpld_gridgen/search/variables_d.html new file mode 100644 index 000000000..34c80a486 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_d.js b/ver-1.11.0/cpld_gridgen/search/variables_d.js new file mode 100644 index 000000000..fcefafb06 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['topofile',['topofile',['../charstrings_8F90.html#ab2e1d6a1d79db8c11593d013d49bee9c',1,'charstrings']]], + ['toponame',['toponame',['../charstrings_8F90.html#a64d3683140bb747f98b34728cae9317b',1,'charstrings']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_e.html b/ver-1.11.0/cpld_gridgen/search/variables_e.html new file mode 100644 index 000000000..4a1c8a614 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_e.js b/ver-1.11.0/cpld_gridgen/search/variables_e.js new file mode 100644 index 000000000..6bbba8a57 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ulat',['ulat',['../grdvars_8F90.html#a98094bfd99fce13a1659c59eed70619e',1,'grdvars']]], + ['ulon',['ulon',['../grdvars_8F90.html#aa07d123c429ada0542546cc7241fb27d',1,'grdvars']]], + ['unit_5fname',['unit_name',['../structvartypedefs_1_1vardefs.html#a327acfaba5e472b08d24baa1eaf0ee74',1,'vartypedefs::vardefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/search/variables_f.html b/ver-1.11.0/cpld_gridgen/search/variables_f.html new file mode 100644 index 000000000..cc86fb590 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/cpld_gridgen/search/variables_f.js b/ver-1.11.0/cpld_gridgen/search/variables_f.js new file mode 100644 index 000000000..6326db07b --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['var_5fname',['var_name',['../structvartypedefs_1_1vardefs.html#a9338b32cc4dd99a0912f0ee9e5801f96',1,'vartypedefs::vardefs']]], + ['var_5ftype',['var_type',['../structvartypedefs_1_1vardefs.html#a9dae51b4e3e4677251e90d63473aee93',1,'vartypedefs::vardefs']]], + ['vertices',['vertices',['../structvartypedefs_1_1vardefs.html#a4c54e61c8eb65bd4b4de414bfe6ebac5',1,'vartypedefs::vardefs']]] +]; diff --git a/ver-1.11.0/cpld_gridgen/splitbar.png b/ver-1.11.0/cpld_gridgen/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.html b/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.html new file mode 100644 index 000000000..04586c531 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.html @@ -0,0 +1,223 @@ + + + + + + + +cpld_gridgen: vartypedefs::vardefs Type Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vartypedefs::vardefs Type Reference
    +
    +
    + + + + + + + + + + + + + + + + + +

    +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...
     
    +

    Detailed Description

    +
    +

    Definition at line 16 of file vartypedefs.F90.

    +

    Field Documentation

    + +

    ◆ long_name

    + +
    +
    + + + + +
    character(len=cm) vartypedefs::vardefs::long_name
    +
    + +

    A variable's long name.

    + +

    Definition at line 18 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ unit_name

    + +
    +
    + + + + +
    character(len=cm) vartypedefs::vardefs::unit_name
    +
    + +

    A variable's unit.

    + +

    Definition at line 19 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ var_name

    + +
    +
    + + + + +
    character(len=cm) vartypedefs::vardefs::var_name
    +
    + +

    A variable name.

    + +

    Definition at line 17 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ var_type

    + +
    +
    + + + + +
    character(len= 2) vartypedefs::vardefs::var_type
    +
    + +

    A variable's type.

    + +

    Definition at line 20 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ vertices

    + +
    +
    + + + + +
    character(len=cm) vartypedefs::vardefs::vertices
    +
    + +

    A variable's vertices.

    + +

    Definition at line 21 of file vartypedefs.F90.

    + +
    +
    +
    The documentation for this type was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/vartypedefs.F90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.js b/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.js new file mode 100644 index 000000000..1862c0d05 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/structvartypedefs_1_1vardefs.js @@ -0,0 +1,8 @@ +var structvartypedefs_1_1vardefs = +[ + [ "long_name", "structvartypedefs_1_1vardefs.html#a8dc3375c6d39785faf9888ebb27bff07", null ], + [ "unit_name", "structvartypedefs_1_1vardefs.html#a327acfaba5e472b08d24baa1eaf0ee74", null ], + [ "var_name", "structvartypedefs_1_1vardefs.html#a9338b32cc4dd99a0912f0ee9e5801f96", null ], + [ "var_type", "structvartypedefs_1_1vardefs.html#a9dae51b4e3e4677251e90d63473aee93", null ], + [ "vertices", "structvartypedefs_1_1vardefs.html#a4c54e61c8eb65bd4b4de414bfe6ebac5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/sync_off.png b/ver-1.11.0/cpld_gridgen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/sync_on.png b/ver-1.11.0/cpld_gridgen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/tab_a.png b/ver-1.11.0/cpld_gridgen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/tab_b.png b/ver-1.11.0/cpld_gridgen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/cpld_gridgen/tabs.css b/ver-1.11.0/cpld_gridgen/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/topoedits_8F90.html b/ver-1.11.0/cpld_gridgen/topoedits_8F90.html new file mode 100644 index 000000000..39fc8eb33 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/topoedits_8F90.html @@ -0,0 +1,201 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/topoedits.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    topoedits.F90 File Reference
    +
    +
    + +

    Add required topo-edits to adjust the run-time MOM6 land mask. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine, public topoedits::add_topoedits (fsrc, fdst)
     Read the existing topoedits file, append required topoedits and write a new topoedits file. More...
     
    subroutine, public topoedits::apply_topoedits (fsrc)
     Read the topoedits file and adjust the bathymetry. More...
     
    +

    Detailed Description

    +

    Add required topo-edits to adjust the run-time MOM6 land mask.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module adds the required topo edits to a file for use by MOM6 at run time

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file topoedits.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ add_topoedits()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public topoedits::add_topoedits (character(len=*), intent(in) fsrc,
    character(len=*), intent(in) fdst 
    )
    +
    + +

    Read the existing topoedits file, append required topoedits and write a new topoedits file.

    +

    Use the new topoedits to adjust the land mask used in subsequent steps to match the land mask which will be created at run time

    +
    Parameters
    + + + +
    [in]fsrcthe existing topoedits file name
    [out]fdstthe modified topoedits file name
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 33 of file topoedits.F90.

    + +
    +
    + +

    ◆ apply_topoedits()

    + +
    +
    + + + + + + + + +
    subroutine, public topoedits::apply_topoedits (character(len=*), intent(in) fsrc)
    +
    + +

    Read the topoedits file and adjust the bathymetry.

    +

    Apply limits to bathymetry.

    +
    Parameters
    + + +
    [in]fsrcthe topoedits file name
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 166 of file topoedits.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/topoedits_8F90.js b/ver-1.11.0/cpld_gridgen/topoedits_8F90.js new file mode 100644 index 000000000..3b9c34f4e --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/topoedits_8F90.js @@ -0,0 +1,5 @@ +var topoedits_8F90 = +[ + [ "add_topoedits", "topoedits_8F90.html#a7d88a77c88a8e321108880ad9f362349", null ], + [ "apply_topoedits", "topoedits_8F90.html#a644584cdf4abf64c2771a578f96ed431", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/topoedits_8F90_source.html b/ver-1.11.0/cpld_gridgen/topoedits_8F90_source.html new file mode 100644 index 000000000..1f286e8de --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/topoedits_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/topoedits.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    topoedits.F90
    +
    +
    +Go to the documentation of this file.
    1 
    8 
    9 module topoedits
    10 
    11  use gengrid_kinds, only: real_kind,int_kind
    12  use grdvars, only: ni,nj
    13  use grdvars, only: wet4,dp4,minimum_depth,maximum_depth,masking_depth
    14  use charstrings, only: logmsg,history
    15  use netcdf
    16 
    17  implicit none
    18  private
    19 
    20  public add_topoedits
    21  public apply_topoedits
    22 
    23 contains
    31 
    32  subroutine add_topoedits(fsrc,fdst)
    33 
    34  character(len=*), intent(in) :: fsrc, fdst
    35 
    36  ! local variables
    37  integer :: rc,id,i,j,ii,jj,ncid,dimid,idimid,dim1(1)
    38  integer :: cnt1=0, cnt2=0, icnt
    39  integer(int_kind), allocatable, dimension(:) :: ieds1, jeds1, ieds2, jeds2
    40  real(real_kind), allocatable, dimension(:) :: zeds1, zeds2
    41 
    42  !---------------------------------------------------------------------
    43  ! read existing topo edits
    44  !---------------------------------------------------------------------
    45 
    46  rc = nf90_open(trim(fsrc), nf90_nowrite, ncid)
    47  print '(a)','using topo edits file '//trim(fsrc)//' to edit land mask '
    48 
    49  rc = nf90_inq_dimid(ncid, 'nEdits', dimid)
    50  rc = nf90_inquire_dimension(ncid, dimid, len=cnt1)
    51  rc = nf90_close(ncid)
    52 
    53  ! return the existing values
    54  allocate(ieds1(cnt1)); ieds1 = 0
    55  allocate(jeds1(cnt1)); jeds2 = 0
    56  allocate(zeds1(cnt1)); zeds2 = 0.0
    57 
    58  rc = nf90_open(fsrc, nf90_nowrite, ncid)
    59  rc = nf90_inq_varid(ncid, 'iEdit', id)
    60  rc = nf90_get_var(ncid, id, ieds1)
    61  rc = nf90_inq_varid(ncid, 'jEdit', id)
    62  rc = nf90_get_var(ncid, id, jeds1)
    63  rc = nf90_inq_varid(ncid, 'zEdit', id)
    64  rc = nf90_get_var(ncid, id, zeds1)
    65  rc = nf90_close(ncid)
    66 
    67  !---------------------------------------------------------------------
    68  ! determine the number of points to be added to topo-edits file
    69  ! check only j=1 now
    70  !---------------------------------------------------------------------
    71 
    72  icnt = 0
    73  j = 1
    74  do i = 1,ni
    75  if(wet4(i,j) .eq. 1.0)icnt = icnt+1
    76  end do
    77  cnt2 = cnt2+icnt
    78  print '(a,i4,a,i4)', 'found ',icnt,' open water points at j=1 , cnt2 = ',cnt2
    79 
    80  cnt2 = cnt1 + cnt2
    81  ! allocate space for existing+new values and copy in original values
    82  allocate(ieds2(cnt2)); ieds2 = 0
    83  allocate(jeds2(cnt2)); jeds2 = 0
    84  allocate(zeds2(cnt2)); zeds2 = 0.0
    85 
    86  ieds2(1:cnt1) = ieds1(1:cnt1)
    87  jeds2(1:cnt1) = jeds1(1:cnt1)
    88  zeds2(1:cnt1) = zeds1(1:cnt1)
    89 
    90  !---------------------------------------------------------------------
    91  ! fill in new values and write new topoedits file
    92  !---------------------------------------------------------------------
    93 
    94  icnt = cnt1
    95  j = 1
    96  do i = 1,ni
    97  if(wet4(i,j) .eq. 1.0)then
    98  icnt = icnt+1
    99  ii = i-1; jj = j-1
    100  ieds2(icnt) = ii
    101  jeds2(icnt) = jj
    102  zeds2(icnt) = 0.0
    103  end if
    104  end do
    105 
    106  !do i = 1,cnt2
    107  ! print '(3i5,f12.4)',i,ieds2(i),jeds2(i),zeds2(i)
    108  !end do
    109 
    110  rc = nf90_create(fdst, nf90_write, ncid)
    111  print '(a)', 'writing new topo edits to '//trim(fdst)
    112 
    113  rc = nf90_def_dim(ncid, 'nEdits', cnt2, idimid)
    114 
    115  rc = nf90_def_var(ncid, 'ni', nf90_int, id)
    116  rc = nf90_def_var(ncid, 'nj', nf90_int, id)
    117 
    118  dim1(:) = (/idimid/)
    119  rc = nf90_def_var(ncid, 'iEdit', nf90_int, dim1, id)
    120  rc = nf90_def_var(ncid, 'jEdit', nf90_int, dim1, id)
    121  rc = nf90_def_var(ncid, 'zEdit', nf90_float, dim1, id)
    122  rc = nf90_put_att(ncid, nf90_global, 'history', trim(history))
    123  rc = nf90_enddef(ncid)
    124 
    125  rc = nf90_inq_varid(ncid, 'ni', id)
    126  rc = nf90_put_var(ncid, id, ni)
    127  rc = nf90_inq_varid(ncid, 'nj', id)
    128  rc = nf90_put_var(ncid, id, nj)
    129 
    130  rc = nf90_inq_varid(ncid, 'iEdit', id)
    131  rc = nf90_put_var(ncid, id, ieds2)
    132  rc = nf90_inq_varid(ncid, 'jEdit', id)
    133  rc = nf90_put_var(ncid, id, jeds2)
    134  rc = nf90_inq_varid(ncid, 'zEdit', id)
    135  rc = nf90_put_var(ncid, id, zeds2)
    136 
    137  rc = nf90_close(ncid)
    138 
    139  !---------------------------------------------------------------------
    140  ! adjust land mask by same edits used at run time
    141  !---------------------------------------------------------------------
    142 
    143  do i = 1,cnt2
    144  ii = ieds2(i); jj = jeds2(i)
    145  if(wet4(ii+1,jj+1) .eq. 0.0 .and. zeds2(i) .gt. 0.0) then
    146  wet4(ii+1,jj+1) = 1.0
    147  print '(a,2i4,a)', 'switch point ',ii+1,jj+1,' from land->ocean at runtime'
    148  end if
    149  if(wet4(ii+1,jj+1) .eq. 1.0 .and. zeds2(i) .eq. 0.0) then
    150  wet4(ii+1,jj+1) = 0.0
    151  print '(a,2i4,a)', 'switch point ',ii+1,jj+1,' from ocean->land at runtime'
    152  end if
    153  end do
    154  deallocate(ieds1, jeds1, zeds1)
    155  deallocate(ieds2, jeds2, zeds2)
    156 
    157  end subroutine add_topoedits
    158 
    164 
    165  subroutine apply_topoedits(fsrc)
    167  character(len=*), intent(in) :: fsrc
    168 
    169  ! local variables
    170  integer :: rc,ncid,id,dimid,i,j,ii,jj,cnt1
    171  integer(int_kind), allocatable, dimension(:) :: ieds1, jeds1
    172  real(real_kind), allocatable, dimension(:) :: zeds1
    173 
    174  logical :: file_exists
    175  !---------------------------------------------------------------------
    176  ! read and apply topo edits file, if any
    177  !---------------------------------------------------------------------
    178 
    179  inquire(file=trim(fsrc),exist=file_exists)
    180  if (file_exists) then
    181  rc = nf90_open(trim(fsrc), nf90_nowrite, ncid)
    182  print '(a)','using topo edits file '//trim(fsrc)//' to adjust bathymetry '
    183 
    184  rc = nf90_inq_dimid(ncid, 'nEdits', dimid)
    185  rc = nf90_inquire_dimension(ncid, dimid, len=cnt1)
    186  rc = nf90_close(ncid)
    187 
    188  ! return the existing values
    189  allocate(ieds1(cnt1))
    190  allocate(jeds1(cnt1))
    191  allocate(zeds1(cnt1))
    192 
    193  rc = nf90_open(fsrc, nf90_nowrite, ncid)
    194  rc = nf90_inq_varid(ncid, 'iEdit', id)
    195  rc = nf90_get_var(ncid, id, ieds1)
    196  rc = nf90_inq_varid(ncid, 'jEdit', id)
    197  rc = nf90_get_var(ncid, id, jeds1)
    198  rc = nf90_inq_varid(ncid, 'zEdit', id)
    199  rc = nf90_get_var(ncid, id, zeds1)
    200  rc = nf90_close(ncid)
    201 
    202  ! apply topo edits from file
    203  do i = 1,cnt1
    204  ii = ieds1(i); jj = jeds1(i)
    205  print '(a,3i5,f8.2,a,f8.2)', 'Ocean topography edit: ', i, ii+1, jj+1 , dp4(ii+1,jj+1), '->', abs(zeds1(i))
    206  dp4(ii+1,jj+1) = abs(zeds1(i))
    207  end do
    208  deallocate(ieds1, jeds1, zeds1)
    209  end if
    210 
    211  !---------------------------------------------------------------------
    212  ! limit topography
    213  !---------------------------------------------------------------------
    214 
    215  print '(a)', 'Applying topo limits to ensure that min_depth < D(x,y) < max_depth '
    216  print '(a, f8.2)', 'Using min_depth = ',minimum_depth
    217  print '(a, f8.2)', 'Using max_depth = ',maximum_depth
    218  do j = 1,nj
    219  do i = 1,ni
    220  if(dp4(i,j) > min(minimum_depth,masking_depth))then
    221  dp4(i,j) = min( max(dp4(i,j), minimum_depth), maximum_depth)
    222  end if
    223  end do
    224  end do
    225 
    226  end subroutine apply_topoedits
    227 end module topoedits
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.html b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.html new file mode 100644 index 000000000..94c342ec4 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.html @@ -0,0 +1,155 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/tripolegrid.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    tripolegrid.F90 File Reference
    +
    +
    + +

    Write the tripole grid file. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine, public tripolegrid::write_tripolegrid (fname)
     Write the tripole grid file. More...
     
    +

    Detailed Description

    +

    Write the tripole grid file.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module writes the main tripole grid file

    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file tripolegrid.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ write_tripolegrid()

    + +
    +
    + + + + + + + + +
    subroutine, public tripolegrid::write_tripolegrid (character(len=*), intent(in) fname)
    +
    + +

    Write the tripole grid file.

    +
    Parameters
    + + +
    [in]fnamethe name of the tripole grid file to write
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 34 of file tripolegrid.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.js b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.js new file mode 100644 index 000000000..bd242d8ca --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90.js @@ -0,0 +1,4 @@ +var tripolegrid_8F90 = +[ + [ "write_tripolegrid", "tripolegrid_8F90.html#ae742f1e251f18a246382d643b4bd70a5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/tripolegrid_8F90_source.html b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90_source.html new file mode 100644 index 000000000..d63e5d704 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/tripolegrid_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/tripolegrid.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    tripolegrid.F90
    +
    +
    +Go to the documentation of this file.
    1 
    7 
    8 module tripolegrid
    9 
    10  use gengrid_kinds, only: dbl_kind,int_kind,cm
    11  use grdvars, only: ni,nj,nv,nverts,ncoord
    12  use grdvars, only: lonct,latct,lonct_vert,latct_vert
    13  use grdvars, only: loncu,latcu,loncu_vert,latcu_vert
    14  use grdvars, only: loncv,latcv,loncv_vert,latcv_vert
    15  use grdvars, only: lonbu,latbu,lonbu_vert,latbu_vert
    16  use grdvars, only: wet4,areact,anglet,dp4
    17  use charstrings, only: logmsg,history
    18  use vartypedefs, only: maxvars, fixvars, fixvars_typedefine
    19  use netcdf
    20 
    21  implicit none
    22  private
    23 
    24  public write_tripolegrid
    25 
    26 contains
    32 
    33  subroutine write_tripolegrid(fname)
    34 
    35  character(len=*), intent(in) :: fname
    36 
    37  ! local variables
    38  integer :: ii,id,rc, ncid, dim2(2),dim3(3)
    39  integer :: idimid,jdimid,kdimid
    40 
    41  !---------------------------------------------------------------------
    42  ! create the netcdf file
    43  !---------------------------------------------------------------------
    44 
    45  ! define the output variables and file name
    46  call fixvars_typedefine
    47 
    48  ! create the file
    49  ! 64_bit offset reqd for 008 grid
    50  ! produces b4b results for smaller grids
    51  rc = nf90_create(trim(fname), nf90_64bit_offset, ncid)
    52  logmsg = '==> writing tripole grid to '//trim(fname)
    53  print '(a)', trim(logmsg)
    54  if(rc .ne. 0)print '(a)', 'nf90_create = '//trim(nf90_strerror(rc))
    55 
    56  rc = nf90_def_dim(ncid, 'ni', ni, idimid)
    57  rc = nf90_def_dim(ncid, 'nj', nj, jdimid)
    58  rc = nf90_def_dim(ncid, 'nv', nv, kdimid)
    59 
    60  !mask
    61  dim2(:) = (/idimid, jdimid/)
    62  rc = nf90_def_var(ncid, 'wet', nf90_int, dim2, id)
    63  rc = nf90_put_att(ncid, id, 'units', 'nd')
    64  !area
    65  rc = nf90_def_var(ncid, 'area', nf90_double, dim2, id)
    66  rc = nf90_put_att(ncid, id, 'units', 'm2')
    67  !angleT
    68  rc = nf90_def_var(ncid, 'anglet', nf90_double, dim2, id)
    69  rc = nf90_put_att(ncid, id, 'units', 'radians')
    70  !bathymetry
    71  rc = nf90_def_var(ncid, 'depth', nf90_float, dim2, id)
    72  rc = nf90_put_att(ncid, id, 'units', 'm')
    73 
    74  dim2(:) = (/idimid, jdimid/)
    75  do ii = 1,ncoord
    76  rc = nf90_def_var(ncid, trim(fixvars(ii)%var_name), nf90_double, dim2, id)
    77  rc = nf90_put_att(ncid, id, 'units', trim(fixvars(ii)%unit_name))
    78  rc = nf90_put_att(ncid, id, 'long_name', trim(fixvars(ii)%long_name))
    79  if(trim(fixvars(ii)%var_name(1:3)) .eq. "lon")then
    80  rc = nf90_put_att(ncid, id, 'lon_bounds', trim(fixvars(ii)%vertices))
    81  else
    82  rc = nf90_put_att(ncid, id, 'lat_bounds', trim(fixvars(ii)%vertices))
    83  endif
    84  enddo
    85 
    86  dim3(:) = (/idimid, jdimid, kdimid/)
    87  do ii = ncoord+1,ncoord+nverts
    88  rc = nf90_def_var(ncid, trim(fixvars(ii)%var_name), nf90_double, dim3, id)
    89  rc = nf90_put_att(ncid, id, 'units', trim(fixvars(ii)%unit_name))
    90  rc = nf90_put_att(ncid, id, 'long_name', trim(fixvars(ii)%long_name))
    91  enddo
    92 
    93  rc = nf90_put_att(ncid, nf90_global, 'history', trim(history))
    94  rc = nf90_enddef(ncid)
    95 
    96  rc = nf90_inq_varid(ncid, 'wet', id)
    97  rc = nf90_put_var(ncid, id, int(wet4))
    98 
    99  rc = nf90_inq_varid(ncid, 'area', id)
    100  rc = nf90_put_var(ncid, id, areact)
    101 
    102  rc = nf90_inq_varid(ncid,'anglet', id)
    103  rc = nf90_put_var(ncid, id, anglet)
    104 
    105  rc = nf90_inq_varid(ncid, 'depth', id)
    106  rc = nf90_put_var(ncid, id, dp4)
    107 
    108  rc = nf90_inq_varid(ncid, 'lonCt', id)
    109  rc = nf90_put_var(ncid, id, lonct)
    110 
    111  rc = nf90_inq_varid(ncid, 'latCt', id)
    112  rc = nf90_put_var(ncid, id, latct)
    113 
    114  rc = nf90_inq_varid(ncid, 'lonCv', id)
    115  rc = nf90_put_var(ncid, id, loncv)
    116 
    117  rc = nf90_inq_varid(ncid, 'latCv', id)
    118  rc = nf90_put_var(ncid, id, latcv)
    119 
    120  rc = nf90_inq_varid(ncid, 'lonCu', id)
    121  rc = nf90_put_var(ncid, id, loncu)
    122 
    123  rc = nf90_inq_varid(ncid, 'latCu', id)
    124  rc = nf90_put_var(ncid, id, latcu)
    125 
    126  rc = nf90_inq_varid(ncid, 'lonBu', id)
    127  rc = nf90_put_var(ncid, id, lonbu)
    128 
    129  rc = nf90_inq_varid(ncid, 'latBu', id)
    130  rc = nf90_put_var(ncid, id, latbu)
    131 
    132  ! vertices
    133  rc = nf90_inq_varid(ncid, 'lonCt_vert', id)
    134  rc = nf90_put_var(ncid, id, lonct_vert)
    135 
    136  rc = nf90_inq_varid(ncid, 'latCt_vert', id)
    137  rc = nf90_put_var(ncid, id, latct_vert)
    138 
    139  rc = nf90_inq_varid(ncid, 'lonCv_vert', id)
    140  rc = nf90_put_var(ncid, id, loncv_vert)
    141 
    142  rc = nf90_inq_varid(ncid, 'latCv_vert', id)
    143  rc = nf90_put_var(ncid, id, latcv_vert)
    144 
    145  rc = nf90_inq_varid(ncid, 'lonCu_vert', id)
    146  rc = nf90_put_var(ncid, id, loncu_vert)
    147 
    148  rc = nf90_inq_varid(ncid, 'latCu_vert', id)
    149  rc = nf90_put_var(ncid, id, latcu_vert)
    150 
    151  rc = nf90_inq_varid(ncid, 'lonBu_vert', id)
    152  rc = nf90_put_var(ncid, id, lonbu_vert)
    153 
    154  rc = nf90_inq_varid(ncid, 'latBu_vert', id)
    155  rc = nf90_put_var(ncid, id, latbu_vert)
    156 
    157  rc = nf90_close(ncid)
    158 
    159  end subroutine write_tripolegrid
    160 end module tripolegrid
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.html b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.html new file mode 100644 index 000000000..c3f441794 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.html @@ -0,0 +1,293 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/vartypedefs.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vartypedefs.F90 File Reference
    +
    +
    + +

    Define the variables for output. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Data Types

    type  vartypedefs::vardefs
     
    + + + + + + + + + + +

    +Functions/Subroutines

    subroutine vartypedefs::cicevars_typedefine
     Define the variables written to the CICE grid file. More...
     
    subroutine vartypedefs::fixvars_typedefine
     Define the variables written to the tripole grid file. More...
     
    subroutine vartypedefs::scripvars_typedefine
     Define the variables written to any SCRIP grid file. More...
     
    + + + + + + + + + + + + + +

    +Variables

    type(vardefs), dimension(maxvars) vartypedefs::cicevars
     Attribute definitions for the variables written to the CICE grid file. More...
     
    type(vardefs), dimension(maxvars) vartypedefs::fixvars
     Attribute definitions for the variables written to the main tripole file. More...
     
    integer, parameter vartypedefs::maxvars = 20
     The maximum number of variables written to a file. More...
     
    type(vardefs), dimension(maxvars) vartypedefs::scripvars
     Attribute definitions for the variables written to any SCRIP file. More...
     
    +

    Detailed Description

    +

    Define the variables for output.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module defines the attributes for variables written to the tripole, cice and scrip grid files

    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file vartypedefs.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ cicevars_typedefine()

    + +
    +
    + + + + + + + +
    subroutine vartypedefs::cicevars_typedefine ()
    +
    + +

    Define the variables written to the CICE grid file.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 137 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ fixvars_typedefine()

    + +
    +
    + + + + + + + +
    subroutine vartypedefs::fixvars_typedefine ()
    +
    + +

    Define the variables written to the tripole grid file.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 35 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ scripvars_typedefine()

    + +
    +
    + + + + + + + +
    subroutine vartypedefs::scripvars_typedefine ()
    +
    + +

    Define the variables written to any SCRIP grid file.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 182 of file vartypedefs.F90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ cicevars

    + +
    +
    + + + + +
    type(vardefs), dimension(maxvars) vartypedefs::cicevars
    +
    + +

    Attribute definitions for the variables written to the CICE grid file.

    + +

    Definition at line 25 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ fixvars

    + +
    +
    + + + + +
    type(vardefs), dimension(maxvars) vartypedefs::fixvars
    +
    + +

    Attribute definitions for the variables written to the main tripole file.

    + +

    Definition at line 24 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ maxvars

    + +
    +
    + + + + +
    integer, parameter vartypedefs::maxvars = 20
    +
    + +

    The maximum number of variables written to a file.

    + +

    Definition at line 14 of file vartypedefs.F90.

    + +
    +
    + +

    ◆ scripvars

    + +
    +
    + + + + +
    type(vardefs), dimension(maxvars) vartypedefs::scripvars
    +
    + +

    Attribute definitions for the variables written to any SCRIP file.

    + +

    Definition at line 26 of file vartypedefs.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.js b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.js new file mode 100644 index 000000000..a008b5a7d --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90.js @@ -0,0 +1,11 @@ +var vartypedefs_8F90 = +[ + [ "vardefs", "structvartypedefs_1_1vardefs.html", "structvartypedefs_1_1vardefs" ], + [ "cicevars_typedefine", "vartypedefs_8F90.html#a70321bd88f309398f70f2ba4583a7f0c", null ], + [ "fixvars_typedefine", "vartypedefs_8F90.html#ab61a40e833aaee54a06da3ecd063cb3c", null ], + [ "scripvars_typedefine", "vartypedefs_8F90.html#a4e3c402f0de97609f86175bd7c2e6808", null ], + [ "cicevars", "vartypedefs_8F90.html#a583add28e4bd36482c2faa3107f71ad1", null ], + [ "fixvars", "vartypedefs_8F90.html#a90243ff68655eb2f76ec0b50d85ff102", null ], + [ "maxvars", "vartypedefs_8F90.html#a878f2e5a9cc17301181e00ab56a4aed4", null ], + [ "scripvars", "vartypedefs_8F90.html#ac3971a41f6b697110e33f07a3c9a6a68", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/vartypedefs_8F90_source.html b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90_source.html new file mode 100644 index 000000000..b70ae3ca2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vartypedefs_8F90_source.html @@ -0,0 +1,106 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/vartypedefs.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vartypedefs.F90
    +
    +
    +Go to the documentation of this file.
    1 
    7 
    8 module vartypedefs
    9 
    10  use charstrings, only : cl, cm, cs
    11 
    12  implicit none
    13 
    14  integer, parameter :: maxvars = 20
    15 
    16  type :: vardefs
    17  character(len=CM) :: var_name
    18  character(len=CM) :: long_name
    19  character(len=CM) :: unit_name
    20  character(len= 2) :: var_type
    21  character(len=CM) :: vertices
    22  end type vardefs
    23 
    24  type(vardefs) :: fixvars(maxvars)
    25  type(vardefs) :: cicevars(maxvars)
    26  type(vardefs) :: scripvars(maxvars)
    27 
    28 contains
    29 
    33 
    34  subroutine fixvars_typedefine
    35 
    36  ! local variables
    37  integer :: ii = 0
    38 
    39  !default
    40  fixvars(:)%var_type = 'r8'
    41  fixvars(:)%vertices = ''
    42 
    43  ii = ii + 1
    44  fixvars(ii)%var_name = 'lonCt'
    45  fixvars(ii)%long_name = 'Longitude of center (Ct) points'
    46  fixvars(ii)%unit_name = 'degrees_east'
    47  fixvars(ii)%vertices = 'lonCt_vert'
    48 
    49  ii = ii + 1
    50  fixvars(ii)%var_name = 'latCt'
    51  fixvars(ii)%long_name = 'Latitude of center (Ct) points'
    52  fixvars(ii)%unit_name = 'degrees_north'
    53  fixvars(ii)%vertices = 'latCt_vert'
    54 
    55  ii = ii + 1
    56  fixvars(ii)%var_name = 'lonCv'
    57  fixvars(ii)%long_name = 'Longitude of meridional velocity (Cv) points'
    58  fixvars(ii)%unit_name = 'degrees_east'
    59  fixvars(ii)%vertices = 'lonCv_vert'
    60 
    61  ii = ii + 1
    62  fixvars(ii)%var_name = 'latCv'
    63  fixvars(ii)%long_name = 'Latitude of meridional velocity (Cv) points'
    64  fixvars(ii)%unit_name = 'degrees_north'
    65  fixvars(ii)%vertices = 'latCv_vert'
    66 
    67  ii = ii + 1
    68  fixvars(ii)%var_name = 'lonCu'
    69  fixvars(ii)%long_name = 'Longitude of zonal velocity (Cu) points'
    70  fixvars(ii)%unit_name = 'degrees_east'
    71  fixvars(ii)%vertices = 'lonCu_vert'
    72 
    73  ii = ii + 1
    74  fixvars(ii)%var_name = 'latCu'
    75  fixvars(ii)%long_name = 'Latitude of zonal velocity (Cu) points'
    76  fixvars(ii)%unit_name = 'degrees_north'
    77  fixvars(ii)%vertices = 'latCu_vert'
    78 
    79  ii = ii + 1
    80  fixvars(ii)%var_name = 'lonBu'
    81  fixvars(ii)%long_name = 'Longitude of corner (Bu) points'
    82  fixvars(ii)%unit_name = 'degrees_east'
    83  fixvars(ii)%vertices = 'lonBu_vert'
    84 
    85  ii = ii + 1
    86  fixvars(ii)%var_name = 'latBu'
    87  fixvars(ii)%long_name = 'Latitude of corner (Bu) points'
    88  fixvars(ii)%unit_name = 'degrees_north'
    89  fixvars(ii)%vertices = 'latBu_vert'
    90 
    91  ii = ii + 1
    92  fixvars(ii)%var_name = 'lonCt_vert'
    93  fixvars(ii)%long_name = 'Longitude Vertices of Ct points'
    94  fixvars(ii)%unit_name = 'degrees_east'
    95 
    96  ii = ii + 1
    97  fixvars(ii)%var_name = 'latCt_vert'
    98  fixvars(ii)%long_name = 'Latitude Vertices of Ct points'
    99  fixvars(ii)%unit_name = 'degrees_north'
    100 
    101  ii = ii + 1
    102  fixvars(ii)%var_name = 'lonCu_vert'
    103  fixvars(ii)%long_name = 'Longitude Vertices of Cu points'
    104  fixvars(ii)%unit_name = 'degrees_east'
    105 
    106  ii = ii + 1
    107  fixvars(ii)%var_name = 'latCu_vert'
    108  fixvars(ii)%long_name = 'Latitude Vertices of Cu points'
    109  fixvars(ii)%unit_name = 'degrees_north'
    110 
    111  ii = ii + 1
    112  fixvars(ii)%var_name = 'lonCv_vert'
    113  fixvars(ii)%long_name = 'Longitude Vertices of Cv points'
    114  fixvars(ii)%unit_name = 'degrees_east'
    115 
    116  ii = ii + 1
    117  fixvars(ii)%var_name = 'latCv_vert'
    118  fixvars(ii)%long_name = 'Latitude Vertices of Cv points'
    119  fixvars(ii)%unit_name = 'degrees_north'
    120 
    121  ii = ii + 1
    122  fixvars(ii)%var_name = 'lonBu_vert'
    123  fixvars(ii)%long_name = 'Longitude Vertices of Bu points'
    124  fixvars(ii)%unit_name = 'degrees_east'
    125 
    126  ii = ii + 1
    127  fixvars(ii)%var_name = 'latBu_vert'
    128  fixvars(ii)%long_name = 'Latitude Vertices of Bu points'
    129  fixvars(ii)%unit_name = 'degrees_north'
    130 
    131  end subroutine fixvars_typedefine
    135 
    136  subroutine cicevars_typedefine
    138  ! local variables
    139  integer :: ii = 0
    140 
    141  !default
    142  cicevars(:)%var_type = 'r8'
    143  cicevars(:)%vertices = ''
    144 
    145  ii = ii + 1
    146  cicevars(ii)%var_name = 'ulon'
    147  cicevars(ii)%long_name = 'Longitude of corner (Bu) points'
    148  cicevars(ii)%unit_name = 'radians'
    149 
    150  ii = ii + 1
    151  cicevars(ii)%var_name = 'ulat'
    152  cicevars(ii)%long_name = 'Latitude of corner (Bu) points'
    153  cicevars(ii)%unit_name = 'radians'
    154 
    155  ii = ii + 1
    156  cicevars(ii)%var_name = 'hte'
    157  cicevars(ii)%long_name = 'Distance between corner (Bu) points, east face'
    158  cicevars(ii)%unit_name = 'cm'
    159 
    160  ii = ii + 1
    161  cicevars(ii)%var_name = 'htn'
    162  cicevars(ii)%long_name = 'Distance between corner (Bu) points, north face'
    163  cicevars(ii)%unit_name = 'cm'
    164 
    165  ii = ii + 1
    166  cicevars(ii)%var_name = 'angle'
    167  cicevars(ii)%long_name = 'Angle at corner (Bu) points'
    168  cicevars(ii)%unit_name = 'radians'
    169 
    170  ii = ii + 1
    171  cicevars(ii)%var_name = 'kmt'
    172  cicevars(ii)%long_name = 'ocean fraction at T-cell centers'
    173  cicevars(ii)%unit_name = 'none'
    174  cicevars(ii)%var_type = 'i4'
    175 
    176  end subroutine cicevars_typedefine
    180 
    181  subroutine scripvars_typedefine
    183  ! local variables
    184  integer :: ii = 0
    185 
    186  !default
    187  scripvars(:)%long_name = ''
    188  scripvars(:)%var_type = 'r8'
    189  scripvars(:)%vertices = ''
    190 
    191  ii = ii + 1
    192  scripvars(ii)%var_name = 'grid_center_lat'
    193  scripvars(ii)%unit_name = 'degrees'
    194 
    195  ii = ii + 1
    196  scripvars(ii)%var_name = 'grid_center_lon'
    197  scripvars(ii)%unit_name = 'degrees'
    198 
    199  ii = ii + 1
    200  scripvars(ii)%var_name = 'grid_corner_lat'
    201  scripvars(ii)%unit_name = 'degrees'
    202 
    203  ii = ii + 1
    204  scripvars(ii)%var_name = 'grid_corner_lon'
    205  scripvars(ii)%unit_name = 'degrees'
    206 
    207  end subroutine scripvars_typedefine
    208 end module vartypedefs
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/vertices_8F90.html b/ver-1.11.0/cpld_gridgen/vertices_8F90.html new file mode 100644 index 000000000..6584c3de2 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vertices_8F90.html @@ -0,0 +1,371 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/vertices.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vertices.F90 File Reference
    +
    +
    + +

    Fill the vertices for any stagger location. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine vertices::fill_bottom (iVert, jVert, lat, lon, latvert, lonvert, dlat)
     Fill the vertices for a stagger location along the bottom j-row. More...
     
    subroutine vertices::fill_top (iVert, jVert, lat, lon, latvert, lonvert, xlat, xlon)
     Fill the vertices for a stagger location along the top j-row. More...
     
    subroutine vertices::fill_vertices (jbeg, jend, iVert, jVert, lat, lon, latvert, lonvert)
     Fill the vertices for any stagger location between bounding j-rows. More...
     
    +

    Detailed Description

    +

    Fill the vertices for any stagger location.

    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    +

    This module fills the vertices for any stagger location. The i,j indices of the source lat and lon arrays are modified by the vertex offsets to give the latitudes and longitues of each vertex for the desired stagger lcation. The routine fill_vertices will fill the vertex values of all non-boundary rows for any stagger locations. For the Ct and Cu grids, the fill_bottom routine fills the bottom most vertex values. For the Cv and Bu grids, the routine fill_top fills the topmost vertex values using the values from across the tripole seam.

    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition in file vertices.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ fill_bottom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine vertices::fill_bottom (integer, dimension(nv), intent(in) iVert,
    integer, dimension(nv), intent(in) jVert,
    real(dbl_kind), dimension(ni,nj), intent(in) lat,
    real(dbl_kind), dimension(ni,nj), intent(in) lon,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) latvert,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) lonvert,
    real(dbl_kind), dimension(ni), intent(in) dlat 
    )
    +
    + +

    Fill the vertices for a stagger location along the bottom j-row.

    +
    Parameters
    + + + + + + + + +
    [in]iVertthe i-offset applied to the i-index of a stagger grid
    [in]jVertthe j-offset applied to the j-index of a stagger grid
    [in]latthe latitudes of the stagger grid which define each vertex
    [in]lonthe longitudes of the stagger grid which define each vertex
    [in]dlatthe approximate latitude along the bottom-most row
    [out]latvertthe latitudes of each vertex
    [out]lonvertthe longitudes of each vertex
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 69 of file vertices.F90.

    + +
    +
    + +

    ◆ fill_top()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine vertices::fill_top (integer, dimension(nv), intent(in) iVert,
    integer, dimension(nv), intent(in) jVert,
    real(dbl_kind), dimension(ni,nj), intent(in) lat,
    real(dbl_kind), dimension(ni,nj), intent(in) lon,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) latvert,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) lonvert,
    real(dbl_kind), dimension(ni), intent(in) xlat,
    real(dbl_kind), dimension(ni), intent(in) xlon 
    )
    +
    + +

    Fill the vertices for a stagger location along the top j-row.

    +
    Parameters
    + + + + + + + + + +
    [in]iVertthe i-offset applied to the i-index of a stagger grid
    [in]jVertthe j-offset applied to the j-index of a stagger grid
    [in]latthe latitudes of the stagger grid which define each vertex
    [in]lonthe longitudes of the stagger grid which define each vertex
    [in]xlatthe latitude across the tripole seam
    [in]xlonthe longitude across the tripole seam
    [out]latvertthe latitudes of each vertex
    [out]lonvertthe longitudes of each vertex
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 115 of file vertices.F90.

    + +
    +
    + +

    ◆ fill_vertices()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine vertices::fill_vertices (integer, intent(in) jbeg,
    integer, intent(in) jend,
    integer, dimension(nv), intent(in) iVert,
    integer, dimension(nv), intent(in) jVert,
    real(dbl_kind), dimension(ni,nj), intent(in) lat,
    real(dbl_kind), dimension(ni,nj), intent(in) lon,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) latvert,
    real(dbl_kind), dimension(ni,nj,nv), intent(out) lonvert 
    )
    +
    + +

    Fill the vertices for any stagger location between bounding j-rows.

    +
    Parameters
    + + + + + + + + + +
    [in]jbegthe beginning row
    [in]jendthe ending row
    [in]iVertthe i-offset applied to the i-index of a stagger grid
    [in]jVertthe j-offset applied to the j-index of a stagger grid
    [in]latthe latitudes of the stagger grid which define each vertex
    [in]lonthe longitudes of the stagger grid which define each vertex
    [out]latvertthe latitudes of each vertex
    [out]lonvertthe longitudes of each vertex
    +
    +
    +
    Author
    Denis.nosp@m.e.Wo.nosp@m.rthen.nosp@m.@noa.nosp@m.a.gov
    + +

    Definition at line 34 of file vertices.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/cpld_gridgen/vertices_8F90.js b/ver-1.11.0/cpld_gridgen/vertices_8F90.js new file mode 100644 index 000000000..9ca4ec048 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vertices_8F90.js @@ -0,0 +1,6 @@ +var vertices_8F90 = +[ + [ "fill_bottom", "vertices_8F90.html#a807c3ed2e29f43d2054ffe2352248e02", null ], + [ "fill_top", "vertices_8F90.html#ade5a20aaa5c5b0011bcec12512ea1b80", null ], + [ "fill_vertices", "vertices_8F90.html#a6e242198634b6672399bb0e8f21821b9", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/cpld_gridgen/vertices_8F90_source.html b/ver-1.11.0/cpld_gridgen/vertices_8F90_source.html new file mode 100644 index 000000000..3d4042646 --- /dev/null +++ b/ver-1.11.0/cpld_gridgen/vertices_8F90_source.html @@ -0,0 +1,105 @@ + + + + + + + +cpld_gridgen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/cpld_gridgen.fd/vertices.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    cpld_gridgen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vertices.F90
    +
    +
    +Go to the documentation of this file.
    1 
    12 
    13 module vertices
    14 
    15  use gengrid_kinds, only : dbl_kind
    16  use grdvars, only : ni,nj,nv
    17 
    18  implicit none
    19 
    20 contains
    32 
    33  subroutine fill_vertices(jbeg,jend,iVert,jVert,lat,lon,latvert,lonvert)
    34 
    35  integer, intent( in) :: jbeg,jend
    36  integer, intent( in) :: iVert(nv), jVert(nv)
    37  real(dbl_kind), dimension(ni,nj), intent( in) :: lat, lon
    38 
    39  real(dbl_kind), dimension(ni,nj,nv), intent(out) :: latvert,lonvert
    40 
    41  ! local variables
    42  integer :: i,j,n,ii,jj
    43 
    44  do j = jbeg,jend
    45  do i = 1,ni
    46  do n = 1,nv
    47  ii = i + ivert(n); jj = j + jvert(n)
    48  if(ii .eq. 0)ii = ni
    49  if(ii .eq. ni+1)ii = 1
    50  latvert(i,j,n) = lat(ii,jj)
    51  lonvert(i,j,n) = lon(ii,jj)
    52  enddo
    53  enddo
    54  enddo
    55  end subroutine fill_vertices
    56 
    67 
    68  subroutine fill_bottom(iVert,jVert,lat,lon,latvert,lonvert,dlat)
    69 
    70  integer, intent( in) :: iVert(nv), jVert(nv)
    71  real(dbl_kind), dimension(ni,nj), intent( in) :: lat, lon
    72  real(dbl_kind), dimension(ni), intent( in) :: dlat
    73 
    74  real(dbl_kind), dimension(ni,nj,nv), intent(out) :: latvert,lonvert
    75 
    76  ! local variables
    77  integer :: i,j,n,ii,jj
    78 
    79  ! fill in grid bottom (j=1)
    80  ! vertices 1,2 are available
    81  ! vertices 3,4 must be set manually
    82  j = 1
    83  do i = 1,ni
    84  do n = 1,2
    85  ii = i + ivert(n); jj = j + jvert(n)
    86  if(ii .eq. 0)ii = ni
    87  if(ii .eq. ni+1)ii = 1
    88  latvert(i,j,n) = lat(ii,jj)
    89  lonvert(i,j,n) = lon(ii,jj)
    90  enddo
    91  do n = 3,4
    92  ii = i + ivert(n)
    93  if(ii .eq. 0)ii = ni
    94  if(ii .eq. ni+1)ii = 1
    95  latvert(i,j, n) = dlat(ii)
    96  enddo
    97  lonvert(i,j, 3) = lonvert(i,j,2)
    98  lonvert(i,j, 4) = lonvert(i,j,1)
    99  enddo
    100  end subroutine fill_bottom
    101 
    113 
    114  subroutine fill_top(iVert,jVert,lat,lon,latvert,lonvert,xlat,xlon)
    116  integer, intent( in) :: iVert(nv), jVert(nv)
    117  real(dbl_kind), dimension(ni,nj), intent( in) :: lat, lon
    118  real(dbl_kind), dimension(ni), intent( in) :: xlat, xlon
    119 
    120  real(dbl_kind), dimension(ni,nj,nv), intent(out) :: latvert,lonvert
    121 
    122  ! local variables
    123  integer :: i,j,n,ii,jj
    124 
    125  ! fill in grid top (j=nj)
    126  ! vertices 3,4 are available
    127  ! vertices 1,2 must be set manually using 'across seam' values
    128  j = nj
    129  do i = 1,ni
    130  do n = 3,4
    131  ii = i + ivert(n); jj = j + jvert(n)
    132  if(ii .eq. 0)ii = ni
    133  if(ii .eq. ni+1)ii = 1
    134  latvert(i,j,n) = lat(ii,jj)
    135  lonvert(i,j,n) = lon(ii,jj)
    136  enddo
    137  do n = 1,2
    138  ii = i + ivert(n)
    139  if(ii .eq. 0)ii = ni
    140  if(ii .eq. ni+1)ii = 1
    141  latvert(i,j,n) = xlat(ii)
    142  lonvert(i,j,n) = xlon(ii)
    143  enddo
    144  enddo
    145  !latCv_vert(i,j, 1) = latCv_vert(i,j,4)
    146  !latCv_vert(i,j, 2) = latCv_vert(i,j,3)
    147  !lonCv_vert(i,j, 1) = lonCv_vert(i,j,4)+240.d0
    148  !lonCv_vert(i,j, 2) = lonCv_vert(i,j,3)+240.d0
    149  end subroutine fill_top
    150 end module vertices
    +
    + + + + diff --git a/ver-1.11.0/doc.png b/ver-1.11.0/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/doxygen.css b/ver-1.11.0/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/doxygen.png b/ver-1.11.0/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/dynsections.js b/ver-1.11.0/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/docs/README.md
    +
    +
    +
    1 This program blends National Ice Center sea ice cover and EMC
    2 sea ice concentration data to create a global sea ice analysis.
    3 
    4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/bc_s.png b/ver-1.11.0/emcsfc_ice_blend/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/bdwn.png b/ver-1.11.0/emcsfc_ice_blend/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.html b/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.html new file mode 100644 index 000000000..9ca15d67a --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.html @@ -0,0 +1,112 @@ + + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    emcsfc_ice_blend.fd Directory Reference
    +
    +
    + + + + + +

    +Files

    file  emcsfc_ice_blend.f90 [code]
     Create blended ice product for gfs/gdas cycles.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.js b/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.js new file mode 100644 index 000000000..decd1c9db --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/dir_b0d2d728ad531c7471cc0482a04e8fc2.js @@ -0,0 +1,4 @@ +var dir_b0d2d728ad531c7471cc0482a04e8fc2 = +[ + [ "emcsfc_ice_blend.f90", "emcsfc__ice__blend_8f90.html", "emcsfc__ice__blend_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..696a3652b --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..ef6f99375 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "emcsfc_ice_blend.fd", "dir_b0d2d728ad531c7471cc0482a04e8fc2.html", "dir_b0d2d728ad531c7471cc0482a04e8fc2" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_ice_blend/doc.png b/ver-1.11.0/emcsfc_ice_blend/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/doxygen.css b/ver-1.11.0/emcsfc_ice_blend/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/emcsfc_ice_blend/doxygen.png b/ver-1.11.0/emcsfc_ice_blend/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/dynsections.js b/ver-1.11.0/emcsfc_ice_blend/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/docs/emc_ice_blend.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/docs/emc_ice_blend.md
    +
    +
    +
    1 
    2 # emcsfc_ice_blend
    3 
    4 # Introduction
    5 
    6 The emcsfc_ice_blend.f90 program blends National Ice Center sea ice
    7 cover and EMC sea ice concentration data to create a global sea ice
    8 analysis used to update the GFS once per day.
    9 
    10 This document is part of the <a href="../index.html">UFS_UTILS
    11 documentation</a>.
    12 
    13 The emcsfc_ice_blend program is part of the
    14 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.html b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.html new file mode 100644 index 000000000..59f34269d --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.html @@ -0,0 +1,195 @@ + + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/emcsfc_ice_blend.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    emcsfc_ice_blend.f90 File Reference
    +
    +
    + +

    Create blended ice product for gfs/gdas cycles. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program emcsfc_ice_blend
     Create a global 5-minute blended ice concentration dataset for use by GDAS/GFS. More...
     
    +

    Detailed Description

    +

    Create blended ice product for gfs/gdas cycles.

    +
    Author
    George Gayno NCEP/EMC
    +
    Date
    2014-03-20
    + +

    Definition in file emcsfc_ice_blend.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ emcsfc_ice_blend()

    + +
    +
    + + + + + + + +
    program emcsfc_ice_blend ()
    +
    + +

    Create a global 5-minute blended ice concentration dataset for use by GDAS/GFS.

    +

    This blend is created from National Ice Center Interactive Multisensor Snow and Ice Mapping System (IMS) data, and the NCEP/MMAB global 5-minute ice concentration data.

    +

    Program History Log

      +
    • 2014-03-20 Initial version.
    • +
    • 2014-10-20 Use grib2 for all i/o. Mask out 'land' points in the blended analysis using a bitmap instead of the '1.57' flag.
    • +
    +

    input files:

      +
    • fort.11 - NH IMS ice data, interpolated to the 5-minute grid (grib 2)
    • +
    • fort.15 - global 5-minute MMAB ice concentration file (grib 2)
    • +
    • fort.17 - global 5-minute MMAB land mask file (grib 2).
      + output files:
    • +
    • fort.51 - global 5-minute blended ice concentration file (grib 2)
    • +
    +

    condition codes:

      +
    • 0 - normal run
    • +
    • 1 - bad open of 5-minute MMAB land mask file
    • +
    • 2 - bad read of 5-minute MMAB land mask grib record
    • +
    • 5 - bad open of IMS ice file
    • +
    • 7 - bad read of IMS ice grib record
    • +
    • 8 - bad open of 5-minute MMAB ice concentration file
    • +
    • 9 - bad read of 5-minute MMAB ice concentration grib header
    • +
    • 10 - bad read of 5-minute MMAB ice concentration grib record
    • +
    • 16 - bad open of 5-minute blended ice concentration file
    • +
    • 17 - bad write of 5-minute blended ice concentration file
    • +
    +

    This program creates a sea ice concentration file suitable for use by the GFS global cycle program. The 5-minute ice concentration file from MMAB can't be used 'as is' because the MMAB data can't give a reliable analysis for small lakes now resolved by the GFS land mask.

    +

    This program creates an ice concentration file on the same 5-minute grid as the MMAB data using IMS data from the National Ice Center to fill in small lakes. The IMS data is NH only and is a yes/no flag (not a concentration). The IMS data is on a 4km polar stereographic grid and must be interpolated to the MMAB 5-minute grid (NCEP grid 173) before ingest to this program. This interpolation may be done using copygb2 as follows:

    +
    + grid173="0 0 0 0 0 0 0 0 4320 2160 0 0 89958000 42000 48 -89958000 359958000 83000 83000 0"
    + copygb2 -x -i3 -g "$grid173" ims.icec.grib2 ims.icec.5min.grib2
    + 

    When using the "budget" interpolation option (-i3), the IMS yes/no flag will be converted to a pseudo ice concentration.

    +

    The IMS data contains a land/water mask. Ice concentration is only specified at 'water' points.

    +

    The 5-minute data mask contains 'land', 'coast' and 'water' points. Ice concentration is specified at 'coast' and 'water', but 'coast' points have error and are not used here.

    +

    The blending process is as follows in the NH:

      +
    1. If IMS indicates 'land', then the blended value is set to 'land' and is bitmapped out.
    2. +
    3. If the IMS is 'water', and the MMAB data point is 'coast' or 'land', the IMS ice concentration is used as the blended value.
    4. +
    5. If IMS and MMAB indicate a point as water, then
        +
      • The blended value is set to zero if the IMS concentration is less than 50%.
      • +
      • If the IMS concentration is >=50%, then the neighboring 5-minute data is checked for ice.
        + * If the 5-minute point is ice free, but at least one of its neighbors has ice, the blended value is set to the IMS ice concentration. Examination of the 5-minute showed isolated open water points within large areas of ice. This logic attempts to remove these likely wrong points.
          +
        • If (i) is false, then the blended value is set to the 5-minute value or 15%, whichever is greater. 15% is the lower threshold in the MMAB 5-minute product.
        • +
        +
      • +
      +
    6. +
    +

    In the SH, the blended value is simply the 5-minute ice concentration at 'water' points. 'Coast' and 'land' points are bitmapped out.

    +
    Returns
    0 for success, error code otherwise.
    +
    Author
    George Gayno NCEP/EMC
    + +

    Definition at line 93 of file emcsfc_ice_blend.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.js b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.js new file mode 100644 index 000000000..f7b069ba6 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90.js @@ -0,0 +1,4 @@ +var emcsfc__ice__blend_8f90 = +[ + [ "emcsfc_ice_blend", "emcsfc__ice__blend_8f90.html#a757370cc125ced1630b10909ca47de94", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90_source.html b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90_source.html new file mode 100644 index 000000000..c302ad4c3 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/emcsfc__ice__blend_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +emcsfc_ice_blend: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_ice_blend.fd/emcsfc_ice_blend.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    emcsfc_ice_blend.f90
    +
    +
    +Go to the documentation of this file.
    1 
    6 
    94 
    95  use grib_mod ! grib 2 libraries
    96 
    97  implicit none
    98 
    99  type(gribfield) :: ims
    100  type(gribfield) :: mask
    101  type(gribfield) :: mmab
    102  character(len=200) :: infile, outfile
    103  integer, parameter :: imax=4320
    104  integer, parameter :: jmax=2160
    105  integer :: i,j, istat, iunit
    106  integer :: ii, iii, jj, jjj, count
    107  integer :: lugi
    108  integer :: jdisc
    109  integer :: jgdtn
    110  integer :: jpdtn
    111  integer :: k
    112  integer :: jids(200)
    113  integer :: jgdt(200)
    114  integer :: jpdt(200)
    115  integer, allocatable :: mask_5min(:,:), mask_ims(:,:)
    116 
    117  logical*1, allocatable :: lbms_ims(:,:)
    118  logical :: unpack
    119 
    120  real, allocatable :: dummy(:,:)
    121  real, allocatable :: ice_ims(:,:), ice_5min(:,:), ice_blend(:,:)
    122 
    123 !--------------------------------------------------------------------------------
    124 ! Read the 5-minute mmab land mask file. Required because the 5-minute data does
    125 ! not have a bitmap.
    126 !--------------------------------------------------------------------------------
    127 
    128  call w3tagb('EMCSFC_ICE_BLEND',2014,75,0000,'EMC')
    129 
    130  call getenv("FORT17", infile)
    131  iunit=17
    132  print*,"- OPEN 5-MINUTE LAND-SEA MASK FILE: ", trim(infile)
    133  call baopenr (iunit, infile, istat)
    134  if (istat /= 0) then
    135  print*,'FATAL ERROR: BAD OPEN. ISTAT: ', istat
    136  stop 1
    137  endif
    138 
    139  nullify(mask%idsect)
    140  nullify(mask%local)
    141  nullify(mask%list_opt)
    142  nullify(mask%igdtmpl)
    143  nullify(mask%ipdtmpl)
    144  nullify(mask%coord_list)
    145  nullify(mask%idrtmpl)
    146  nullify(mask%bmap)
    147  nullify(mask%fld)
    148 
    149  j = 0 ! search at beginning of file
    150  lugi = 0 ! no grib index file
    151  jdisc = 2 ! search for discipline
    152  jpdtn = 0 ! search for product definition template number
    153  jgdtn = 0 ! search for grid definition template number; 0 - lat/lon grid
    154  jids = -9999 ! array of values in identification section, set to wildcard
    155  jgdt = -9999 ! array of values in grid definition template 3.m
    156  jpdt = -9999 ! array of values in product definition template 4.n
    157  jpdt(1) = 0 ! search for parameter category
    158  jpdt(2) = 0 ! search for parameter number
    159  unpack = .true. ! unpack data
    160 
    161  print*,"- DEGRIB DATA"
    162  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    163  unpack, k, mask, istat)
    164 
    165  if (istat /= 0) then
    166  print*,'FATAL ERROR: BAD DEGRIB OF DATA. ISTAT: ', istat
    167  stop 2
    168  endif
    169 
    170  call baclose (iunit,istat)
    171 
    172 !--------------------------------------------------------------------------------
    173 ! The MMAB mask codes are:
    174 !
    175 ! 0 - water
    176 ! 1.57 - land
    177 ! 1.95 - coast
    178 !
    179 ! Convert these to something easier to work with.
    180 !--------------------------------------------------------------------------------
    181 
    182  allocate(dummy(imax,jmax))
    183  dummy=reshape(mask%fld , (/imax,jmax/) )
    184 
    185  if(associated(mask%idsect)) deallocate(mask%idsect)
    186  if(associated(mask%local)) deallocate(mask%local)
    187  if(associated(mask%list_opt)) deallocate(mask%list_opt)
    188  if(associated(mask%igdtmpl)) deallocate(mask%igdtmpl)
    189  if(associated(mask%ipdtmpl)) deallocate(mask%ipdtmpl)
    190  if(associated(mask%coord_list)) deallocate(mask%coord_list)
    191  if(associated(mask%idrtmpl)) deallocate(mask%idrtmpl)
    192  if(associated(mask%bmap)) deallocate(mask%bmap)
    193  if(associated(mask%fld)) deallocate(mask%fld)
    194 
    195  allocate(mask_5min(imax,jmax))
    196 
    197  do j = 1, jmax
    198  do i = 1, imax
    199  if (dummy(i,j) < 0.1) then
    200  mask_5min(i,j)=0 ! water
    201  elseif (dummy(i,j) > 1.94) then
    202  mask_5min(i,j)=1 ! coast
    203  else
    204  mask_5min(i,j)=2 ! land
    205  endif
    206  enddo
    207  enddo
    208 
    209  deallocate(dummy)
    210 
    211 !--------------------------------------------------------------------------------
    212 ! Read ims data that has been interpolated to the 5-min grid.
    213 !--------------------------------------------------------------------------------
    214 
    215  call getenv("FORT11", infile)
    216  iunit=11
    217  print*,"- OPEN IMS ICE DATA: ", trim(infile)
    218  call baopenr (iunit, infile, istat)
    219  if (istat /= 0) then
    220  print*,'FATAL ERROR: BAD OPEN. ISTAT: ', istat
    221  stop 5
    222  endif
    223 
    224  nullify(ims%idsect)
    225  nullify(ims%local)
    226  nullify(ims%list_opt)
    227  nullify(ims%igdtmpl)
    228  nullify(ims%ipdtmpl)
    229  nullify(ims%coord_list)
    230  nullify(ims%idrtmpl)
    231  nullify(ims%bmap)
    232  nullify(ims%fld)
    233 
    234  j = 0 ! search at beginning of file
    235  lugi = 0 ! no grib index file
    236  jdisc = 10 ! search for discipline, ocean products
    237  jpdtn = 0 ! search for product definition template number
    238  jgdtn = 0 ! search for grid definition template number; 0 - lat/lon grid
    239  jids = -9999 ! array of values in identification section, set to wildcard
    240  jgdt = -9999 ! array of values in grid definition template 3.m
    241  jpdt = -9999 ! array of values in product definition template 4.n
    242  jpdt(1) = 2 ! search for parameter category, ice
    243  jpdt(2) = 0 ! search for parameter number, ice cover
    244  unpack = .true. ! unpack data
    245 
    246  print*,"- DEGRIB DATA"
    247  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    248  unpack, k, ims, istat)
    249 
    250  if (istat /= 0) then
    251  print*,'FATAL ERROR: BAD DEGRIB OF DATA. ISTAT: ', istat
    252  stop 7
    253  endif
    254 
    255  call baclose (iunit,istat)
    256 
    257  allocate (lbms_ims(imax,jmax))
    258  lbms_ims=reshape(ims%bmap , (/imax,jmax/) )
    259  allocate (ice_ims(imax,jmax))
    260  ice_ims=reshape(ims%fld , (/imax,jmax/) )
    261 
    262  print*,"- CREATE IMS LAND-SEA MASK FROM BITMAP."
    263  allocate(mask_ims(imax,jmax))
    264  mask_ims = 0 ! water
    265  do j = 1, jmax
    266  do i = 1, imax
    267  if (.not.lbms_ims(i,j)) mask_ims(i,j) = 2 ! land
    268  enddo
    269  enddo
    270 
    271  deallocate(lbms_ims)
    272 
    273  if(associated(ims%idsect)) deallocate(ims%idsect)
    274  if(associated(ims%local)) deallocate(ims%local)
    275  if(associated(ims%list_opt)) deallocate(ims%list_opt)
    276  if(associated(ims%igdtmpl)) deallocate(ims%igdtmpl)
    277  if(associated(ims%ipdtmpl)) deallocate(ims%ipdtmpl)
    278  if(associated(ims%coord_list)) deallocate(ims%coord_list)
    279  if(associated(ims%idrtmpl)) deallocate(ims%idrtmpl)
    280  if(associated(ims%bmap)) deallocate(ims%bmap)
    281  if(associated(ims%fld)) deallocate(ims%fld)
    282 
    283 !--------------------------------------------------------------------------------
    284 ! Now read the MMAB 5-minute data.
    285 !--------------------------------------------------------------------------------
    286 
    287  call getenv("FORT15", infile)
    288  iunit=15
    289  print*,"- OPEN 5-MINUTE ICE CONCENTRATION DATA: ", trim(infile)
    290  call baopenr (iunit, infile, istat)
    291  if (istat /= 0) then
    292  print*,'FATAL ERROR: BAD OPEN. ISTAT: ', istat
    293  stop 8
    294  endif
    295 
    296  nullify(mmab%idsect)
    297  nullify(mmab%local)
    298  nullify(mmab%list_opt)
    299  nullify(mmab%igdtmpl)
    300  nullify(mmab%ipdtmpl)
    301  nullify(mmab%coord_list)
    302  nullify(mmab%idrtmpl)
    303  nullify(mmab%bmap)
    304  nullify(mmab%fld)
    305 
    306  j = 0 ! search at beginning of file
    307  lugi = 0 ! no grib index file
    308  jdisc = 10 ! search for discipline, ocean products
    309  jpdtn = 0 ! search for product definition template number
    310  jgdtn = 0 ! search for grid definition template number; 0 - lat/lon grid
    311  jids = -9999 ! array of values in identification section, set to wildcard
    312  jgdt = -9999 ! array of values in grid definition template 3.m
    313  jpdt = -9999 ! array of values in product definition template 4.n
    314  jpdt(1) = 2 ! search for parameter category, ice
    315  jpdt(2) = 0 ! search for parameter number, ice cover
    316  unpack = .true. ! unpack data
    317 
    318  print*,"- DEGRIB DATA"
    319  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    320  unpack, k, mmab, istat)
    321 
    322  if (istat /= 0) then
    323  print*,'FATAL ERROR: BAD DEGRIB OF DATA. ISTAT: ', istat
    324  stop 9
    325  endif
    326 
    327  allocate (ice_5min(imax,jmax))
    328  ice_5min=reshape(mmab%fld , (/imax,jmax/) )
    329 
    330  call baclose (iunit,istat)
    331 
    332 !--------------------------------------------------------------------------------
    333 ! Blend IMS and 5-minute data in northern hemisphere.
    334 !--------------------------------------------------------------------------------
    335 
    336  print*,"- BLEND IMS AND 5-MINUTE DATA IN NH."
    337  allocate(ice_blend(imax,jmax))
    338  ice_blend=-9. ! flag for land. will be bitmapped out.
    339  do j = 1, (jmax/2)
    340  do i = 1, imax
    341  if (mask_ims(i,j) == 0) then ! ims water point
    342  if (mask_5min(i,j) > 0) then ! 5-min land
    343  ice_blend(i,j)=ice_ims(i,j) ! use ims value
    344  else ! ims and 5min mask indicate water point
    345  if (ice_ims(i,j) > .5) then ! ims indicates ice
    346  count = 0
    347  do jj = -1, 1
    348  do ii = -1, 1
    349  if (ii == 0 .and. jj == 0) cycle
    350  jjj = j + jj
    351  if (jjj < 1) cycle
    352  iii = ii + i
    353  if (iii < 1) iii = iii + imax
    354  if (iii > imax) iii = iii - imax
    355  if (mask_5min(iii,jjj) == 0) then ! 5-min water
    356  if (ice_5min(iii,jjj) >= 0.5) then
    357  count = count + 1
    358  endif
    359  endif
    360  enddo
    361  enddo
    362  if (count > 0 .and. ice_5min(i,j) == 0.0) then
    363  ice_blend(i,j) = ice_ims(i,j)
    364  else
    365  ice_blend(i,j) = max(ice_5min(i,j),0.15)
    366  endif
    367  else ! ims indicates open water.
    368  ice_blend(i,j) = 0.
    369  endif
    370  endif
    371  end if
    372  enddo
    373  enddo
    374 
    375  deallocate(mask_ims, ice_ims)
    376 
    377 !--------------------------------------------------------------------------------
    378 ! In the SH, the blend is simply the 5-minute data. Only consider 'water'
    379 ! points.
    380 !--------------------------------------------------------------------------------
    381 
    382  do j = (jmax/2)+1, jmax
    383  do i = 1, imax
    384  if (mask_5min(i,j) == 0) then ! 'water'
    385  ice_blend(i,j) = ice_5min(i,j)
    386  endif
    387  enddo
    388  enddo
    389 
    390  deallocate(mask_5min, ice_5min)
    391 
    392 !--------------------------------------------------------------------------------
    393 ! Output blended data to a grib 2 file.
    394 !--------------------------------------------------------------------------------
    395 
    396  call getenv("FORT51", outfile)
    397  iunit=51
    398  print*,"- OUTPUT BLENDED ICE DATA TO ", trim(outfile)
    399  print*,"- OPEN FILE."
    400  call baopenw(iunit, outfile, istat)
    401  if (istat /= 0) then
    402  print*,'FATAL ERROR: BAD OPEN. ISTAT: ', istat
    403  stop 16
    404  endif
    405 
    406 !--------------------------------------------------------------------------------
    407 ! Use grib header information from the mmab file (stored in the mmab data
    408 ! structure) with the following exceptions:
    409 !
    410 ! 1) Increase precision of corner point lat/lons and dx/dy.
    411 ! 2) Use simple packing instead of jpeg compression. Grads has problems
    412 ! with the latter.
    413 ! 3) Use a bitmap to mask out land points instead of the mmab convention
    414 ! of using '0' at land points.
    415 !--------------------------------------------------------------------------------
    416 
    417  mmab%igdtmpl(12)=89958333
    418  mmab%igdtmpl(13)=41667
    419  mmab%igdtmpl(15)=-89958333
    420  mmab%igdtmpl(16)=359958333
    421  mmab%igdtmpl(17)=83333
    422  mmab%igdtmpl(18)=83333
    423 
    424  deallocate (mmab%idrtmpl) ! use simple packing
    425  mmab%idrtnum=0
    426  mmab%idrtlen=5
    427  allocate(mmab%idrtmpl(mmab%idrtlen))
    428  mmab%idrtmpl=0
    429  mmab%idrtmpl(3) = 2 ! use two decimal points.
    430 
    431  mmab%fld=reshape(ice_blend, (/imax*jmax/) )
    432 
    433  mmab%ibmap=0 ! use bitmap
    434  allocate (mmab%bmap(imax*jmax))
    435  mmab%bmap=.true.
    436  where (mmab%fld < -8.) mmab%bmap=.false. ! land
    437 
    438  print*,"- GRIB DATA."
    439  call putgb2(iunit, mmab, istat)
    440  if (istat /= 0) then
    441  print*,'FATAL ERROR: BAD WRITE. ISTAT: ', istat
    442  stop 17
    443  endif
    444 
    445  call baclose(iunit, istat)
    446 
    447  deallocate(ice_blend)
    448 
    449  if(associated(mmab%idsect)) deallocate(mmab%idsect)
    450  if(associated(mmab%local)) deallocate(mmab%local)
    451  if(associated(mmab%list_opt)) deallocate(mmab%list_opt)
    452  if(associated(mmab%igdtmpl)) deallocate(mmab%igdtmpl)
    453  if(associated(mmab%ipdtmpl)) deallocate(mmab%ipdtmpl)
    454  if(associated(mmab%coord_list)) deallocate(mmab%coord_list)
    455  if(associated(mmab%idrtmpl)) deallocate(mmab%idrtmpl)
    456  if(associated(mmab%bmap)) deallocate(mmab%bmap)
    457  if(associated(mmab%fld)) deallocate(mmab%fld)
    458 
    459  print*,''
    460  print*,'****************************'
    461  print*,'**** NORMAL TERMINATION ****'
    462  print*,'****************************'
    463 
    464  call w3tage('EMCSFC_ICE_BLEND')
    465 
    466  stop
    467 
    468  end program emcsfc_ice_blend
    program emcsfc_ice_blend
    Create a global 5-minute blended ice concentration dataset for use by GDAS/GFS.
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/files.html b/ver-1.11.0/emcsfc_ice_blend/files.html new file mode 100644 index 000000000..20b53fb0d --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/files.html @@ -0,0 +1,111 @@ + + + + + + + +emcsfc_ice_blend: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + +
      sorc
      emcsfc_ice_blend.fd
     emcsfc_ice_blend.f90Create blended ice product for gfs/gdas cycles
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/files_dup.js b/ver-1.11.0/emcsfc_ice_blend/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/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/ver-1.11.0/emcsfc_ice_blend/folderclosed.png b/ver-1.11.0/emcsfc_ice_blend/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/globals.html b/ver-1.11.0/emcsfc_ice_blend/globals.html new file mode 100644 index 000000000..6b5f6bca2 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/globals.html @@ -0,0 +1,105 @@ + + + + + + + +emcsfc_ice_blend: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/globals_func.html b/ver-1.11.0/emcsfc_ice_blend/globals_func.html new file mode 100644 index 000000000..2703ebfa6 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/globals_func.html @@ -0,0 +1,105 @@ + + + + + + + +emcsfc_ice_blend: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/index.html b/ver-1.11.0/emcsfc_ice_blend/index.html new file mode 100644 index 000000000..c26c53db5 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/index.html @@ -0,0 +1,109 @@ + + + + + + + +emcsfc_ice_blend: emcsfc_ice_blend + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    emcsfc_ice_blend
    +
    +
    +

    +Introduction

    +

    The emcsfc_ice_blend.f90 program blends National Ice Center sea ice cover and EMC sea ice concentration data to create a global sea ice analysis used to update the GFS once per day.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The emcsfc_ice_blend program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/jquery.js b/ver-1.11.0/emcsfc_ice_blend/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    This program blends National Ice Center sea ice cover and EMC sea ice concentration data to create a global sea ice analysis.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/menu.js b/ver-1.11.0/emcsfc_ice_blend/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/emcsfc_ice_blend/menudata.js b/ver-1.11.0/emcsfc_ice_blend/menudata.js new file mode 100644 index 000000000..312d00e07 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/menudata.js @@ -0,0 +1,31 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/emcsfc_ice_blend/nav_f.png b/ver-1.11.0/emcsfc_ice_blend/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/nav_g.png b/ver-1.11.0/emcsfc_ice_blend/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +emcsfc_ice_blend: Related Pages + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    emcsfc_ice_blend +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_ice_blend/resize.js b/ver-1.11.0/emcsfc_ice_blend/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/emcsfc_ice_blend/search/all_0.html b/ver-1.11.0/emcsfc_ice_blend/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/all_0.js b/ver-1.11.0/emcsfc_ice_blend/search/all_0.js new file mode 100644 index 000000000..fe98e62ac --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['emcsfc_5fice_5fblend',['emcsfc_ice_blend',['../emcsfc__ice__blend_8f90.html#a757370cc125ced1630b10909ca47de94',1,'emcsfc_ice_blend.f90']]], + ['emcsfc_5fice_5fblend_2ef90',['emcsfc_ice_blend.f90',['../emcsfc__ice__blend_8f90.html',1,'']]], + ['emcsfc_5fice_5fblend',['emcsfc_ice_blend',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/all_1.html b/ver-1.11.0/emcsfc_ice_blend/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/all_1.js b/ver-1.11.0/emcsfc_ice_blend/search/all_1.js new file mode 100644 index 000000000..bee27405a --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_ice_blend_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/close.png b/ver-1.11.0/emcsfc_ice_blend/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/search/files_0.html b/ver-1.11.0/emcsfc_ice_blend/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/files_0.js b/ver-1.11.0/emcsfc_ice_blend/search/files_0.js new file mode 100644 index 000000000..8aa3bf343 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['emcsfc_5fice_5fblend_2ef90',['emcsfc_ice_blend.f90',['../emcsfc__ice__blend_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/functions_0.html b/ver-1.11.0/emcsfc_ice_blend/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/functions_0.js b/ver-1.11.0/emcsfc_ice_blend/search/functions_0.js new file mode 100644 index 000000000..54f557508 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['emcsfc_5fice_5fblend',['emcsfc_ice_blend',['../emcsfc__ice__blend_8f90.html#a757370cc125ced1630b10909ca47de94',1,'emcsfc_ice_blend.f90']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/mag_sel.png b/ver-1.11.0/emcsfc_ice_blend/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/search/nomatches.html b/ver-1.11.0/emcsfc_ice_blend/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/pages_0.html b/ver-1.11.0/emcsfc_ice_blend/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/pages_0.js b/ver-1.11.0/emcsfc_ice_blend/search/pages_0.js new file mode 100644 index 000000000..4a876e7d4 --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['emcsfc_5fice_5fblend',['emcsfc_ice_blend',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/pages_1.html b/ver-1.11.0/emcsfc_ice_blend/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/pages_1.js b/ver-1.11.0/emcsfc_ice_blend/search/pages_1.js new file mode 100644 index 000000000..bee27405a --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_ice_blend_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_ice_blend/search/search.css b/ver-1.11.0/emcsfc_ice_blend/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/emcsfc_ice_blend/search/search.js b/ver-1.11.0/emcsfc_ice_blend/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/search/search_r.png b/ver-1.11.0/emcsfc_ice_blend/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/sync_off.png b/ver-1.11.0/emcsfc_ice_blend/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/sync_on.png b/ver-1.11.0/emcsfc_ice_blend/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/tab_a.png b/ver-1.11.0/emcsfc_ice_blend/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/tab_b.png b/ver-1.11.0/emcsfc_ice_blend/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_ice_blend/tabs.css b/ver-1.11.0/emcsfc_ice_blend/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/emcsfc_ice_blend/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/README_8md_source.html b/ver-1.11.0/emcsfc_snow2mdl/README_8md_source.html new file mode 100644 index 000000000..f8c28989a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/docs/README.md
    +
    +
    +
    1 This program blends National Ice Center snow cover and Air Force
    2 snow depth data to create a global depth analysis.
    3 
    4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/bc_s.png b/ver-1.11.0/emcsfc_snow2mdl/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/bdwn.png b/ver-1.11.0/emcsfc_snow2mdl/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.html b/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.html new file mode 100644 index 000000000..2dfe39c0c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.html @@ -0,0 +1,127 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    emcsfc_snow2mdl.fd Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  driver.F90 [code]
     Create a snow cover and snow depth analysis.
     
    file  grib_utils.F90 [code]
     Determine whether file is grib or not.
     
    file  model_grid.F90 [code]
     Read in data defining the model grid.
     
    file  program_setup.F90 [code]
     This module reads in data from the program's configuration.
     
    file  snow2mdl.F90 [code]
     Interpolate snow data to model grid and grib the result.
     
    file  snowdat.F90 [code]
     Read and qc afwa, nesdis/ims and autosnow snow data.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.js b/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.js new file mode 100644 index 000000000..e4200d417 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/dir_6c04cce1e346d12dee28b3a41c48082b.js @@ -0,0 +1,9 @@ +var dir_6c04cce1e346d12dee28b3a41c48082b = +[ + [ "driver.F90", "driver_8F90.html", "driver_8F90" ], + [ "grib_utils.F90", "grib__utils_8F90.html", "grib__utils_8F90" ], + [ "model_grid.F90", "model__grid_8F90.html", "model__grid_8F90" ], + [ "program_setup.F90", "program__setup_8F90.html", "program__setup_8F90" ], + [ "snow2mdl.F90", "snow2mdl_8F90.html", "snow2mdl_8F90" ], + [ "snowdat.F90", "snowdat_8F90.html", "snowdat_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..c69cc3652 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..74b08fcea --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "emcsfc_snow2mdl.fd", "dir_6c04cce1e346d12dee28b3a41c48082b.html", "dir_6c04cce1e346d12dee28b3a41c48082b" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/doc.png b/ver-1.11.0/emcsfc_snow2mdl/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/doxygen.css b/ver-1.11.0/emcsfc_snow2mdl/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/emcsfc_snow2mdl/doxygen.png b/ver-1.11.0/emcsfc_snow2mdl/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.html new file mode 100644 index 000000000..0e3954fec --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.html @@ -0,0 +1,235 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/driver.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    driver.F90 File Reference
    +
    +
    + +

    Create a snow cover and snow depth analysis. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program driver
     Create a snow cover and snow depth analysis on a nam or global gfs gaussian grid using nesdis/ims snow cover, autosnow snow cover and/or afwa depth data. More...
     
    +

    Detailed Description

    +

    Create a snow cover and snow depth analysis.

    +
    Author
    gayno
    +
    Date
    2005-dec-16
    + +

    Definition in file driver.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ driver()

    + +
    +
    + + + + + + + +
    program driver ()
    +
    + +

    Create a snow cover and snow depth analysis on a nam or global gfs gaussian grid using nesdis/ims snow cover, autosnow snow cover and/or afwa depth data.

    +

    The ims snow cover product is now produced by the national ice center, not nesdis. however, in this code, references to ims still use the "nesdis" identifier.

    +

    input files, to define model grid, and for runtime configuration:

      +
    • fort.41 configuration namelist
    • +
    • latitudes on model grid (grib 1 or grib 2)
    • +
    • longitudes on model grid (grib 1 or grib 2)
    • +
    • model land/sea mask (grib 1 or grib 2)
    • +
    • gfs definition of reduced grid (ascii, optional)
    • +
    +

    input snow data files; see remarks section on how to select.

      +
    • nesdis/ims nh 4km (96 mesh) snow cover data (grib1 or grib 2)
    • +
    • nesdis/ims nh 23km (16 mesh) snow cover data (grib1 or grib 2)
    • +
    • nesdis/ims nh 23km land mask (ascii, required when using 23km ims)
    • +
    • afwa nh/sh 8th mesh (46km) snow depth data (binary)
    • +
    • afwa nh/sh 8th mesh land/sea mask (binary, required when using 8th mesh nh/sh afwa data)
    • +
    • afwa nh/sh 16th mesh (23km) snow depth data (grib 1)
    • +
    • autosnow sh snow cover data (grib 2)
    • +
    • nesdis/ims weekly nh snow cover climatology (grib 2) (used to qc input snow data).
    • +
    +

    output files:
    + - snow cover and depth on the model grid (grib1 or grib2)

    +

    exit states (non-zero condition is fatal):

      +
    • 0 - successful run
    • +
    • 40 - bad open of file when checking its file type (routine grib_check).
    • +
    • 41 - ims file not grib1 or grib2 format
    • +
    • 47 - error in grib2_check. unknown grid type.
    • +
    • 48 - error creating model output grib2 file
    • +
    • 49 - bad open of model output grib2 file
    • +
    • 50 - error converting to grib2 grid description template
    • +
    • 53 - bad nesdis/ims data.
      + - 54 - bad input snow data selection
    • +
    • 55 - error in iplib interpolation routine
    • +
    • 57 - bad write of model snow depth data to grib1 file
    • +
    • 58 - bad write of model snow cover data to grib1 file
    • +
    • 59 - bad open of model output grib1 file
    • +
    • 60 - bad open afwa snow data
    • +
    • 61 - bad read afwa snow data
    • +
    • 62 - bad open afwa land mask
    • +
    • 63 - bad read afwa land mask
    • +
    • 70 - bad degrib of nesdis/ims snow cover data
    • +
    • 71 - bad degrib of nesdis/ims sea ice data
    • +
    • 72 - bad degrib of nesdis/ims data header
    • +
    • 73 - bad open of nesdis/ims data
    • +
    • 74 - bad open of autosnow data
    • +
    • 75 - bad degrib of autosnow data
    • +
    • 76 - problem with gfs 'lonsperlat' file
    • +
    • 77 - bad open on configuration namelist
    • +
    • 78 - bad read on configuration namelist
    • +
    • 79 - unrecognized model grid type
    • +
    • 80 - bad open on model latitude grib file
    • +
    • 81 - bad read on model latitude grib header
    • +
    • 82 - bad degrib of model latitude data
    • +
    • 83 - bad open on model longitude file
    • +
    • 84 - bad degrib of model longitude data
    • +
    • 85 - bad open of model land mask file
    • +
    • 86 - bad degrib of model land mask data
    • +
    • 87 - bad open of nesdis/ims land mask file
    • +
    • 88 - bad read of nesdis/ims land mask data
    • +
    • 90 - model latitude file not grib1 or grib2
    • +
    • 91 - model longitude file not grib1 or grib2
    • +
    • 92 - model land mask file not grib1 or grib2
    • +
    +

    The determination of cover and depth on the model grid depends on the input snow data selected:

    +

    nam grids:

    +
      +
    1. nesdis/ims only - An analysis of snow cover on the model grid is produced. No depth analysis is produced.
    2. +
    3. 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.
    4. +
    5. 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.
    6. +
    +

    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. +
    3. 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.
    4. +
    5. 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.
    6. +
    +

    Program History Log

      +
    • 2005-dec-16 gayno initial version
    • +
    • 2007-nov-30 gayno added processing of nam b-grids. improved thinning for gfs grids.
    • +
    • 2008-feb-01 gayno added option to use autosnow data in southern hemisphere.
    • +
    • 2014-feb-14 gayno read grib 1 or grib2 version of nesdis/ims data
    • +
    • 2014-sep-30 gayno read grib 1 or grib2 version of model lat, lon and mask files. convert nh weekly snow climatology to grib 2. option to output model depth and cover analysis in grib2.
    • +
    +
    Returns
    0 for success, error code otherwise.
    +
    +
    Author
    gayno
    +
    Date
    2005-dec-16
    + +

    Definition at line 144 of file driver.F90.

    + +

    References snow2mdl::interp(), model_grid::model_grid_cleanup(), program_setup::read_config_nml(), model_grid::read_mdl_grid_info(), snowdat::readafwa(), snowdat::readautosnow(), and snowdat::readnesdis().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.js new file mode 100644 index 000000000..e30528280 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90.js @@ -0,0 +1,4 @@ +var driver_8F90 = +[ + [ "driver", "driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/driver_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90_source.html new file mode 100644 index 000000000..454498876 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/driver_8F90_source.html @@ -0,0 +1,117 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/driver.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    driver.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    144  program driver
    145 
    146  use snowdat, only : readnesdis, &
    147  readafwa, &
    149 
    150  use model_grid, only : read_mdl_grid_info, &
    152 
    153  use snow2mdl, only : interp
    154 
    155  use program_setup, only : read_config_nml
    156 
    157  implicit none
    158 
    159  call w3tagb('SNOW2MDL',2005,350,0000,'NP2')
    160 
    161  print*,''
    162  print*,"***********************"
    163  print*,"*** BEGIN EXECUTION ***"
    164  print*,"***********************"
    165 
    166 !-----------------------------------------------------------------------
    167 ! get configuration stuff.
    168 !-----------------------------------------------------------------------
    169 
    170  call read_config_nml
    171 
    172 !-----------------------------------------------------------------------
    173 ! read input snow data.
    174 !-----------------------------------------------------------------------
    175 
    176  call readautosnow ! autosnow snow cover data
    177 
    178  call readnesdis ! nesdis/ims snow cover data
    179 
    180  call readafwa ! afwa depth data
    181 
    182 !-----------------------------------------------------------------------
    183 ! read information about the model grid to which the
    184 ! snow data will be interpolated.
    185 !-----------------------------------------------------------------------
    186 
    187  call read_mdl_grid_info
    188 
    189 !-----------------------------------------------------------------------
    190 ! interpolate the data to the model grid, then write
    191 ! it to a grib file.
    192 !-----------------------------------------------------------------------
    193 
    194  call interp
    195 
    196 !-----------------------------------------------------------------------
    197 ! free up memory
    198 !-----------------------------------------------------------------------
    199 
    200  call model_grid_cleanup
    201 
    202  print*,''
    203  print*,'****************************'
    204  print*,'**** NORMAL TERMINATION ****'
    205  print*,'****************************'
    206 
    207  call w3tage('SNOW2MDL')
    208 
    209  stop
    210 
    211  end program driver
    This module reads in data from the program&#39;s configuration namelist.
    +
    Read in data defining the model grid.
    Definition: model_grid.F90:19
    +
    Read and qc afwa, nesdis/ims and autosnow snow data.
    Definition: snowdat.F90:26
    +
    subroutine read_mdl_grid_info
    Read mdl grid.
    Definition: model_grid.F90:85
    +
    program driver
    Create a snow cover and snow depth analysis on a nam or global gfs gaussian grid using nesdis/ims sno...
    Definition: driver.F90:144
    +
    Interpolate snow data to model grid and grib the result.
    Definition: snow2mdl.F90:20
    +
    subroutine readafwa
    Read snow depth data and masks.
    Definition: snowdat.F90:532
    +
    subroutine model_grid_cleanup
    Clean up allocatable arrays.
    Definition: model_grid.F90:578
    +
    subroutine readnesdis
    Read nesdis/ims snow cover/ice data.
    Definition: snowdat.F90:223
    +
    subroutine readautosnow
    Read autosnow snow cover.
    Definition: snowdat.F90:118
    +
    subroutine, public read_config_nml
    Read namelist control.
    +
    subroutine, public interp
    Interpolate snow data to model grid.
    Definition: snow2mdl.F90:158
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/dynsections.js b/ver-1.11.0/emcsfc_snow2mdl/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/docs/emcsfc_snow2mdl.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/docs/emcsfc_snow2mdl.md
    +
    +
    +
    1 
    2 # emcsfc_snow2mdl
    3 
    4 # Introduction
    5 
    6 The emcsfc_snow2mdl program (driver.F90) blends National Ice Center
    7 snow cover and Air Force snow depth data to create a global depth
    8 analysis used to update the GFS snow field once per day.
    9 
    10 This document is part of the <a href="../index.html">UFS_UTILS
    11 documentation</a>.
    12 
    13 The emcsfc_snow2mdl program is part of the
    14 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/files.html b/ver-1.11.0/emcsfc_snow2mdl/files.html new file mode 100644 index 000000000..1add8bde1 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/files.html @@ -0,0 +1,116 @@ + + + + + + + +emcsfc_snow2mdl: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + +
      sorc
      emcsfc_snow2mdl.fd
     driver.F90Create a snow cover and snow depth analysis
     grib_utils.F90Determine whether file is grib or not
     model_grid.F90Read in data defining the model grid
     program_setup.F90This module reads in data from the program's configuration
     snow2mdl.F90Interpolate snow data to model grid and grib the result
     snowdat.F90Read and qc afwa, nesdis/ims and autosnow snow data
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/files_dup.js b/ver-1.11.0/emcsfc_snow2mdl/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/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/ver-1.11.0/emcsfc_snow2mdl/folderclosed.png b/ver-1.11.0/emcsfc_snow2mdl/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/globals.html b/ver-1.11.0/emcsfc_snow2mdl/globals.html new file mode 100644 index 000000000..b307f5288 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/globals.html @@ -0,0 +1,126 @@ + + + + + + + +emcsfc_snow2mdl: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/globals_func.html b/ver-1.11.0/emcsfc_snow2mdl/globals_func.html new file mode 100644 index 000000000..d34260d8c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/globals_func.html @@ -0,0 +1,126 @@ + + + + + + + +emcsfc_snow2mdl: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.html new file mode 100644 index 000000000..fe3c4cc89 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.html @@ -0,0 +1,629 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/grib_utils.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    grib_utils.F90 File Reference
    +
    +
    + +

    Determine whether file is grib or not. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine gdt_to_gds (igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
     Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library. More...
     
    subroutine grib2_check (kgds, igdstmplen)
     Determine length of grib2 gds template array, which is a function of the map projection. More...
     
    subroutine grib2_free (gfld)
     Deallocate the grib2 gribfield pointers. More...
     
    subroutine grib2_null (gfld)
     Nullify the grib2 gribfield pointers. More...
     
    subroutine grib_check (file_name, isgrib)
     Determine whether file is grib or not. More...
     
    subroutine init_grib2 (century, year, month, day, hour, kgds, lat11, latlast, lon11, lonlast, listsec0, listsec1, igds, ipdstmpl, ipdsnum, igdstmpl, igdstmplen, idefnum, ideflist, ngrdpts)
     Initialize grib2 arrays required by the ncep g2 library according to grib1 gds information. More...
     
    subroutine SKGB2 (LUGB, ISEEK, MSEEK, LSKIP, LGRIB, I1)
     Determine whether file is grib or not. More...
     
    +

    Detailed Description

    +

    Determine whether file is grib or not.

    +
    Author
    gayno org: w/np2
    +
    Date
    2007-nov-28
    + +

    Definition in file grib_utils.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ gdt_to_gds()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gdt_to_gds (integer, intent(in) igdtnum,
    integer, dimension(igdtlen), intent(in) igdstmpl,
    integer, intent(in) igdtlen,
    integer, dimension(200), intent(out) kgds,
    integer, intent(out) ni,
    integer, intent(out) nj,
    real, intent(out) res 
    )
    +
    + +

    Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library.

    +
    Parameters
    + + + + + + + + +
    [in]igdtnumgrib2 grid desc template number
    [in]igdstmplgrib2 grid desc template array
    [in]igdtlengrib2 grid desc template array size
    [out]kgdsgrib1 grid description section array used by ncep ipolates library.
    [out]nii grid dimensions
    [out]njj grid dimensions
    [out]resgrid resolution in km
    +
    +
    +

    condition codes: 50 - unrecognized model grid type; fatal

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-26
    + +

    Definition at line 140 of file grib_utils.F90.

    + +

    Referenced by model_grid::read_mdl_grid_info(), snowdat::readafwa(), snowdat::readautosnow(), and snowdat::readnesdis().

    + +
    +
    + +

    ◆ grib2_check()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine grib2_check (integer, dimension(200), intent(in) kgds,
    integer, intent(out) igdstmplen 
    )
    +
    + +

    Determine length of grib2 gds template array, which is a function of the map projection.

    +
    Note
    call this routine before init_grib2.
    +
    +
    Parameters
    + + + +
    [in]kgdsgrib1 gds array
    [in]igdstmplenlength of gds template array.
    +
    +
    +

    condition codes: 47 - unrecognized grid type; fatal

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-28
    + +

    Definition at line 351 of file grib_utils.F90.

    + +

    Referenced by snow2mdl::write_grib2().

    + +
    +
    + +

    ◆ grib2_free()

    + +
    +
    + + + + + + + + +
    subroutine grib2_free (type(gribfield), intent(inout) gfld)
    +
    + +

    Deallocate the grib2 gribfield pointers.

    +
    Parameters
    + + +
    [in]gflda gribfield data structure
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-28
    + +

    Definition at line 636 of file grib_utils.F90.

    + +

    Referenced by snowdat::nh_climo_check(), model_grid::read_mdl_grid_info(), snowdat::readautosnow(), and snowdat::readnesdis().

    + +
    +
    + +

    ◆ grib2_null()

    + +
    +
    + + + + + + + + +
    subroutine grib2_null (type(gribfield), intent(inout) gfld)
    +
    + +

    Nullify the grib2 gribfield pointers.

    +
    Parameters
    + + +
    [in]gflda gribfield data structure
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-28
    + +

    Definition at line 611 of file grib_utils.F90.

    + +

    Referenced by snowdat::nh_climo_check(), model_grid::read_mdl_grid_info(), snowdat::readafwa(), snowdat::readautosnow(), and snowdat::readnesdis().

    + +
    +
    + +

    ◆ grib_check()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine grib_check (character*(*), intent(in) file_name,
    integer, intent(out) isgrib 
    )
    +
    + +

    Determine whether file is grib or not.

    +

    program history log:

      +
    • 2007-nov-28 gayno - initial version
    • +
    • 2011-apr-26 gayno - replace my simple-minded logic with call to w3lib routin skgb.
    • +
    • 2014-feb-07 gayno - determine whether file is grib1 or grib2.
    • +
    +
    Parameters
    + + + +
    [in]file_name- file to be checked
    [out]isgrib- '1' or '2' if grib1/2 file '0' if not grib
    +
    +
    +

    input files:

      +
    • file to be checked, fort.11
    • +
    +

    condition codes: all fatal

      +
    • bad file open, fort.11
    • +
    + +

    Definition at line 24 of file grib_utils.F90.

    + +

    Referenced by model_grid::read_mdl_grid_info(), snowdat::readafwa(), and snowdat::readnesdis().

    + +
    +
    + +

    ◆ init_grib2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine init_grib2 (integer, intent(in) century,
    integer, intent(in) year,
    integer, intent(in) month,
    integer, intent(in) day,
    integer, intent(in) hour,
    integer, dimension(200), intent(in) kgds,
    real, intent(in) lat11,
    real, intent(in) latlast,
    real, intent(in) lon11,
    real, intent(in) lonlast,
    integer, dimension(2), intent(out) listsec0,
    integer, dimension(13), intent(out) listsec1,
    integer, dimension(5), intent(out) igds,
    integer, dimension(15), intent(out) ipdstmpl,
    integer, intent(out) ipdsnum,
    integer, dimension(igdstmplen), intent(out) igdstmpl,
    integer, intent(in) igdstmplen,
    integer, intent(out) idefnum,
    integer, intent(out) ideflist,
    integer, intent(out) ngrdpts 
    )
    +
    + +

    Initialize grib2 arrays required by the ncep g2 library according to grib1 gds information.

    +

    The grib1 gds is held in the kgds array, which is used by the ncep ipolates and w3nco (grib 1) libraries.

    +

    Call routine grib2_check first to determine igdstmplen.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + +
    [in]centurycurrent date/time info
    [in]yearcurrent date/time info
    [in]monthcurrent date/time info
    [in]daycurrent date/time info
    [in]hourcurrent date/time info
    [in]kgdsgrib1 gds information
    [in]igdstmplenlength of grib2 gdt template.
    [in]lat11lat of first grid point
    [in]lon11lon of first grid point
    [in]latlastlat of last grid point
    [in]lonlastlon of last grid point
    [out]igdsgrib2 section 3 information.
    [out]listsec0grib2 section 0 information.
    [out]listsec1grib2 section 1 information.
    [out]ipdsnumgrib2 pds template number
    [out]ipdstmplgrib2 pds template array
    [out]igdstmplgrib2 gds template array
    [out]idefnuminformation for non-reg grid, grid points in each row.
    [out]ideflistinformation for non-reg grid, grid points in each row.
    [out]ngrdptsnumber of model grid points.
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-28
    + +

    Definition at line 401 of file grib_utils.F90.

    + +

    Referenced by snow2mdl::write_grib2().

    + +
    +
    + +

    ◆ SKGB2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine SKGB2 (integer, intent(in) LUGB,
    integer, intent(in) ISEEK,
    integer, intent(in) MSEEK,
    integer, intent(out) LSKIP,
    integer, intent(out) LGRIB,
    integer, intent(out) I1 
    )
    +
    + +

    Determine whether file is grib or not.

    +

    Based on w3nco library routine skgb.

    +
    Parameters
    + + + + + + + +
    [in]lugbfile unit number
    [in]iseeknumber of bits to skip before search.
    [in]mseekmax number of bytes to search.
    [out]lskipnumber of bytes to skip before message
    [out]lgribnumber of bytes in message. '0' if not grib.
    [out]i1'1' or '2' if grib1/2 file. '0' if not grib.
    +
    +
    +

    input file:

      +
    • file to be checked, unit=lugb
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Feb-07
    + +

    Definition at line 76 of file grib_utils.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.js new file mode 100644 index 000000000..772d26a29 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90.js @@ -0,0 +1,10 @@ +var grib__utils_8F90 = +[ + [ "gdt_to_gds", "grib__utils_8F90.html#a99c537ea7d78555234e6b8bf27fa9c15", null ], + [ "grib2_check", "grib__utils_8F90.html#a1dda8daced403ff2fda164b321f6aefb", null ], + [ "grib2_free", "grib__utils_8F90.html#a48ceeee24ae44923e136e479584053be", null ], + [ "grib2_null", "grib__utils_8F90.html#adffeca48f5856efec29e2174413f18cd", null ], + [ "grib_check", "grib__utils_8F90.html#afb32109d497155b14ab1db47cbaaf364", null ], + [ "init_grib2", "grib__utils_8F90.html#a51864b4717ca8fb9cc712eb5c391983d", null ], + [ "SKGB2", "grib__utils_8F90.html#adbf31159380f03144c4db26f0389d025", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90_source.html new file mode 100644 index 000000000..f9b3d20e0 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/grib__utils_8F90_source.html @@ -0,0 +1,111 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/grib_utils.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    grib_utils.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    23  subroutine grib_check(file_name, isgrib)
    24 
    25  implicit none
    26 
    27  character*(*), intent(in) :: file_name
    28  integer, parameter :: iunit=11
    29  integer :: istat, iseek, mseek, lskip, lgrib, version
    30  integer, intent(out) :: isgrib
    31 
    32  print*,"- CHECK FILE TYPE OF: ", trim(file_name)
    33  call baopenr (iunit, file_name, istat)
    34 
    35  if (istat /= 0) then
    36  print*,'- FATAL ERROR: BAD FILE OPEN. ISTAT IS ',istat
    37  call w3tage('SNOW2MDL')
    38  call errexit(40)
    39  end if
    40 
    41  iseek = 0
    42  mseek = 64
    43  call skgb2(iunit, iseek, mseek, lskip, lgrib, version)
    44 
    45  call baclose(iunit, istat)
    46 
    47  if (lgrib > 0) then
    48  isgrib = version
    49  if (isgrib == 1) print*,"- FILE IS GRIB1"
    50  if (isgrib == 2) print*,"- FILE IS GRIB2"
    51  else
    52  isgrib = 0
    53  print*,"- FILE IS BINARY"
    54  endif
    55 
    56  return
    57 
    58  end subroutine grib_check
    59 
    75  SUBROUTINE skgb2(LUGB,ISEEK,MSEEK,LSKIP,LGRIB,I1)
    76  implicit none
    77  INTEGER, INTENT( IN) :: LUGB, ISEEK, MSEEK
    78  INTEGER, INTENT(OUT) :: LSKIP, LGRIB, I1
    79  INTEGER, PARAMETER :: LSEEK=128
    80  INTEGER :: K, KZ, KS, KG, KN, KM, I4, K4
    81  CHARACTER Z(LSEEK)
    82  CHARACTER Z4(4)
    83 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    84  i1=0
    85  lgrib=0
    86  ks=iseek
    87  kn=min(lseek,mseek)
    88  kz=lseek
    89 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    90 ! LOOP UNTIL GRIB MESSAGE IS FOUND
    91  DO WHILE(lgrib.EQ.0.AND.kn.GE.8.AND.kz.EQ.lseek)
    92 ! READ PARTIAL SECTION
    93  CALL baread(lugb,ks,kn,kz,z)
    94  km=kz-8+1
    95  k=0
    96 ! LOOK FOR 'GRIB...1' IN PARTIAL SECTION
    97  DO WHILE(lgrib.EQ.0.AND.k.LT.km)
    98  CALL gbytec(z,i4,(k+0)*8,4*8)
    99  CALL gbytec(z,i1,(k+7)*8,1*8)
    100  IF(i4.EQ.1196575042.AND.(i1.EQ.1.OR.i1.EQ.2)) THEN
    101 ! LOOK FOR '7777' AT END OF GRIB MESSAGE
    102  IF (i1.EQ.1) CALL gbytec(z,kg,(k+4)*8,3*8)
    103  IF (i1.EQ.2) CALL gbytec(z,kg,(k+12)*8,4*8)
    104  CALL baread(lugb,ks+k+kg-4,4,k4,z4)
    105  IF(k4.EQ.4) THEN
    106  CALL gbytec(z4,i4,0,4*8)
    107  IF(i4.EQ.926365495) THEN
    108 ! GRIB MESSAGE FOUND
    109  lskip=ks+k
    110  lgrib=kg
    111  ENDIF
    112  ENDIF
    113  ENDIF
    114  k=k+1
    115  ENDDO
    116  ks=ks+km
    117  kn=min(lseek,iseek+mseek-ks)
    118  ENDDO
    119 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    120  RETURN
    121  END subroutine skgb2
    122 
    139  subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
    141  implicit none
    142 
    143  integer, intent(in ) :: igdtnum, igdtlen, igdstmpl(igdtlen)
    144  integer, intent( out) :: kgds(200), ni, nj
    145  integer :: iscale
    146 
    147  real, intent( out) :: res
    148 
    149  kgds=0
    150 
    151  if (igdtnum.eq.0) then ! lat/lon grid
    152 
    153  iscale=igdstmpl(10)*igdstmpl(11)
    154  if (iscale == 0) iscale = 1e6
    155  kgds(1)=0 ! oct 6
    156  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
    157  ni = kgds(2)
    158  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
    159  nj = kgds(3)
    160  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of 1st grid point
    161  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of 1st grid point
    162 
    163  kgds(6)=0 ! oct 17, resolution and component flags
    164  if (igdstmpl(1)==2 ) kgds(6)=64
    165  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
    166  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
    167 
    168  kgds(7)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 18-20, Lat of last grid point
    169  kgds(8)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 21-23, Lon of last grid point
    170  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*1000.) ! octs 24-25, di
    171  kgds(10)=nint(float(igdstmpl(18))/float(iscale)*1000.) ! octs 26-27, dj
    172 
    173  kgds(11) = 0 ! oct 28, scan mode
    174  if (btest(igdstmpl(19),7)) kgds(11) = 128
    175  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
    176  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
    177 
    178  kgds(12)=0 ! octs 29-32, reserved
    179  kgds(19)=0 ! oct 4, # vert coordinate parameters
    180  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
    181 
    182  res = float(kgds(9)) / 1000.0 * 111.0
    183 
    184  elseif (igdtnum.eq.40) then ! Gaussian Lat/Lon grid
    185 
    186  iscale=igdstmpl(10)*igdstmpl(11)
    187  if (iscale==0) iscale=1e6
    188  kgds(1)=4 ! oct 6
    189  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
    190  ni = kgds(2)
    191  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
    192  nj = kgds(3)
    193  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of 1st grid point
    194  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of 1st grid point
    195 
    196  kgds(6)=0 ! oct 17, resolution and component flags
    197  if (igdstmpl(1)==2 ) kgds(6)=64
    198  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
    199  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
    200 
    201  kgds(7)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 18-20, Lat of last grid point
    202  kgds(8)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 21-23, Lon of last grid point
    203  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*1000.) ! octs 24-25, Di
    204  kgds(10)=igdstmpl(18) ! octs 26-27, Number of parallels
    205 
    206  kgds(11) = 0 ! oct 28, scan mode
    207  if (btest(igdstmpl(19),7)) kgds(11) = 128
    208  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
    209  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
    210 
    211  kgds(12)=0 ! octs 29-32, reserved
    212  kgds(19)=0 ! oct 4, # vert coordinate parameters
    213  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
    214 
    215  res = float(kgds(9)) / 1000.0 * 111.0
    216 
    217  elseif (igdtnum.eq.20) then ! Polar Stereographic Grid
    218 
    219  iscale=1e6
    220  kgds(1)=5 ! oct 6, data representation type, polar
    221  kgds(2)=igdstmpl(8) ! octs 7-8, nx
    222  ni = kgds(2)
    223  kgds(3)=igdstmpl(9) ! octs 8-10, ny
    224  nj = kgds(3)
    225  kgds(4)=nint(float(igdstmpl(10))/float(iscale)*1000.) ! octs 11-13, lat of 1st grid point
    226  kgds(5)=nint(float(igdstmpl(11))/float(iscale)*1000.) ! octs 14-16, lon of 1st grid point
    227 
    228  kgds(6)=0 ! oct 17, resolution and component flags
    229  if (igdstmpl(1) >= 2 .or. igdstmpl(1) <= 5) kgds(6)=64
    230  if (igdstmpl(1) == 7) kgds(6)=64
    231  if ( btest(igdstmpl(12),4).OR.btest(igdstmpl(12),5) ) kgds(6)=kgds(6)+128
    232  if ( btest(igdstmpl(12),3) ) kgds(6)=kgds(6)+8
    233 
    234  kgds(7)=nint(float(igdstmpl(14))/float(iscale)*1000.) ! octs 18-20, lon of orientation
    235  kgds(8)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 21-23, dx
    236  kgds(9)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 24-26, dy
    237 
    238  kgds(10)=0 ! oct 27, projection center flag
    239  if (btest(igdstmpl(17),1)) kgds(10) = 128
    240 
    241  kgds(11) = 0 ! oct 28, scan mode
    242  if (btest(igdstmpl(18),7)) kgds(11) = 128
    243  if (btest(igdstmpl(18),6)) kgds(11) = kgds(11) + 64
    244  if (btest(igdstmpl(18),5)) kgds(11) = kgds(11) + 32
    245 
    246  kgds(19)=0 ! oct 4, # vert coordinate parameters
    247  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
    248 
    249  res = 0.5 * float(kgds(8)+kgds(9)) / 1000.
    250 
    251  elseif (igdtnum.eq.1) then ! Rotated Lat/Lon grid
    252 
    253  if (btest(igdstmpl(19),2)) then ! e-stagger, bit 6 of scan mode is '1'
    254 
    255  iscale=igdstmpl(10)*igdstmpl(11)
    256  if (iscale == 0) iscale = 1e6
    257  kgds(1)=203 ! oct 6, "E" grid
    258  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
    259  ni = kgds(2)
    260  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
    261  nj = kgds(3)
    262  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of 1st grid point
    263  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of 1st grid point
    264 
    265  kgds(6)=0 ! oct 17, resolution and component flags
    266  if (igdstmpl(1)==2 ) kgds(6)=64
    267  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
    268  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
    269 
    270  kgds(7)=nint(float(igdstmpl(20))/float(iscale)*1000.)+90000 ! octs 18-20, Lat of cent of rotation
    271  kgds(8)=nint(float(igdstmpl(21))/float(iscale)*1000.) ! octs 21-23, Lon of cent of rotation
    272  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*500.) ! octs 24-25, Di
    273  ! Note!! grib 2 convention twice grib 1
    274  kgds(10)=nint(float(igdstmpl(18))/float(iscale)*1000.) ! octs 26-27, Dj
    275 
    276  kgds(11) = 0 ! oct 28, scan mode
    277  if (btest(igdstmpl(19),7)) kgds(11) = 128
    278  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
    279  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
    280 
    281  kgds(12)=0 ! octs 29-32, reserved
    282  kgds(19)=0 ! oct 4, # vert coordinate parameters
    283  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
    284 
    285  res = sqrt( (float(kgds(9)) / 1000.0)**2 + &
    286  (float(kgds(10)) / 1000.0)**2 )
    287  res = res * 111.0
    288 
    289  else ! b-stagger
    290 
    291  iscale=igdstmpl(10)*igdstmpl(11)
    292  if (iscale == 0) iscale = 1e6
    293  kgds(1)=205 ! oct 6, rotated lat/lon for Non-E Stagger grid
    294  kgds(2)=igdstmpl(8) ! octs 7-8, Ni
    295  ni = kgds(2)
    296  kgds(3)=igdstmpl(9) ! octs 9-10, Nj
    297  nj = kgds(3)
    298  kgds(4)=nint(float(igdstmpl(12))/float(iscale)*1000.) ! octs 11-13, Lat of 1st grid point
    299  kgds(5)=nint(float(igdstmpl(13))/float(iscale)*1000.) ! octs 14-16, Lon of 1st grid point
    300 
    301  kgds(6)=0 ! oct 17, resolution and component flags
    302  if (igdstmpl(1)==2 ) kgds(6)=64
    303  if ( btest(igdstmpl(14),4).OR.btest(igdstmpl(14),5) ) kgds(6)=kgds(6)+128
    304  if ( btest(igdstmpl(14),3) ) kgds(6)=kgds(6)+8
    305 
    306  kgds(7)=nint(float(igdstmpl(20))/float(iscale)*1000.)+90000 ! octs 18-20, Lat of cent of rotation
    307  kgds(8)=nint(float(igdstmpl(21))/float(iscale)*1000.) ! octs 21-23, Lon of cent of rotation
    308  kgds(9)=nint(float(igdstmpl(17))/float(iscale)*1000.) ! octs 24-25, Di
    309  kgds(10)=nint(float(igdstmpl(18))/float(iscale)*1000.) ! octs 26-27, Dj
    310 
    311  kgds(11) = 0 ! oct 28, scan mode
    312  if (btest(igdstmpl(19),7)) kgds(11) = 128
    313  if (btest(igdstmpl(19),6)) kgds(11) = kgds(11) + 64
    314  if (btest(igdstmpl(19),5)) kgds(11) = kgds(11) + 32
    315 
    316  kgds(12)=nint(float(igdstmpl(15))/float(iscale)*1000.) ! octs 29-31, Lat of last grid point
    317  kgds(13)=nint(float(igdstmpl(16))/float(iscale)*1000.) ! octs 32-34, Lon of last grid point
    318 
    319  kgds(19)=0 ! oct 4, # vert coordinate parameters
    320  kgds(20)=255 ! oct 5, used for thinned grids, set to 255
    321 
    322  res = ((float(kgds(9)) / 1000.0) + (float(kgds(10)) / 1000.0)) &
    323  * 0.5 * 111.0
    324 
    325  endif
    326 
    327  else
    328 
    329  print*,'- FATAL ERROR CONVERTING TO GRIB2 GDT.'
    330  print*,'- UNRECOGNIZED GRID TYPE.'
    331  call w3tage('SNOW2MDL')
    332  call errexit(50)
    333 
    334  endif
    335 
    336  end subroutine gdt_to_gds
    337 
    350  subroutine grib2_check (kgds, igdstmplen)
    351  implicit none
    352 
    353  integer, intent(in) :: kgds(200)
    354  integer, intent( out) :: igdstmplen
    355 
    356  select case (kgds(1))
    357  case(4) ! gaussian
    358  igdstmplen = 19
    359  case(203, 205) ! rotated lat/lon "B" or "E" stagger
    360  igdstmplen = 22
    361  case default
    362  print*,'- FATAL ERROR IN ROUTINE GRIB2_CHECK.'
    363  print*,'- UNRECOGNIZED GRID TYPE.'
    364  call w3tage('SNOW2MDL')
    365  call errexit(47)
    366  end select
    367 
    368  end subroutine grib2_check
    369 
    397  subroutine init_grib2(century, year, month, day, hour, kgds, &
    398  lat11, latlast, lon11, lonlast, &
    399  listsec0, listsec1, igds, ipdstmpl, ipdsnum, igdstmpl, &
    400  igdstmplen, idefnum, ideflist, ngrdpts)
    401  implicit none
    402 
    403  integer, intent(in ) :: century, year, month, day, hour
    404  integer, intent(in ) :: kgds(200), igdstmplen
    405  integer, intent( out) :: igds(5)
    406  integer, intent( out) :: listsec0(2)
    407  integer, intent( out) :: listsec1(13)
    408  integer, intent( out) :: ipdstmpl(15), ipdsnum
    409  integer, intent( out) :: igdstmpl(igdstmplen)
    410  integer, intent( out) :: idefnum, ideflist
    411  integer, intent( out) :: ngrdpts
    412 
    413  real, intent(in ) :: lat11, latlast, lon11, lonlast
    414  real :: scale
    415 
    416 ! Section 0
    417 
    418  listsec0(1)=0 ! discipline, meteorological fields
    419  listsec0(2)=2 ! grib version 2
    420 
    421 ! Section 1
    422 
    423  listsec1(1)=7 ! id of center (ncep)
    424  listsec1(2)=4 ! subcenter (emc)
    425  listsec1(3)=8 ! master table version number. wgrib2 does not recognize later tables
    426  listsec1(4)= 0 ! local table not used
    427  listsec1(5)= 0 ! signif of ref time - analysis
    428  if (year == 100) then
    429  listsec1(6)=century*100 + year
    430  else
    431  listsec1(6)=(century-1)*100 + year
    432  endif
    433  listsec1(7)=month
    434  listsec1(8)=day
    435  listsec1(9)=hour
    436  listsec1(10:11)=0 ! minutes/secs
    437  listsec1(12)=0 ! production status of data - ops products
    438  listsec1(13)=0 ! type of processed products - analysis
    439 
    440 ! Section 2 - not used
    441 
    442 ! Section 3 - grid description section
    443 
    444  if (kgds(1) == 4) then ! gaussian
    445 
    446  igdstmpl(1)=5 ! oct 15; shape of the earth, wgs84
    447  igdstmpl(2)=255 ! oct 16; scale factor of radius of spherical earth, not used.
    448  igdstmpl(3)=-1 ! octs 17-20; scale value of radius of spherical earth, not used.
    449  igdstmpl(4)=255 ! oct 21; scale factor of major axis of elliptical earth, not used.
    450  igdstmpl(5)=-1 ! octs 22-25; scaled value of major axis of elliptical earth, not used.
    451  igdstmpl(6)=255 ! oct 26; scale factor of minor axis of elliptical earth, not used.
    452  igdstmpl(7)=-1 ! octs 27-30; scaled value of minor axis of elliptical earth, not used.
    453  igdstmpl(8)=kgds(2) ! octs 31-34; # "i" points
    454  igdstmpl(9)=kgds(3) ! octs 35-38; # "j" points
    455  igdstmpl(10)=1 ! octs 39-42; basic angle
    456  igdstmpl(11)=10**6 ! octs 43-46; subdivisions of basic angle
    457 
    458  scale=float(igdstmpl(10)*igdstmpl(11))
    459 
    460  igdstmpl(12)=nint(lat11*scale) ! octs 47-50; lat of first grid point
    461 
    462  if (lon11 < 0) then
    463  igdstmpl(13)=nint((lon11+360.)*scale) ! octs 51-54; lon of first grid point
    464  else
    465  igdstmpl(13)=nint(lon11*scale)
    466  endif
    467 
    468  igdstmpl(14) = 0 ! oct 55; resolution and component flags
    469  if (btest(kgds(6),7)) igdstmpl(14) = 48
    470  if (btest(kgds(6),3)) igdstmpl(14) = igdstmpl(14) + 8
    471 
    472  igdstmpl(15)= nint(latlast*scale) ! octs 56-59; lat of last grid point
    473 
    474  if (lonlast < 0) then
    475  igdstmpl(16)=nint((lonlast+360.)*scale) ! octs 60-63; lon of last grid point
    476  else
    477  igdstmpl(16)=nint(lonlast*scale)
    478  endif
    479 
    480  igdstmpl(17)= nint(360.0/float(kgds(2)-1)*scale) ! octs 64-67; di of grid
    481  igdstmpl(18)= kgds(3)/2 ! octs 68-71; # grid pts between pole and equator
    482 
    483  igdstmpl(19)=0 ! oct 72; scanning mode flag
    484  if(btest(kgds(11),7)) igdstmpl(19)=128
    485  if(btest(kgds(11),6)) igdstmpl(19)=igdstmpl(19) + 64
    486  if(btest(kgds(11),5)) igdstmpl(19)=igdstmpl(19) + 32
    487 
    488  igds(1) = 0 ! oct 6; source of grid def. specif in table 3.1
    489  igds(2) = kgds(2)*kgds(3) ! num grid points
    490  igds(3) = 0 ! # octets for additional grid pt def (use '0' for regular grid)
    491  igds(4) = 0 ! regular grid, no appended list
    492  igds(5) = 40 ! gaussian
    493 
    494  ngrdpts = igds(2)
    495 
    496 ! These variables used for non-regular grids. We are using regular grids
    497 ! (igds(3) equals 0).
    498 
    499  idefnum=1
    500  ideflist=0
    501 
    502  elseif (kgds(1) == 203 .or. kgds(1) == 205) then
    503 
    504  igdstmpl(1)=5 ! oct 15; shape of the earth, wgs84
    505  igdstmpl(2)=255 ! oct 16; scale factor of radius of spherical earth, not used.
    506  igdstmpl(3)=-1 ! octs 17-20; scale value of radius of spherical earth, not used.
    507  igdstmpl(4)=255 ! oct 21; scale factor of major axis of elliptical earth, not used.
    508  igdstmpl(5)=-1 ! octs 22-25; scaled value of major axis of elliptical earth, not used.
    509  igdstmpl(6)=255 ! oct 26; scale factor of minor axis of elliptical earth, not used.
    510  igdstmpl(7)=-1 ! octs 27-30; scaled value of minor axis of elliptical earth, not used.
    511  igdstmpl(8)=kgds(2) ! octs 31-34; # "i" points
    512  igdstmpl(9)=kgds(3) ! octs 35-38; # "j" points
    513  igdstmpl(10)=1 ! octs 39-42; basic angle
    514  igdstmpl(11)=10**6 ! octs 43-46; subdivisions of basic angle
    515 
    516  scale=float(igdstmpl(10)*igdstmpl(11))
    517 
    518  igdstmpl(12)=nint(lat11*scale) ! octs 47-50; lat of first grid point
    519 
    520  if (lon11 < 0) then
    521  igdstmpl(13)=nint((lon11+360.)*scale) ! octs 51-54; lon of first grid point
    522  else
    523  igdstmpl(13)=nint(lon11*scale)
    524  endif
    525 
    526  igdstmpl(14) = 0 ! oct 55; resolution and component flags
    527  if (btest(kgds(6),7)) igdstmpl(14) = 48
    528  if (btest(kgds(6),3)) igdstmpl(14) = igdstmpl(14) + 8
    529 
    530  igdstmpl(15)= nint(latlast*scale) ! octs 56-59; lat of last grid point
    531 
    532  if (lonlast < 0) then
    533  igdstmpl(16)=nint((lonlast+360.)*scale) ! octs 60-63; lon of last grid point
    534  else
    535  igdstmpl(16)=nint(lonlast*scale)
    536  endif
    537 
    538  if (kgds(1) == 203) igdstmpl(17)= nint(float(kgds(9))*scale/500.) ! octs 64-67; di of grid.
    539  ! iplib "e" grid convention
    540  ! is 1/2 the grib convention.
    541  if (kgds(1) == 205) igdstmpl(17)= nint(float(kgds(9))*scale/1000.) ! octs 64-67; di of grid
    542 
    543  igdstmpl(18)= nint(float(kgds(10))*scale/1000.) ! octs 68-71; dj of grid
    544 
    545  igdstmpl(19)=0 ! oct 72; scanning mode flag
    546  if(btest(kgds(11),7)) igdstmpl(19)=128
    547  if(btest(kgds(11),6)) igdstmpl(19)=igdstmpl(19) + 64
    548  if(btest(kgds(11),5)) igdstmpl(19)=igdstmpl(19) + 32
    549  if (kgds(1) == 203) igdstmpl(19)=igdstmpl(19) + 4
    550 
    551  igdstmpl(20) = nint(float(kgds(7)-90000)*scale/1000.) ! octs 73-76; lat of south pole of projection
    552 
    553  if (kgds(8) < 0) then
    554  igdstmpl(21) = nint(float(kgds(8)+360000)*scale/1000.) ! octs 77-80; long of southern pole of projection.
    555  else
    556  igdstmpl(21) = nint(float(kgds(8))*scale/1000.) ! octs 77-80; long of southern pole of projection.
    557  endif
    558 
    559  igdstmpl(22)=0 ! octs 81-84; angle of rotation of projection
    560 
    561  igds(1) = 0 ! oct 6; source of grid def. specif in table 3.1
    562  igds(2) = kgds(2)*kgds(3) ! num grid points
    563  igds(3) = 0 ! # octets for additional grid pt def (use '0' for regular grid)
    564  igds(4) = 0 ! regular grid, no appended list
    565  igds(5) = 1 ! rotated lat/lon
    566 
    567  ngrdpts = igds(2)
    568 
    569 ! These variables used for non-regular grids. We are using regular grids
    570 ! (igds(3) equals 0).
    571 
    572  idefnum=1
    573  ideflist=0
    574 
    575  end if
    576 
    577 ! Section 4 - product definition section
    578 
    579  ipdsnum = 0 ! pds template number - table 4.0
    580 
    581  ipdstmpl(1)= 1 ! oct 10; parameter category
    582 ! note!! to use a parmeter number >= 192 you must set the local table to '1'
    583  ipdstmpl(2)= 42 ! oct 11; parameter
    584  ipdstmpl(3)= 0 ! oct 12; type of generating process
    585  ipdstmpl(4)= 255 ! oct 13; background generating process identifier
    586  ipdstmpl(5)= 84 ! oct 14; analysis generating process identifier
    587  ipdstmpl(6)= 0 ! octs 15-16; hours after ob cutoff
    588  ipdstmpl(7)= 0 ! oct 17; minutes after ob cutoff
    589  ipdstmpl(8)= 1 ! oct 18; unit of time range
    590  ipdstmpl(9)= 0 ! octs 19-22; forecast time in units defined by oct 18
    591  ipdstmpl(10)=1 ! oct 23; type of first fixed surface
    592  ipdstmpl(11)=0 ! oct 24; scale factor of first fixed surface
    593  ipdstmpl(12)=0 ! octs 25-28; scale value of first fixed surface
    594  ipdstmpl(13)=255 ! oct 29; type of second fixed surface
    595  ipdstmpl(14)=255 ! oct 30; scale factor of second fixed surface
    596  ipdstmpl(15)=-2147483647 ! octs 31-34; scaled value of second fixed surface
    597  ! note! for these particular octets, using -1 as
    598  ! missing does not work because -1 may be an actual
    599  ! scaled value. after looking thru the g2 library
    600  ! and some trial and error, i determined that missing
    601  ! is minus 2**31-1.
    602 
    603  end subroutine init_grib2
    604 
    610  subroutine grib2_null(gfld)
    612  use grib_mod
    613 
    614  implicit none
    615 
    616  type(gribfield), intent(inout) :: gfld
    617 
    618  nullify(gfld%idsect)
    619  nullify(gfld%local)
    620  nullify(gfld%list_opt)
    621  nullify(gfld%igdtmpl)
    622  nullify(gfld%ipdtmpl)
    623  nullify(gfld%coord_list)
    624  nullify(gfld%idrtmpl)
    625  nullify(gfld%bmap)
    626  nullify(gfld%fld)
    627 
    628  end subroutine grib2_null
    629 
    635  subroutine grib2_free(gfld)
    637  use grib_mod
    638 
    639  implicit none
    640 
    641  type(gribfield), intent(inout) :: gfld
    642 
    643  if (associated(gfld%idsect)) deallocate(gfld%idsect)
    644  if (associated(gfld%local)) deallocate(gfld%local)
    645  if (associated(gfld%list_opt)) deallocate(gfld%list_opt)
    646  if (associated(gfld%igdtmpl)) deallocate(gfld%igdtmpl)
    647  if (associated(gfld%ipdtmpl)) deallocate(gfld%ipdtmpl)
    648  if (associated(gfld%coord_list)) deallocate(gfld%coord_list)
    649  if (associated(gfld%idrtmpl)) deallocate(gfld%idrtmpl)
    650  if (associated(gfld%bmap)) deallocate(gfld%bmap)
    651  if (associated(gfld%fld)) deallocate(gfld%fld)
    652 
    653  end subroutine grib2_free
    subroutine init_grib2(century, year, month, day, hour, kgds, lat11, latlast, lon11, lonlast, listsec0, listsec1, igds, ipdstmpl, ipdsnum, igdstmpl, igdstmplen, idefnum, ideflist, ngrdpts)
    Initialize grib2 arrays required by the ncep g2 library according to grib1 gds information.
    Definition: grib_utils.F90:401
    +
    subroutine grib2_check(kgds, igdstmplen)
    Determine length of grib2 gds template array, which is a function of the map projection.
    Definition: grib_utils.F90:351
    +
    subroutine grib2_null(gfld)
    Nullify the grib2 gribfield pointers.
    Definition: grib_utils.F90:611
    +
    subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
    Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library.
    Definition: grib_utils.F90:140
    +
    subroutine grib2_free(gfld)
    Deallocate the grib2 gribfield pointers.
    Definition: grib_utils.F90:636
    +
    subroutine grib_check(file_name, isgrib)
    Determine whether file is grib or not.
    Definition: grib_utils.F90:24
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/index.html b/ver-1.11.0/emcsfc_snow2mdl/index.html new file mode 100644 index 000000000..6a11365c6 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/index.html @@ -0,0 +1,109 @@ + + + + + + + +emcsfc_snow2mdl: emcsfc_snow2mdl + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    emcsfc_snow2mdl
    +
    +
    +

    +Introduction

    +

    The emcsfc_snow2mdl program (driver.F90) blends National Ice Center snow cover and Air Force snow depth data to create a global depth analysis used to update the GFS snow field once per day.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The emcsfc_snow2mdl program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/jquery.js b/ver-1.11.0/emcsfc_snow2mdl/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    This program blends National Ice Center snow cover and Air Force snow depth data to create a global depth analysis.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/menu.js b/ver-1.11.0/emcsfc_snow2mdl/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/emcsfc_snow2mdl/menudata.js b/ver-1.11.0/emcsfc_snow2mdl/menudata.js new file mode 100644 index 000000000..41c3790ae --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/menudata.js @@ -0,0 +1,68 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"k",url:"namespacemembers.html#index_k"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"u",url:"namespacemembers.html#index_u"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html"}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"b",url:"namespacemembers_vars.html#index_b"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"g",url:"namespacemembers_vars.html#index_g"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"k",url:"namespacemembers_vars.html#index_k"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"o",url:"namespacemembers_vars.html#index_o"}, +{text:"r",url:"namespacemembers_vars.html#index_r"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"t",url:"namespacemembers_vars.html#index_t"}, +{text:"u",url:"namespacemembers_vars.html#index_u"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.html new file mode 100644 index 000000000..19c248c13 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.html @@ -0,0 +1,193 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/model_grid.F90 File Reference + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    model_grid.F90 File Reference
    +
    +
    + +

    Read in data defining the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  model_grid
     Read in data defining the model grid.
     
    + + + + + + + +

    +Functions/Subroutines

    subroutine model_grid::model_grid_cleanup
     Clean up allocatable arrays. More...
     
    subroutine model_grid::read_mdl_grid_info
     Read mdl grid. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer model_grid::grid_id_mdl
     grib id of model grid, 4-gaussian, 203-egrid More...
     
    integer model_grid::ijmdl
     total number of model land points More...
     
    integer model_grid::imdl
     i-dimension of model grid More...
     
    integer, dimension(:), allocatable model_grid::ipts_mdl
     i index of point on full grid More...
     
    integer model_grid::jmdl
     j-dimension of model grid More...
     
    integer, dimension(:), allocatable model_grid::jpts_mdl
     j index of point on full grid More...
     
    integer, dimension(200) model_grid::kgds_mdl
     holds grib gds info of model grid More...
     
    real model_grid::lat11
     Corner point latitude (1,1) of model grid. More...
     
    real model_grid::latlast
     Corner point latitude (imdl,jmdl) of model grid. More...
     
    real, dimension(:), allocatable model_grid::lats_mdl
     Latitudes of model grid points. More...
     
    real model_grid::lon11
     Corner point longitude (1,1) of model grid. More...
     
    real model_grid::lonlast
     Corner point longitude (imdl,jmdl) of model grid. More...
     
    real, dimension(:), allocatable model_grid::lons_mdl
     longitudes of model grid points More...
     
    integer, dimension(:), allocatable model_grid::lonsperlat_mdl
     Number of longitudes (i-points) for each latitude (row). More...
     
    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 More...
     
    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. More...
     
    real model_grid::resol_mdl
     approximate model resolution in km. More...
     
    logical model_grid::thinned
     When true, global grids will run thinned (number of i points decrease toward pole) More...
     
    +

    Detailed Description

    +

    Read in data defining the model grid.

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    Definition in file model_grid.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.js new file mode 100644 index 000000000..2e25f634a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90.js @@ -0,0 +1,23 @@ +var model__grid_8F90 = +[ + [ "model_grid_cleanup", "model__grid_8F90.html#ae4b396d49e0e43a5197fe77c75ebfebf", null ], + [ "read_mdl_grid_info", "model__grid_8F90.html#aeea3795bb9567fb780907965aeb22970", null ], + [ "grid_id_mdl", "model__grid_8F90.html#ae29445fda6b3da789d36492ce87aa1b9", null ], + [ "ijmdl", "model__grid_8F90.html#a73bcc7ca9e4f2307275e1fc2942ac1f2", null ], + [ "imdl", "model__grid_8F90.html#a1b068d3074c2263390f03d0e33e54a5f", null ], + [ "ipts_mdl", "model__grid_8F90.html#adfe9ff73ccb60a80b0e26b4ad6fc11cb", null ], + [ "jmdl", "model__grid_8F90.html#a171690707455a43c7f7d8cd0510cf505", null ], + [ "jpts_mdl", "model__grid_8F90.html#a0341915dbf28e8a1a503e2386d899be2", null ], + [ "kgds_mdl", "model__grid_8F90.html#aa59e9407e8b5aca044018284c75d72f4", null ], + [ "lat11", "model__grid_8F90.html#ad0972d7ff73d26be50dec4f189e14d91", null ], + [ "latlast", "model__grid_8F90.html#a213373c1340ce51c92c712ad3bb10b1e", null ], + [ "lats_mdl", "model__grid_8F90.html#a3d37d38997e337185d0c3c4827e6e318", null ], + [ "lon11", "model__grid_8F90.html#aea370e6e67fcf287150dba07f80851be", null ], + [ "lonlast", "model__grid_8F90.html#a11f76673645c0f419e3cc26b7702b6c9", null ], + [ "lons_mdl", "model__grid_8F90.html#aee07ec51c9531c1dae1f686434bbd386", null ], + [ "lonsperlat_mdl", "model__grid_8F90.html#a1aced7bcf47cad27806604241e101369", null ], + [ "lsmask_mdl", "model__grid_8F90.html#a22316f1c1f0e08906df3cba467443c46", null ], + [ "lsmask_mdl_sav", "model__grid_8F90.html#a6cb8b46e98431f9eb6f02605daa35146", null ], + [ "resol_mdl", "model__grid_8F90.html#ab7dfd22b801fd6f4b7e5610dfa822eab", null ], + [ "thinned", "model__grid_8F90.html#a66aef7fb9099f35ba30d71837d2d5086", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90_source.html new file mode 100644 index 000000000..d2b41cacf --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/model__grid_8F90_source.html @@ -0,0 +1,135 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/model_grid.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    model_grid.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    19  module model_grid
    20 
    21  use program_setup, only : model_lsmask_file, &
    25 
    26  integer :: grid_id_mdl
    27  integer :: imdl
    28  integer :: jmdl
    29  integer :: ijmdl
    30  integer, allocatable :: ipts_mdl(:)
    31  integer, allocatable :: jpts_mdl(:)
    32 
    33  integer :: kgds_mdl(200)
    34  integer, allocatable :: lonsperlat_mdl (:)
    37 
    38  logical :: thinned
    40 
    41  real, allocatable :: lats_mdl(:)
    42  real :: lat11
    43  real :: latlast
    44  real :: lon11
    45  real :: lonlast
    46  real, allocatable :: lons_mdl(:)
    47  real, allocatable :: lsmask_mdl(:,:)
    50  real, allocatable :: lsmask_mdl_sav(:,:)
    52  real :: resol_mdl
    53 
    54  contains
    84  subroutine read_mdl_grid_info
    85  use grib_mod ! grib 2 library
    86 
    87  implicit none
    88 
    89  character*256 :: fngrib
    90 
    91  integer :: i, j, ij, jj
    92  integer :: ii, iii, istart, iend, imid
    93  integer :: iret
    94  integer :: isgrib
    95  integer, parameter :: iunit = 14 ! unit of input grib file
    96  integer, parameter :: iunit2 = 34 ! unit of input lonsperlat file
    97  integer :: jgds(200)
    98  integer :: jpds(200)
    99  integer :: jdisc, jgdtn, jpdtn, k
    100  integer :: jids(200), jgdt(200), jpdt(200)
    101  integer :: lskip
    102  integer, parameter :: lugi = 0 ! unit of grib index file - not used
    103  integer :: kgds(200)
    104  integer :: kpds(200)
    105  integer :: message_num
    106  integer :: numbytes
    107  integer :: numpts
    108 
    109  logical*1, allocatable :: lbms(:)
    110  logical :: unpack
    111 
    112  real :: gridis, gridie, fraction, x1, r
    113  real, allocatable :: lats_mdl_temp (:,:)
    114  real, allocatable :: lons_mdl_temp (:,:)
    115 
    116  type(gribfield) :: gfld
    117 
    118  print*,"- READ MODEL GRID INFORMATION"
    119 
    120 !-----------------------------------------------------------------------
    121 ! read latitudes on the model grid. first check if file is grib1 or 2.
    122 !-----------------------------------------------------------------------
    123 
    124  fngrib = model_lat_file
    125 
    126  call grib_check(fngrib, isgrib)
    127 
    128  if (isgrib==0) then
    129  print*,'- FATAL ERROR: MODEL LAT FILE MUST BE GRIB1 OR GRIB2 FORMAT'
    130  call w3tage('SNOW2MDL')
    131  call errexit(90)
    132  end if
    133 
    134  print*,"- OPEN MODEL LAT FILE ", trim(fngrib)
    135  call baopenr (iunit, fngrib, iret)
    136 
    137  if (iret /= 0) then
    138  print*,'- FATAL ERROR: BAD OPEN, IRET IS ', iret
    139  call w3tage('SNOW2MDL')
    140  call errexit(80)
    141  end if
    142 
    143  if (isgrib==1) then ! grib 1 file
    144 
    145 !-----------------------------------------------------------------------
    146 ! tell degribber to search for latitudes
    147 !-----------------------------------------------------------------------
    148 
    149  lskip = -1 ! read beginning of file
    150  jgds = -1
    151  jpds = -1
    152  jpds(5) = 176 ! latitude
    153  kgds = -1
    154  kpds = -1
    155 
    156  print*,"- GET GRIB HEADER"
    157  call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
    158  numpts, message_num, kpds, kgds, iret)
    159 
    160  if (iret /= 0) then
    161  print*,'- FATAL ERROR: BAD READ OF GRIB HEADER. IRET IS ', iret
    162  call w3tage('SNOW2MDL')
    163  call errexit(81)
    164  end if
    165 
    166 !-----------------------------------------------------------------------
    167 ! save gds for gribbing the interpolated data later. also required
    168 ! by ncep ipolates library.
    169 !-----------------------------------------------------------------------
    170 
    171  kgds_mdl = kgds
    172 
    173 !-----------------------------------------------------------------------
    174 ! get model grid specs from header. model resolution (km) is used
    175 ! to determine the interpolation method.
    176 !-----------------------------------------------------------------------
    177 
    178  grid_id_mdl = kpds(3) ! grib 1 grid id number. sect 1, oct 7
    179 
    180  if (kgds(1) == 4) then ! gaussian grid
    181  imdl = kgds(2) ! i-dimension of model grid
    182  jmdl = kgds(3) ! j-dimension of model grid
    183  resol_mdl = float(kgds(9)) / 1000.0 * 111.0
    184  else if (kgds(1) == 203) then ! e-grid
    185  imdl = kgds(2) ! i-dimension of model grid
    186  jmdl = kgds(3) ! j-dimension of model grid
    187  resol_mdl = sqrt( (float(kgds(9)) / 1000.0)**2 + &
    188  (float(kgds(10)) / 1000.0)**2 )
    189  resol_mdl = resol_mdl * 111.0
    190  else if (kgds(1) == 205) then ! b-grid
    191  imdl = kgds(2) ! i-dimension of model grid
    192  jmdl = kgds(3) ! j-dimension of model grid
    193  resol_mdl = ((float(kgds(9)) / 1000.0) + (float(kgds(10)) / 1000.0)) &
    194  * 0.5 * 111.0
    195  else
    196  print*,'- FATAL ERROR: UNRECOGNIZED MODEL GRID.'
    197  call w3tage('SNOW2MDL')
    198  call errexit(79)
    199  end if
    200 
    201  allocate(lats_mdl_temp(imdl,jmdl))
    202  allocate(lbms(imdl*jmdl))
    203 
    204  print*,"- DEGRIB DATA"
    205  call getgb(iunit, lugi, (imdl*jmdl), lskip, jpds, jgds, &
    206  numpts, message_num, kpds, kgds, lbms, lats_mdl_temp, iret)
    207 
    208  if (iret /= 0) then
    209  print*,'- FATAL ERROR: BAD DEGRIB OF FILE. IRET IS ',iret
    210  call w3tage('SNOW2MDL')
    211  call errexit(82)
    212  end if
    213 
    214  deallocate(lbms)
    215 
    216  lat11 = lats_mdl_temp(1,1)
    217  latlast = lats_mdl_temp(imdl,jmdl)
    218 
    219  elseif (isgrib==2) then ! grib 2 file
    220 
    221  j = 0 ! search at beginning of file
    222  jdisc = 0 ! search for discipline; 0 - meteorological products
    223  jpdtn = -1 ! search for any product definition template number
    224  jgdtn = -1 ! search for any grid definition template number
    225  jids = -9999 ! array of values in identification section, set to wildcard
    226  jgdt = -9999 ! array of values in grid definition template 3.m
    227  jpdt = -9999 ! array of values in product definition template 4.n
    228  jpdt(1) = 191 ! search for parameter category - misc
    229  jpdt(2) = 1 ! search for parameter number - latitude
    230  unpack = .true. ! unpack data
    231 
    232  call grib2_null(gfld)
    233 
    234  print*,"- DEGRIB DATA"
    235  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    236  unpack, k, gfld, iret)
    237 
    238  if (iret /=0) then
    239  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    240  call w3tage('SNOW2MDL')
    241  call errexit(82)
    242  endif
    243 
    244 !-----------------------------------------------------------------------
    245 ! create the grib 1 gds array from the g2 gdt array. the grib 1
    246 ! gds info is used by ipolates and for gribbing the final snow analysis.
    247 !-----------------------------------------------------------------------
    248 
    249  call gdt_to_gds(gfld%igdtnum, gfld%igdtmpl, gfld%igdtlen, kgds_mdl, &
    250  imdl, jmdl, resol_mdl)
    251 
    252  grid_id_mdl = 255 ! grib1 grid id number. n/a for grib2.
    253  ! set to 'missing'.
    254 
    255  allocate(lats_mdl_temp(imdl,jmdl))
    256  lats_mdl_temp = reshape(gfld%fld , (/imdl,jmdl/) )
    257 
    258  lat11 = lats_mdl_temp(1,1)
    259  latlast = lats_mdl_temp(imdl,jmdl)
    260 
    261  call grib2_free(gfld)
    262 
    263  endif ! grib1 or grib2?
    264 
    265  call baclose(iunit,iret)
    266 
    267 !-----------------------------------------------------------------------
    268 ! read longitudes on the model grid.
    269 !-----------------------------------------------------------------------
    270 
    271  fngrib = model_lon_file
    272 
    273  call grib_check(fngrib, isgrib)
    274 
    275  if (isgrib==0) then
    276  print*,'- FATAL ERROR: MODEL LON FILE MUST BE GRIB1 OR GRIB2 FORMAT'
    277  call w3tage('SNOW2MDL')
    278  call errexit(91)
    279  end if
    280 
    281  print*,"- OPEN MODEL LON FILE ", trim(fngrib)
    282  call baopenr (iunit, fngrib, iret)
    283 
    284  if (iret /= 0) then
    285  print*,"- FATAL ERROR: BAD OPEN. IRET IS ", iret
    286  call w3tage('SNOW2MDL')
    287  call errexit(83)
    288  end if
    289 
    290  if (isgrib==1) then ! grib 1 file
    291 
    292  lskip = -1
    293  kgds = -1
    294  kpds = -1
    295  jgds = -1
    296  jpds = -1
    297  jpds(5) = 177 ! longitude
    298 
    299  allocate(lons_mdl_temp(imdl,jmdl))
    300  allocate(lbms(imdl*jmdl))
    301 
    302  print*,"- DEGRIB DATA"
    303  call getgb(iunit, lugi, (imdl*jmdl), lskip, jpds, jgds, &
    304  numpts, message_num, kpds, kgds, lbms, lons_mdl_temp, iret)
    305 
    306  if (iret /= 0) then
    307  print*,'- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ',iret
    308  call w3tage('SNOW2MDL')
    309  call errexit(84)
    310  end if
    311 
    312  deallocate(lbms)
    313 
    314  lon11 = lons_mdl_temp(1,1)
    315  lonlast = lons_mdl_temp(imdl,jmdl)
    316 
    317  elseif (isgrib==2) then ! grib2
    318 
    319  j = 0 ! search at beginning of file
    320  jdisc = 0 ! search for discipline; 0 - meteorological products
    321  jpdtn = -1 ! search for any product definition template number
    322  jgdtn = -1 ! search for any grid definition template number
    323  jids = -9999 ! array of values in identification section, set to wildcard
    324  jgdt = -9999 ! array of values in grid definition template 3.m
    325  jpdt = -9999 ! array of values in product definition template 4.n
    326  jpdt(1) = 191 ! search for parameter category - misc
    327  jpdt(2) = 2 ! search for parameter number - longitude
    328  unpack = .true. ! unpack data
    329 
    330  call grib2_null(gfld)
    331 
    332  print*,"- DEGRIB DATA"
    333  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    334  unpack, k, gfld, iret)
    335 
    336  if (iret /=0) then
    337  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    338  call w3tage('SNOW2MDL')
    339  call errexit(84)
    340  endif
    341 
    342  allocate(lons_mdl_temp(imdl,jmdl))
    343  lons_mdl_temp = reshape(gfld%fld , (/imdl,jmdl/) )
    344 
    345  lon11 = lons_mdl_temp(1,1)
    346  lonlast = lons_mdl_temp(imdl,jmdl)
    347 
    348  call grib2_free(gfld)
    349 
    350  endif ! grib1 or grib?
    351 
    352  call baclose(iunit, iret)
    353 
    354 !-----------------------------------------------------------------------
    355 ! read model land/sea mask.
    356 !-----------------------------------------------------------------------
    357 
    358  fngrib = model_lsmask_file
    359 
    360  call grib_check(fngrib, isgrib)
    361 
    362  if (isgrib==0) then
    363  print*,'- FATAL ERROR: MODEL LANDMASK FILE MUST BE GRIB1 OR GRIB2 FORMAT'
    364  call w3tage('SNOW2MDL')
    365  call errexit(92)
    366  end if
    367 
    368  print*,"- OPEN MODEL LANDMASK FILE ", trim(fngrib)
    369  call baopenr (iunit, fngrib, iret)
    370 
    371  if (iret /= 0) then
    372  print*,'- FATAL ERROR: BAD OPEN OF FILE. IRET IS ', iret
    373  call w3tage('SNOW2MDL')
    374  call errexit(85)
    375  end if
    376 
    377  if (isgrib==1) then ! grib 1 file
    378 
    379  lskip = -1
    380  kgds = -1
    381  kpds = -1
    382  jpds = -1
    383  jgds = -1
    384  jpds(5) = 81 ! land-sea mask
    385 
    386  allocate(lsmask_mdl(imdl,jmdl))
    387  allocate(lbms(imdl*jmdl))
    388 
    389  print*,"- DEGRIB DATA"
    390  call getgb(iunit, lugi, (imdl*jmdl), lskip, jpds, jgds, &
    391  numpts, message_num, kpds, kgds, lbms, lsmask_mdl, iret)
    392 
    393  if (iret /= 0) then
    394  print*,'- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ',iret
    395  call w3tage('SNOW2MDL')
    396  call errexit(86)
    397  end if
    398 
    399  deallocate (lbms)
    400 
    401  elseif (isgrib==2) then ! grib2
    402 
    403  j = 0 ! search at beginning of file
    404  jdisc = 2 ! search for discipline; 2 - land-sfc products
    405  jpdtn = -1 ! search for any product definition template number
    406  jgdtn = -1 ! search for any grid definition template number
    407  jids = -9999 ! array of values in identification section, set to wildcard
    408  jgdt = -9999 ! array of values in grid definition template 3.m
    409  jpdt = -9999 ! array of values in product definition template 4.n
    410  jpdt(1) = 0 ! search for parameter category - veg_biomass
    411  jpdt(2) = 0 ! search for parameter number - landcover
    412  unpack = .true. ! unpack data
    413 
    414  call grib2_null(gfld)
    415 
    416  print*,"- DEGRIB DATA"
    417  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    418  unpack, k, gfld, iret)
    419 
    420  if (iret /=0) then
    421  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    422  call w3tage('SNOW2MDL')
    423  call errexit(86)
    424  endif
    425 
    426  allocate(lsmask_mdl(imdl,jmdl))
    427  lsmask_mdl = reshape(gfld%fld , (/imdl,jmdl/) )
    428 
    429  call grib2_free(gfld)
    430 
    431  endif
    432 
    433  call baclose(iunit,iret)
    434 
    435 !-----------------------------------------------------------------------
    436 ! global model runs on a thinned grid (# grid points decreases
    437 ! towards the poles). if thinned logical is set, and this is a
    438 ! gaussian grid, modify the land/sea mask to account for the
    439 ! fact that delta x increases toward the poles.
    440 !-----------------------------------------------------------------------
    441 
    442  thinned=.false.
    443  if (kgds(1) == 4 .and. (len_trim(gfs_lpl_file) > 0)) then
    444 
    445  thinned=.true.
    446 
    447  print*,"- RUNNING A THINNED GRID"
    448 
    449  allocate (lonsperlat_mdl(jmdl/2))
    450 
    451  print*,"- OPEN/READ GFS LONSPERLAT FILE: ",trim(gfs_lpl_file)
    452  open (iunit2, file=trim(gfs_lpl_file), iostat=iret)
    453  if (iret /= 0) then
    454  print*,'- FATAL ERROR: BAD OPEN OF LONSPERLAT FILE. ABORT. IRET: ', iret
    455  call w3tage('SNOW2MDL')
    456  call errexit(76)
    457  endif
    458 
    459  read (iunit2,*,iostat=iret) numpts, lonsperlat_mdl
    460  close(iunit2)
    461  if (iret /= 0) then
    462  print*,'- FATAL ERROR: BAD READ OF LONSPERLAT FILE. ABORT. IRET: ', iret
    463  call w3tage('SNOW2MDL')
    464  call errexit(76)
    465  endif
    466 
    467  if (numpts /= (jmdl/2)) then
    468  print*,'- FATAL ERROR: WRONG DIMENSIION IN LONSPERLAT FILE. ABORT.'
    469  call w3tage('SNOW2MDL')
    470  call errexit(76)
    471  endif
    472 
    473  allocate (lsmask_mdl_sav(imdl,jmdl))
    475  lsmask_mdl = 0.0 ! this will identify land points to be processed by
    476  ! the ipolates routines.
    477 
    478 !-----------------------------------------------------------------------
    479 ! loop over every point on the thinned grid. calculate the start/end
    480 ! bounds with respect to the full grid in the 'i' direction. if
    481 ! the thinned point contains land, set all full grid points within
    482 ! the bounds to be land. this modified mask will identify the
    483 ! points to be processed by ipolates. after the call to ipolates,
    484 ! the thinned points will be set to a linear weighting of the full points
    485 ! located within the thinned point.
    486 !-----------------------------------------------------------------------
    487 
    488  do j = 1, jmdl
    489  jj = j
    490  if (j > jmdl/2) jj = jmdl - j + 1
    491  r = float(imdl)/ float(lonsperlat_mdl(jj))
    492  do i = 1, lonsperlat_mdl(jj)
    493  x1=float(i-1)*r
    494  imid = nint(x1+1.0) ! for this thinned grid point, this is
    495  ! the nearest 'i' index on the full grid.
    496  if (lsmask_mdl_sav(imid,j) > 0.0) then
    497  gridis = x1+1.0-r/2.
    498  istart = nint(gridis)
    499  gridie = x1+1.0+r/2.
    500  iend = nint(gridie)
    501  do ii = istart, iend
    502  if (ii == istart) then
    503  fraction = 0.5 - (gridis - float(istart))
    504  if (fraction < 0.0001) cycle
    505  endif
    506  if (ii == iend) then
    507  fraction = 0.5 + (gridie - float(iend))
    508  if (fraction < 0.0001) cycle
    509  endif
    510  iii = ii
    511  if (iii < 1) iii = imdl + iii
    512  lsmask_mdl(iii,j) = lsmask_mdl_sav(imid,j)
    513  enddo
    514  endif
    515  enddo
    516  enddo
    517 
    518  end if
    519 
    520 !-----------------------------------------------------------------------
    521 ! program only worries about land points. save i/j coordinate
    522 ! with respect to 2-d grid.
    523 !-----------------------------------------------------------------------
    524 
    525  ij = 0
    526 
    527  do j = 1, jmdl
    528  do i = 1, imdl
    529  if (lsmask_mdl(i,j) > 0.0) then
    530  ij = ij+1
    531  end if
    532  enddo
    533  enddo
    534 
    535  ijmdl = ij
    536 
    537  if (ijmdl == 0) then ! grid has only water points, dont run
    538  print*,' '
    539  print*,'- MODEL GRID ONLY HAS WATER POINTS, DONT CREATE SNOW FILE.'
    540  print*,'- NORMAL TERMINATION.'
    541  call w3tage('SNOW2MDL')
    542  call errexit(0)
    543  endif
    544 
    545  allocate (lats_mdl(ijmdl))
    546  allocate (lons_mdl(ijmdl))
    547  allocate (ipts_mdl(ijmdl))
    548  allocate (jpts_mdl(ijmdl))
    549 
    550  ij = 0
    551  do j = 1, jmdl
    552  do i = 1, imdl
    553  if (lsmask_mdl(i,j) > 0.0) then
    554  ij = ij+1
    555  lats_mdl(ij) = lats_mdl_temp(i,j)
    556  lons_mdl(ij) = lons_mdl_temp(i,j)
    557  ipts_mdl(ij) = i
    558  jpts_mdl(ij) = j
    559  end if
    560  enddo
    561  enddo
    562 
    563  deallocate (lats_mdl_temp, lons_mdl_temp)
    564 
    565  return
    566  end subroutine read_mdl_grid_info
    567 
    568 
    577  subroutine model_grid_cleanup
    579  implicit none
    580 
    581  if (allocated(lsmask_mdl)) deallocate(lsmask_mdl)
    582  if (allocated(lats_mdl)) deallocate(lats_mdl)
    583  if (allocated(lons_mdl)) deallocate(lons_mdl)
    584  if (allocated(lonsperlat_mdl)) deallocate(lonsperlat_mdl)
    585  if (allocated(ipts_mdl)) deallocate(ipts_mdl)
    586  if (allocated(jpts_mdl)) deallocate(jpts_mdl)
    587 
    588  return
    589 
    590  end subroutine model_grid_cleanup
    591 
    592  end module model_grid
    This module reads in data from the program&#39;s configuration namelist.
    +
    real lonlast
    Corner point longitude (imdl,jmdl) of model grid.
    Definition: model_grid.F90:45
    +
    subroutine grib2_null(gfld)
    Nullify the grib2 gribfield pointers.
    Definition: grib_utils.F90:611
    +
    integer jmdl
    j-dimension of model grid
    Definition: model_grid.F90:28
    +
    logical thinned
    When true, global grids will run thinned (number of i points decrease toward pole) ...
    Definition: model_grid.F90:38
    +
    integer, dimension(:), allocatable lonsperlat_mdl
    Number of longitudes (i-points) for each latitude (row).
    Definition: model_grid.F90:34
    +
    real, dimension(:), allocatable lats_mdl
    Latitudes of model grid points.
    Definition: model_grid.F90:41
    +
    Read in data defining the model grid.
    Definition: model_grid.F90:19
    +
    real, dimension(:,:), allocatable lsmask_mdl
    land mask of model grid (0 - non land, 1-land) for global grids run thinned, will contain a modified ...
    Definition: model_grid.F90:47
    +
    subroutine read_mdl_grid_info
    Read mdl grid.
    Definition: model_grid.F90:85
    +
    real, dimension(:), allocatable lons_mdl
    longitudes of model grid points
    Definition: model_grid.F90:46
    +
    real resol_mdl
    approximate model resolution in km.
    Definition: model_grid.F90:52
    +
    subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
    Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library.
    Definition: grib_utils.F90:140
    +
    integer imdl
    i-dimension of model grid
    Definition: model_grid.F90:27
    +
    subroutine grib2_free(gfld)
    Deallocate the grib2 gribfield pointers.
    Definition: grib_utils.F90:636
    +
    subroutine model_grid_cleanup
    Clean up allocatable arrays.
    Definition: model_grid.F90:578
    +
    character *200, public model_lon_file
    path/name lons on the model grid
    +
    real lon11
    Corner point longitude (1,1) of model grid.
    Definition: model_grid.F90:44
    +
    integer ijmdl
    total number of model land points
    Definition: model_grid.F90:29
    +
    integer, dimension(:), allocatable jpts_mdl
    j index of point on full grid
    Definition: model_grid.F90:31
    +
    character *200, public gfs_lpl_file
    GFS gaussian thinned (reduced) grid definition file.
    +
    integer, dimension(200) kgds_mdl
    holds grib gds info of model grid
    Definition: model_grid.F90:33
    +
    real latlast
    Corner point latitude (imdl,jmdl) of model grid.
    Definition: model_grid.F90:43
    +
    integer, dimension(:), allocatable ipts_mdl
    i index of point on full grid
    Definition: model_grid.F90:30
    +
    character *200, public model_lsmask_file
    path/name nesdis/ims land mask
    +
    subroutine grib_check(file_name, isgrib)
    Determine whether file is grib or not.
    Definition: grib_utils.F90:24
    +
    integer grid_id_mdl
    grib id of model grid, 4-gaussian, 203-egrid
    Definition: model_grid.F90:26
    +
    real lat11
    Corner point latitude (1,1) of model grid.
    Definition: model_grid.F90:42
    +
    character *200, public model_lat_file
    path/name lats on the model grid
    +
    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...
    Definition: model_grid.F90:50
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacemembers.html b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers.html new file mode 100644 index 000000000..96a289623 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers.html @@ -0,0 +1,449 @@ + + + + + + + +emcsfc_snow2mdl: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - g -

    + + +

    - i -

    + + +

    - j -

    + + +

    - k -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_func.html b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_func.html new file mode 100644 index 000000000..29a078390 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_func.html @@ -0,0 +1,147 @@ + + + + + + + +emcsfc_snow2mdl: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_vars.html b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_vars.html new file mode 100644 index 000000000..8098d57fd --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacemembers_vars.html @@ -0,0 +1,400 @@ + + + + + + + +emcsfc_snow2mdl: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - g -

    + + +

    - i -

    + + +

    - j -

    + + +

    - k -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacemodel__grid.html b/ver-1.11.0/emcsfc_snow2mdl/namespacemodel__grid.html new file mode 100644 index 000000000..6fa398a3a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacemodel__grid.html @@ -0,0 +1,615 @@ + + + + + + + +emcsfc_snow2mdl: model_grid Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    model_grid Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Read in data defining the model 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 model lat, lon and landmask data in grib2.
    • +
    +

    variable definitions:

      +
    • lonsperlat - for global grids, the number of i points in each row (decrease toward pole)
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    +

    Function/Subroutine Documentation

    + +

    ◆ model_grid_cleanup()

    + +
    +
    + + + + + + + +
    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

    +
    Author
    George Gayno org: w/np2
    +
    Date
    Dec 16, 2005
    + +

    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().

    + +
    +
    + +

    ◆ read_mdl_grid_info()

    + +
    +
    + + + + + + + +
    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:

      +
    • model latitudes (grib 1 or grib 2)
    • +
    • model longitudes (grib 1 or grib 2)
    • +
    • model landmask (grib 1 or grib 2)
    • +
    • number pts per row, gfs grid (the "lonsperlat" file, ascii) condition codes: all fatal 76 - bad open/read gfs "lonsperlat" file 79 - unrecognized model grid 80 - bad open model latitude file 81 - bad read of model latitude grib 1 header 82 - bad read of model latitude data 83 - bad open model longitude file 82 - bad read of model longitude data 85 - bad open model landmask file 86 - bad read of model landmask data 90 - model latitude file not grib 1 or grib 2 91 - model longitude file not grib 1 or grib 2 92 - model landmask file not grib 1 or grib 2
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-dec-16
    + +

    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().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ grid_id_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ijmdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ imdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ipts_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ jmdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ jpts_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lat11

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ latlast

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lats_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lon11

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lonlast

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lons_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lonsperlat_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lsmask_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lsmask_mdl_sav

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ resol_mdl

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ thinned

    + +
    +
    + + + + +
    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().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespaceprogram__setup.html b/ver-1.11.0/emcsfc_snow2mdl/namespaceprogram__setup.html new file mode 100644 index 000000000..b5a5955ab --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespaceprogram__setup.html @@ -0,0 +1,702 @@ + + + + + + + +emcsfc_snow2mdl: program_setup Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    program_setup Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    This module reads in data from the program's configuration namelist.

    +

    program history log:

      +
    • 2005-DEC-16 gayno - initial version
    • +
    • 2008-Feb-01 gayno - added autosnow data
    • +
    • 2014-Sep-30 gayno - added 'output_grib2' flag
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-DEC-16
    +

    Function/Subroutine Documentation

    + +

    ◆ read_config_nml()

    + +
    +
    + + + + + + + +
    subroutine, public program_setup::read_config_nml ()
    +
    + +

    Read namelist control.

    +
    Note
    This subroutine reads the program's configuration namelist that contains the the paths/filenames for input and output, and other program control flags.
    +

    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:

      +
    • program configuration namelist, fort.41
    • +
    +

    condition codes: all fatal

      +
    • 77 - bad open on configuration namelist
    • +
    • 78 - bad read on configuration namelist
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    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().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ afwa_lsmask_nh_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ afwa_lsmask_sh_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ afwa_snow_global_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ afwa_snow_nh_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ afwa_snow_sh_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ autosnow_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ climo_qc_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ gfs_lpl_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grib_century

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grib_day

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grib_hour

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grib_month

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grib_year

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ lat_threshold

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ min_snow_depth

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ model_lat_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ model_lon_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ model_lsmask_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ model_snow_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ nesdis_lsmask_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ nesdis_snow_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ output_grib2

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_cvr_threshold

    + +
    +
    + + + + +
    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().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespaces.html b/ver-1.11.0/emcsfc_snow2mdl/namespaces.html new file mode 100644 index 000000000..81b119d32 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespaces.html @@ -0,0 +1,112 @@ + + + + + + + +emcsfc_snow2mdl: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + + + + +
     Nmodel_gridRead in data defining the model grid
     Nprogram_setupThis module reads in data from the program's configuration namelist
     Nsnow2mdlInterpolate snow data to model grid and grib the result
     NsnowdatRead and qc afwa, nesdis/ims and autosnow snow data
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespaces_dup.js b/ver-1.11.0/emcsfc_snow2mdl/namespaces_dup.js new file mode 100644 index 000000000..aefc9c32b --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespaces_dup.js @@ -0,0 +1,7 @@ +var namespaces_dup = +[ + [ "model_grid", "namespacemodel__grid.html", null ], + [ "program_setup", "namespaceprogram__setup.html", null ], + [ "snow2mdl", "namespacesnow2mdl.html", null ], + [ "snowdat", "namespacesnowdat.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacesnow2mdl.html b/ver-1.11.0/emcsfc_snow2mdl/namespacesnow2mdl.html new file mode 100644 index 000000000..917015042 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacesnow2mdl.html @@ -0,0 +1,509 @@ + + + + + + + +emcsfc_snow2mdl: snow2mdl Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    snow2mdl Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Interpolate snow data to model grid and grib the result.

    +

    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 - Added autosnow data.
    • +
    • 2014-Sep-26 gayno - Added option to output analysed snow in grib2.
    • +
    +

    variable definitions:

      +
    • snow_cvr_mdl -
    • +
    • snow_dep_mdl -
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    +

    Function/Subroutine Documentation

    + +

    ◆ interp()

    + +
    +
    + + + + + + + +
    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

    +
    Note
    The determination of cover and depth on the model grid depends on the input snow data selected.
    +

    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.

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    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().

    + +
    +
    + +

    ◆ intlon()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine snow2mdl::intlon (integer, intent(in) iord,
    integer, intent(in) imon,
    integer, intent(in) imsk,
    integer, intent(in) m1,
    integer, intent(in) m2,
    integer, dimension(m1), intent(in) k1,
    real, dimension(m1), intent(in) f1,
    real, dimension(m2), intent(out) f2 
    )
    +
    +private
    +
    + +

    Convert data from the thinned (or reduced) to the full grid along a single row.

    +
    Parameters
    + + + + + + + + + +
    [in]iordInterpolation method. '1' neighbor; '2' bilinear.
    [in]imonNot used.
    [in]imskFlag to account for mask during conversion. '0' - use mask.
    [in]m1Number of points along a row of the thinned grid.
    [in]m2Number of points along a row on the full grid.
    [in]k1Mask of input data.
    [in]f1Data on the thinned (or reduced) grid.
    [out]f2Data on the full grid.
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    Definition at line 1167 of file snow2mdl.F90.

    + +

    Referenced by uninterpred().

    + +
    +
    + +

    ◆ uninterpred()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine snow2mdl::uninterpred (integer, intent(in) iord,
    integer, dimension(lonl*latd), intent(in) kmsk,
    real, dimension(len), intent(in) fi,
    real, dimension(lonl,latd), intent(out) f,
    integer, intent(in) lonl,
    integer, intent(in) latd,
    integer, intent(in) len,
    integer, dimension(latd/2), intent(in) lonsperlat 
    )
    +
    +private
    +
    + +

    Fills out full grid using thinned grid data.

    +

    Use an iord of "1" to use a nearest neighbor approach.

    +
    Parameters
    + + + + + + + + + +
    [in]iordInterpolation method. '1' neighbor; '2' bilinear.
    [in]kmskMask 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]fi1-d array to be processed.
    [out]f2-d array on the full grid.
    [in]lonl'i' dimension of 2-d data.
    [in]latd'j' dimension of 2-d data.
    [in]lenNumber of elements of 1-d data.
    [in]lonsperlatDefinition of thinned (or reduced) grid. Number of "i" points for each 'j' row.
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    Definition at line 1116 of file snow2mdl.F90.

    + +

    References intlon().

    + +

    Referenced by interp().

    + +
    +
    + +

    ◆ write_grib1()

    + +
    +
    + + + + + + + +
    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:

      +
    • snow on model grid, grib 1, unit=lugb
    • +
    +

    condition codes:

      +
    • 57 - error writing model snow depth record
    • +
    • 58 - error writing model snow cover record
    • +
    • 59 - error opening model snow file
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    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().

    + +
    +
    + +

    ◆ write_grib2()

    + +
    +
    + + + + + + + +
    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:

      +
    • snow on the model grid, grib 2, unit=lugb
    • +
    +

    condition codes: all fatal

      +
    • 48 error writing model snow flie
    • +
    • 49 error opening model snow flie
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2014-Sep-26
    + +

    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().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ snow_cvr_mdl

    + +
    +
    + + + + + +
    + + + + +
    real, dimension(:,:), allocatable snow2mdl::snow_cvr_mdl
    +
    +private
    +
    + +

    snow cover on model grid in percent

    + +

    Definition at line 85 of file snow2mdl.F90.

    + +

    Referenced by interp(), write_grib1(), and write_grib2().

    + +
    +
    + +

    ◆ snow_dep_mdl

    + +
    +
    + + + + + +
    + + + + +
    real, dimension(:,:), allocatable snow2mdl::snow_dep_mdl
    +
    +private
    +
    + +

    snow depth on model grid in meters

    + +

    Definition at line 86 of file snow2mdl.F90.

    + +

    Referenced by interp(), write_grib1(), and write_grib2().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/namespacesnowdat.html b/ver-1.11.0/emcsfc_snow2mdl/namespacesnowdat.html new file mode 100644 index 000000000..3781f3afc --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/namespacesnowdat.html @@ -0,0 +1,1328 @@ + + + + + + + +emcsfc_snow2mdl: snowdat Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    snowdat Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Read and qc afwa, nesdis/ims and autosnow snow data.

    +

    program history log:

      +
    • 2005-dec-16 gayno - initial version
    • +
    • 2007-aug-10 gayno - Allow program to run with no nesdis/ims data. Add 16th mesh afwa grib data.
    • +
    • 2008-feb-04 gayno - Add autosnow cover data for sh.
    • +
    • 2009-jun-03 gayno - Add qc check for nesdis/ims and afwa data.
    • +
    • 2014-feb-07 gayno - Read nesdis/ims data in grib1 or grib 2 format.
    • +
    • 2014-sep-30 gayno - Convert weekly nh snow climatology - used to qc input data - to grib 2. variable definitions:
    • +
    • bad_afwa_Xh - is afwa data corrupt?
    • +
    • bitmap_afwa_Xh - bitmap of afwa grid (false-non land, true-land)
    • +
    • kgds_afwa_Xh - afwa grid description section (grib section 2)
    • +
    • nesdis_res - resolution of nesdis/ims data in km
    • +
    • snow_dep_afwa_Xh - afwa snow depth data (inches*10 on input, meters on output)
    • +
    • use_xh_afwa - true if afwa data to be used
    • +
    +

    Function/Subroutine Documentation

    + +

    ◆ afwa_check()

    + +
    +
    + + + + + + + + +
    subroutine snowdat::afwa_check (integer, intent(in) hemi)
    +
    + +

    Check for corrupt afwa data.

    +
    Parameters
    + + +
    [in]hemi(1-nh, 2-sh)
    +
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2009-Jun-3
    + +

    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().

    + +
    +
    + +

    ◆ nh_climo_check()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Note
    Check for corrupt nh data by comparing it to climatology.
    +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]kgds_dataGrib 1 grid description sect of data to be qcd.
    [in]snow_dataSnow cover to be qcd.
    [in]bitmap_databitmap of data to be qcd.
    [in]idataI dimension of data to be qcd.
    [in]jdataJ dimension of data to be qcd.
    [in]isrcFlag indicating data source; 1- afwa depth, 2-ims cover.
    [out]badWhen true, data failed check.
    +
    +
    +

    files: input:

      +
    • NH weekly climatological snow cover file (grib 2).
    • +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2009-Jun-3
    + +

    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().

    + +
    +
    + +

    ◆ read_afwa_binary()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]file_namefile name
    [out]snow_dep_afwasnow depth in meters
    +
    +
    +

    files: input:

      +
    • nh/sh afwa data in simple binary format
    • +
    +

    condition codes: all fatal 60 - bad open of afwa file 61 - bad read of afwa file

    +
    Note
    Read logic for binary data is taken from hua-lu's code, /nwprod/sorc/grib_snowgrib.fd.
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2007-Nov-28
    + +

    Definition at line 1234 of file snowdat.F90.

    + +

    Referenced by readafwa().

    + +
    +
    + +

    ◆ read_afwa_mask()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]file_nameland mask file name
    [out]bitmap_afwa.true. if land
    +
    +
    +

    files: input:

      +
    • afwa landmask in simple binary format
    • +
    +

    condition codes: all fatal 62 - bad open of afwa landmask file 63 - bad read of afwa landmask file

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2007-Nov-28
    + +

    Definition at line 1317 of file snowdat.F90.

    + +

    Referenced by readafwa().

    + +
    +
    + +

    ◆ readafwa()

    + +
    +
    + + + + + + + +
    subroutine snowdat::readafwa ()
    +
    + +

    Read snow depth data and masks.

    +
    Note
    Read afwa snow depth data and land sea mask.
    +

    program history log:

    +

    2005-dec-16 gayno - initial version 2007-nov-28 gayno - read 16th mesh afwa data in grib format

    +

    files: input:

      +
    • global afwa data in grib 2 (if selected)
    • +
    • nh afwa data in grib 1 (if selected)
    • +
    • sh afwa data in grib 1 (if selected)
    • +
    +

    condition codes: 60 - bad open afwa file 61 - bad degrib of afwa file

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    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().

    + +
    +
    + +

    ◆ readautosnow()

    + +
    +
    + + + + + + + +
    subroutine snowdat::readautosnow ()
    +
    + +

    Read autosnow snow cover.

    +

    program history log: 2008-feb-04 gayno - initial version

    +

    files: input:

      +
    • autosnow data, grib 2, unit=lugb
    • +
    +

    condition codes: all fatal 74 - bad open of autosnow file 75 - bad read of autosnow file

    +
    Note
    Autosnow data is available only for southern hemis. Autosnow data is in grib 2.
    +
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2008-Feb-04
    + +

    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().

    + +
    +
    + +

    ◆ readnesdis()

    + +
    +
    + + + + + + + +
    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:

      +
    • ims snow cover and ice file, grib 1 or grib 2
    • +
    • 16th-mesh ims land mask, binary
    • +
    +

    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

    +
    Note
    Nesdis/ims data available only for n hemis. Ims data used to be created by nesdis, hence the references to "nesdis" in this routine. Ims data is now created by the national ice center.
    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    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().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ afwa_res

    + +
    +
    + + + + +
    real snowdat::afwa_res
    +
    + +

    Resolution of afwa data in km.

    + +

    Definition at line 84 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readafwa().

    + +
    +
    + +

    ◆ autosnow_res

    + +
    +
    + + + + +
    real snowdat::autosnow_res
    +
    + +

    Resolution of autosnow in km.

    + +

    Definition at line 83 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readautosnow().

    + +
    +
    + +

    ◆ bad_afwa_global

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bad_afwa_nh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bad_afwa_sh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bad_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bitmap_afwa_global

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bitmap_afwa_nh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bitmap_afwa_sh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bitmap_autosnow

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ bitmap_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ iafwa

    + +
    +
    + + + + +
    integer snowdat::iafwa
    +
    + +

    i-dimension of afwa grid

    + +

    Definition at line 40 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readafwa().

    + +
    +
    + +

    ◆ iautosnow

    + +
    +
    + + + + +
    integer snowdat::iautosnow
    +
    + +

    i-dimension of autosnow grid

    + +

    Definition at line 41 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readautosnow().

    + +
    +
    + +

    ◆ inesdis

    + +
    +
    + + + + +
    integer snowdat::inesdis
    +
    + +

    i-dimension of nesdis grid

    + +

    Definition at line 42 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readnesdis().

    + +
    +
    + +

    ◆ jafwa

    + +
    +
    + + + + +
    integer snowdat::jafwa
    +
    + +

    j-dimension of afwa grid

    + +

    Definition at line 43 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readafwa().

    + +
    +
    + +

    ◆ jautosnow

    + +
    +
    + + + + +
    integer snowdat::jautosnow
    +
    + +

    j-dimension of autosnow grid

    + +

    Definition at line 44 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readautosnow().

    + +
    +
    + +

    ◆ jnesdis

    + +
    +
    + + + + +
    integer snowdat::jnesdis
    +
    + +

    j-dimension of nesdis grid

    + +

    Definition at line 45 of file snowdat.F90.

    + +

    Referenced by snow2mdl::interp(), and readnesdis().

    + +
    +
    + +

    ◆ kgds_afwa_global

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_afwa_nh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_afwa_nh_8th

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_afwa_sh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_afwa_sh_8th

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_autosnow

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ kgds_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ mesh_nesdis

    + +
    +
    + + + + +
    integer snowdat::mesh_nesdis
    +
    + +

    nesdis/ims data is 96th mesh (or bediant)

    + +

    Definition at line 58 of file snowdat.F90.

    + +

    Referenced by readnesdis().

    + +
    +
    + +

    ◆ nesdis_res

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ sea_ice_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_cvr_autosnow

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_cvr_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_dep_afwa_global

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_dep_afwa_nh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ snow_dep_afwa_sh

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ use_autosnow

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ use_global_afwa

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ use_nesdis

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ use_nh_afwa

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ use_sh_afwa

    + +
    +
    + + + + +
    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().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/nav_f.png b/ver-1.11.0/emcsfc_snow2mdl/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/nav_g.png b/ver-1.11.0/emcsfc_snow2mdl/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +emcsfc_snow2mdl: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.html new file mode 100644 index 000000000..d53534009 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.html @@ -0,0 +1,205 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/program_setup.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    program_setup.F90 File Reference
    +
    +
    + +

    This module reads in data from the program's configuration. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  program_setup
     This module reads in data from the program's configuration namelist.
     
    + + + + +

    +Functions/Subroutines

    subroutine, public program_setup::read_config_nml
     Read namelist control. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    character *200, public program_setup::afwa_lsmask_nh_file
     path/name afwa n hemis land/sea mask More...
     
    character *200, public program_setup::afwa_lsmask_sh_file
     path/name afwa s hemis land/sea mask More...
     
    character *200, public program_setup::afwa_snow_global_file
     global afwa snow file. More...
     
    character *200, public program_setup::afwa_snow_nh_file
     path/name afwa n hemis snow depth More...
     
    character *200, public program_setup::afwa_snow_sh_file
     path/name afwa s hemis snow depth More...
     
    character *200, public program_setup::autosnow_file
     path/name s hemis autosnow file More...
     
    character *200, public program_setup::climo_qc_file
     Climatological snow cover file. More...
     
    character *200, public program_setup::gfs_lpl_file
     GFS gaussian thinned (reduced) grid definition file. More...
     
    integer, public program_setup::grib_century
     date of the final merged snow product that will be placed in grib header. More...
     
    integer, public program_setup::grib_day
     date of the final merged snow product that will be placed in grib header. More...
     
    integer, public program_setup::grib_hour
     date of the final merged snow product that will be placed in grib header. More...
     
    integer, public program_setup::grib_month
     date of the final merged snow product that will be placed in grib header. More...
     
    integer, public program_setup::grib_year
     date of the final merged snow product that will be placed in grib header. More...
     
    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. More...
     
    real, public program_setup::min_snow_depth
     minimum snow depth in meters at model points with coverage exceeding threshold. More...
     
    character *200, public program_setup::model_lat_file
     path/name lats on the model grid More...
     
    character *200, public program_setup::model_lon_file
     path/name lons on the model grid More...
     
    character *200, public program_setup::model_lsmask_file
     path/name nesdis/ims land mask More...
     
    character *200, public program_setup::model_snow_file
     path/name nesdis/ims snow cover More...
     
    character *200, public program_setup::nesdis_lsmask_file
     nesdis/ims land mask file More...
     
    character *200, public program_setup::nesdis_snow_file
     nesdis/ims snow file More...
     
    logical, public program_setup::output_grib2
     when true, output model snow analysis is grib 2. More...
     
    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. More...
     
    +

    Detailed Description

    +

    This module reads in data from the program's configuration.

    +

    namelist.

    Author
    George Gayno org: w/np2
    +
    Date
    2005-DEC-16
    + +

    Definition in file program_setup.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.js new file mode 100644 index 000000000..b30d0c1a2 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90.js @@ -0,0 +1,27 @@ +var program__setup_8F90 = +[ + [ "read_config_nml", "program__setup_8F90.html#a40111d93a5e305839de5e43e78183273", null ], + [ "afwa_lsmask_nh_file", "program__setup_8F90.html#a43a435dd24e36af107408a075c746f21", null ], + [ "afwa_lsmask_sh_file", "program__setup_8F90.html#a12e8b1d97514d8da4878a7cd67a2fe9d", null ], + [ "afwa_snow_global_file", "program__setup_8F90.html#a6a377ea4d55070d4123243cc3674503e", null ], + [ "afwa_snow_nh_file", "program__setup_8F90.html#a53abfccb2d46bceaaca56f5f42945b54", null ], + [ "afwa_snow_sh_file", "program__setup_8F90.html#afbac181b468bd322169ea328be7febdc", null ], + [ "autosnow_file", "program__setup_8F90.html#ac2bba437d91948e2c57ad5e1fcd0f0f5", null ], + [ "climo_qc_file", "program__setup_8F90.html#a53815197625fefd3f18cd32279a2fe63", null ], + [ "gfs_lpl_file", "program__setup_8F90.html#a2bca0b9cc8a529378996db9d01834ce0", null ], + [ "grib_century", "program__setup_8F90.html#ae279dad8d751b50c8665a1c800e55dcc", null ], + [ "grib_day", "program__setup_8F90.html#a1699f69c7663e947954705fa2d47a400", null ], + [ "grib_hour", "program__setup_8F90.html#aed771b4d68c745430d9e0d33ea32de42", null ], + [ "grib_month", "program__setup_8F90.html#ad417edd0599523f776d1ac397f5a5671", null ], + [ "grib_year", "program__setup_8F90.html#a7a1e634fcd53f0e116c720d1210ea588", null ], + [ "lat_threshold", "program__setup_8F90.html#a2debd7c7f28465b9c8b1dfb4f2419cb5", null ], + [ "min_snow_depth", "program__setup_8F90.html#a83781bd873dc7dbe2fa36e1ac303a87e", null ], + [ "model_lat_file", "program__setup_8F90.html#a9ac528ca11e79507a963c07d1e7908fe", null ], + [ "model_lon_file", "program__setup_8F90.html#aa3c1cda9b829fb88135527d0b186f3c0", null ], + [ "model_lsmask_file", "program__setup_8F90.html#abf13b78f20f765042e0062c600f34995", null ], + [ "model_snow_file", "program__setup_8F90.html#a380d5d7433e1b8aaa20c3b23dade485e", null ], + [ "nesdis_lsmask_file", "program__setup_8F90.html#ab7289f6baec4d17a385e019e11c84cd1", null ], + [ "nesdis_snow_file", "program__setup_8F90.html#a491316d574aab09980f90d9b2d4ec315", null ], + [ "output_grib2", "program__setup_8F90.html#ac9c1b20eec2b73f9129fa949d6358cb8", null ], + [ "snow_cvr_threshold", "program__setup_8F90.html#ab11d857a926778a69088ecdd4bdadb8a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90_source.html new file mode 100644 index 000000000..991fa320c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/program__setup_8F90_source.html @@ -0,0 +1,130 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/program_setup.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    program_setup.F90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    16 
    17  implicit none
    18 
    19  private
    20 
    21  character*200, public :: afwa_snow_global_file
    22  character*200, public :: afwa_snow_nh_file
    23  character*200, public :: afwa_snow_sh_file
    24  character*200, public :: afwa_lsmask_nh_file
    25  character*200, public :: afwa_lsmask_sh_file
    26  character*200, public :: autosnow_file
    27  character*200, public :: climo_qc_file
    29  character*200, public :: gfs_lpl_file
    32  character*200, public :: model_lat_file
    33  character*200, public :: model_lon_file
    34  character*200, public :: model_lsmask_file
    35  character*200, public :: model_snow_file
    36  character*200, public :: nesdis_lsmask_file
    37  character*200, public :: nesdis_snow_file
    38 
    39  integer, public :: grib_century
    40 
    41  integer, public :: grib_day
    42  integer, public :: grib_hour
    43  integer, public :: grib_month
    44  integer, public :: grib_year
    45 
    46  logical, public :: output_grib2
    47 
    48  real, public :: lat_threshold
    52  real, public :: min_snow_depth
    53  real, public :: snow_cvr_threshold
    55 
    56  public :: read_config_nml
    57 
    58  contains
    59 
    80  subroutine read_config_nml
    81 
    82  implicit none
    83 
    84  integer, parameter :: iunit=41
    85  integer :: istat
    86 
    87  namelist /source_data/ autosnow_file, &
    95 
    96  namelist /qc/ climo_qc_file
    97 
    98  namelist /model_specs/ model_lat_file, &
    102 
    103  namelist /output_data/ model_snow_file, &
    105 
    106  namelist /output_grib_time/ grib_year, &
    107  grib_month, &
    108  grib_day, &
    109  grib_hour
    110 
    111  namelist /parameters/ lat_threshold, &
    112  min_snow_depth, &
    114 
    115  print*,''
    116  print*,"- READ CONFIGURATION NAMELIST"
    117 
    118  open(iunit, iostat=istat)
    119 
    120  if (istat /= 0) then
    121  print*,''
    122  print*,'- FATAL ERROR: BAD OPEN ON CONFIG NAMELIST. ISTAT IS ', istat
    123  close(iunit)
    124  call w3tage('SNOW2MDL')
    125  call errexit(77)
    126  end if
    127 
    128  read(iunit, nml=source_data, iostat=istat, err=900)
    129 
    130  read(iunit, nml=qc, iostat=istat, err=900)
    131 
    132  read(iunit, nml=model_specs, iostat=istat, err=900)
    133 
    134  read(iunit, nml=output_data, iostat=istat, err=900)
    135 
    136  read(iunit, nml=output_grib_time, iostat=istat, err=900)
    137 
    138  read(iunit, nml=parameters, iostat=istat, err=900)
    139 
    140  close(iunit)
    141 
    142 !-----------------------------------------------------------------------
    143 ! the user determines the date/time stamp for the final interpolated
    144 ! model data.
    145 !-----------------------------------------------------------------------
    146 
    147  grib_century = grib_year / 100
    148 
    149  grib_year = mod(grib_year,100)
    150 
    151  if (grib_year == 0) then
    152  grib_year = 100
    153  else
    155  end if
    156 
    157  return
    158 
    159  900 continue
    160  print*,''
    161  print*,'- FATAL ERROR: BAD READ ON CONFIG NAMELIST. ISTAT IS ', istat
    162  close(iunit)
    163  call w3tage('SNOW2MDL')
    164  call errexit(78)
    165 
    166  end subroutine read_config_nml
    167 
    168  end module program_setup
    This module reads in data from the program&#39;s configuration namelist.
    +
    real, public snow_cvr_threshold
    if percent coverage according to nesdis/ims or autosnow exceeds this value, then non-zero snow depth ...
    +
    real, public min_snow_depth
    minimum snow depth in meters at model points with coverage exceeding threshold.
    +
    integer, public grib_century
    date of the final merged snow product that will be placed in grib header.
    +
    integer, public grib_month
    date of the final merged snow product that will be placed in grib header.
    +
    character *200, public climo_qc_file
    Climatological snow cover file.
    +
    character *200, public nesdis_lsmask_file
    nesdis/ims land mask file
    +
    character *200, public afwa_lsmask_nh_file
    path/name afwa n hemis land/sea mask
    +
    character *200, public afwa_lsmask_sh_file
    path/name afwa s hemis land/sea mask
    +
    character *200, public autosnow_file
    path/name s hemis autosnow file
    +
    character *200, public afwa_snow_sh_file
    path/name afwa s hemis snow depth
    +
    integer, public grib_day
    date of the final merged snow product that will be placed in grib header.
    +
    character *200, public nesdis_snow_file
    nesdis/ims snow file
    +
    real, public lat_threshold
    equatorward of this latitude, model points with undefined cover or depth (because the interpolation r...
    +
    logical, public output_grib2
    when true, output model snow analysis is grib 2.
    +
    character *200, public model_lon_file
    path/name lons on the model grid
    +
    character *200, public afwa_snow_global_file
    global afwa snow file.
    +
    character *200, public afwa_snow_nh_file
    path/name afwa n hemis snow depth
    +
    character *200, public model_snow_file
    path/name nesdis/ims snow cover
    +
    character *200, public gfs_lpl_file
    GFS gaussian thinned (reduced) grid definition file.
    +
    integer, public grib_year
    date of the final merged snow product that will be placed in grib header.
    +
    integer, public grib_hour
    date of the final merged snow product that will be placed in grib header.
    +
    character *200, public model_lsmask_file
    path/name nesdis/ims land mask
    +
    subroutine, public read_config_nml
    Read namelist control.
    +
    character *200, public model_lat_file
    path/name lats on the model grid
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/resize.js b/ver-1.11.0/emcsfc_snow2mdl/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_0.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_0.js new file mode 100644 index 000000000..f49400633 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['afwa_5fcheck',['afwa_check',['../namespacesnowdat.html#a5989c5b503107e9d2ddbc11464da3486',1,'snowdat']]], + ['afwa_5flsmask_5fnh_5ffile',['afwa_lsmask_nh_file',['../namespaceprogram__setup.html#a43a435dd24e36af107408a075c746f21',1,'program_setup']]], + ['afwa_5flsmask_5fsh_5ffile',['afwa_lsmask_sh_file',['../namespaceprogram__setup.html#a12e8b1d97514d8da4878a7cd67a2fe9d',1,'program_setup']]], + ['afwa_5fres',['afwa_res',['../namespacesnowdat.html#a541d870ef9a1451bfa35cf7866f8ac1f',1,'snowdat']]], + ['afwa_5fsnow_5fglobal_5ffile',['afwa_snow_global_file',['../namespaceprogram__setup.html#a6a377ea4d55070d4123243cc3674503e',1,'program_setup']]], + ['afwa_5fsnow_5fnh_5ffile',['afwa_snow_nh_file',['../namespaceprogram__setup.html#a53abfccb2d46bceaaca56f5f42945b54',1,'program_setup']]], + ['afwa_5fsnow_5fsh_5ffile',['afwa_snow_sh_file',['../namespaceprogram__setup.html#afbac181b468bd322169ea328be7febdc',1,'program_setup']]], + ['autosnow_5ffile',['autosnow_file',['../namespaceprogram__setup.html#ac2bba437d91948e2c57ad5e1fcd0f0f5',1,'program_setup']]], + ['autosnow_5fres',['autosnow_res',['../namespacesnowdat.html#a15e87b99bc4cbdc53cb072e3a3bd331a',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_1.js new file mode 100644 index 000000000..ed215ea5a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['bad_5fafwa_5fglobal',['bad_afwa_global',['../namespacesnowdat.html#a747d3d3b14bcac725cfb2aa2dbfe3417',1,'snowdat']]], + ['bad_5fafwa_5fnh',['bad_afwa_nh',['../namespacesnowdat.html#af73698fbe9b41266ff729a5dcbc65c09',1,'snowdat']]], + ['bad_5fafwa_5fsh',['bad_afwa_sh',['../namespacesnowdat.html#a34cf76f6091cd24484ccba0f318b8929',1,'snowdat']]], + ['bad_5fnesdis',['bad_nesdis',['../namespacesnowdat.html#a19a23d63b720bcdea4c7fed701d55bd6',1,'snowdat']]], + ['bitmap_5fafwa_5fglobal',['bitmap_afwa_global',['../namespacesnowdat.html#a3f366f2ac38bd2f8692e55cfebf27c94',1,'snowdat']]], + ['bitmap_5fafwa_5fnh',['bitmap_afwa_nh',['../namespacesnowdat.html#a2cb75b458a4b59bba1a5fa9b00f4ef63',1,'snowdat']]], + ['bitmap_5fafwa_5fsh',['bitmap_afwa_sh',['../namespacesnowdat.html#a270cacef11d12e6f7030455d81ec93c8',1,'snowdat']]], + ['bitmap_5fautosnow',['bitmap_autosnow',['../namespacesnowdat.html#a82a031a6a0b41b8754b6a93733ad468d',1,'snowdat']]], + ['bitmap_5fnesdis',['bitmap_nesdis',['../namespacesnowdat.html#a4524fabd19ec12cb48a1ec96aa6f3eb2',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_10.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_10.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_10.js new file mode 100644 index 000000000..88875c54f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['thinned',['thinned',['../namespacemodel__grid.html#a66aef7fb9099f35ba30d71837d2d5086',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_11.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_11.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_11.js new file mode 100644 index 000000000..2a3676d71 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_11.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['uninterpred',['uninterpred',['../namespacesnow2mdl.html#ad1b735d894ed77eb2161f22258074536',1,'snow2mdl']]], + ['use_5fautosnow',['use_autosnow',['../namespacesnowdat.html#a4542a02189915fdbc34dbdcee61713f3',1,'snowdat']]], + ['use_5fglobal_5fafwa',['use_global_afwa',['../namespacesnowdat.html#a4e2a3099dbab138ae88f2c5a94960663',1,'snowdat']]], + ['use_5fnesdis',['use_nesdis',['../namespacesnowdat.html#a371b3da7476473d63035c9590742e684',1,'snowdat']]], + ['use_5fnh_5fafwa',['use_nh_afwa',['../namespacesnowdat.html#aef65f01ca401ebeeea3b216045645ba7',1,'snowdat']]], + ['use_5fsh_5fafwa',['use_sh_afwa',['../namespacesnowdat.html#a4d1f41f0b9cb05a7ee9208464549d7cb',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_12.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_12.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_12.js new file mode 100644 index 000000000..19b65f478 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['write_5fgrib1',['write_grib1',['../namespacesnow2mdl.html#aa49cf0325e5a6e2d25847d7a5c0a3ce3',1,'snow2mdl']]], + ['write_5fgrib2',['write_grib2',['../namespacesnow2mdl.html#abb112659abfa66a3c8d1953c71f494cf',1,'snow2mdl']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_2.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_2.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_2.js new file mode 100644 index 000000000..41e943b01 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['climo_5fqc_5ffile',['climo_qc_file',['../namespaceprogram__setup.html#a53815197625fefd3f18cd32279a2fe63',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_3.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_3.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_3.js new file mode 100644 index 000000000..a3b71f2dc --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['driver',['driver',['../driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.F90']]], + ['driver_2ef90',['driver.F90',['../driver_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_4.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_4.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_4.js new file mode 100644 index 000000000..611cfb5b0 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['emcsfc_5fsnow2mdl',['emcsfc_snow2mdl',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_5.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_5.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_5.js new file mode 100644 index 000000000..84caceffb --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_5.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['gdt_5fto_5fgds',['gdt_to_gds',['../grib__utils_8F90.html#a99c537ea7d78555234e6b8bf27fa9c15',1,'grib_utils.F90']]], + ['gfs_5flpl_5ffile',['gfs_lpl_file',['../namespaceprogram__setup.html#a2bca0b9cc8a529378996db9d01834ce0',1,'program_setup']]], + ['grib2_5fcheck',['grib2_check',['../grib__utils_8F90.html#a1dda8daced403ff2fda164b321f6aefb',1,'grib_utils.F90']]], + ['grib2_5ffree',['grib2_free',['../grib__utils_8F90.html#a48ceeee24ae44923e136e479584053be',1,'grib_utils.F90']]], + ['grib2_5fnull',['grib2_null',['../grib__utils_8F90.html#adffeca48f5856efec29e2174413f18cd',1,'grib_utils.F90']]], + ['grib_5fcentury',['grib_century',['../namespaceprogram__setup.html#ae279dad8d751b50c8665a1c800e55dcc',1,'program_setup']]], + ['grib_5fcheck',['grib_check',['../grib__utils_8F90.html#afb32109d497155b14ab1db47cbaaf364',1,'grib_utils.F90']]], + ['grib_5fday',['grib_day',['../namespaceprogram__setup.html#a1699f69c7663e947954705fa2d47a400',1,'program_setup']]], + ['grib_5fhour',['grib_hour',['../namespaceprogram__setup.html#aed771b4d68c745430d9e0d33ea32de42',1,'program_setup']]], + ['grib_5fmonth',['grib_month',['../namespaceprogram__setup.html#ad417edd0599523f776d1ac397f5a5671',1,'program_setup']]], + ['grib_5futils_2ef90',['grib_utils.F90',['../grib__utils_8F90.html',1,'']]], + ['grib_5fyear',['grib_year',['../namespaceprogram__setup.html#a7a1e634fcd53f0e116c720d1210ea588',1,'program_setup']]], + ['grid_5fid_5fmdl',['grid_id_mdl',['../namespacemodel__grid.html#ae29445fda6b3da789d36492ce87aa1b9',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_6.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_6.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_6.js new file mode 100644 index 000000000..d3ec1a628 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_6.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['iafwa',['iafwa',['../namespacesnowdat.html#a139434d1d2a091a5b6160be5e626c2e8',1,'snowdat']]], + ['iautosnow',['iautosnow',['../namespacesnowdat.html#a4c1ef57fdae2891ef13ab3a79bfbcd9f',1,'snowdat']]], + ['ijmdl',['ijmdl',['../namespacemodel__grid.html#a73bcc7ca9e4f2307275e1fc2942ac1f2',1,'model_grid']]], + ['imdl',['imdl',['../namespacemodel__grid.html#a1b068d3074c2263390f03d0e33e54a5f',1,'model_grid']]], + ['inesdis',['inesdis',['../namespacesnowdat.html#a93dd33112d7c5becc03e525711f1a2cc',1,'snowdat']]], + ['init_5fgrib2',['init_grib2',['../grib__utils_8F90.html#a51864b4717ca8fb9cc712eb5c391983d',1,'grib_utils.F90']]], + ['interp',['interp',['../namespacesnow2mdl.html#a28b4cb7eaff5e88f56f97cae8074f24c',1,'snow2mdl']]], + ['intlon',['intlon',['../namespacesnow2mdl.html#a9cb7d783e667cd17eb4825443abf82f6',1,'snow2mdl']]], + ['ipts_5fmdl',['ipts_mdl',['../namespacemodel__grid.html#adfe9ff73ccb60a80b0e26b4ad6fc11cb',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_7.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_7.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_7.js new file mode 100644 index 000000000..774e97c45 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jafwa',['jafwa',['../namespacesnowdat.html#a47a9733356f7be8cfef4e8c6cf6028cc',1,'snowdat']]], + ['jautosnow',['jautosnow',['../namespacesnowdat.html#a84daadd2e083c04989005b6f151c48fc',1,'snowdat']]], + ['jmdl',['jmdl',['../namespacemodel__grid.html#a171690707455a43c7f7d8cd0510cf505',1,'model_grid']]], + ['jnesdis',['jnesdis',['../namespacesnowdat.html#a258a35915d54a844fceceaf3035947e2',1,'snowdat']]], + ['jpts_5fmdl',['jpts_mdl',['../namespacemodel__grid.html#a0341915dbf28e8a1a503e2386d899be2',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_8.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_8.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_8.js new file mode 100644 index 000000000..51ce68214 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['kgds_5fafwa_5fglobal',['kgds_afwa_global',['../namespacesnowdat.html#ab654724ca678b4fe5c1c2e90cfd086e7',1,'snowdat']]], + ['kgds_5fafwa_5fnh',['kgds_afwa_nh',['../namespacesnowdat.html#aad4bc2cf308c3fa995f2a77120f84108',1,'snowdat']]], + ['kgds_5fafwa_5fnh_5f8th',['kgds_afwa_nh_8th',['../namespacesnowdat.html#a28190bdcab2c27e05125f6deffb77d27',1,'snowdat']]], + ['kgds_5fafwa_5fsh',['kgds_afwa_sh',['../namespacesnowdat.html#a690b903f8572e89fe533d9d498aecb35',1,'snowdat']]], + ['kgds_5fafwa_5fsh_5f8th',['kgds_afwa_sh_8th',['../namespacesnowdat.html#a4d8fbd4197e5f87576a308975dfac064',1,'snowdat']]], + ['kgds_5fautosnow',['kgds_autosnow',['../namespacesnowdat.html#aac65115a503d5c047f1d97b821d388ad',1,'snowdat']]], + ['kgds_5fmdl',['kgds_mdl',['../namespacemodel__grid.html#aa59e9407e8b5aca044018284c75d72f4',1,'model_grid']]], + ['kgds_5fnesdis',['kgds_nesdis',['../namespacesnowdat.html#ab4589887cd4392698dc5b2ac867fcd35',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_9.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_9.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_9.js new file mode 100644 index 000000000..252ab1cb4 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['lat11',['lat11',['../namespacemodel__grid.html#ad0972d7ff73d26be50dec4f189e14d91',1,'model_grid']]], + ['lat_5fthreshold',['lat_threshold',['../namespaceprogram__setup.html#a2debd7c7f28465b9c8b1dfb4f2419cb5',1,'program_setup']]], + ['latlast',['latlast',['../namespacemodel__grid.html#a213373c1340ce51c92c712ad3bb10b1e',1,'model_grid']]], + ['lats_5fmdl',['lats_mdl',['../namespacemodel__grid.html#a3d37d38997e337185d0c3c4827e6e318',1,'model_grid']]], + ['lon11',['lon11',['../namespacemodel__grid.html#aea370e6e67fcf287150dba07f80851be',1,'model_grid']]], + ['lonlast',['lonlast',['../namespacemodel__grid.html#a11f76673645c0f419e3cc26b7702b6c9',1,'model_grid']]], + ['lons_5fmdl',['lons_mdl',['../namespacemodel__grid.html#aee07ec51c9531c1dae1f686434bbd386',1,'model_grid']]], + ['lonsperlat_5fmdl',['lonsperlat_mdl',['../namespacemodel__grid.html#a1aced7bcf47cad27806604241e101369',1,'model_grid']]], + ['lsmask_5fmdl',['lsmask_mdl',['../namespacemodel__grid.html#a22316f1c1f0e08906df3cba467443c46',1,'model_grid']]], + ['lsmask_5fmdl_5fsav',['lsmask_mdl_sav',['../namespacemodel__grid.html#a6cb8b46e98431f9eb6f02605daa35146',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_a.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_a.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_a.js new file mode 100644 index 000000000..4562a01e0 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['mesh_5fnesdis',['mesh_nesdis',['../namespacesnowdat.html#a2e8784c184364cd9ce546098be2bfef2',1,'snowdat']]], + ['min_5fsnow_5fdepth',['min_snow_depth',['../namespaceprogram__setup.html#a83781bd873dc7dbe2fa36e1ac303a87e',1,'program_setup']]], + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]], + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]], + ['model_5fgrid_5fcleanup',['model_grid_cleanup',['../namespacemodel__grid.html#ae4b396d49e0e43a5197fe77c75ebfebf',1,'model_grid']]], + ['model_5flat_5ffile',['model_lat_file',['../namespaceprogram__setup.html#a9ac528ca11e79507a963c07d1e7908fe',1,'program_setup']]], + ['model_5flon_5ffile',['model_lon_file',['../namespaceprogram__setup.html#aa3c1cda9b829fb88135527d0b186f3c0',1,'program_setup']]], + ['model_5flsmask_5ffile',['model_lsmask_file',['../namespaceprogram__setup.html#abf13b78f20f765042e0062c600f34995',1,'program_setup']]], + ['model_5fsnow_5ffile',['model_snow_file',['../namespaceprogram__setup.html#a380d5d7433e1b8aaa20c3b23dade485e',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_b.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_b.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_b.js new file mode 100644 index 000000000..3bd81622b --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['nesdis_5flsmask_5ffile',['nesdis_lsmask_file',['../namespaceprogram__setup.html#ab7289f6baec4d17a385e019e11c84cd1',1,'program_setup']]], + ['nesdis_5fres',['nesdis_res',['../namespacesnowdat.html#a68e975bcc076abd22b677be24e76901c',1,'snowdat']]], + ['nesdis_5fsnow_5ffile',['nesdis_snow_file',['../namespaceprogram__setup.html#a491316d574aab09980f90d9b2d4ec315',1,'program_setup']]], + ['nh_5fclimo_5fcheck',['nh_climo_check',['../namespacesnowdat.html#a7416d184ef54d3c2b08079d17b00e7b0',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_c.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_c.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_c.js new file mode 100644 index 000000000..daa648592 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['output_5fgrib2',['output_grib2',['../namespaceprogram__setup.html#ac9c1b20eec2b73f9129fa949d6358cb8',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_d.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_d.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_d.js new file mode 100644 index 000000000..6b78b0223 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]], + ['program_5fsetup_2ef90',['program_setup.F90',['../program__setup_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_e.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_e.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_e.js new file mode 100644 index 000000000..2189a2347 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_snow2mdl_8fd_docs_README.html',1,'']]], + ['read_5fafwa_5fbinary',['read_afwa_binary',['../namespacesnowdat.html#a097b7b0377daf37b721b0c871762e24d',1,'snowdat']]], + ['read_5fafwa_5fmask',['read_afwa_mask',['../namespacesnowdat.html#a328b01fb9013c27f0093d416f21ab47e',1,'snowdat']]], + ['read_5fconfig_5fnml',['read_config_nml',['../namespaceprogram__setup.html#a40111d93a5e305839de5e43e78183273',1,'program_setup']]], + ['read_5fmdl_5fgrid_5finfo',['read_mdl_grid_info',['../namespacemodel__grid.html#aeea3795bb9567fb780907965aeb22970',1,'model_grid']]], + ['readafwa',['readafwa',['../namespacesnowdat.html#a765361a273d72b796f5e26d893c62692',1,'snowdat']]], + ['readautosnow',['readautosnow',['../namespacesnowdat.html#acf36a58a332f88be6c9441d8d9578739',1,'snowdat']]], + ['readnesdis',['readnesdis',['../namespacesnowdat.html#ac2696666ba15fbfd0914e3d5762e7612',1,'snowdat']]], + ['resol_5fmdl',['resol_mdl',['../namespacemodel__grid.html#ab7dfd22b801fd6f4b7e5610dfa822eab',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_f.html b/ver-1.11.0/emcsfc_snow2mdl/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/all_f.js b/ver-1.11.0/emcsfc_snow2mdl/search/all_f.js new file mode 100644 index 000000000..8a42bd591 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/all_f.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['sea_5fice_5fnesdis',['sea_ice_nesdis',['../namespacesnowdat.html#a734f1e4cef57304c9c259ac43da45e6f',1,'snowdat']]], + ['skgb2',['SKGB2',['../grib__utils_8F90.html#adbf31159380f03144c4db26f0389d025',1,'grib_utils.F90']]], + ['snow2mdl',['snow2mdl',['../namespacesnow2mdl.html',1,'']]], + ['snow2mdl_2ef90',['snow2mdl.F90',['../snow2mdl_8F90.html',1,'']]], + ['snow_5fcvr_5fautosnow',['snow_cvr_autosnow',['../namespacesnowdat.html#abbbfd531788f2c4a1f8f7ef1bdc67971',1,'snowdat']]], + ['snow_5fcvr_5fmdl',['snow_cvr_mdl',['../namespacesnow2mdl.html#a62a2df833446034b16ecf1175dabbe76',1,'snow2mdl']]], + ['snow_5fcvr_5fnesdis',['snow_cvr_nesdis',['../namespacesnowdat.html#aa03524cbcbfdeeaeb75cf47b625541ff',1,'snowdat']]], + ['snow_5fcvr_5fthreshold',['snow_cvr_threshold',['../namespaceprogram__setup.html#ab11d857a926778a69088ecdd4bdadb8a',1,'program_setup']]], + ['snow_5fdep_5fafwa_5fglobal',['snow_dep_afwa_global',['../namespacesnowdat.html#ad7b9c6748bbeaa6cb42cd5352e0fc213',1,'snowdat']]], + ['snow_5fdep_5fafwa_5fnh',['snow_dep_afwa_nh',['../namespacesnowdat.html#a4488bd389568885ac5bfbfe08e0e29ff',1,'snowdat']]], + ['snow_5fdep_5fafwa_5fsh',['snow_dep_afwa_sh',['../namespacesnowdat.html#a722fde057a02ea62fcf043b4cf96763f',1,'snowdat']]], + ['snow_5fdep_5fmdl',['snow_dep_mdl',['../namespacesnow2mdl.html#a99b097fe89f3f4d502cb1378e14f3f31',1,'snow2mdl']]], + ['snowdat',['snowdat',['../namespacesnowdat.html',1,'']]], + ['snowdat_2ef90',['snowdat.F90',['../snowdat_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/close.png b/ver-1.11.0/emcsfc_snow2mdl/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_0.html b/ver-1.11.0/emcsfc_snow2mdl/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/files_0.js new file mode 100644 index 000000000..e12a59cc3 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['driver_2ef90',['driver.F90',['../driver_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/files_1.js new file mode 100644 index 000000000..4ca665464 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grib_5futils_2ef90',['grib_utils.F90',['../grib__utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_2.html b/ver-1.11.0/emcsfc_snow2mdl/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_2.js b/ver-1.11.0/emcsfc_snow2mdl/search/files_2.js new file mode 100644 index 000000000..54f982849 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_3.html b/ver-1.11.0/emcsfc_snow2mdl/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_3.js b/ver-1.11.0/emcsfc_snow2mdl/search/files_3.js new file mode 100644 index 000000000..2b65279dd --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup_2ef90',['program_setup.F90',['../program__setup_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_4.html b/ver-1.11.0/emcsfc_snow2mdl/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/files_4.js b/ver-1.11.0/emcsfc_snow2mdl/search/files_4.js new file mode 100644 index 000000000..3d239f4f5 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['snow2mdl_2ef90',['snow2mdl.F90',['../snow2mdl_8F90.html',1,'']]], + ['snowdat_2ef90',['snowdat.F90',['../snowdat_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.js new file mode 100644 index 000000000..e900fc55a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['afwa_5fcheck',['afwa_check',['../namespacesnowdat.html#a5989c5b503107e9d2ddbc11464da3486',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.js new file mode 100644 index 000000000..73ff7d27f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['driver',['driver',['../driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.F90']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.js new file mode 100644 index 000000000..c59bb1715 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['gdt_5fto_5fgds',['gdt_to_gds',['../grib__utils_8F90.html#a99c537ea7d78555234e6b8bf27fa9c15',1,'grib_utils.F90']]], + ['grib2_5fcheck',['grib2_check',['../grib__utils_8F90.html#a1dda8daced403ff2fda164b321f6aefb',1,'grib_utils.F90']]], + ['grib2_5ffree',['grib2_free',['../grib__utils_8F90.html#a48ceeee24ae44923e136e479584053be',1,'grib_utils.F90']]], + ['grib2_5fnull',['grib2_null',['../grib__utils_8F90.html#adffeca48f5856efec29e2174413f18cd',1,'grib_utils.F90']]], + ['grib_5fcheck',['grib_check',['../grib__utils_8F90.html#afb32109d497155b14ab1db47cbaaf364',1,'grib_utils.F90']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.js new file mode 100644 index 000000000..69a470b14 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['init_5fgrib2',['init_grib2',['../grib__utils_8F90.html#a51864b4717ca8fb9cc712eb5c391983d',1,'grib_utils.F90']]], + ['interp',['interp',['../namespacesnow2mdl.html#a28b4cb7eaff5e88f56f97cae8074f24c',1,'snow2mdl']]], + ['intlon',['intlon',['../namespacesnow2mdl.html#a9cb7d783e667cd17eb4825443abf82f6',1,'snow2mdl']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.js new file mode 100644 index 000000000..463975fa7 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid_5fcleanup',['model_grid_cleanup',['../namespacemodel__grid.html#ae4b396d49e0e43a5197fe77c75ebfebf',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.js new file mode 100644 index 000000000..959ab9d76 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nh_5fclimo_5fcheck',['nh_climo_check',['../namespacesnowdat.html#a7416d184ef54d3c2b08079d17b00e7b0',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.js new file mode 100644 index 000000000..d409c2bbe --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['read_5fafwa_5fbinary',['read_afwa_binary',['../namespacesnowdat.html#a097b7b0377daf37b721b0c871762e24d',1,'snowdat']]], + ['read_5fafwa_5fmask',['read_afwa_mask',['../namespacesnowdat.html#a328b01fb9013c27f0093d416f21ab47e',1,'snowdat']]], + ['read_5fconfig_5fnml',['read_config_nml',['../namespaceprogram__setup.html#a40111d93a5e305839de5e43e78183273',1,'program_setup']]], + ['read_5fmdl_5fgrid_5finfo',['read_mdl_grid_info',['../namespacemodel__grid.html#aeea3795bb9567fb780907965aeb22970',1,'model_grid']]], + ['readafwa',['readafwa',['../namespacesnowdat.html#a765361a273d72b796f5e26d893c62692',1,'snowdat']]], + ['readautosnow',['readautosnow',['../namespacesnowdat.html#acf36a58a332f88be6c9441d8d9578739',1,'snowdat']]], + ['readnesdis',['readnesdis',['../namespacesnowdat.html#ac2696666ba15fbfd0914e3d5762e7612',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.js new file mode 100644 index 000000000..6a93fe515 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['skgb2',['SKGB2',['../grib__utils_8F90.html#adbf31159380f03144c4db26f0389d025',1,'grib_utils.F90']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.js new file mode 100644 index 000000000..2d5b876bb --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uninterpred',['uninterpred',['../namespacesnow2mdl.html#ad1b735d894ed77eb2161f22258074536',1,'snow2mdl']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.html b/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.js b/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.js new file mode 100644 index 000000000..19b65f478 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['write_5fgrib1',['write_grib1',['../namespacesnow2mdl.html#aa49cf0325e5a6e2d25847d7a5c0a3ce3',1,'snow2mdl']]], + ['write_5fgrib2',['write_grib2',['../namespacesnow2mdl.html#abb112659abfa66a3c8d1953c71f494cf',1,'snow2mdl']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/mag_sel.png b/ver-1.11.0/emcsfc_snow2mdl/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.html b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.js new file mode 100644 index 000000000..e87d90956 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.js new file mode 100644 index 000000000..67e7696ea --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.html b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.html new file mode 100644 index 000000000..0a9167460 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.js b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.js new file mode 100644 index 000000000..9eea686e9 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/namespaces_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['snow2mdl',['snow2mdl',['../namespacesnow2mdl.html',1,'']]], + ['snowdat',['snowdat',['../namespacesnowdat.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/nomatches.html b/ver-1.11.0/emcsfc_snow2mdl/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.html b/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.js new file mode 100644 index 000000000..611cfb5b0 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['emcsfc_5fsnow2mdl',['emcsfc_snow2mdl',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.js new file mode 100644 index 000000000..732462f1d --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_emcsfc_snow2mdl_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/search.css b/ver-1.11.0/emcsfc_snow2mdl/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/search.js b/ver-1.11.0/emcsfc_snow2mdl/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/search_r.png b/ver-1.11.0/emcsfc_snow2mdl/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_0.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_0.js new file mode 100644 index 000000000..ebff3fe1f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['afwa_5flsmask_5fnh_5ffile',['afwa_lsmask_nh_file',['../namespaceprogram__setup.html#a43a435dd24e36af107408a075c746f21',1,'program_setup']]], + ['afwa_5flsmask_5fsh_5ffile',['afwa_lsmask_sh_file',['../namespaceprogram__setup.html#a12e8b1d97514d8da4878a7cd67a2fe9d',1,'program_setup']]], + ['afwa_5fres',['afwa_res',['../namespacesnowdat.html#a541d870ef9a1451bfa35cf7866f8ac1f',1,'snowdat']]], + ['afwa_5fsnow_5fglobal_5ffile',['afwa_snow_global_file',['../namespaceprogram__setup.html#a6a377ea4d55070d4123243cc3674503e',1,'program_setup']]], + ['afwa_5fsnow_5fnh_5ffile',['afwa_snow_nh_file',['../namespaceprogram__setup.html#a53abfccb2d46bceaaca56f5f42945b54',1,'program_setup']]], + ['afwa_5fsnow_5fsh_5ffile',['afwa_snow_sh_file',['../namespaceprogram__setup.html#afbac181b468bd322169ea328be7febdc',1,'program_setup']]], + ['autosnow_5ffile',['autosnow_file',['../namespaceprogram__setup.html#ac2bba437d91948e2c57ad5e1fcd0f0f5',1,'program_setup']]], + ['autosnow_5fres',['autosnow_res',['../namespacesnowdat.html#a15e87b99bc4cbdc53cb072e3a3bd331a',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.js new file mode 100644 index 000000000..ed215ea5a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['bad_5fafwa_5fglobal',['bad_afwa_global',['../namespacesnowdat.html#a747d3d3b14bcac725cfb2aa2dbfe3417',1,'snowdat']]], + ['bad_5fafwa_5fnh',['bad_afwa_nh',['../namespacesnowdat.html#af73698fbe9b41266ff729a5dcbc65c09',1,'snowdat']]], + ['bad_5fafwa_5fsh',['bad_afwa_sh',['../namespacesnowdat.html#a34cf76f6091cd24484ccba0f318b8929',1,'snowdat']]], + ['bad_5fnesdis',['bad_nesdis',['../namespacesnowdat.html#a19a23d63b720bcdea4c7fed701d55bd6',1,'snowdat']]], + ['bitmap_5fafwa_5fglobal',['bitmap_afwa_global',['../namespacesnowdat.html#a3f366f2ac38bd2f8692e55cfebf27c94',1,'snowdat']]], + ['bitmap_5fafwa_5fnh',['bitmap_afwa_nh',['../namespacesnowdat.html#a2cb75b458a4b59bba1a5fa9b00f4ef63',1,'snowdat']]], + ['bitmap_5fafwa_5fsh',['bitmap_afwa_sh',['../namespacesnowdat.html#a270cacef11d12e6f7030455d81ec93c8',1,'snowdat']]], + ['bitmap_5fautosnow',['bitmap_autosnow',['../namespacesnowdat.html#a82a031a6a0b41b8754b6a93733ad468d',1,'snowdat']]], + ['bitmap_5fnesdis',['bitmap_nesdis',['../namespacesnowdat.html#a4524fabd19ec12cb48a1ec96aa6f3eb2',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.js new file mode 100644 index 000000000..41e943b01 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['climo_5fqc_5ffile',['climo_qc_file',['../namespaceprogram__setup.html#a53815197625fefd3f18cd32279a2fe63',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.js new file mode 100644 index 000000000..6ba270b10 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['gfs_5flpl_5ffile',['gfs_lpl_file',['../namespaceprogram__setup.html#a2bca0b9cc8a529378996db9d01834ce0',1,'program_setup']]], + ['grib_5fcentury',['grib_century',['../namespaceprogram__setup.html#ae279dad8d751b50c8665a1c800e55dcc',1,'program_setup']]], + ['grib_5fday',['grib_day',['../namespaceprogram__setup.html#a1699f69c7663e947954705fa2d47a400',1,'program_setup']]], + ['grib_5fhour',['grib_hour',['../namespaceprogram__setup.html#aed771b4d68c745430d9e0d33ea32de42',1,'program_setup']]], + ['grib_5fmonth',['grib_month',['../namespaceprogram__setup.html#ad417edd0599523f776d1ac397f5a5671',1,'program_setup']]], + ['grib_5fyear',['grib_year',['../namespaceprogram__setup.html#a7a1e634fcd53f0e116c720d1210ea588',1,'program_setup']]], + ['grid_5fid_5fmdl',['grid_id_mdl',['../namespacemodel__grid.html#ae29445fda6b3da789d36492ce87aa1b9',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.js new file mode 100644 index 000000000..e596d8177 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['iafwa',['iafwa',['../namespacesnowdat.html#a139434d1d2a091a5b6160be5e626c2e8',1,'snowdat']]], + ['iautosnow',['iautosnow',['../namespacesnowdat.html#a4c1ef57fdae2891ef13ab3a79bfbcd9f',1,'snowdat']]], + ['ijmdl',['ijmdl',['../namespacemodel__grid.html#a73bcc7ca9e4f2307275e1fc2942ac1f2',1,'model_grid']]], + ['imdl',['imdl',['../namespacemodel__grid.html#a1b068d3074c2263390f03d0e33e54a5f',1,'model_grid']]], + ['inesdis',['inesdis',['../namespacesnowdat.html#a93dd33112d7c5becc03e525711f1a2cc',1,'snowdat']]], + ['ipts_5fmdl',['ipts_mdl',['../namespacemodel__grid.html#adfe9ff73ccb60a80b0e26b4ad6fc11cb',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.js new file mode 100644 index 000000000..774e97c45 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jafwa',['jafwa',['../namespacesnowdat.html#a47a9733356f7be8cfef4e8c6cf6028cc',1,'snowdat']]], + ['jautosnow',['jautosnow',['../namespacesnowdat.html#a84daadd2e083c04989005b6f151c48fc',1,'snowdat']]], + ['jmdl',['jmdl',['../namespacemodel__grid.html#a171690707455a43c7f7d8cd0510cf505',1,'model_grid']]], + ['jnesdis',['jnesdis',['../namespacesnowdat.html#a258a35915d54a844fceceaf3035947e2',1,'snowdat']]], + ['jpts_5fmdl',['jpts_mdl',['../namespacemodel__grid.html#a0341915dbf28e8a1a503e2386d899be2',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.js new file mode 100644 index 000000000..51ce68214 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['kgds_5fafwa_5fglobal',['kgds_afwa_global',['../namespacesnowdat.html#ab654724ca678b4fe5c1c2e90cfd086e7',1,'snowdat']]], + ['kgds_5fafwa_5fnh',['kgds_afwa_nh',['../namespacesnowdat.html#aad4bc2cf308c3fa995f2a77120f84108',1,'snowdat']]], + ['kgds_5fafwa_5fnh_5f8th',['kgds_afwa_nh_8th',['../namespacesnowdat.html#a28190bdcab2c27e05125f6deffb77d27',1,'snowdat']]], + ['kgds_5fafwa_5fsh',['kgds_afwa_sh',['../namespacesnowdat.html#a690b903f8572e89fe533d9d498aecb35',1,'snowdat']]], + ['kgds_5fafwa_5fsh_5f8th',['kgds_afwa_sh_8th',['../namespacesnowdat.html#a4d8fbd4197e5f87576a308975dfac064',1,'snowdat']]], + ['kgds_5fautosnow',['kgds_autosnow',['../namespacesnowdat.html#aac65115a503d5c047f1d97b821d388ad',1,'snowdat']]], + ['kgds_5fmdl',['kgds_mdl',['../namespacemodel__grid.html#aa59e9407e8b5aca044018284c75d72f4',1,'model_grid']]], + ['kgds_5fnesdis',['kgds_nesdis',['../namespacesnowdat.html#ab4589887cd4392698dc5b2ac867fcd35',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.js new file mode 100644 index 000000000..252ab1cb4 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['lat11',['lat11',['../namespacemodel__grid.html#ad0972d7ff73d26be50dec4f189e14d91',1,'model_grid']]], + ['lat_5fthreshold',['lat_threshold',['../namespaceprogram__setup.html#a2debd7c7f28465b9c8b1dfb4f2419cb5',1,'program_setup']]], + ['latlast',['latlast',['../namespacemodel__grid.html#a213373c1340ce51c92c712ad3bb10b1e',1,'model_grid']]], + ['lats_5fmdl',['lats_mdl',['../namespacemodel__grid.html#a3d37d38997e337185d0c3c4827e6e318',1,'model_grid']]], + ['lon11',['lon11',['../namespacemodel__grid.html#aea370e6e67fcf287150dba07f80851be',1,'model_grid']]], + ['lonlast',['lonlast',['../namespacemodel__grid.html#a11f76673645c0f419e3cc26b7702b6c9',1,'model_grid']]], + ['lons_5fmdl',['lons_mdl',['../namespacemodel__grid.html#aee07ec51c9531c1dae1f686434bbd386',1,'model_grid']]], + ['lonsperlat_5fmdl',['lonsperlat_mdl',['../namespacemodel__grid.html#a1aced7bcf47cad27806604241e101369',1,'model_grid']]], + ['lsmask_5fmdl',['lsmask_mdl',['../namespacemodel__grid.html#a22316f1c1f0e08906df3cba467443c46',1,'model_grid']]], + ['lsmask_5fmdl_5fsav',['lsmask_mdl_sav',['../namespacemodel__grid.html#a6cb8b46e98431f9eb6f02605daa35146',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.js new file mode 100644 index 000000000..a3c6aca99 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['mesh_5fnesdis',['mesh_nesdis',['../namespacesnowdat.html#a2e8784c184364cd9ce546098be2bfef2',1,'snowdat']]], + ['min_5fsnow_5fdepth',['min_snow_depth',['../namespaceprogram__setup.html#a83781bd873dc7dbe2fa36e1ac303a87e',1,'program_setup']]], + ['model_5flat_5ffile',['model_lat_file',['../namespaceprogram__setup.html#a9ac528ca11e79507a963c07d1e7908fe',1,'program_setup']]], + ['model_5flon_5ffile',['model_lon_file',['../namespaceprogram__setup.html#aa3c1cda9b829fb88135527d0b186f3c0',1,'program_setup']]], + ['model_5flsmask_5ffile',['model_lsmask_file',['../namespaceprogram__setup.html#abf13b78f20f765042e0062c600f34995',1,'program_setup']]], + ['model_5fsnow_5ffile',['model_snow_file',['../namespaceprogram__setup.html#a380d5d7433e1b8aaa20c3b23dade485e',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.js new file mode 100644 index 000000000..53f17a624 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nesdis_5flsmask_5ffile',['nesdis_lsmask_file',['../namespaceprogram__setup.html#ab7289f6baec4d17a385e019e11c84cd1',1,'program_setup']]], + ['nesdis_5fres',['nesdis_res',['../namespacesnowdat.html#a68e975bcc076abd22b677be24e76901c',1,'snowdat']]], + ['nesdis_5fsnow_5ffile',['nesdis_snow_file',['../namespaceprogram__setup.html#a491316d574aab09980f90d9b2d4ec315',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.js new file mode 100644 index 000000000..daa648592 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['output_5fgrib2',['output_grib2',['../namespaceprogram__setup.html#ac9c1b20eec2b73f9129fa949d6358cb8',1,'program_setup']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.html new file mode 100644 index 000000000..b306931e2 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.js new file mode 100644 index 000000000..a91300ba0 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['resol_5fmdl',['resol_mdl',['../namespacemodel__grid.html#ab7dfd22b801fd6f4b7e5610dfa822eab',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.html new file mode 100644 index 000000000..75709df8f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.js new file mode 100644 index 000000000..4c51bbfb9 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['sea_5fice_5fnesdis',['sea_ice_nesdis',['../namespacesnowdat.html#a734f1e4cef57304c9c259ac43da45e6f',1,'snowdat']]], + ['snow_5fcvr_5fautosnow',['snow_cvr_autosnow',['../namespacesnowdat.html#abbbfd531788f2c4a1f8f7ef1bdc67971',1,'snowdat']]], + ['snow_5fcvr_5fmdl',['snow_cvr_mdl',['../namespacesnow2mdl.html#a62a2df833446034b16ecf1175dabbe76',1,'snow2mdl']]], + ['snow_5fcvr_5fnesdis',['snow_cvr_nesdis',['../namespacesnowdat.html#aa03524cbcbfdeeaeb75cf47b625541ff',1,'snowdat']]], + ['snow_5fcvr_5fthreshold',['snow_cvr_threshold',['../namespaceprogram__setup.html#ab11d857a926778a69088ecdd4bdadb8a',1,'program_setup']]], + ['snow_5fdep_5fafwa_5fglobal',['snow_dep_afwa_global',['../namespacesnowdat.html#ad7b9c6748bbeaa6cb42cd5352e0fc213',1,'snowdat']]], + ['snow_5fdep_5fafwa_5fnh',['snow_dep_afwa_nh',['../namespacesnowdat.html#a4488bd389568885ac5bfbfe08e0e29ff',1,'snowdat']]], + ['snow_5fdep_5fafwa_5fsh',['snow_dep_afwa_sh',['../namespacesnowdat.html#a722fde057a02ea62fcf043b4cf96763f',1,'snowdat']]], + ['snow_5fdep_5fmdl',['snow_dep_mdl',['../namespacesnow2mdl.html#a99b097fe89f3f4d502cb1378e14f3f31',1,'snow2mdl']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.html new file mode 100644 index 000000000..34c80a486 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.js new file mode 100644 index 000000000..88875c54f --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['thinned',['thinned',['../namespacemodel__grid.html#a66aef7fb9099f35ba30d71837d2d5086',1,'model_grid']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.html b/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.html new file mode 100644 index 000000000..4a1c8a614 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.js b/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.js new file mode 100644 index 000000000..0c574937a --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/search/variables_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['use_5fautosnow',['use_autosnow',['../namespacesnowdat.html#a4542a02189915fdbc34dbdcee61713f3',1,'snowdat']]], + ['use_5fglobal_5fafwa',['use_global_afwa',['../namespacesnowdat.html#a4e2a3099dbab138ae88f2c5a94960663',1,'snowdat']]], + ['use_5fnesdis',['use_nesdis',['../namespacesnowdat.html#a371b3da7476473d63035c9590742e684',1,'snowdat']]], + ['use_5fnh_5fafwa',['use_nh_afwa',['../namespacesnowdat.html#aef65f01ca401ebeeea3b216045645ba7',1,'snowdat']]], + ['use_5fsh_5fafwa',['use_sh_afwa',['../namespacesnowdat.html#a4d1f41f0b9cb05a7ee9208464549d7cb',1,'snowdat']]] +]; diff --git a/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.html new file mode 100644 index 000000000..f578ccddc --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.html @@ -0,0 +1,154 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/snow2mdl.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    snow2mdl.F90 File Reference
    +
    +
    + +

    Interpolate snow data to model grid and grib the result. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  snow2mdl
     Interpolate snow data to model grid and grib the result.
     
    + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public snow2mdl::interp
     Interpolate snow data to model grid. More...
     
    subroutine snow2mdl::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 snow2mdl::uninterpred (iord, kmsk, fi, f, lonl, latd, len, lonsperlat)
     Fills out full grid using thinned grid data. More...
     
    subroutine snow2mdl::write_grib1
     Write grib1 snow cover and depth on the model grid. More...
     
    subroutine snow2mdl::write_grib2
     Write grib2 snow cover and depth on the model grid. More...
     
    + + + + + + + +

    +Variables

    real, dimension(:,:), allocatable snow2mdl::snow_cvr_mdl
     snow cover on model grid in percent More...
     
    real, dimension(:,:), allocatable snow2mdl::snow_dep_mdl
     snow depth on model grid in meters More...
     
    +

    Detailed Description

    +

    Interpolate snow data to model grid and grib the result.

    +
    Author
    George Gayno org: w/np2
    +
    Date
    2005-Dec-16
    + +

    Definition in file snow2mdl.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.js new file mode 100644 index 000000000..d489fdf97 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90.js @@ -0,0 +1,10 @@ +var snow2mdl_8F90 = +[ + [ "interp", "snow2mdl_8F90.html#a28b4cb7eaff5e88f56f97cae8074f24c", null ], + [ "intlon", "snow2mdl_8F90.html#a9cb7d783e667cd17eb4825443abf82f6", null ], + [ "uninterpred", "snow2mdl_8F90.html#ad1b735d894ed77eb2161f22258074536", null ], + [ "write_grib1", "snow2mdl_8F90.html#aa49cf0325e5a6e2d25847d7a5c0a3ce3", null ], + [ "write_grib2", "snow2mdl_8F90.html#abb112659abfa66a3c8d1953c71f494cf", null ], + [ "snow_cvr_mdl", "snow2mdl_8F90.html#a62a2df833446034b16ecf1175dabbe76", null ], + [ "snow_dep_mdl", "snow2mdl_8F90.html#a99b097fe89f3f4d502cb1378e14f3f31", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90_source.html new file mode 100644 index 000000000..f56e3794e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snow2mdl_8F90_source.html @@ -0,0 +1,179 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/snow2mdl.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    snow2mdl.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    20  module snow2mdl
    21 
    22  use program_setup, only : lat_threshold, &
    26  grib_day, &
    27  grib_century, &
    28  grib_hour, &
    29  grib_month, &
    30  grib_year, &
    32 
    33  use model_grid, only : resol_mdl, &
    34  imdl, &
    35  jmdl, &
    36  ijmdl, &
    37  ipts_mdl, &
    38  jpts_mdl, &
    39  lsmask_mdl, &
    41  lats_mdl, &
    42  lat11, latlast, &
    43  lon11, lonlast, &
    44  lons_mdl, &
    45  kgds_mdl, &
    46  grid_id_mdl, &
    47  thinned, &
    49 
    50  use snowdat, only : nesdis_res, &
    51  afwa_res, &
    52  autosnow_res, &
    53  inesdis, &
    54  jnesdis, &
    55  mesh_nesdis, &
    58  bitmap_nesdis, &
    59  iafwa, &
    60  jafwa, &
    67  iautosnow, &
    68  jautosnow, &
    72  use_nh_afwa, &
    73  use_sh_afwa, &
    74  use_nesdis, &
    75  use_autosnow, &
    76  kgds_nesdis, &
    78  kgds_afwa_nh, &
    79  kgds_afwa_sh, &
    80  kgds_autosnow, &
    82 
    83  private
    84 
    85  real, allocatable :: snow_cvr_mdl(:,:)
    86  real, allocatable :: snow_dep_mdl(:,:)
    87 
    88  public :: interp
    89 
    90  contains
    157  subroutine interp
    158  use gdswzd_mod
    159 
    160 ! Required when using iplib v4.0 or higher.
    161 #ifdef IP_V4
    162  use ipolates_mod
    163 #endif
    164 
    165  implicit none
    166 
    167  integer, parameter :: km=1
    168 
    169  integer :: i, j, ii, jj, ij
    170  integer :: ijmdl2, istart, iend, imid, iii
    171  integer, allocatable :: idum(:,:)
    172  integer :: int_opt, ipopt(20), ibi(km)
    173  integer :: kgds_mdl_tmp(200)
    174  integer :: no, ibo(km), iret, nret
    175 
    176  logical*1, allocatable :: bitmap_mdl(:,:)
    177 
    178  real :: gridi(1), gridj(1)
    179  real :: lats(1), lons(1)
    180  real, allocatable :: lsmask_1d(:)
    181  real, allocatable :: snow_cvr_mdl_1d(:,:)
    182  real, allocatable :: snow_dep_mdl_tmp(:,:)
    183  real :: sumc, sumd, x1, r, fraction, gridis, gridie
    184  real, parameter :: undefined_value = -999.
    185 
    186 !----------------------------------------------------------------------
    187 ! for model grids fully or partially located in the southern
    188 ! hemisphere, the user must select sh data (either autosnow or afwa).
    189 ! this restriction is relaxed for the ndas domain, which is
    190 ! has a small part below the equator.
    191 !----------------------------------------------------------------------
    192 
    193  if (minval(lats_mdl) < -10.0 .and. .not. use_global_afwa .and. .not. use_sh_afwa .and. .not. use_autosnow) then
    194  print*,"- FATAL ERROR: MUST SELECT EITHER AFWA OR AUTOSNOW DATA FOR MODEL GRID WITH SH POINTS."
    195  call w3tage('SNOW2MDL')
    196  call errexit(54)
    197  endif
    198 
    199 !----------------------------------------------------------------------
    200 ! if model grid is totally within the southern hemisphere, set flags
    201 ! so that nh afwa and nh nesdis/ims is not processed. these flags
    202 ! are set to false if user inadvertantly selects these data sources.
    203 !----------------------------------------------------------------------
    204 
    205  if (maxval(lats_mdl) < 0.0) then
    206  use_nh_afwa=.false.
    207  use_nesdis=.false.
    208  endif
    209 
    210 !----------------------------------------------------------------------
    211 ! if model grid is partially or fully located in the northern
    212 ! hemisphere, the user must select either nesdis/ims or nh afwa data.
    213 !----------------------------------------------------------------------
    214 
    215  if (maxval(lats_mdl) > 0.0 .and. .not. use_global_afwa .and. .not. use_nh_afwa .and. .not. use_nesdis) then
    216  print*,"- FATAL ERROR: MUST SELECT EITHER NESDIS/IMS OR AFWA DATA FOR MODEL GRID WITH NH POINTS."
    217  call w3tage('SNOW2MDL')
    218  call errexit(54)
    219  endif
    220 
    221 !----------------------------------------------------------------------
    222 ! if model grid is totally within the northern hemisphere, set flag
    223 ! so that sh data is not processed. these flags are set to false
    224 ! if user inadvertantly selects this data.
    225 !----------------------------------------------------------------------
    226 
    227  if (minval(lats_mdl) > 0.0) then ! is model grid totally within northern hemisphere?
    228  use_sh_afwa=.false.
    229  use_autosnow=.false.
    230  endif
    231 
    232 !----------------------------------------------------------------------
    233 ! if selected, interpolate nesdis/ims data to model grid.
    234 !----------------------------------------------------------------------
    235 
    236  nesdis_ims : if (use_nesdis) then
    237 
    238  ipopt = 0
    239  ibi = 1
    240  if (nesdis_res < (0.5*resol_mdl)) then
    241  print*,"- INTERPOLATE NH NESDIS/IMS DATA TO MODEL GRID USING BUDGET METHOD."
    242  ipopt(1)=2 ! break model grid cell into 25 points.
    243  ipopt(2:4)=1 ! 25 points are weighted equally.
    244  ipopt(5)=10 ! 10% coverage of valid data in box
    245  ipopt(20) = nint(100.0 / nesdis_res) + 1 ! search box width of 100 km.
    246  kgds_mdl_tmp = kgds_mdl
    247  kgds_mdl_tmp(1) = kgds_mdl_tmp(1) - 255 ! subset of grid
    248  int_opt = 3
    249  no = ijmdl
    250  else
    251  print*,"- INTERPOLATE NH NESDIS/IMS DATA TO MODEL GRID USING NEIGHBOR METHOD."
    252  ipopt(1) = nint(100.0 / nesdis_res) + 1 ! search box width of 100 km.
    253  kgds_mdl_tmp = kgds_mdl
    254  kgds_mdl_tmp(1) = -1 ! for subsection of model grid.
    255  int_opt = 2
    256  no = ijmdl ! an input when kgds(1) < 0 (subset of grid)
    257  end if
    258 
    259  allocate (snow_cvr_mdl_1d(ijmdl,km))
    260  snow_cvr_mdl_1d = 0.0
    261 
    262  allocate (bitmap_mdl(ijmdl,km))
    263  bitmap_mdl=.false. ! if interpolation routine can't find data
    264  ! at a point, this flag is false.
    265 
    266 
    267  call ipolates(int_opt, ipopt, kgds_nesdis, kgds_mdl_tmp, &
    268  (inesdis*jnesdis), ijmdl, &
    269  km, ibi, bitmap_nesdis, snow_cvr_nesdis, &
    270  no, lats_mdl, lons_mdl, ibo, bitmap_mdl, &
    271  snow_cvr_mdl_1d, iret)
    272 
    273  deallocate (bitmap_nesdis, snow_cvr_nesdis)
    274 
    275  if (iret /= 0) then
    276  print*,"- FATAL ERROR: IN INTERPOLATION ROUTINE. IRET IS: ", iret
    277  call w3tage('SNOW2MDL')
    278  call errexit(55)
    279  endif
    280 
    281 !-----------------------------------------------------------------------
    282 ! if the interpolation routines did not find valid nesdis/ims data
    283 ! in the vicinity of the model point, need to set a default value
    284 ! of snow cover. south of user-defined latitude threshold, set
    285 ! to zero. otherwise, see if the nearest neighbor nesdis/ims point is
    286 ! sea ice. if so, assume model point is snow covered.
    287 !-----------------------------------------------------------------------
    288 
    289  do ij = 1, ijmdl
    290  if (lats_mdl(ij) < 0.0) cycle ! only consider nh model points
    291  if (.not. bitmap_mdl(ij,km)) then
    292  if (lats_mdl(ij) <= lat_threshold) then
    293  snow_cvr_mdl_1d(ij,km) = 0.0
    294  else
    295  lats(1)=lats_mdl(ij)
    296  lons(1)=lons_mdl(ij)
    297  call gdswzd(kgds_nesdis,-1,1,undefined_value,gridi,gridj, &
    298  lons,lats,nret)
    299  if (nret /= 1) then
    300  print*,"- WARNING: MODEL POINT OUTSIDE NESDIS/IMS GRID: ", ipts_mdl(ij), jpts_mdl(ij)
    301  snow_cvr_mdl_1d(ij,km) = 0.0
    302  else
    303  ii = nint(gridi(1))
    304  jj = nint(gridj(1))
    305  if (sea_ice_nesdis(ii,jj) == 1) then
    306  snow_cvr_mdl_1d(ij,km) = 100.0
    307  else
    308  snow_cvr_mdl_1d(ij,km) = 0.0
    309  end if
    310  end if
    311  end if
    312  end if
    313  enddo
    314 
    315  deallocate (sea_ice_nesdis)
    316  deallocate (bitmap_mdl)
    317 
    318  endif nesdis_ims
    319 
    320 !----------------------------------------------------------------------
    321 ! now interpolate nh afwa snow depth data.
    322 !----------------------------------------------------------------------
    323 
    324  global_afwa : if (use_global_afwa) then
    325 
    326 !----------------------------------------------------------------------
    327 ! determine interpolation method based on the resolution of
    328 ! afwa data and the model grid.
    329 !----------------------------------------------------------------------
    330 
    331  ipopt = 0
    332  ibi = 1
    333  if (afwa_res < (0.5*resol_mdl)) then
    334  print*,"- INTERPOLATE GLOBAL AFWA DATA TO MODEL GRID USING BUDGET METHOD."
    335  ipopt(1)=-1 ! break model grid cell into 25 points.
    336  ipopt(2)=-1 ! 25 points are weighted equally.
    337  ipopt(20) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    338  kgds_mdl_tmp = kgds_mdl
    339  kgds_mdl_tmp(1) = kgds_mdl_tmp(1) - 255 ! subset of grid
    340  no = ijmdl
    341  int_opt = 3
    342  else
    343  print*,"- INTERPOLATE GLOBAL AFWA DATA TO MODEL GRID USING NEIGHBOR METHOD."
    344  ipopt(1) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    345  kgds_mdl_tmp = kgds_mdl
    346  kgds_mdl_tmp(1) = -1 ! for subsection of model grid.
    347  int_opt = 2
    348  no = ijmdl ! an input when kgds(1) < 0 (subset of grid)
    349  end if
    350 
    351  allocate (snow_dep_mdl_tmp(ijmdl,km))
    352  snow_dep_mdl_tmp = 0.0
    353 
    354  allocate (bitmap_mdl(ijmdl,km))
    355  bitmap_mdl = .false.
    356 
    357  call ipolates(int_opt, ipopt, kgds_afwa_global, kgds_mdl_tmp, &
    358  (iafwa*jafwa), ijmdl, &
    360  no, lats_mdl, lons_mdl, ibo, bitmap_mdl, &
    361  snow_dep_mdl_tmp, iret)
    362 
    364 
    365  if (iret /= 0) then
    366  print*,"- FATAL ERROR IN INTERPOLATION ROUTINE. IRET IS: ", iret
    367  call w3tage('SNOW2MDL')
    368  call errexit(55)
    369  endif
    370 
    371 !----------------------------------------------------------------------
    372 ! if interpolation did not find afwa data near the model point, then
    373 ! use a nominal value based on latitude threshold. this value
    374 ! may be overwritten below depending on nesdis/ims cover data (if
    375 ! user selects nesdis/ims data).
    376 !----------------------------------------------------------------------
    377 
    378  do ij = 1, ijmdl
    379  if (.not. bitmap_mdl(ij,km)) then
    380  if (abs(lats_mdl(ij)) >= lat_threshold) then
    381  snow_dep_mdl_tmp(ij,km) = min_snow_depth
    382  else
    383  snow_dep_mdl_tmp(ij,km) = 0.0
    384  endif
    385  endif
    386  enddo
    387 
    388  deallocate(bitmap_mdl)
    389 
    390  endif global_afwa
    391 
    392 !----------------------------------------------------------------------
    393 ! now interpolate nh afwa snow depth data.
    394 !----------------------------------------------------------------------
    395 
    396  nh_afwa : if (use_nh_afwa) then
    397 
    398 !----------------------------------------------------------------------
    399 ! determine interpolation method based on the resolution of
    400 ! afwa data and the model grid.
    401 !----------------------------------------------------------------------
    402 
    403  ipopt = 0
    404  ibi = 1
    405  if (afwa_res < (0.5*resol_mdl)) then
    406  print*,"- INTERPOLATE NH AFWA DATA TO MODEL GRID USING BUDGET METHOD."
    407  ipopt(1)=-1 ! break model grid cell into 25 points.
    408  ipopt(2)=-1 ! 25 points are weighted equally.
    409  ipopt(20) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    410  kgds_mdl_tmp = kgds_mdl
    411  kgds_mdl_tmp(1) = kgds_mdl_tmp(1) - 255 ! subset of grid
    412  no = ijmdl
    413  int_opt = 3
    414  else
    415  print*,"- INTERPOLATE NH AFWA DATA TO MODEL GRID USING NEIGHBOR METHOD."
    416  ipopt(1) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    417  kgds_mdl_tmp = kgds_mdl
    418  kgds_mdl_tmp(1) = -1 ! for subsection of model grid.
    419  int_opt = 2
    420  no = ijmdl ! an input when kgds(1) < 0 (subset of grid)
    421  end if
    422 
    423  allocate (snow_dep_mdl_tmp(ijmdl,km))
    424  snow_dep_mdl_tmp = 0.0
    425 
    426  allocate (bitmap_mdl(ijmdl,km))
    427  bitmap_mdl = .false.
    428 
    429  call ipolates(int_opt, ipopt, kgds_afwa_nh, kgds_mdl_tmp, &
    430  (iafwa*jafwa), ijmdl, &
    431  1, ibi, bitmap_afwa_nh, snow_dep_afwa_nh, &
    432  no, lats_mdl, lons_mdl, ibo, bitmap_mdl, &
    433  snow_dep_mdl_tmp, iret)
    434 
    435  deallocate(bitmap_afwa_nh, snow_dep_afwa_nh)
    436 
    437  if (iret /= 0) then
    438  print*,"- FATAL ERROR IN INTERPOLATION ROUTINE. IRET IS: ", iret
    439  call w3tage('SNOW2MDL')
    440  call errexit(55)
    441  endif
    442 
    443 !----------------------------------------------------------------------
    444 ! if interpolation did not find afwa data near the model point, then
    445 ! use a nominal value based on latitude threshold. this value
    446 ! may be overwritten below depending on nesdis/ims cover data (if
    447 ! user selects nesdis/ims data).
    448 !----------------------------------------------------------------------
    449 
    450  do ij = 1, ijmdl
    451  if (lats_mdl(ij) >= 0.) then ! only consider model pts in n hemi.
    452  if (.not. bitmap_mdl(ij,km)) then
    453  if (abs(lats_mdl(ij)) >= lat_threshold) then
    454  snow_dep_mdl_tmp(ij,km) = min_snow_depth
    455  else
    456  snow_dep_mdl_tmp(ij,km) = 0.0
    457  endif
    458  endif
    459  endif
    460  enddo
    461 
    462  deallocate(bitmap_mdl)
    463 
    464  endif nh_afwa
    465 
    466 !----------------------------------------------------------------------
    467 ! if nh data selected, use it to determine the cover and depth
    468 ! on the model grid.
    469 !----------------------------------------------------------------------
    470 
    471  allocate (snow_dep_mdl(imdl,jmdl))
    472  allocate (snow_cvr_mdl(imdl,jmdl))
    473  snow_cvr_mdl = 0.0
    474  snow_dep_mdl = 0.0
    475 
    476  if (use_global_afwa .and. use_nesdis) then ! set depth/cover on nesdis ims/afwa blend
    477  print*,"- BLEND NESDIS/IMS AND AFWA DATA IN NH."
    478  do ij = 1, ijmdl
    479  if (lats_mdl(ij) >= 0.0) then
    480  if (snow_cvr_mdl_1d(ij,km) >= snow_cvr_threshold) then
    481  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = &
    482  max(snow_dep_mdl_tmp(ij,km), min_snow_depth)
    483  endif
    484  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_cvr_mdl_1d(ij,km)
    485  endif
    486  enddo
    487  deallocate (snow_cvr_mdl_1d)
    488  elseif (use_nh_afwa .and. use_nesdis) then ! set depth/cover on nesdis ims/afwa blend
    489  print*,"- BLEND NESDIS/IMS AND AFWA DATA IN NH."
    490  do ij = 1, ijmdl
    491  if (lats_mdl(ij) >= 0.0) then
    492  if (snow_cvr_mdl_1d(ij,km) >= snow_cvr_threshold) then
    493  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = &
    494  max(snow_dep_mdl_tmp(ij,km), min_snow_depth)
    495  endif
    496  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_cvr_mdl_1d(ij,km)
    497  endif
    498  enddo
    499  deallocate (snow_cvr_mdl_1d)
    500  deallocate (snow_dep_mdl_tmp)
    501  elseif (use_global_afwa) then ! set depth/cover on afwa only
    502  print*,"- SET DEPTH/COVER FROM AFWA DATA IN NH."
    503  do ij = 1, ijmdl
    504  if (lats_mdl(ij) >= 0.0) then
    505  if (snow_dep_mdl_tmp(ij,km) > 0.0) then
    506  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = 100.0
    507  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_dep_mdl_tmp(ij,km)
    508  endif
    509  endif
    510  enddo
    511  elseif (use_nh_afwa) then ! set depth/cover on afwa only
    512  print*,"- SET DEPTH/COVER FROM AFWA DATA IN NH."
    513  do ij = 1, ijmdl
    514  if (lats_mdl(ij) >= 0.0) then
    515  if (snow_dep_mdl_tmp(ij,km) > 0.0) then
    516  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = 100.0
    517  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_dep_mdl_tmp(ij,km)
    518  endif
    519  endif
    520  enddo
    521  deallocate (snow_dep_mdl_tmp)
    522  elseif (use_nesdis) then ! set depth/cover on nesdis/ims only
    523  print*,"- SET DEPTH/COVER FROM NESDIS/IMS DATA IN NH."
    524  do ij = 1, ijmdl
    525  if (lats_mdl(ij) >= 0.0) then
    526  if (snow_cvr_mdl_1d(ij,km) >= snow_cvr_threshold) then
    528  endif
    529  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_cvr_mdl_1d(ij,km)
    530  endif
    531  enddo
    532  deallocate (snow_cvr_mdl_1d)
    533  end if
    534 
    535 !----------------------------------------------------------------------
    536 ! if selected, interpolate autosnow data to model grid.
    537 !----------------------------------------------------------------------
    538 
    539  autosnow : if (use_autosnow) then
    540 
    541  ipopt = 0
    542  ibi = 1
    543  if (autosnow_res < (0.5*resol_mdl)) then
    544  print*,"- INTERPOLATE AUTOSNOW DATA TO MODEL GRID USING BUDGET METHOD."
    545  ipopt(1)=2 ! break model grid cell into 25 points.
    546  ipopt(2:4)=1 ! 25 points are weighted equally.
    547  ipopt(5)=10 ! 10% coverage of valid data in box
    548  ipopt(20) = nint(100.0 / autosnow_res) + 1 ! search box width of 100 km.
    549  kgds_mdl_tmp = kgds_mdl
    550  kgds_mdl_tmp(1) = kgds_mdl_tmp(1) - 255 ! subset of grid
    551  int_opt = 3
    552  no = ijmdl
    553  else
    554  print*,"- INTERPOLATE AUTOSNOW DATA TO MODEL GRID USING NEIGHBOR METHOD."
    555  ipopt(1) = nint(100.0 / autosnow_res) + 1 ! search box width of 100 km.
    556  kgds_mdl_tmp = kgds_mdl
    557  kgds_mdl_tmp(1) = -1 ! for subsection of model grid.
    558  int_opt = 2
    559  no = ijmdl ! an input when kgds(1) < 0 (subset of grid)
    560  end if
    561 
    562  allocate (snow_cvr_mdl_1d(ijmdl,km))
    563  snow_cvr_mdl_1d = 0.0
    564 
    565  allocate (bitmap_mdl(ijmdl,km))
    566  bitmap_mdl=.false. ! if interpolation routine can't find data
    567  ! at a point, this flag is false.
    568 
    569  call ipolates(int_opt, ipopt, kgds_autosnow, kgds_mdl_tmp, &
    572  no, lats_mdl, lons_mdl, ibo, bitmap_mdl, &
    573  snow_cvr_mdl_1d, iret)
    574 
    575  deallocate (snow_cvr_autosnow, bitmap_autosnow)
    576 
    577  if (iret /= 0) then
    578  print*,"- FATAL ERROR IN INTERPOLATION ROUTINE. IRET IS: ", iret
    579  call w3tage('SNOW2MDL')
    580  call errexit(55)
    581  endif
    582 
    583 !----------------------------------------------------------------------
    584 ! if interpolation fails to find autosnow data, set the cover
    585 ! at the model point to a nomimal value.
    586 !----------------------------------------------------------------------
    587 
    588  do ij = 1, ijmdl
    589  if (lats_mdl(ij) < 0.0) then
    590  if (.not. bitmap_mdl(ij,km)) then
    591  if (abs(lats_mdl(ij)) <= lat_threshold) then
    592  snow_cvr_mdl_1d(ij,km) = 0.0
    593  else
    594  snow_cvr_mdl_1d(ij,km) = 100.0
    595  end if
    596  end if
    597  end if
    598  enddo
    599 
    600  deallocate (bitmap_mdl)
    601 
    602  endif autosnow
    603 
    604 !----------------------------------------------------------------------
    605 ! now interpolate sh afwa snow depth data.
    606 !----------------------------------------------------------------------
    607 
    608  sh_afwa : if (use_sh_afwa) then
    609 
    610 !----------------------------------------------------------------------
    611 ! determine interpolation method based on the resolution of
    612 ! afwa data and the model grid.
    613 !----------------------------------------------------------------------
    614 
    615  ipopt = 0
    616  ibi = 1
    617  if (afwa_res < (0.5*resol_mdl)) then
    618  print*,"- INTERPOLATE SH AFWA DATA TO MODEL GRID USING BUDGET METHOD."
    619  ipopt(1)=-1 ! break model grid cell into 25 points.
    620  ipopt(2)=-1 ! 25 points are weighted equally.
    621  ipopt(20) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    622  kgds_mdl_tmp = kgds_mdl
    623  kgds_mdl_tmp(1) = kgds_mdl_tmp(1) - 255 ! subset of grid
    624  no = ijmdl
    625  int_opt = 3
    626  else
    627  print*,"- INTERPOLATE SH AFWA DATA TO MODEL GRID USING NEIGHBOR METHOD."
    628  ipopt(1) = nint(100.0 / afwa_res) + 1 ! search box width of 100 km.
    629  kgds_mdl_tmp = kgds_mdl
    630  kgds_mdl_tmp(1) = -1 ! for subsection of model grid.
    631  int_opt = 2
    632  no = ijmdl ! an input when kgds(1) < 0 (subset of grid)
    633  end if
    634 
    635  allocate (snow_dep_mdl_tmp(ijmdl,km))
    636  snow_dep_mdl_tmp = 0.0
    637 
    638  allocate (bitmap_mdl(ijmdl,km))
    639  bitmap_mdl = .false.
    640 
    641  call ipolates(int_opt, ipopt, kgds_afwa_sh, kgds_mdl_tmp, &
    642  (iafwa*jafwa), ijmdl, &
    643  1, ibi, bitmap_afwa_sh, snow_dep_afwa_sh, &
    644  no, lats_mdl, lons_mdl, ibo, bitmap_mdl, &
    645  snow_dep_mdl_tmp, iret)
    646 
    647  if (iret /= 0) then
    648  print*,"- FATAL ERROR IN INTERPOLATION ROUTINE. IRET IS: ", iret
    649  call w3tage('SNOW2MDL')
    650  call errexit(55)
    651  endif
    652 
    653  deallocate (bitmap_afwa_sh, snow_dep_afwa_sh)
    654 
    655 !----------------------------------------------------------------------
    656 ! if interpolation does not find afwa data, set model point to
    657 ! a nominal value.
    658 !----------------------------------------------------------------------
    659 
    660  do ij = 1, ijmdl
    661  if (lats_mdl(ij) < 0.) then
    662  if (.not. bitmap_mdl(ij,km)) then
    663  if (abs(lats_mdl(ij)) >= lat_threshold) then
    664  snow_dep_mdl_tmp(ij,km) = min_snow_depth
    665  else
    666  snow_dep_mdl_tmp(ij,km) = 0.0
    667  endif
    668  endif
    669  endif
    670  enddo
    671 
    672  deallocate(bitmap_mdl)
    673 
    674  endif sh_afwa
    675 
    676 !----------------------------------------------------------------------
    677 ! if sh data selected, use it to determine the cover and depth
    678 ! on the model grid.
    679 !----------------------------------------------------------------------
    680 
    681  if ((use_sh_afwa .or. use_global_afwa) .and. use_autosnow) then ! set depth/cover on autosnow/afwa blend
    682  print*,"- BLEND AUTOSNOW AND AFWA DATA IN SH."
    683  do ij = 1, ijmdl
    684  if (lats_mdl(ij) < 0.0) then
    685  if (snow_cvr_mdl_1d(ij,km) >= snow_cvr_threshold) then
    686  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = &
    687  max(snow_dep_mdl_tmp(ij,km), min_snow_depth)
    688  endif
    689  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_cvr_mdl_1d(ij,km)
    690  endif
    691  enddo
    692  deallocate (snow_cvr_mdl_1d)
    693  deallocate (snow_dep_mdl_tmp)
    694  elseif (use_sh_afwa .or. use_global_afwa) then ! set depth/cover on afwa only
    695  print*,"- SET DEPTH/COVER FROM AFWA DATA IN SH."
    696  do ij = 1, ijmdl
    697  if (lats_mdl(ij) < 0.0) then
    698  if (snow_dep_mdl_tmp(ij,km) > 0.0) then
    699  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = 100.0
    700  snow_dep_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_dep_mdl_tmp(ij,km)
    701  endif
    702  endif
    703  enddo
    704  deallocate (snow_dep_mdl_tmp)
    705  elseif (use_autosnow) then ! set depth/cover on autosnow only
    706  print*,"- SET DEPTH/COVER FROM AUTOSNOW IN SH."
    707  do ij = 1, ijmdl
    708  if (lats_mdl(ij) < 0.0) then
    709  if (snow_cvr_mdl_1d(ij,km) >= snow_cvr_threshold) then
    711  endif
    712  snow_cvr_mdl(ipts_mdl(ij),jpts_mdl(ij)) = snow_cvr_mdl_1d(ij,km)
    713  endif
    714  enddo
    715  deallocate (snow_cvr_mdl_1d)
    716  end if
    717 
    718 !----------------------------------------------------------------------
    719 ! if a global model grid, and if running on thinned grid, then
    720 ! take a linear weighting of full points located within the thin points.
    721 ! "4" is grid indicator for a gaussian grid.
    722 !----------------------------------------------------------------------
    723 
    724  if (kgds_mdl(1) == 4 .and. thinned) then
    725 
    726  ijmdl2 = sum(lonsperlat_mdl) * 2
    727  allocate (snow_cvr_mdl_1d(ijmdl2,km))
    728  allocate (lsmask_1d(ijmdl2))
    729  allocate (snow_dep_mdl_tmp(ijmdl2,km))
    730 
    731  lsmask_1d = 0.0
    732  snow_cvr_mdl_1d = 0.0
    733  snow_dep_mdl_tmp = 0.0
    734 
    735  ij = 0
    736  do j = 1, jmdl
    737  jj = j
    738  if (jj > jmdl/2) jj = jmdl - j + 1
    739  r = float(imdl) / float(lonsperlat_mdl(jj))
    740  do i = 1, lonsperlat_mdl(jj)
    741  ij = ij + 1
    742  x1 = (i-1)*r
    743  imid = nint(x1+1.0)
    744  lsmask_1d(ij) = lsmask_mdl_sav(imid,j)
    745  if (lsmask_mdl_sav(imid,j) == 0.0) cycle
    746  gridis=x1+1.0-r/2.
    747  istart=nint(gridis)
    748  gridie=x1+1.0+r/2.
    749  iend=nint(gridie)
    750  sumc = 0.0 ! cover
    751  sumd = 0.0 ! depth
    752  do ii = istart, iend
    753  if (ii == istart) then
    754  fraction = 0.5 - (gridis - float(istart))
    755  elseif (ii == iend) then
    756  fraction = 0.5 + (gridie - float(iend))
    757  else
    758  fraction = 1.0
    759  endif
    760  if (fraction < 0.0001) cycle
    761  iii = ii
    762  if (iii < 1) iii = imdl + iii
    763  sumc = sumc + fraction * snow_cvr_mdl(iii,j)
    764  sumd = sumd + fraction * snow_dep_mdl(iii,j)
    765  enddo
    766  snow_cvr_mdl_1d(ij,km) = sumc / r
    767  snow_dep_mdl_tmp(ij,km) = 0.0
    768  if (snow_cvr_mdl_1d(ij,km) > snow_cvr_threshold) then
    769  snow_dep_mdl_tmp(ij,km) = max(sumd / r,min_snow_depth)
    770  end if
    771  enddo
    772  enddo
    773 
    774  deallocate (lsmask_mdl_sav)
    775 
    776 !----------------------------------------------------------------------
    777 ! now place thinned points into 2-d array for output.
    778 !----------------------------------------------------------------------
    779 
    780  allocate (idum(imdl,jmdl))
    781  idum = 0
    782  call uninterpred(1, idum, lsmask_1d, lsmask_mdl, imdl, jmdl, ijmdl2, lonsperlat_mdl)
    783  call uninterpred(1, idum, snow_cvr_mdl_1d(:,km), snow_cvr_mdl, imdl, jmdl, ijmdl2, lonsperlat_mdl)
    784  deallocate(snow_cvr_mdl_1d)
    785  call uninterpred(1, idum, snow_dep_mdl_tmp(:,km), snow_dep_mdl, imdl, jmdl, ijmdl2, lonsperlat_mdl)
    786  deallocate(snow_dep_mdl_tmp)
    787  deallocate(idum)
    788 
    789  end if
    790 
    791 !----------------------------------------------------------------------
    792 ! grib the interpolated data.
    793 !----------------------------------------------------------------------
    794 
    795  if (output_grib2) then
    796  print*,"- OUTPUT SNOW ANALYSIS DATA IN GRIB2 FORMAT"
    797  call write_grib2
    798  else
    799  print*,"- OUTPUT SNOW ANALYSIS DATA IN GRIB1 FORMAT"
    800  call write_grib1
    801  endif
    802 
    803  deallocate (snow_cvr_mdl)
    804  deallocate (snow_dep_mdl)
    805 
    806  return
    807 
    808  end subroutine interp
    809 
    823  subroutine write_grib2
    825  use grib_mod
    826 
    827  implicit none
    828 
    829  character(len=1), allocatable :: cgrib(:)
    830 
    831  integer, parameter :: numcoord = 0
    832 
    833  integer :: coordlist(numcoord)
    834  integer :: lugb, lcgrib, iret
    835  integer :: igds(5)
    836  integer :: listsec0(2)
    837  integer :: listsec1(13)
    838  integer :: ideflist, idefnum, ipdsnum, idrsnum
    839  integer :: igdstmplen, ipdstmplen, idrstmplen
    840  integer :: ipdstmpl(15)
    841  integer, allocatable :: igdstmpl(:), idrstmpl(:)
    842  integer :: ngrdpts, ibmap, lengrib
    843 
    844  logical*1, allocatable :: bmap(:), bmap2d(:,:)
    845 
    846  real, allocatable :: fld(:)
    847 
    848 !----------------------------------------------------------------------
    849 ! Setup variables and arrays required by grib2 library.
    850 !----------------------------------------------------------------------
    851 
    852  call grib2_check(kgds_mdl, igdstmplen)
    853 
    854  allocate(igdstmpl(igdstmplen))
    855 
    858  listsec0, listsec1, igds, ipdstmpl, ipdsnum, igdstmpl, &
    859  igdstmplen, idefnum, ideflist, ngrdpts)
    860 
    861  lcgrib = imdl*jmdl*4
    862  allocate(cgrib(lcgrib)) ! this variable holds the grib2 message
    863 
    864  iret=0
    865 
    866 !----------------------------------------------------------------------
    867 ! Create sections 0 and 1. There is no section 2, local use section.
    868 !----------------------------------------------------------------------
    869 
    870  print*,"- CREATE SECTIONS 0 AND 1"
    871  call gribcreate(cgrib,lcgrib,listsec0,listsec1,iret)
    872  if (iret /= 0) goto 900
    873 
    874 !----------------------------------------------------------------------
    875 ! Create section 3, the grid description section.
    876 !----------------------------------------------------------------------
    877 
    878  print*,"- CREATE SECTION 3"
    879  call addgrid(cgrib,lcgrib,igds,igdstmpl,igdstmplen, &
    880  ideflist,idefnum,iret)
    881  if (iret /= 0) goto 900
    882 
    883 !----------------------------------------------------------------------
    884 ! Setup arrays for section 5, the data representation section.
    885 !----------------------------------------------------------------------
    886 
    887  idrsnum = 0 ! section 5, use simple packing
    888  idrstmplen = 5
    889  allocate (idrstmpl(idrstmplen))
    890  idrstmpl = 0
    891  idrstmpl(3) = 0 ! decimal scaling factor
    892 
    893  allocate(fld(ngrdpts))
    894  fld = reshape(snow_cvr_mdl, (/imdl*jmdl/) )
    895 
    896  ibmap = 0 ! bitmap applies
    897  allocate(bmap2d(imdl,jmdl))
    898  bmap2d=.true.
    899  where (lsmask_mdl < 0.5) bmap2d=.false.
    900  allocate(bmap(ngrdpts))
    901  bmap = reshape(bmap2d, (/imdl*jmdl/) )
    902  deallocate (bmap2d)
    903 
    904  coordlist=0 ! not used
    905 
    906 !----------------------------------------------------------------------
    907 ! Create section 4 (product definition section) and 5 (data
    908 ! representation section) for cover.
    909 !----------------------------------------------------------------------
    910 
    911  ipdstmpl(1) = 1 ! section 4, oct 10; parameter category, moisture
    912  ipdstmpl(2) = 42 ! section 4, oct 11; parameter, snow cover
    913 
    914  print*,"- CREATE SECTIONS 4 AND 5 FOR SNOW COVER"
    915  call addfield(cgrib,lcgrib,ipdsnum,ipdstmpl,ipdstmplen, &
    916  coordlist,numcoord,idrsnum,idrstmpl, &
    917  idrstmplen,fld,ngrdpts,ibmap,bmap,iret)
    918  if (iret /= 0) goto 900
    919 
    920 !----------------------------------------------------------------------
    921 ! for regional model, if afwa data not used, don't output a depth
    922 ! record. this tells the sfcupdate code to update the first
    923 ! guess snow with the new snow cover analysis.
    924 !----------------------------------------------------------------------
    925 
    926  if (kgds_mdl(1) /= 4) then
    927  if (.not. use_global_afwa .and. .not. use_nh_afwa .and. .not. use_sh_afwa) goto 88
    928  endif
    929 
    930 !----------------------------------------------------------------------
    931 ! Create section 4 (product definition section) and 5 (data
    932 ! representation section) for depth.
    933 !----------------------------------------------------------------------
    934 
    935  fld= reshape(snow_dep_mdl, (/imdl*jmdl/) )
    936 
    937  ipdstmpl(1) = 1 ! section 4, oct 10; parameter category, moisture
    938  ipdstmpl(2) = 11 ! section 4, oct 11; parameter, snow depth
    939 
    940  idrstmpl = 0 ! section 5
    941  idrstmpl(3) = 4 ! section 5, decimal scaling factor
    942 
    943  print*,"- CREATE SECTIONS 4 AND 5 FOR SNOW DEPTH"
    944  call addfield(cgrib,lcgrib,ipdsnum,ipdstmpl,ipdstmplen, &
    945  coordlist,numcoord,idrsnum,idrstmpl, &
    946  idrstmplen,fld,ngrdpts,ibmap,bmap,iret)
    947  if (iret /= 0) goto 900
    948 
    949  88 continue
    950 
    951 !----------------------------------------------------------------------
    952 ! Create section 8 - end section.
    953 !----------------------------------------------------------------------
    954 
    955  call gribend(cgrib,lcgrib,lengrib,iret)
    956  if (iret /= 0) goto 900
    957 
    958 !----------------------------------------------------------------------
    959 ! Now output grib message to file.
    960 !----------------------------------------------------------------------
    961 
    962  lugb=53
    963  print*,"- OPEN OUTPUT GRIB FILE ", trim(model_snow_file)
    964  call baopenw(lugb, model_snow_file, iret)
    965 
    966  if (iret /= 0) then
    967  print*,'- FATAL ERROR: BAD OPEN OF OUTPUT GRIB FILE. IRET IS ', iret
    968  call w3tage('SNOW2MDL')
    969  call errexit(49)
    970  end if
    971 
    972  print*,'- WRITE OUTPUT GRIB FILE.'
    973  call wryte(lugb, lengrib, cgrib)
    974 
    975  call baclose (lugb, iret)
    976 
    977  deallocate(fld, bmap, idrstmpl, igdstmpl, cgrib)
    978 
    979  return
    980 
    981  900 continue
    982  print*,'- FATAL ERROR CREATING GRIB2 MESSAGE. IRET IS ', iret
    983  call w3tage('SNOW2MDL')
    984  call errexit(48)
    985 
    986  end subroutine write_grib2
    987 
    1003  subroutine write_grib1
    1005  implicit none
    1006 
    1007  integer :: iret
    1008  integer, parameter :: lugb = 64 ! unit number of output grib file
    1009  integer :: kpds(200)
    1010 
    1011  logical*1 :: lbms(imdl,jmdl)
    1012 
    1013 !----------------------------------------------------------------------
    1014 ! set up pds section. don't need to set the gds section.
    1015 ! since the model grid is not changing, use the kgds array
    1016 ! already determined in module model_grid.
    1017 !----------------------------------------------------------------------
    1018 
    1019  kpds = 0
    1020 
    1021  kpds(1) = 7 ! center id
    1022  kpds(2) = 25 ! process id number. this determined from the
    1023  ! input data as we are simply interpolating
    1024  ! that data to a different grid. should
    1025  ! i request a process id for my codes?
    1026  kpds(3) = grid_id_mdl ! grid specified in gds
    1027  kpds(4) = 192 ! include gds and a bit map section
    1028  kpds(5) = 238 ! parameter number for snow cover
    1029  kpds(6) = 1 ! level - ground or water surface
    1030  kpds(7) = 0 ! height pressure of level
    1031  kpds(8) = grib_year ! year of century the time info is determined
    1032  kpds(9) = grib_month ! month by operational requirements
    1033  kpds(10) = grib_day ! day
    1034  kpds(11) = grib_hour ! hour
    1035  kpds(12) = 0 ! minute
    1036  kpds(13) = 1 ! fcst time unit - hour
    1037  kpds(14) = 0 ! period of time, p1. set to '0' for analysis
    1038  kpds(15) = 0 ! number of time units, p2.
    1039  kpds(16) = 1 ! initialized analysis product
    1040  kpds(17) = 0 ! number in average
    1041  kpds(18) = 1 ! grib edition 1
    1042  kpds(19) = 3 ! parameter table version number
    1043  kpds(20) = 0 ! number missing from avg/accum
    1044  kpds(21) = grib_century ! century - set as in the input file
    1045  kpds(22) = 0 ! decimal scale factor
    1046  kpds(23) = 4 ! subcenter - emc
    1047  kpds(24) = 0 ! reserved
    1048  kpds(25) = 0 ! reserved
    1049 
    1050  lbms = .false. ! set bitmap section
    1051 
    1052  where(lsmask_mdl > 0.0) lbms = .true.
    1053 
    1054  print*,"- OPEN OUTPUT GRIB FILE ", trim(model_snow_file)
    1055  call baopenw(lugb, model_snow_file, iret)
    1056 
    1057  if (iret /= 0) then
    1058  print*,'- FATAL ERROR OPENING OUTPUT GRIB FILE. IRET IS ', iret
    1059  call w3tage('SNOW2MDL')
    1060  call errexit(59)
    1061  end if
    1062 
    1063  print*,"- WRITE OUTPUT GRIB FILE ", trim(model_snow_file)
    1064  call putgb (lugb, (imdl*jmdl), kpds, kgds_mdl, lbms, &
    1065  snow_cvr_mdl, iret)
    1066 
    1067  if (iret /= 0) then
    1068  print*,'- FATAL ERROR WRITING OUTPUT GRIB FILE. IRET IS ', iret
    1069  call w3tage('SNOW2MDL')
    1070  call errexit(58)
    1071  end if
    1072 
    1073 ! for regional model, if afwa data not used, don't output a depth
    1074 ! record. this tells the sfcupdate code to update the first
    1075 ! guess snow with the new snow cover analysis.
    1076 
    1077  if (kgds_mdl(1) /= 4) then
    1078  if (.not. use_global_afwa .and. .not. use_nh_afwa .and. .not. use_sh_afwa) goto 88
    1079  endif
    1080 
    1081  kpds(5) = 66 ! parameter number for snow depth
    1082  kpds(22) = 4 ! scaling factor. to nearest mm
    1083 
    1084  call putgb (lugb, (imdl*jmdl), kpds, kgds_mdl, lbms, &
    1085  snow_dep_mdl, iret)
    1086 
    1087  if (iret /= 0) then
    1088  print*,'- FATAL ERROR WRITING OUTPUT GRIB FILE. IRET IS ', iret
    1089  call w3tage('SNOW2MDL')
    1090  call errexit(57)
    1091  end if
    1092 
    1093  88 call baclose(lugb, iret)
    1094 
    1095  return
    1096 
    1097  end subroutine write_grib1
    1098 
    1115  subroutine uninterpred(iord,kmsk,fi,f,lonl,latd,len,lonsperlat)
    1117  implicit none
    1118 
    1119  integer, intent(in) :: len
    1120  integer, intent(in) :: iord
    1121  integer, intent(in) :: lonl
    1122  integer, intent(in) :: latd
    1123  integer, intent(in) :: lonsperlat(latd/2)
    1124  integer, intent(in) :: kmsk(lonl*latd)
    1125  integer :: j,lons,jj,latd2,ii,i
    1126 
    1127  real, intent(in) :: fi(len)
    1128  real, intent(out) :: f(lonl,latd)
    1129 
    1130  latd2 = latd / 2
    1131  ii = 1
    1132 
    1133  do j=1,latd
    1134 
    1135  jj = j
    1136  if (j .gt. latd2) jj = latd - j + 1
    1137  lons=lonsperlat(jj)
    1138 
    1139  if(lons.ne.lonl) then
    1140  call intlon(iord,1,1,lons,lonl,kmsk(ii),fi(ii),f(1,j))
    1141  else
    1142  do i=1,lonl
    1143  f(i,j) = fi(ii+i-1)
    1144  enddo
    1145  endif
    1146 
    1147  ii = ii + lons
    1148 
    1149  enddo
    1150 
    1151  end subroutine uninterpred
    1152 
    1166  subroutine intlon(iord,imon,imsk,m1,m2,k1,f1,f2)
    1168  implicit none
    1169 
    1170  integer,intent(in) :: iord,imon,imsk,m1,m2
    1171  integer,intent(in) :: k1(m1)
    1172  integer :: i2,in,il,ir
    1173 
    1174  real,intent(in) :: f1(m1)
    1175  real,intent(out) :: f2(m2)
    1176  real :: r,x1
    1177 
    1178  r=real(m1)/real(m2)
    1179  do i2=1,m2
    1180  x1=(i2-1)*r
    1181  il=int(x1)+1
    1182  ir=mod(il,m1)+1
    1183  if(iord.eq.2.and.(imsk.eq.0.or.k1(il).eq.k1(ir))) then
    1184  f2(i2)=f1(il)*(il-x1)+f1(ir)*(x1-il+1)
    1185  else
    1186  in=mod(nint(x1),m1)+1
    1187  f2(i2)=f1(in)
    1188  endif
    1189  enddo
    1190 
    1191  end subroutine intlon
    1192 
    1193  end module snow2mdl
    real, dimension(:,:), allocatable snow_dep_afwa_sh
    Southern hemisphere afwa snow depth.
    Definition: snowdat.F90:90
    +
    This module reads in data from the program&#39;s configuration namelist.
    +
    logical bad_afwa_sh
    When true, the southern hemisphere afwa data failed its quality control check.
    Definition: snowdat.F90:62
    +
    real, dimension(:,:), allocatable snow_cvr_mdl
    snow cover on model grid in percent
    Definition: snow2mdl.F90:85
    +
    integer, dimension(200) kgds_afwa_nh
    grib1 grid description section for northern hemisphere 16th mesh afwa data.
    Definition: snowdat.F90:48
    +
    integer mesh_nesdis
    nesdis/ims data is 96th mesh (or bediant)
    Definition: snowdat.F90:58
    +
    real, public snow_cvr_threshold
    if percent coverage according to nesdis/ims or autosnow exceeds this value, then non-zero snow depth ...
    +
    real, public min_snow_depth
    minimum snow depth in meters at model points with coverage exceeding threshold.
    +
    real lonlast
    Corner point longitude (imdl,jmdl) of model grid.
    Definition: model_grid.F90:45
    +
    subroutine init_grib2(century, year, month, day, hour, kgds, lat11, latlast, lon11, lonlast, listsec0, listsec1, igds, ipdstmpl, ipdsnum, igdstmpl, igdstmplen, idefnum, ideflist, ngrdpts)
    Initialize grib2 arrays required by the ncep g2 library according to grib1 gds information.
    Definition: grib_utils.F90:401
    +
    subroutine grib2_check(kgds, igdstmplen)
    Determine length of grib2 gds template array, which is a function of the map projection.
    Definition: grib_utils.F90:351
    +
    real, dimension(:,:), allocatable snow_cvr_autosnow
    autosnow snow cover flag (0-no, 100-yes)
    Definition: snowdat.F90:87
    +
    integer *1, dimension(:,:), allocatable sea_ice_nesdis
    nesdis/ims sea ice flag (0-open water, 1-ice)
    Definition: snowdat.F90:59
    +
    real, dimension(:,:), allocatable snow_dep_afwa_global
    The global afwa snow depth.
    Definition: snowdat.F90:88
    +
    integer, public grib_century
    date of the final merged snow product that will be placed in grib header.
    +
    integer jmdl
    j-dimension of model grid
    Definition: model_grid.F90:28
    +
    integer, dimension(200) kgds_nesdis
    nesdis/ims grid description section (grib section 2)
    Definition: snowdat.F90:57
    +
    logical *1, dimension(:,:), allocatable bitmap_nesdis
    nesdis data grib bitmap (false-non land, true-land).
    Definition: snowdat.F90:74
    +
    integer, dimension(:), allocatable lonsperlat_mdl
    Number of longitudes (i-points) for each latitude (row).
    Definition: model_grid.F90:34
    +
    logical thinned
    When true, global grids will run thinned (number of i points decrease toward pole) ...
    Definition: model_grid.F90:38
    +
    real afwa_res
    Resolution of afwa data in km.
    Definition: snowdat.F90:84
    +
    real, dimension(:), allocatable lats_mdl
    Latitudes of model grid points.
    Definition: model_grid.F90:41
    +
    integer, dimension(200) kgds_afwa_global
    grib1 grid description section for global afwa data.
    Definition: snowdat.F90:46
    +
    Read in data defining the model grid.
    Definition: model_grid.F90:19
    +
    integer, dimension(200) kgds_autosnow
    autosnow grid description section (grib section 2)
    Definition: snowdat.F90:56
    +
    integer jafwa
    j-dimension of afwa grid
    Definition: snowdat.F90:43
    +
    integer iautosnow
    i-dimension of autosnow grid
    Definition: snowdat.F90:41
    +
    Read and qc afwa, nesdis/ims and autosnow snow data.
    Definition: snowdat.F90:26
    +
    integer iafwa
    i-dimension of afwa grid
    Definition: snowdat.F90:40
    +
    real, dimension(:,:), allocatable lsmask_mdl
    land mask of model grid (0 - non land, 1-land) for global grids run thinned, will contain a modified ...
    Definition: model_grid.F90:47
    +
    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.
    Definition: snow2mdl.F90:1167
    +
    subroutine uninterpred(iord, kmsk, fi, f, lonl, latd, len, lonsperlat)
    Fills out full grid using thinned grid data.
    Definition: snow2mdl.F90:1116
    +
    logical *1, dimension(:,:), allocatable bitmap_autosnow
    autosnow data grib bitmap (false-non land, true-land).
    Definition: snowdat.F90:75
    +
    real nesdis_res
    Resolution of the nesdis data in km.
    Definition: snowdat.F90:85
    +
    integer, public grib_month
    date of the final merged snow product that will be placed in grib header.
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_sh
    The southern hemisphere afwa data grib bitmap.
    Definition: snowdat.F90:72
    +
    real, dimension(:), allocatable lons_mdl
    longitudes of model grid points
    Definition: model_grid.F90:46
    +
    real, dimension(:,:), allocatable snow_dep_afwa_nh
    Northern hemisphere afwa snow depth.
    Definition: snowdat.F90:89
    +
    real resol_mdl
    approximate model resolution in km.
    Definition: model_grid.F90:52
    +
    logical use_sh_afwa
    True if southern hemisphere afwa data to be used.
    Definition: snowdat.F90:78
    +
    Interpolate snow data to model grid and grib the result.
    Definition: snow2mdl.F90:20
    +
    subroutine write_grib2
    Write grib2 snow cover and depth on the model grid.
    Definition: snow2mdl.F90:824
    +
    integer inesdis
    i-dimension of nesdis grid
    Definition: snowdat.F90:42
    +
    integer imdl
    i-dimension of model grid
    Definition: model_grid.F90:27
    +
    integer, public grib_day
    date of the final merged snow product that will be placed in grib header.
    +
    integer jautosnow
    j-dimension of autosnow grid
    Definition: snowdat.F90:44
    +
    real, public lat_threshold
    equatorward of this latitude, model points with undefined cover or depth (because the interpolation r...
    +
    logical use_nh_afwa
    True if northern hemisphere afwa data to be used.
    Definition: snowdat.F90:77
    +
    logical use_nesdis
    True if nesdis/ims data to be used.
    Definition: snowdat.F90:81
    +
    logical, public output_grib2
    when true, output model snow analysis is grib 2.
    +
    subroutine write_grib1
    Write grib1 snow cover and depth on the model grid.
    Definition: snow2mdl.F90:1004
    +
    real lon11
    Corner point longitude (1,1) of model grid.
    Definition: model_grid.F90:44
    +
    integer ijmdl
    total number of model land points
    Definition: model_grid.F90:29
    +
    logical use_autosnow
    True if autosnow data to be used.
    Definition: snowdat.F90:80
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_global
    The global afwa data grib bitmap.
    Definition: snowdat.F90:68
    +
    character *200, public model_snow_file
    path/name nesdis/ims snow cover
    +
    integer, dimension(:), allocatable jpts_mdl
    j index of point on full grid
    Definition: model_grid.F90:31
    +
    integer, dimension(200) kgds_mdl
    holds grib gds info of model grid
    Definition: model_grid.F90:33
    +
    integer, public grib_year
    date of the final merged snow product that will be placed in grib header.
    +
    integer jnesdis
    j-dimension of nesdis grid
    Definition: snowdat.F90:45
    +
    real latlast
    Corner point latitude (imdl,jmdl) of model grid.
    Definition: model_grid.F90:43
    +
    integer, dimension(:), allocatable ipts_mdl
    i index of point on full grid
    Definition: model_grid.F90:30
    +
    integer, public grib_hour
    date of the final merged snow product that will be placed in grib header.
    +
    logical bad_afwa_nh
    When true, the northern hemisphere afwa data failed its quality control check.
    Definition: snowdat.F90:60
    +
    integer, dimension(200) kgds_afwa_sh
    grib1 grid description section for southern hemisphere 16th mesh afwa data.
    Definition: snowdat.F90:52
    +
    real autosnow_res
    Resolution of autosnow in km.
    Definition: snowdat.F90:83
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_nh
    The northern hemisphere afwa data grib bitmap.
    Definition: snowdat.F90:70
    +
    real, dimension(:,:), allocatable snow_dep_mdl
    snow depth on model grid in meters
    Definition: snow2mdl.F90:86
    +
    integer grid_id_mdl
    grib id of model grid, 4-gaussian, 203-egrid
    Definition: model_grid.F90:26
    +
    logical use_global_afwa
    True if global hemisphere afwa data to be used.
    Definition: snowdat.F90:79
    +
    real lat11
    Corner point latitude (1,1) of model grid.
    Definition: model_grid.F90:42
    +
    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...
    Definition: model_grid.F90:50
    +
    real, dimension(:,:), allocatable snow_cvr_nesdis
    nesdis/ims snow cover flag (0-no, 100-yes)
    Definition: snowdat.F90:86
    +
    subroutine, public interp
    Interpolate snow data to model grid.
    Definition: snow2mdl.F90:158
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.html b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.html new file mode 100644 index 000000000..9de0e4579 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.html @@ -0,0 +1,265 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/snowdat.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    snowdat.F90 File Reference
    +
    +
    + +

    Read and qc afwa, nesdis/ims and autosnow snow data. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  snowdat
     Read and qc afwa, nesdis/ims and autosnow snow data.
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine snowdat::afwa_check (hemi)
     Check for corrupt afwa data. More...
     
    subroutine snowdat::nh_climo_check (kgds_data, snow_data, bitmap_data, idata, jdata, isrc, bad)
     Check for corrupt nh snow cover data. More...
     
    subroutine snowdat::read_afwa_binary (file_name, snow_dep_afwa)
     Read afwa binary snow depth file. More...
     
    subroutine snowdat::read_afwa_mask (file_name, bitmap_afwa)
     Read afwa land mask file to get a bitmap. More...
     
    subroutine snowdat::readafwa
     Read snow depth data and masks. More...
     
    subroutine snowdat::readautosnow
     Read autosnow snow cover. More...
     
    subroutine snowdat::readnesdis
     Read nesdis/ims snow cover/ice data. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    real snowdat::afwa_res
     Resolution of afwa data in km. More...
     
    real snowdat::autosnow_res
     Resolution of autosnow in km. More...
     
    logical snowdat::bad_afwa_global
     When true, the global afwa data failed its quality control check. More...
     
    logical snowdat::bad_afwa_nh
     When true, the northern hemisphere afwa data failed its quality control check. More...
     
    logical snowdat::bad_afwa_sh
     When true, the southern hemisphere afwa data failed its quality control check. More...
     
    logical snowdat::bad_nesdis
     When true, the nesdis data failed its quality control check. More...
     
    logical *1, dimension(:,:), allocatable snowdat::bitmap_afwa_global
     The global afwa data grib bitmap. More...
     
    logical *1, dimension(:,:), allocatable snowdat::bitmap_afwa_nh
     The northern hemisphere afwa data grib bitmap. More...
     
    logical *1, dimension(:,:), allocatable snowdat::bitmap_afwa_sh
     The southern hemisphere afwa data grib bitmap. More...
     
    logical *1, dimension(:,:), allocatable snowdat::bitmap_autosnow
     autosnow data grib bitmap (false-non land, true-land). More...
     
    logical *1, dimension(:,:), allocatable snowdat::bitmap_nesdis
     nesdis data grib bitmap (false-non land, true-land). More...
     
    integer snowdat::iafwa
     i-dimension of afwa grid More...
     
    integer snowdat::iautosnow
     i-dimension of autosnow grid More...
     
    integer snowdat::inesdis
     i-dimension of nesdis grid More...
     
    integer snowdat::jafwa
     j-dimension of afwa grid More...
     
    integer snowdat::jautosnow
     j-dimension of autosnow grid More...
     
    integer snowdat::jnesdis
     j-dimension of nesdis grid More...
     
    integer, dimension(200) snowdat::kgds_afwa_global
     grib1 grid description section for global afwa data. More...
     
    integer, dimension(200) snowdat::kgds_afwa_nh
     grib1 grid description section for northern hemisphere 16th mesh afwa data. More...
     
    integer, dimension(200) snowdat::kgds_afwa_nh_8th
     grib1 grid description section for northern hemisphere 8th mesh afwa data. More...
     
    integer, dimension(200) snowdat::kgds_afwa_sh
     grib1 grid description section for southern hemisphere 16th mesh afwa data. More...
     
    integer, dimension(200) snowdat::kgds_afwa_sh_8th
     grib1 grid description section for southern hemisphere 8th mesh afwa data. More...
     
    integer, dimension(200) snowdat::kgds_autosnow
     autosnow grid description section (grib section 2) More...
     
    integer, dimension(200) snowdat::kgds_nesdis
     nesdis/ims grid description section (grib section 2) More...
     
    integer snowdat::mesh_nesdis
     nesdis/ims data is 96th mesh (or bediant) More...
     
    real snowdat::nesdis_res
     Resolution of the nesdis data in km. More...
     
    integer *1, dimension(:,:), allocatable snowdat::sea_ice_nesdis
     nesdis/ims sea ice flag (0-open water, 1-ice) More...
     
    real, dimension(:,:), allocatable snowdat::snow_cvr_autosnow
     autosnow snow cover flag (0-no, 100-yes) More...
     
    real, dimension(:,:), allocatable snowdat::snow_cvr_nesdis
     nesdis/ims snow cover flag (0-no, 100-yes) More...
     
    real, dimension(:,:), allocatable snowdat::snow_dep_afwa_global
     The global afwa snow depth. More...
     
    real, dimension(:,:), allocatable snowdat::snow_dep_afwa_nh
     Northern hemisphere afwa snow depth. More...
     
    real, dimension(:,:), allocatable snowdat::snow_dep_afwa_sh
     Southern hemisphere afwa snow depth. More...
     
    logical snowdat::use_autosnow
     True if autosnow data to be used. More...
     
    logical snowdat::use_global_afwa
     True if global hemisphere afwa data to be used. More...
     
    logical snowdat::use_nesdis
     True if nesdis/ims data to be used. More...
     
    logical snowdat::use_nh_afwa
     True if northern hemisphere afwa data to be used. More...
     
    logical snowdat::use_sh_afwa
     True if southern hemisphere afwa data to be used. More...
     
    +

    Detailed Description

    +

    Read and qc afwa, nesdis/ims and autosnow snow data.

    +
    Author
    gayno org: w/np2
    +
    Date
    2005-dec-16
    + +

    Definition in file snowdat.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.js b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.js new file mode 100644 index 000000000..0dc750eed --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90.js @@ -0,0 +1,47 @@ +var snowdat_8F90 = +[ + [ "afwa_check", "snowdat_8F90.html#a5989c5b503107e9d2ddbc11464da3486", null ], + [ "nh_climo_check", "snowdat_8F90.html#a7416d184ef54d3c2b08079d17b00e7b0", null ], + [ "read_afwa_binary", "snowdat_8F90.html#a097b7b0377daf37b721b0c871762e24d", null ], + [ "read_afwa_mask", "snowdat_8F90.html#a328b01fb9013c27f0093d416f21ab47e", null ], + [ "readafwa", "snowdat_8F90.html#a765361a273d72b796f5e26d893c62692", null ], + [ "readautosnow", "snowdat_8F90.html#acf36a58a332f88be6c9441d8d9578739", null ], + [ "readnesdis", "snowdat_8F90.html#ac2696666ba15fbfd0914e3d5762e7612", null ], + [ "afwa_res", "snowdat_8F90.html#a541d870ef9a1451bfa35cf7866f8ac1f", null ], + [ "autosnow_res", "snowdat_8F90.html#a15e87b99bc4cbdc53cb072e3a3bd331a", null ], + [ "bad_afwa_global", "snowdat_8F90.html#a747d3d3b14bcac725cfb2aa2dbfe3417", null ], + [ "bad_afwa_nh", "snowdat_8F90.html#af73698fbe9b41266ff729a5dcbc65c09", null ], + [ "bad_afwa_sh", "snowdat_8F90.html#a34cf76f6091cd24484ccba0f318b8929", null ], + [ "bad_nesdis", "snowdat_8F90.html#a19a23d63b720bcdea4c7fed701d55bd6", null ], + [ "bitmap_afwa_global", "snowdat_8F90.html#a3f366f2ac38bd2f8692e55cfebf27c94", null ], + [ "bitmap_afwa_nh", "snowdat_8F90.html#a2cb75b458a4b59bba1a5fa9b00f4ef63", null ], + [ "bitmap_afwa_sh", "snowdat_8F90.html#a270cacef11d12e6f7030455d81ec93c8", null ], + [ "bitmap_autosnow", "snowdat_8F90.html#a82a031a6a0b41b8754b6a93733ad468d", null ], + [ "bitmap_nesdis", "snowdat_8F90.html#a4524fabd19ec12cb48a1ec96aa6f3eb2", null ], + [ "iafwa", "snowdat_8F90.html#a139434d1d2a091a5b6160be5e626c2e8", null ], + [ "iautosnow", "snowdat_8F90.html#a4c1ef57fdae2891ef13ab3a79bfbcd9f", null ], + [ "inesdis", "snowdat_8F90.html#a93dd33112d7c5becc03e525711f1a2cc", null ], + [ "jafwa", "snowdat_8F90.html#a47a9733356f7be8cfef4e8c6cf6028cc", null ], + [ "jautosnow", "snowdat_8F90.html#a84daadd2e083c04989005b6f151c48fc", null ], + [ "jnesdis", "snowdat_8F90.html#a258a35915d54a844fceceaf3035947e2", null ], + [ "kgds_afwa_global", "snowdat_8F90.html#ab654724ca678b4fe5c1c2e90cfd086e7", null ], + [ "kgds_afwa_nh", "snowdat_8F90.html#aad4bc2cf308c3fa995f2a77120f84108", null ], + [ "kgds_afwa_nh_8th", "snowdat_8F90.html#a28190bdcab2c27e05125f6deffb77d27", null ], + [ "kgds_afwa_sh", "snowdat_8F90.html#a690b903f8572e89fe533d9d498aecb35", null ], + [ "kgds_afwa_sh_8th", "snowdat_8F90.html#a4d8fbd4197e5f87576a308975dfac064", null ], + [ "kgds_autosnow", "snowdat_8F90.html#aac65115a503d5c047f1d97b821d388ad", null ], + [ "kgds_nesdis", "snowdat_8F90.html#ab4589887cd4392698dc5b2ac867fcd35", null ], + [ "mesh_nesdis", "snowdat_8F90.html#a2e8784c184364cd9ce546098be2bfef2", null ], + [ "nesdis_res", "snowdat_8F90.html#a68e975bcc076abd22b677be24e76901c", null ], + [ "sea_ice_nesdis", "snowdat_8F90.html#a734f1e4cef57304c9c259ac43da45e6f", null ], + [ "snow_cvr_autosnow", "snowdat_8F90.html#abbbfd531788f2c4a1f8f7ef1bdc67971", null ], + [ "snow_cvr_nesdis", "snowdat_8F90.html#aa03524cbcbfdeeaeb75cf47b625541ff", null ], + [ "snow_dep_afwa_global", "snowdat_8F90.html#ad7b9c6748bbeaa6cb42cd5352e0fc213", null ], + [ "snow_dep_afwa_nh", "snowdat_8F90.html#a4488bd389568885ac5bfbfe08e0e29ff", null ], + [ "snow_dep_afwa_sh", "snowdat_8F90.html#a722fde057a02ea62fcf043b4cf96763f", null ], + [ "use_autosnow", "snowdat_8F90.html#a4542a02189915fdbc34dbdcee61713f3", null ], + [ "use_global_afwa", "snowdat_8F90.html#a4e2a3099dbab138ae88f2c5a94960663", null ], + [ "use_nesdis", "snowdat_8F90.html#a371b3da7476473d63035c9590742e684", null ], + [ "use_nh_afwa", "snowdat_8F90.html#aef65f01ca401ebeeea3b216045645ba7", null ], + [ "use_sh_afwa", "snowdat_8F90.html#a4d1f41f0b9cb05a7ee9208464549d7cb", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90_source.html b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90_source.html new file mode 100644 index 000000000..66c1724c7 --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/snowdat_8F90_source.html @@ -0,0 +1,171 @@ + + + + + + + +emcsfc_snow2mdl: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/emcsfc_snow2mdl.fd/snowdat.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    emcsfc_snow2mdl +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    snowdat.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    26  module snowdat
    27 
    28  use program_setup, only : autosnow_file, &
    36 
    37  use model_grid, only : imdl, &
    38  jmdl
    39 
    40  integer :: iafwa
    41  integer :: iautosnow
    42  integer :: inesdis
    43  integer :: jafwa
    44  integer :: jautosnow
    45  integer :: jnesdis
    46  integer :: kgds_afwa_global(200)
    48  integer :: kgds_afwa_nh(200)
    50  integer :: kgds_afwa_nh_8th(200)
    52  integer :: kgds_afwa_sh(200)
    54  integer :: kgds_afwa_sh_8th(200)
    56  integer :: kgds_autosnow(200)
    57  integer :: kgds_nesdis(200)
    58  integer :: mesh_nesdis
    59  integer*1, allocatable :: sea_ice_nesdis(:,:)
    60  logical :: bad_afwa_nh
    62  logical :: bad_afwa_sh
    64  logical :: bad_nesdis
    66  logical :: bad_afwa_global
    68  logical*1, allocatable :: bitmap_afwa_global(:,:)
    70  logical*1, allocatable :: bitmap_afwa_nh(:,:)
    72  logical*1, allocatable :: bitmap_afwa_sh(:,:)
    74  logical*1, allocatable :: bitmap_nesdis(:,:)
    75  logical*1, allocatable :: bitmap_autosnow(:,:)
    77  logical :: use_nh_afwa
    78  logical :: use_sh_afwa
    79  logical :: use_global_afwa
    80  logical :: use_autosnow
    81  logical :: use_nesdis
    82 
    83  real :: autosnow_res
    84  real :: afwa_res
    85  real :: nesdis_res
    86  real, allocatable :: snow_cvr_nesdis(:,:)
    87  real, allocatable :: snow_cvr_autosnow(:,:)
    88  real, allocatable :: snow_dep_afwa_global(:,:)
    89  real, allocatable :: snow_dep_afwa_nh(:,:)
    90  real, allocatable :: snow_dep_afwa_sh(:,:)
    91 
    92 ! the afwa 8th mesh binary data has no grib header, so set it from these
    93 ! data statements. needed for ipolates routines.
    94 
    95  data kgds_afwa_nh_8th/5,2*512,-20826,145000,8,-80000,2*47625,0, &
    96  9*0,255,180*0/
    97  data kgds_afwa_sh_8th/5,2*512,20826,-125000,8,-80000,2*47625,128, &
    98  9*0,255,180*0/
    99  contains
    117  subroutine readautosnow
    118  use grib_mod ! grib 2 libraries
    119 
    120  implicit none
    121 
    122  type(gribfield) :: gfld
    123 
    124  integer :: iret, j, k, lugb, lugi
    125  integer :: jdisc, jgdtn, jpdtn
    126  integer :: jids(200), jgdt(200), jpdt(200)
    127 
    128  logical :: unpack
    129 
    130  use_autosnow = .true.
    131 
    132  if ( len_trim(autosnow_file) == 0 ) then
    133  print*,"- WILL NOT USE AUTOSNOW DATA."
    134  use_autosnow = .false.
    135  return
    136  end if
    137 
    138  print*,"- OPEN AND READ AUTOSNOW FILE ", trim(autosnow_file)
    139 
    140  lugb=12
    141  call baopenr(lugb,autosnow_file,iret)
    142 
    143  if (iret /= 0) then
    144  print*,'- FATAL ERROR: BAD OPEN OF FILE, IRET IS ', iret
    145  call w3tage('SNOW2MDL')
    146  call errexit(74)
    147  endif
    148 
    149  call grib2_null(gfld)
    150 
    151  j = 0 ! search at beginning of file
    152  lugi = 0 ! no grib index file
    153  jdisc = 0 ! search for discipline; 0 - meteorological products
    154  jpdtn = 30 ! search for product definition template number; 30 - satellite product
    155  jgdtn = 0 ! search for grid definition template number; 0 - lat/lon grid
    156  jids = -9999 ! array of values in identification section, set to wildcard
    157  jgdt = -9999 ! array of values in grid definiation template 3.m
    158  jpdt = -9999 ! array of values in product definition template 4.n
    159  jpdt(1) = 1 ! search for parameter category - moisture
    160  jpdt(2) = 42 ! search for parameter number - snow cover in percent.
    161  unpack = .true. ! unpack data
    162 
    163  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    164  unpack, k, gfld, iret)
    165 
    166  if (iret /=0) then
    167  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    168  call w3tage('SNOW2MDL')
    169  call errexit(75)
    170  endif
    171 
    172  print*,"- DATA VALID AT (YYYYMMDDHH): ", gfld%idsect(6),gfld%idsect(7), &
    173  gfld%idsect(8),gfld%idsect(9)
    174 
    175  call baclose (lugb, iret)
    176 
    177 !-----------------------------------------------------------------------
    178 ! set the grib1 kgds array from the g2 grid definition template array.
    179 ! the kgds array is used by ipolates.
    180 !-----------------------------------------------------------------------
    181 
    182  call gdt_to_gds(gfld%igdtnum, gfld%igdtmpl, gfld%igdtlen, kgds_autosnow, &
    184 
    186  bitmap_autosnow = reshape(gfld%bmap , (/iautosnow,jautosnow/) )
    187 
    189  snow_cvr_autosnow = reshape(gfld%fld , (/iautosnow,jautosnow/) )
    190 
    191  call grib2_free(gfld)
    192 
    193  end subroutine readautosnow
    194 
    222  subroutine readnesdis
    223  use grib_mod
    224 
    225  implicit none
    226 
    227  integer, parameter :: iunit = 13 ! input grib file unit number
    228  integer, parameter :: iunit2 = 43 ! input landmask file unit number
    229 
    230  integer*4, allocatable :: dummy4(:,:)
    231  integer :: i, j
    232  integer :: iret
    233  integer :: jgds(200)
    234  integer :: jpds(200)
    235  integer :: lskip
    236  integer, parameter :: lugi = 0 ! grib index file unit number - not used
    237  integer :: jdisc, jgdtn, jpdtn, k
    238  integer :: jids(200), jgdt(200), jpdt(200)
    239  integer :: kgds(200)
    240  integer :: kpds(200)
    241  integer :: message_num
    242  integer :: numbytes
    243  integer :: numpts
    244  integer :: isgrib
    245 
    246  logical :: unpack
    247 
    248  real, allocatable :: dummy(:,:)
    249  real :: dum
    250 
    251  type(gribfield) :: gfld
    252 
    253  use_nesdis = .true.
    254 
    255  if ( len_trim(nesdis_snow_file) == 0 ) then
    256  print*,"- WILL NOT USE NESDIS/IMS DATA."
    257  use_nesdis = .false.
    258  return
    259  end if
    260 
    261  print*,"- OPEN AND READ NESDIS/IMS SNOW FILE ", trim(nesdis_snow_file)
    262 
    263  call grib_check(nesdis_snow_file, isgrib)
    264 
    265  if (isgrib==0) then
    266  print*,'- FATAL ERROR: IMS FILE MUST BE GRIB 1 OR GRIB2 FORMAT'
    267  call w3tage('SNOW2MDL')
    268  call errexit(41)
    269  end if
    270 
    271  call baopenr (iunit, nesdis_snow_file, iret)
    272 
    273  if (iret /= 0) then
    274  print*,'- FATAL ERROR: BAD OPEN OF FILE, IRET IS ', iret
    275  call w3tage('SNOW2MDL')
    276  call errexit(73)
    277  end if
    278 
    279  if (isgrib==1) then ! grib 1 format
    280 
    281 !-----------------------------------------------------------------------
    282 ! tell degribber to look for requested data.
    283 !-----------------------------------------------------------------------
    284 
    285  lskip = -1
    286  jpds = -1
    287  jgds = -1
    288  jpds(5) = 91 ! ice cover
    289  kpds = jpds
    290  kgds = jgds
    291 
    292  print*,"- GET GRIB HEADER"
    293 
    294  call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
    295  numpts, message_num, kpds, kgds, iret)
    296 
    297  if (iret /= 0) then
    298  print*,"- FATAL ERROR: BAD DEGRIB OF HEADER. IRET IS ", iret
    299  call w3tage('SNOW2MDL')
    300  call errexit(72)
    301  end if
    302 
    303  kgds_nesdis = kgds
    304  inesdis = kgds(2)
    305  jnesdis = kgds(3)
    306 
    307  mesh_nesdis = inesdis / 64
    308  nesdis_res = 381. / float(mesh_nesdis) ! in km
    309 
    310  print*,"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
    311 
    312  allocate (dummy(inesdis,jnesdis))
    313  allocate (sea_ice_nesdis(inesdis,jnesdis))
    314  allocate (bitmap_nesdis(inesdis,jnesdis))
    315 
    316  print*,"- DEGRIB SEA ICE."
    317 
    318  call getgb(iunit, lugi, (inesdis*jnesdis), lskip, jpds, jgds, &
    319  numpts, lskip, kpds, kgds, bitmap_nesdis, dummy, iret)
    320 
    321  if (iret /= 0) then
    322  print*,"- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ", iret
    323  call w3tage('SNOW2MDL')
    324  call errexit(71)
    325  end if
    326 
    327  sea_ice_nesdis = nint(dummy) ! only needed as yes/no flag
    328  deallocate (dummy)
    329 
    330  lskip = -1
    331  jpds = -1
    332  jgds = -1
    333  jpds(5) = 238 ! snow cover
    334  kpds = jpds
    335  kgds = jgds
    336 
    337  allocate (snow_cvr_nesdis(inesdis,jnesdis))
    338 
    339  print*,"- DEGRIB SNOW COVER."
    340 
    341  call getgb(iunit, lugi, (inesdis*jnesdis), lskip, jpds, jgds, &
    342  numpts, lskip, kpds, kgds, bitmap_nesdis, snow_cvr_nesdis, iret)
    343 
    344  if (iret /= 0) then
    345  print*,"- FATAL ERROR: BAD DEGRIB OF DATA. IRET IS ", iret
    346  call w3tage('SNOW2MDL')
    347  call errexit(70)
    348  end if
    349 
    350  elseif (isgrib==2) then ! grib 2 format
    351 
    352  print*,"- DEGRIB SNOW COVER."
    353 
    354  j = 0 ! search at beginning of file
    355  jdisc = 0 ! search for discipline; 0 - meteorological products
    356  jpdtn = 0 ! search for product definition template number; 0 - analysis at one level
    357  jgdtn = 20 ! search for grid definition template number; 20 - polar stereographic grid
    358  jids = -9999 ! array of values in identification section, set to wildcard
    359  jgdt = -9999 ! array of values in grid definition template 3.m
    360  jpdt = -9999 ! array of values in product definition template 4.n
    361  jpdt(1) = 1 ! search for parameter category - moisture
    362  jpdt(2) = 201 ! search for parameter number - snow cover in percent.
    363  unpack = .true. ! unpack data
    364 
    365  call grib2_null(gfld)
    366 
    367  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    368  unpack, k, gfld, iret)
    369 
    370  if (iret /=0) then
    371  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    372  call w3tage('SNOW2MDL')
    373  call errexit(70)
    374  endif
    375 
    376  print*,"- DATA VALID AT (YYYYMMDDHH): ", gfld%idsect(6),gfld%idsect(7), &
    377  gfld%idsect(8),gfld%idsect(9)
    378 
    379 !-----------------------------------------------------------------------
    380 ! set the grib1 kgds array from the g2 grid definition template array.
    381 ! the kgds array is used by ipolates.
    382 !-----------------------------------------------------------------------
    383 
    384  call gdt_to_gds(gfld%igdtnum, gfld%igdtmpl, gfld%igdtlen, kgds_nesdis, &
    385  inesdis, jnesdis, dum)
    386 
    387  mesh_nesdis = inesdis / 64
    388  nesdis_res = 381. / float(mesh_nesdis) ! in km
    389 
    390  if (mesh_nesdis==16) kgds_nesdis(6)=136 ! the ims 16th mesh grib2 data
    391  ! is gribbed with an elliptical
    392  ! earth. that is wrong. hardwire
    393  ! a fix here.
    394 
    395  allocate (snow_cvr_nesdis(inesdis,jnesdis))
    396  allocate (sea_ice_nesdis(inesdis,jnesdis))
    397  allocate (bitmap_nesdis(inesdis,jnesdis))
    398 
    399  bitmap_nesdis = reshape(gfld%bmap , (/inesdis,jnesdis/) )
    400  snow_cvr_nesdis = reshape(gfld%fld , (/inesdis,jnesdis/) )
    401 
    402  call grib2_free(gfld)
    403 
    404  print*,"- DEGRIB SEA ICE."
    405 
    406  j = 0 ! search at beginning of file
    407  jdisc = 10 ! search for discipline; 10 - ocean products
    408  jpdtn = 0 ! search for product definition template number; 0 - analysis at one level
    409  jgdtn = 20 ! search for grid definition template number; 20 - polar stereographic grid
    410  jids = -9999 ! array of values in identification section, set to wildcard
    411  jgdt = -9999 ! array of values in grid definition template 3.m
    412  jpdt = -9999 ! array of values in product definition template 4.n
    413  jpdt(1) = 2 ! search for parameter category - ice
    414  jpdt(2) = 0 ! search for parameter number - ice cover in percent.
    415  unpack = .true. ! unpack data
    416 
    417  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    418  unpack, k, gfld, iret)
    419 
    420  if (iret /=0) then
    421  print*,'- FATAL ERROR: BAD DEGRIB OF FILE, IRET IS ', iret
    422  call w3tage('SNOW2MDL')
    423  call errexit(71)
    424  endif
    425 
    426  sea_ice_nesdis = reshape(gfld%fld , (/inesdis,jnesdis/) )
    427 
    428  call grib2_free(gfld)
    429 
    430  end if
    431 
    432  call baclose(iunit,iret)
    433 
    434 !-----------------------------------------------------------------------
    435 ! the 16th mesh nesdis/ims grib data does not have a proper
    436 ! bitmap section. therefore, need to read in the mask
    437 ! from file. but the 96th mesh data has a proper bitmap, so use it.
    438 !-----------------------------------------------------------------------
    439 
    440  if (mesh_nesdis == 16) then
    441 
    442  print*,"- OPEN NESDIS/IMS 16TH MESH LAND MASK: ", trim(nesdis_lsmask_file)
    443 
    444  open(iunit2, file=trim(nesdis_lsmask_file), form="formatted", &
    445  iostat = iret)
    446 
    447  if (iret /= 0) then
    448  print*,"- FATAL ERROR OPENING NESDIS/IMS LAND MASK FILE. ISTAT IS: ", iret
    449  call errexit(87)
    450  end if
    451 
    452  print*,"- READ NESDIS/IMS 16TH MESH LAND MASK."
    453 
    454  allocate (dummy4(inesdis,jnesdis))
    455 
    456  do j = 1, 1024
    457  read(iunit2, 123, iostat=iret) (dummy4(i,j),i=1,1024)
    458  if (iret /= 0) then
    459  print*,"- FATAL ERROR READING NESDIS/IMS LAND MASK FILE. ISTAT IS: ", iret
    460  call errexit(88)
    461  end if
    462  enddo
    463 
    464  close (iunit2)
    465 
    466 !-----------------------------------------------------------------------
    467 ! the file has 0-sea, 1-land, 9-off hemi. this code expects
    468 ! 0-non-land (or don't use data), 1-land (use data).
    469 !-----------------------------------------------------------------------
    470 
    471  bitmap_nesdis=.false.
    472  do j = 1, 1024
    473  do i = 1, 1024
    474  if (dummy4(i,j) == 1) bitmap_nesdis(i,j) = .true.
    475  enddo
    476  enddo
    477 
    478  deallocate(dummy4)
    479 
    480 123 FORMAT(80i1)
    481 
    482  endif ! is nesdis/ims data 16th mesh?
    483 
    484  bad_nesdis=.false.
    486 
    487 !-----------------------------------------------------------------------
    488 ! for the 2009 nmm-b implementation, it was decided to not run with
    489 ! afwa only. so even if afwa data is current and not corrupt,
    490 ! but the ims is bad, then abort program. exception, if ims is very old
    491 ! (there is a catastropic outage) then program will run with afwa
    492 ! only. this is done by setting the nesdis_snow_file variable to
    493 ! a zero length string (i.e., ims data not selected). this variable
    494 ! setting is accomplished in the run script.
    495 !-----------------------------------------------------------------------
    496 
    497  if (bad_nesdis) then
    498  print*,'- FATAL ERROR: NESDIS/IMS DATA BAD, DO NOT USE.'
    499  print*,'- DONT RUN PROGRAM.'
    500  use_nesdis=.false.
    501  call w3tage('SNOW2MDL')
    502  call errexit(53)
    503  stop
    504  endif
    505 
    506  return
    507 
    508  end subroutine readnesdis
    509 
    531  subroutine readafwa
    532  use grib_mod
    533 
    534  implicit none
    535 
    536  integer, parameter :: iunit=17
    537  integer :: jgds(200), jpds(200), kgds(200), kpds(200)
    538  integer :: istat, isgrib
    539  integer :: lugi, lskip, numbytes, numpts, message_num
    540  integer :: j, k, jdisc, jpdtn, jgdtn
    541  integer :: jpdt(200), jgdt(200), jids(200)
    542 
    543  logical :: unpack
    544 
    545  type(gribfield) :: gfld
    546 
    547  bad_afwa_nh=.false.
    548  bad_afwa_sh=.false.
    549  bad_afwa_global=.false.
    550 
    551  use_global_afwa=.true.
    552  use_nh_afwa = .true.
    553  use_sh_afwa = .true.
    554 
    555  if (len_trim(afwa_snow_nh_file) == 0 .and. &
    556  len_trim(afwa_snow_sh_file) == 0 .and. &
    557  len_trim(afwa_snow_global_file) == 0) then
    558  print*,"- WILL NOT USE AFWA DATA."
    559  use_nh_afwa = .false.
    560  use_sh_afwa = .false.
    561  use_global_afwa = .false.
    562  return
    563  end if
    564 
    565 !-----------------------------------------------------------------------
    566 ! If chosen, read global AFWA GRIB2 file.
    567 !-----------------------------------------------------------------------
    568 
    569  if ( len_trim(afwa_snow_global_file) > 0 ) then
    570 
    571  print*,"- OPEN AND READ global AFWA SNOW FILE ", trim(afwa_snow_global_file)
    572  call baopenr (iunit, afwa_snow_global_file, istat)
    573  if (istat /= 0) then
    574  print*,'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
    575  call w3tage('SNOW2MDL')
    576  call errexit(60)
    577  end if
    578 
    579  call grib2_null(gfld)
    580 
    581  jdisc = 0 ! Search for discipline; 0 - meteorological products
    582  j = 0 ! Search at beginning of file.
    583  lugi = 0 ! No grib index file.
    584  jids = -9999 ! Identification section, set to wildcard.
    585  jgdt = -9999 ! Grid definition template, set to wildcard.
    586  jgdtn = -1 ! Grid definition template number, set to wildcard.
    587  jpdtn = 0 ! Search for product definition template number 0 - analysis or forecast
    588  jpdt = -9999 ! Product definition template (Sec 4), initialize to wildcard.
    589  jpdt(1) = 1 ! Search for parameter category 1 (Sec 4 oct 10) -
    590  ! moisture.
    591  jpdt(2) = 11 ! Search for parameter 11 (Sec 4 oct 11) - snow depth.
    592  unpack = .true. ! Unpack data.
    593 
    594  call getgb2(iunit, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    595  unpack, k, gfld, istat)
    596 
    597  if (istat /= 0) then
    598  print*,"- FATAL ERROR: BAD DEGRIB OF GLOBAL DATA. ISTAT IS ", istat
    599  call w3tage('SNOW2MDL')
    600  call errexit(61)
    601  end if
    602 
    603  print*,"- DATA VALID AT (YYMMDDHH): ", gfld%idsect(6:9)
    604  print*,"- DEGRIB SNOW DEPTH."
    605 
    606  call gdt_to_gds(gfld%igdtnum, gfld%igdtmpl, gfld%igdtlen, kgds_afwa_global, &
    607  iafwa, jafwa, afwa_res)
    608 
    609  allocate(bitmap_afwa_global(iafwa,jafwa))
    610  allocate(snow_dep_afwa_global(iafwa,jafwa))
    611 
    612  snow_dep_afwa_global = reshape(gfld%fld, (/iafwa,jafwa/))
    613  bitmap_afwa_global = reshape(gfld%bmap, (/iafwa,jafwa/))
    614 
    615  call baclose(iunit, istat)
    616 
    618 
    619  if (bad_afwa_global) then
    620  print*,'- WARNING: AFWA DATA BAD, DO NOT USE.'
    621  use_global_afwa = .false.
    622  endif
    623 
    624  use_nh_afwa=.false. ! Use global or hemispheric files. not both.
    625  use_sh_afwa=.false.
    626 
    627  return ! Use global or hemispheric files. not both.
    628 
    629  else
    630 
    631  use_global_afwa=.false.
    632 
    633  endif
    634 
    635  if ( len_trim(afwa_snow_nh_file) > 0 ) then ! afwa nh data selected
    636 
    637  call grib_check(afwa_snow_nh_file, isgrib)
    638 
    639  if (isgrib==0) then ! old ncep binary format
    640 
    641  iafwa = 512
    642  jafwa = 512
    643  afwa_res = 47.625 ! in kilometers
    645 
    646  allocate (snow_dep_afwa_nh(iafwa,jafwa))
    648 
    649  allocate (bitmap_afwa_nh(iafwa,jafwa))
    651 
    652  else ! afwa data is grib
    653 
    654  print*,"- OPEN AND READ AFWA SNOW FILE ", trim(afwa_snow_nh_file)
    655 
    656  call baopenr (iunit, afwa_snow_nh_file, istat)
    657 
    658  if (istat /= 0) then
    659  print*,'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
    660  call w3tage('SNOW2MDL')
    661  call errexit(60)
    662  end if
    663 
    664 !-----------------------------------------------------------------------
    665 ! tell degribber to look for requested data.
    666 !-----------------------------------------------------------------------
    667 
    668  lugi = 0
    669  lskip = -1
    670  jpds = -1
    671  jgds = -1
    672  jpds(5) = 66 ! snow depth
    673  kpds = jpds
    674  kgds = jgds
    675 
    676  print*,"- GET GRIB HEADER"
    677  call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
    678  numpts, message_num, kpds, kgds, istat)
    679 
    680  if (istat /= 0) then
    681  print*,"- FATAL ERROR: BAD DEGRIB OF HEADER. ISTAT IS ", istat
    682  call w3tage('SNOW2MDL')
    683  call errexit(61)
    684  end if
    685 
    686  iafwa = kgds(2)
    687  jafwa = kgds(3)
    688  afwa_res = float(kgds(8))*0.001 ! in km.
    689 
    690  print*,"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
    691 
    692  print*,"- DEGRIB SNOW DEPTH."
    693 
    694  allocate(bitmap_afwa_nh(iafwa,jafwa))
    695  allocate(snow_dep_afwa_nh(iafwa,jafwa))
    696 
    697  call getgb(iunit, lugi, (iafwa*jafwa), lskip, jpds, jgds, &
    698  numpts, lskip, kpds, kgds, bitmap_afwa_nh, snow_dep_afwa_nh, istat)
    699 
    700  if (istat /= 0) then
    701  print*,"- FATAL ERROR: BAD DEGRIB OF DATA. ISTAT IS ", istat
    702  call w3tage('SNOW2MDL')
    703  call errexit(61)
    704  end if
    705 
    706  kgds_afwa_nh = kgds
    707 
    708  kgds_afwa_nh(7) = -80000 ! ipolates definition of orientation angle is
    709  ! 180 degrees off from grib standard.
    710 
    711  call baclose(iunit, istat)
    712 
    713  endif ! is nh afwa data grib?
    714 
    716 
    717  else
    718 
    719  use_nh_afwa=.false.
    720 
    721  endif
    722 
    723 !-----------------------------------------------------------------------
    724 ! now, read southern hemisphere data.
    725 !-----------------------------------------------------------------------
    726 
    727  if ( len_trim(afwa_snow_sh_file) > 0 ) then
    728 
    729  call grib_check(afwa_snow_sh_file, isgrib)
    730 
    731  if (isgrib==0) then ! old ncep binary format
    732 
    733  iafwa = 512
    734  jafwa = 512
    735  afwa_res = 47.625
    737 
    738  allocate (snow_dep_afwa_sh(iafwa,jafwa))
    740 
    741  allocate (bitmap_afwa_sh(iafwa,jafwa))
    743 
    744  else ! sh afwa data is grib
    745 
    746  print*,"- OPEN AND READ AFWA SNOW FILE ", trim(afwa_snow_sh_file)
    747 
    748  call baopenr (iunit, afwa_snow_sh_file, istat)
    749 
    750  if (istat /= 0) then
    751  print*,'- FATAL ERROR: BAD OPEN OF FILE, ISTAT IS ', istat
    752  call w3tage('SNOW2MDL')
    753  call errexit(60)
    754  end if
    755 
    756 !-----------------------------------------------------------------------
    757 ! tell degribber to look for requested data.
    758 !-----------------------------------------------------------------------
    759 
    760  lugi = 0
    761  lskip = -1
    762  jpds = -1
    763  jgds = -1
    764  jpds(5) = 66 ! snow cover
    765  kpds = jpds
    766  kgds = jgds
    767 
    768  print*,"- GET GRIB HEADER"
    769  call getgbh(iunit, lugi, lskip, jpds, jgds, numbytes, &
    770  numpts, message_num, kpds, kgds, istat)
    771 
    772  if (istat /= 0) then
    773  print*,"- FATAL ERROR: BAD DEGRIB OF HEADER. ISTAT IS ", istat
    774  call w3tage('SNOW2MDL')
    775  call errexit(61)
    776  end if
    777 
    778  iafwa = kgds(2)
    779  jafwa = kgds(3)
    780  afwa_res = float(kgds(8))*0.001 ! in km.
    781 
    782  print*,"- DATA VALID AT (YYMMDDHH): ", kpds(8:11)
    783 
    784  print*,"- DEGRIB SNOW DEPTH."
    785 
    786  allocate(bitmap_afwa_sh(iafwa,jafwa))
    787  allocate(snow_dep_afwa_sh(iafwa,jafwa))
    788 
    789  call getgb(iunit, lugi, (iafwa*jafwa), lskip, jpds, jgds, &
    790  numpts, lskip, kpds, kgds, bitmap_afwa_sh, snow_dep_afwa_sh, istat)
    791 
    792  if (istat /= 0) then
    793  print*,"- FATAL ERROR: BAD DEGRIB OF DATA. ISTAT IS ", istat
    794  call w3tage('SNOW2MDL')
    795  call errexit(61)
    796  end if
    797 
    798  kgds_afwa_sh = kgds
    799 
    800  kgds_afwa_sh(7) = -80000 ! ipolates definition of orientation angle is
    801  ! 180 degrees off from grib standard.
    802 
    803  call baclose(iunit, istat)
    804 
    805  endif ! is sh afwa data grib or not?
    806 
    807  call afwa_check(2)
    808 
    809  else
    810 
    811  use_sh_afwa = .false.
    812 
    813  endif
    814 
    815 !-------------------------------------------------------------------
    816 !if either hemisphere is bad, don't trust all hemispheres
    817 !-------------------------------------------------------------------
    818 
    819  if (bad_afwa_nh .or. bad_afwa_sh) then
    820  print*,'- WARNING: AFWA DATA BAD, DO NOT USE.'
    821  use_nh_afwa = .false.
    822  use_sh_afwa = .false.
    823  endif
    824 
    825  return
    826 
    827  end subroutine readafwa
    828 
    854  subroutine nh_climo_check(kgds_data,snow_data,bitmap_data,idata,jdata,isrc,bad)
    855  use gdswzd_mod
    856 
    857  use program_setup, only : climo_qc_file, &
    860 
    861  use grib_mod ! for grib2 library
    862 
    863  implicit none
    864 
    865 ! describes the climo data grid.
    866  integer, parameter :: iclim = 1080
    867  integer, parameter :: jclim = 270
    868  real, parameter :: lat11_clim = 90.0
    869  real, parameter :: lon11_clim = -180.0
    870  real, parameter :: dx_clim = 1./3.
    871  real, parameter :: dy_clim = 1./3.
    872 
    873  integer, intent(in) :: idata, jdata, kgds_data(200), isrc
    874  logical*1, intent(in) :: bitmap_data(idata,jdata)
    875  logical, intent(out) :: bad
    876  real, intent(in) :: snow_data(idata,jdata)
    877 
    878 ! local variables
    879  integer :: idat(8), jdow, jdoy, jday
    880  integer :: century, year, week, iret, lugb, i, j, ii, jj
    881  integer :: lugi, jdisc, jpdtn, jgdtn, k, nret
    882  integer :: jids(200), jgdt(200), jpdt(200)
    883  integer :: count_nosnow_climo, count_nosnow_data
    884  integer :: count_snow_climo, count_snow_data, count_grosschk_data
    885 
    886  logical*1, allocatable :: bitmap_clim(:,:)
    887  logical :: unpack
    888 
    889  real, allocatable :: climo(:,:)
    890  real :: fill, percent, x, y
    891  real, allocatable :: xpts(:,:),ypts(:,:),rlon_data(:,:),rlat_data(:,:)
    892  real :: thresh_gross, thresh
    893 
    894  type(gribfield) :: gfld
    895 
    896  bad=.false.
    897  if (len_trim(climo_qc_file)==0) return
    898 
    899  print*,"- QC SNOW DATA IN NH."
    900 
    901  if (isrc==1) then
    902  thresh_gross=50.0 ! afwa data is depth in meters
    903  elseif (isrc==2) then
    904  thresh_gross=100.0 ! nesdis/ims data is coverage in percent
    905  endif
    906 
    907  fill=999.
    908  allocate(xpts(idata,jdata))
    909  allocate(ypts(idata,jdata))
    910  allocate(rlon_data(idata,jdata))
    911  allocate(rlat_data(idata,jdata))
    912  do j=1,jdata
    913  do i=1,idata
    914  xpts(i,j)=i
    915  ypts(i,j)=j
    916  enddo
    917  enddo
    918 
    919  print*,"- CALC LAT/LONS OF SOURCE POINTS."
    920  call gdswzd(kgds_data,1,(idata*jdata),fill,xpts,ypts,rlon_data,rlat_data,nret)
    921 
    922  deallocate(xpts,ypts)
    923 
    924  if (nret /= (idata*jdata)) then
    925  print*,"- WARNING: CALC FAILED. WILL NOT PERFORM QC."
    926  deallocate (rlon_data,rlat_data)
    927  return
    928  endif
    929 
    930  count_grosschk_data=0
    931  do j=1,jdata
    932  do i=1,idata
    933  if (rlat_data(i,j)>0.0 .and. bitmap_data(i,j)) then
    934  if (snow_data(i,j) < 0.0 .or. snow_data(i,j) > thresh_gross) then
    935  count_grosschk_data=count_grosschk_data+1
    936  endif
    937  endif
    938  enddo
    939  enddo
    940 
    941  if (count_grosschk_data > 1) then
    942  print*,'- NUMBER OF DATA POINTS THAT FAIL GROSS CHECK ',count_grosschk_data
    943  deallocate (rlon_data,rlat_data)
    944  bad=.true.
    945  return
    946  endif
    947 
    948  print*,"- QC DATA SOURCE AGAINST CLIMO."
    949  print*,"- OPEN CLIMO SNOW COVER FILE ",trim(climo_qc_file)
    950  lugb=11
    951  call baopenr(lugb,climo_qc_file,iret)
    952 
    953  if (iret /= 0) then
    954  print*,"- WARNING: BAD OPEN, WILL NOT PERFORM QC ", iret
    955  deallocate (rlon_data,rlat_data)
    956  return
    957  endif
    958 
    959 !---------------------------------------------------------------
    960 ! climo file is weekly. so calculate the current week
    961 ! then read that record from the climo file.
    962 !---------------------------------------------------------------
    963 
    964  if (grib_year == 100) then
    965  century = grib_century
    966  else
    967  century = grib_century-1
    968  endif
    969 
    970  year = century*100 + grib_year
    971 
    972  idat=0
    973  idat(1)=year
    974  idat(2)=grib_month
    975  idat(3)=grib_day
    976 
    977  call w3doxdat(idat,jdow,jdoy,jday)
    978 
    979 ! the climo file date is the beginning of the 7 day period
    980 
    981  week = nint((jdoy+3.)/7.)
    982  if (week==0) week=52
    983  if (week==53) week=1
    984 
    985  print*,"- READ CLIMO FOR WEEK ",week
    986 
    987  call grib2_null(gfld)
    988 
    989  j = week-1 ! search for specific week (# records to skip)
    990  lugi = 0 ! no grib index file
    991  jdisc = 0 ! search for discipline; 0 - meteorological products
    992  jpdtn = 8 ! search for product definition template number; 8 - average
    993  jgdtn = 0 ! search for grid definition template number; 0 - lat/lon grid
    994  jids = -9999 ! array of values in identification section, set to wildcard
    995 
    996  jgdt = -9999 ! array of values in grid definition template 3.m
    997  jgdt(8) = iclim ! search for assumed grid specs - i/j dimensions and corner
    998  ! point lat/lons must match.
    999  jgdt(9) = jclim
    1000  jgdt(12) = nint(lat11_clim * 1e6)
    1001  jgdt(13) = nint(abs(lon11_clim) * 1e6)
    1002 
    1003  jpdt = -9999 ! array of values in product definition template 4.n
    1004  jpdt(1) = 1 ! search for parameter category - moisture
    1005  jpdt(2) = 201 ! search for parameter number - snow cover in percent.
    1006  unpack = .true. ! unpack data
    1007 
    1008  call getgb2(lugb, lugi, j, jdisc, jids, jpdtn, jpdt, jgdtn, jgdt, &
    1009  unpack, k, gfld, iret)
    1010 
    1011  if (iret /= 0) then
    1012  print*,"- WARNING: PROBLEM READING GRIB FILE ", iret
    1013  print*,"- WILL NOT PERFORM QC."
    1014  deallocate(rlon_data,rlat_data)
    1015  call baclose(lugb,iret)
    1016  return
    1017  endif
    1018 
    1019  call baclose(lugb,iret)
    1020 
    1021  allocate(climo(iclim,jclim))
    1022  climo = reshape(gfld%fld , (/iclim,jclim/) )
    1023  allocate(bitmap_clim(iclim,jclim))
    1024  bitmap_clim = reshape(gfld%bmap , (/iclim,jclim/) )
    1025 
    1026  call grib2_free(gfld)
    1027 
    1028 !---------------------------------------------------------------
    1029 ! loop over all data points in nh. gross check data.
    1030 ! afwa is a depth in meters, ims is % coverage. there should be
    1031 ! no neg values or very large values. if point passes gross check,
    1032 ! then check against climatology. find the
    1033 ! nearest point on the climo snow cover grid. if
    1034 ! climo indicates snow is likely (100% coverage), then
    1035 ! check if afwa/ims has snow. if climo indicates snow is
    1036 ! impossible (0% coverage), then check if afwa/ims has no snow. if
    1037 ! afwa/ims differs from climo too much, then afwa/ims is
    1038 ! considered suspect and will not be used.
    1039 !---------------------------------------------------------------
    1040 
    1041  count_nosnow_climo=0
    1042  count_nosnow_data=0
    1043  count_snow_data=0
    1044  count_snow_climo=0
    1045 
    1046  if (isrc==1) then
    1047  thresh=.005
    1048  elseif (isrc==2) then
    1049  thresh=50.0
    1050  endif
    1051 
    1052  do j=1,jdata
    1053  do i=1,idata
    1054  if (rlat_data(i,j)>0.0 .and. bitmap_data(i,j)) then
    1055  y = (lat11_clim-rlat_data(i,j))/dy_clim + 1.0
    1056  if (rlon_data(i,j)>180.0) rlon_data(i,j)=rlon_data(i,j)-360.0
    1057  x = (rlon_data(i,j)-lon11_clim)/dx_clim + 1.0
    1058  jj=nint(y)
    1059  if (jj<1) jj=1
    1060  if (jj>jclim) jj=jclim
    1061  ii=nint(x)
    1062  if (ii<1) ii=ii+iclim
    1063  if (ii>iclim) ii=ii-iclim
    1064  if (bitmap_clim(ii,jj)) then ! climo point is land
    1065  if (climo(ii,jj) <1.0) then ! climo point is snow impossible
    1066  count_nosnow_climo=count_nosnow_climo+1
    1067  if (snow_data(i,j) == 0.0) then
    1068  count_nosnow_data=count_nosnow_data+1
    1069  endif
    1070  endif
    1071  if (climo(ii,jj) > 99.) then ! climo point is snow likely
    1072  count_snow_climo=count_snow_climo+1
    1073  if (snow_data(i,j) >thresh) then
    1074  count_snow_data=count_snow_data+1
    1075  endif
    1076  endif
    1077  endif
    1078  endif
    1079  enddo
    1080  enddo
    1081 
    1082  percent = float(count_snow_climo-count_snow_data) / float(count_snow_climo)
    1083  percent = percent*100.
    1084  write(6,200) '- NUMBER OF DATA POINTS THAT SHOULD HAVE SNOW',count_snow_climo
    1085  write(6,201) '- NUMBER OF THESE POINTS THAT ARE BARE GROUND',(count_snow_climo-count_snow_data), &
    1086  'OR', percent, '%'
    1087 
    1088  200 format(1x,a45,1x,i10)
    1089  201 format(1x,a45,1x,i10,1x,a2,1x,f6.2,a1)
    1090 
    1091  if (percent>50.0) then
    1092  print*,"- WARNING: PERCENTAGE OF BARE GROUND POINTS EXCEEDS ACCEPTABLE LEVEL."
    1093  print*,"- WILL NOT USE SOURCE DATA."
    1094  bad=.true.
    1095  endif
    1096 
    1097  percent = float(count_nosnow_climo-count_nosnow_data) / float(count_nosnow_climo)
    1098  percent = percent*100.
    1099  write(6,202) '- NUMBER OF DATA POINTS THAT SHOULD *NOT* HAVE SNOW',count_nosnow_climo
    1100  write(6,203) '- NUMBER OF THESE POINTS WITH SNOW',(count_nosnow_climo-count_nosnow_data), &
    1101  'OR', percent, '%'
    1102 
    1103  202 format(1x,a51,1x,i10)
    1104  203 format(1x,a34,1x,i10,1x,a2,1x,f6.2,a1)
    1105 
    1106  if (percent>20.0) then
    1107  print*,"- WARNING: PERCENTAGE OF POINTS WITH SNOW EXCEEDS ACCEPTABLE LEVEL."
    1108  print*,"- WILL NOT USE SOURCE DATA."
    1109  bad=.true.
    1110  endif
    1111 
    1112  if (allocated(rlat_data)) deallocate (rlat_data)
    1113  if (allocated(rlon_data)) deallocate (rlon_data)
    1114  if (allocated(climo)) deallocate (climo)
    1115  if (allocated(bitmap_clim)) deallocate (bitmap_clim)
    1116 
    1117  return
    1118 
    1119  end subroutine nh_climo_check
    1120 
    1125  subroutine afwa_check(hemi)
    1126  use gdswzd_mod
    1127 
    1128  implicit none
    1129 
    1130  integer, intent(in) :: hemi
    1131  integer :: kgds(200), nret
    1132  integer, parameter :: npts=1
    1133 
    1134  real :: fill, xpts(npts), ypts(npts)
    1135  real :: rlon(npts), rlat(npts)
    1136 
    1137  kgds=0
    1138  fill=9999.
    1139 
    1140  if (hemi==1) then
    1141  print*,'- QC DATA IN NH.'
    1142  kgds=kgds_afwa_nh
    1143  rlat=75.0
    1144  rlon=-40.
    1145  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1146  if (snow_dep_afwa_nh(nint(xpts(1)),nint(ypts(1))) < 0.001) then
    1147  print*,'- WARNING: NO SNOW IN GREENLAND: ',snow_dep_afwa_nh(nint(xpts),nint(ypts))
    1148  print*,'- DONT USE AFWA DATA.'
    1149  bad_afwa_nh=.true.
    1150  endif
    1151  rlat=3.0
    1152  rlon=-60.
    1153  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1154  if (snow_dep_afwa_nh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1155  print*,'- WARNING: SNOW IN S AMERICA: ',snow_dep_afwa_nh(nint(xpts),nint(ypts))
    1156  print*,'- DONT USE AFWA DATA.'
    1157  bad_afwa_nh=.true.
    1158  endif
    1159  rlat=23.0
    1160  rlon=10.
    1161  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1162  if (snow_dep_afwa_nh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1163  print*,'- WARNING: SNOW IN SAHARA: ',snow_dep_afwa_nh(nint(xpts),nint(ypts))
    1164  print*,'- DONT USE AFWA DATA.'
    1165  bad_afwa_nh=.true.
    1166  endif
    1167  rlat=15.0
    1168  rlon=10.
    1169  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1170  if (snow_dep_afwa_nh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1171  print*,'- WARNING: SNOW IN S INDIA: ',snow_dep_afwa_nh(nint(xpts),nint(ypts))
    1172  print*,'- DONT USE AFWA DATA.'
    1173  bad_afwa_nh=.true.
    1174  endif
    1175  endif
    1176 
    1177  if (hemi==2) then
    1178  print*,'- QC DATA IN SH.'
    1179  kgds=kgds_afwa_sh
    1180  rlat=-88.0
    1181  rlon=0.
    1182  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1183  if (snow_dep_afwa_sh(nint(xpts(1)),nint(ypts(1))) < 0.001) then
    1184  print*,'- WARNING: NO SNOW IN ANTARCTICA: ',snow_dep_afwa_sh(nint(xpts),nint(ypts))
    1185  print*,'- DONT USE AFWA DATA.'
    1186  bad_afwa_sh=.true.
    1187  endif
    1188  rlat=-10.
    1189  rlon=-45.
    1190  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1191  if (snow_dep_afwa_sh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1192  print*,'- WARNING: SNOW IN SOUTH AMERICA: ',snow_dep_afwa_sh(nint(xpts),nint(ypts))
    1193  print*,'- DONT USE AFWA DATA.'
    1194  bad_afwa_sh=.true.
    1195  endif
    1196  rlat=-20.0
    1197  rlon=130.
    1198  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1199  if (snow_dep_afwa_sh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1200  print*,'- WARNING: SNOW IN AUSTRALIA: ',snow_dep_afwa_sh(nint(xpts),nint(ypts))
    1201  print*,'- DONT USE AFWA DATA.'
    1202  bad_afwa_sh=.true.
    1203  endif
    1204  rlat=-9.0
    1205  rlon=25.
    1206  call gdswzd(kgds,(-1),npts,fill,xpts,ypts,rlon,rlat,nret)
    1207  if (snow_dep_afwa_sh(nint(xpts(1)),nint(ypts(1))) > 0.0) then
    1208  print*,'- WARNING: SNOW IN AFRICA: ',snow_dep_afwa_sh(nint(xpts),nint(ypts))
    1209  print*,'- DONT USE AFWA DATA.'
    1210  bad_afwa_sh=.true.
    1211  endif
    1212  endif
    1213 
    1214  end subroutine afwa_check
    1215 
    1233  subroutine read_afwa_binary(file_name, snow_dep_afwa)
    1235  implicit none
    1236 
    1237  character*8 :: afwa_file_info(2)
    1238  character*(*), intent(in) :: file_name
    1239 
    1240  integer*2, allocatable :: dummy(:,:)
    1241  integer :: i,j, istat
    1242  integer, parameter :: iafwa = 512
    1243  integer, parameter :: jafwa = 512
    1244  integer, parameter :: iunit=11 ! input afwa data file
    1245 
    1246  real, intent(out) :: snow_dep_afwa(iafwa,jafwa)
    1247 
    1248  print*,"- OPEN AFWA BINARY FILE ", trim(file_name)
    1249  open (iunit, file=trim(file_name), access="direct", recl=iafwa*2, iostat=istat)
    1250 
    1251  if (istat /= 0) then
    1252  print*,'- FATAL ERROR: BAD OPEN. ISTAT IS ',istat
    1253  call w3tage('SNOW2MDL')
    1254  call errexit(60)
    1255  end if
    1256 
    1257  print*,"- READ AFWA BINARY FILE ", trim(file_name)
    1258  read(iunit, rec=2, iostat = istat) afwa_file_info
    1259 
    1260  if (istat /= 0) then
    1261  print*,'- FATAL ERROR: BAD READ. ISTAT IS ',istat
    1262  call w3tage('SNOW2MDL')
    1263  call errexit(61)
    1264  end if
    1265 
    1266  print*,"- AFWA DATA IS ", afwa_file_info(1), " AT TIME ", afwa_file_info(2)(2:7)
    1267 
    1268  allocate(dummy(iafwa,jafwa))
    1269 
    1270  do j = 1, jafwa
    1271  read(iunit, rec=j+2, iostat=istat) (dummy(i,j),i=1,iafwa)
    1272  if (istat /= 0) then
    1273  print*,'- FATAL ERROR: BAD READ. ISTAT IS ',istat
    1274  call w3tage('SNOW2MDL')
    1275  call errexit(61)
    1276  end if
    1277  enddo
    1278 
    1279  close(iunit)
    1280 
    1281 !-----------------------------------------------------------------------
    1282 ! "4090" is the sea ice flag. we don't use the afwa sea ice.
    1283 !-----------------------------------------------------------------------
    1284 
    1285  where (dummy == 4090) dummy = 0
    1286 
    1287  snow_dep_afwa = float(dummy)
    1288 
    1289 !---------------------------------------------------------------------
    1290 ! afwa data is a snow depth in units of tenths of inches.
    1291 ! convert this to meters.
    1292 !---------------------------------------------------------------------
    1293 
    1294  snow_dep_afwa = snow_dep_afwa * 2.54 / 1000.0
    1295 
    1296  deallocate (dummy)
    1297 
    1298  return
    1299 
    1300  end subroutine read_afwa_binary
    1301 
    1316  subroutine read_afwa_mask(file_name, bitmap_afwa)
    1317  implicit none
    1318 
    1319  character*(*), intent(in) :: file_name
    1320 
    1321  integer, parameter :: iunit=11 ! input mask file
    1322  integer, parameter :: iafwa = 512
    1323  integer, parameter :: jafwa = 512
    1324  integer :: i, j, istat
    1325  integer*4, allocatable :: dummy4(:,:)
    1326 
    1327  logical*1, intent(out) :: bitmap_afwa(iafwa,jafwa)
    1328 
    1329  allocate (dummy4(iafwa,jafwa))
    1330 
    1331  print*,'- OPEN AFWA MASK FILE ', trim(file_name)
    1332  open(iunit, file=trim(file_name), access='direct', &
    1333  recl=iafwa*jafwa*4, iostat=istat)
    1334 
    1335  if (istat /= 0) then
    1336  print*,'- FATAL ERROR: BAD OPEN. ISTAT IS ', istat
    1337  call w3tage('SNOW2MDL')
    1338  call errexit(62)
    1339  end if
    1340 
    1341  print*,'- READ AFWA MASK FILE ', trim(file_name)
    1342  read(iunit, rec=1, iostat=istat) dummy4
    1343 
    1344  if (istat /= 0) then
    1345  print*,'- FATAL ERROR: BAD READ. ISTAT IS ', istat
    1346  call w3tage('SNOW2MDL')
    1347  call errexit(63)
    1348  end if
    1349 
    1350  close(iunit)
    1351 
    1352 !-----------------------------------------------------------------------
    1353 ! here -1-offhemi, 1-ocean, 2-land, 4-coast.
    1354 !-----------------------------------------------------------------------
    1355 
    1356  bitmap_afwa = .false.
    1357 
    1358  do j = 1, jafwa
    1359  do i = 1, iafwa
    1360  if (dummy4(i,j) > 1) then
    1361  bitmap_afwa(i,j) = .true.
    1362  endif
    1363  enddo
    1364  enddo
    1365 
    1366  deallocate (dummy4)
    1367 
    1368  end subroutine read_afwa_mask
    1369 
    1370 
    1371  end module snowdat
    integer, dimension(200) kgds_afwa_sh_8th
    grib1 grid description section for southern hemisphere 8th mesh afwa data.
    Definition: snowdat.F90:54
    +
    real, dimension(:,:), allocatable snow_dep_afwa_sh
    Southern hemisphere afwa snow depth.
    Definition: snowdat.F90:90
    +
    This module reads in data from the program&#39;s configuration namelist.
    +
    logical bad_afwa_sh
    When true, the southern hemisphere afwa data failed its quality control check.
    Definition: snowdat.F90:62
    +
    integer mesh_nesdis
    nesdis/ims data is 96th mesh (or bediant)
    Definition: snowdat.F90:58
    +
    integer, dimension(200) kgds_afwa_nh
    grib1 grid description section for northern hemisphere 16th mesh afwa data.
    Definition: snowdat.F90:48
    +
    real, dimension(:,:), allocatable snow_cvr_autosnow
    autosnow snow cover flag (0-no, 100-yes)
    Definition: snowdat.F90:87
    +
    integer *1, dimension(:,:), allocatable sea_ice_nesdis
    nesdis/ims sea ice flag (0-open water, 1-ice)
    Definition: snowdat.F90:59
    +
    real, dimension(:,:), allocatable snow_dep_afwa_global
    The global afwa snow depth.
    Definition: snowdat.F90:88
    +
    subroutine grib2_null(gfld)
    Nullify the grib2 gribfield pointers.
    Definition: grib_utils.F90:611
    +
    integer, public grib_century
    date of the final merged snow product that will be placed in grib header.
    +
    integer jmdl
    j-dimension of model grid
    Definition: model_grid.F90:28
    +
    integer, dimension(200) kgds_nesdis
    nesdis/ims grid description section (grib section 2)
    Definition: snowdat.F90:57
    +
    logical *1, dimension(:,:), allocatable bitmap_nesdis
    nesdis data grib bitmap (false-non land, true-land).
    Definition: snowdat.F90:74
    +
    real afwa_res
    Resolution of afwa data in km.
    Definition: snowdat.F90:84
    +
    logical bad_afwa_global
    When true, the global afwa data failed its quality control check.
    Definition: snowdat.F90:66
    +
    integer, dimension(200) kgds_afwa_global
    grib1 grid description section for global afwa data.
    Definition: snowdat.F90:46
    +
    Read in data defining the model grid.
    Definition: model_grid.F90:19
    +
    subroutine read_afwa_mask(file_name, bitmap_afwa)
    Read afwa land mask file to get a bitmap.
    Definition: snowdat.F90:1317
    +
    integer, dimension(200) kgds_autosnow
    autosnow grid description section (grib section 2)
    Definition: snowdat.F90:56
    +
    integer, dimension(200) kgds_afwa_nh_8th
    grib1 grid description section for northern hemisphere 8th mesh afwa data.
    Definition: snowdat.F90:50
    +
    integer jafwa
    j-dimension of afwa grid
    Definition: snowdat.F90:43
    +
    integer iautosnow
    i-dimension of autosnow grid
    Definition: snowdat.F90:41
    +
    Read and qc afwa, nesdis/ims and autosnow snow data.
    Definition: snowdat.F90:26
    +
    integer iafwa
    i-dimension of afwa grid
    Definition: snowdat.F90:40
    +
    subroutine read_afwa_binary(file_name, snow_dep_afwa)
    Read afwa binary snow depth file.
    Definition: snowdat.F90:1234
    +
    logical *1, dimension(:,:), allocatable bitmap_autosnow
    autosnow data grib bitmap (false-non land, true-land).
    Definition: snowdat.F90:75
    +
    real nesdis_res
    Resolution of the nesdis data in km.
    Definition: snowdat.F90:85
    +
    integer, public grib_month
    date of the final merged snow product that will be placed in grib header.
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_sh
    The southern hemisphere afwa data grib bitmap.
    Definition: snowdat.F90:72
    +
    subroutine afwa_check(hemi)
    Check for corrupt afwa data.
    Definition: snowdat.F90:1126
    +
    real, dimension(:,:), allocatable snow_dep_afwa_nh
    Northern hemisphere afwa snow depth.
    Definition: snowdat.F90:89
    +
    character *200, public climo_qc_file
    Climatological snow cover file.
    +
    logical use_sh_afwa
    True if southern hemisphere afwa data to be used.
    Definition: snowdat.F90:78
    +
    character *200, public nesdis_lsmask_file
    nesdis/ims land mask file
    +
    subroutine gdt_to_gds(igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res)
    Convert from the grib2 grid description template array used by the ncep grib2 library, to the grib1 grid description section array used by ncep ipolates library.
    Definition: grib_utils.F90:140
    +
    character *200, public afwa_lsmask_nh_file
    path/name afwa n hemis land/sea mask
    +
    subroutine readafwa
    Read snow depth data and masks.
    Definition: snowdat.F90:532
    +
    character *200, public afwa_lsmask_sh_file
    path/name afwa s hemis land/sea mask
    +
    character *200, public autosnow_file
    path/name s hemis autosnow file
    +
    character *200, public afwa_snow_sh_file
    path/name afwa s hemis snow depth
    +
    integer inesdis
    i-dimension of nesdis grid
    Definition: snowdat.F90:42
    +
    integer imdl
    i-dimension of model grid
    Definition: model_grid.F90:27
    +
    integer, public grib_day
    date of the final merged snow product that will be placed in grib header.
    +
    subroutine grib2_free(gfld)
    Deallocate the grib2 gribfield pointers.
    Definition: grib_utils.F90:636
    +
    integer jautosnow
    j-dimension of autosnow grid
    Definition: snowdat.F90:44
    +
    character *200, public nesdis_snow_file
    nesdis/ims snow file
    +
    logical use_nh_afwa
    True if northern hemisphere afwa data to be used.
    Definition: snowdat.F90:77
    +
    logical use_nesdis
    True if nesdis/ims data to be used.
    Definition: snowdat.F90:81
    +
    subroutine readnesdis
    Read nesdis/ims snow cover/ice data.
    Definition: snowdat.F90:223
    +
    character *200, public afwa_snow_global_file
    global afwa snow file.
    +
    logical use_autosnow
    True if autosnow data to be used.
    Definition: snowdat.F90:80
    +
    character *200, public afwa_snow_nh_file
    path/name afwa n hemis snow depth
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_global
    The global afwa data grib bitmap.
    Definition: snowdat.F90:68
    +
    logical bad_nesdis
    When true, the nesdis data failed its quality control check.
    Definition: snowdat.F90:64
    +
    integer, public grib_year
    date of the final merged snow product that will be placed in grib header.
    +
    integer jnesdis
    j-dimension of nesdis grid
    Definition: snowdat.F90:45
    +
    subroutine nh_climo_check(kgds_data, snow_data, bitmap_data, idata, jdata, isrc, bad)
    Check for corrupt nh snow cover data.
    Definition: snowdat.F90:855
    +
    logical bad_afwa_nh
    When true, the northern hemisphere afwa data failed its quality control check.
    Definition: snowdat.F90:60
    +
    integer, dimension(200) kgds_afwa_sh
    grib1 grid description section for southern hemisphere 16th mesh afwa data.
    Definition: snowdat.F90:52
    +
    subroutine readautosnow
    Read autosnow snow cover.
    Definition: snowdat.F90:118
    +
    real autosnow_res
    Resolution of autosnow in km.
    Definition: snowdat.F90:83
    +
    logical *1, dimension(:,:), allocatable bitmap_afwa_nh
    The northern hemisphere afwa data grib bitmap.
    Definition: snowdat.F90:70
    +
    subroutine grib_check(file_name, isgrib)
    Determine whether file is grib or not.
    Definition: grib_utils.F90:24
    +
    logical use_global_afwa
    True if global hemisphere afwa data to be used.
    Definition: snowdat.F90:79
    +
    real, dimension(:,:), allocatable snow_cvr_nesdis
    nesdis/ims snow cover flag (0-no, 100-yes)
    Definition: snowdat.F90:86
    +
    +
    + + + + diff --git a/ver-1.11.0/emcsfc_snow2mdl/splitbar.png b/ver-1.11.0/emcsfc_snow2mdl/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/sync_off.png b/ver-1.11.0/emcsfc_snow2mdl/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/sync_on.png b/ver-1.11.0/emcsfc_snow2mdl/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/tab_a.png b/ver-1.11.0/emcsfc_snow2mdl/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/tab_b.png b/ver-1.11.0/emcsfc_snow2mdl/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/emcsfc_snow2mdl/tabs.css b/ver-1.11.0/emcsfc_snow2mdl/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/emcsfc_snow2mdl/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/folderclosed.png b/ver-1.11.0/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/README_8md_source.html b/ver-1.11.0/fvcom_tools/README_8md_source.html new file mode 100644 index 000000000..7e8a193b9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/docs/README.md
    +
    +
    +
    1 This program replaces lake surface and lake ice temperature along
    2 with aerial ice concentration generated from the Great Lakes
    3 Operational Forecast System (GLOFS) into the model surface restart file.
    4 
    5 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/annotated.html b/ver-1.11.0/fvcom_tools/annotated.html new file mode 100644 index 000000000..548b99e37 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/annotated.html @@ -0,0 +1,112 @@ + + + + + + + +fvcom_tools: Data Types List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types List
    +
    +
    +
    Here are the data types with brief descriptions:
    +
    [detail level 12]
    + + + + +
     Nmodule_ncioFunctions to read and write netcdf files
     Cncio
     Nmodule_nwpThis module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures
     Cfcst_nwp
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/annotated_dup.js b/ver-1.11.0/fvcom_tools/annotated_dup.js new file mode 100644 index 000000000..e2269c180 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/annotated_dup.js @@ -0,0 +1,5 @@ +var annotated_dup = +[ + [ "module_ncio", "namespacemodule__ncio.html", "namespacemodule__ncio" ], + [ "module_nwp", "namespacemodule__nwp.html", "namespacemodule__nwp" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/bc_s.png b/ver-1.11.0/fvcom_tools/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/bdwn.png b/ver-1.11.0/fvcom_tools/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +fvcom_tools: Data Types + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types
    +
    +
    +
    f | n
    + + + + + +
      f  
    +
      n  
    +
    fcst_nwp (module_nwp)   ncio (module_ncio)   
    +
    f | n
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/closed.png b/ver-1.11.0/fvcom_tools/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.html b/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.html new file mode 100644 index 000000000..a199d414a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.html @@ -0,0 +1,121 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    fvcom_tools.fd Directory Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Files

    file  kinds.f90 [code]
     Hold specification kinds for variable declaration.
     
    file  module_ncio.f90 [code]
     Functions to read and write netcdf files.
     
    file  module_nwp.f90 [code]
     Defines FV3LAM and FVCOM forecast data structure.
     
    file  process_FVCOM.f90 [code]
     This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.js b/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.js new file mode 100644 index 000000000..e2590f079 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/dir_d799b4cbfed66b2aa5b5975cc885ce14.js @@ -0,0 +1,7 @@ +var dir_d799b4cbfed66b2aa5b5975cc885ce14 = +[ + [ "kinds.f90", "kinds_8f90.html", "kinds_8f90" ], + [ "module_ncio.f90", "module__ncio_8f90.html", "module__ncio_8f90" ], + [ "module_nwp.f90", "module__nwp_8f90.html", "module__nwp_8f90" ], + [ "process_FVCOM.f90", "process__FVCOM_8f90.html", "process__FVCOM_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..16af239f4 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..06454f2b0 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "fvcom_tools.fd", "dir_d799b4cbfed66b2aa5b5975cc885ce14.html", "dir_d799b4cbfed66b2aa5b5975cc885ce14" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/doc.png b/ver-1.11.0/fvcom_tools/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/doxygen.css b/ver-1.11.0/fvcom_tools/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/fvcom_tools/doxygen.png b/ver-1.11.0/fvcom_tools/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/dynsections.js b/ver-1.11.0/fvcom_tools/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +fvcom_tools: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + +
      sorc
      fvcom_tools.fd
     kinds.f90Hold specification kinds for variable declaration
     module_ncio.f90Functions to read and write netcdf files
     module_nwp.f90Defines FV3LAM and FVCOM forecast data structure
     process_FVCOM.f90This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/files_dup.js b/ver-1.11.0/fvcom_tools/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/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/ver-1.11.0/fvcom_tools/folderclosed.png b/ver-1.11.0/fvcom_tools/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/functions.html b/ver-1.11.0/fvcom_tools/functions.html new file mode 100644 index 000000000..dcfc5528c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/functions.html @@ -0,0 +1,461 @@ + + + + + + + +fvcom_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - n -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - x -

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/functions_func.html b/ver-1.11.0/fvcom_tools/functions_func.html new file mode 100644 index 000000000..12864c810 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/functions_func.html @@ -0,0 +1,298 @@ + + + + + + + +fvcom_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - o -

    + + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/functions_vars.html b/ver-1.11.0/fvcom_tools/functions_vars.html new file mode 100644 index 000000000..2e48c63f7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/functions_vars.html @@ -0,0 +1,275 @@ + + + + + + + +fvcom_tools: Data Fields - Variables + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - i -

    + + +

    - l -

    + + +

    - n -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - x -

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/fvcom__tools_8md_source.html b/ver-1.11.0/fvcom_tools/fvcom__tools_8md_source.html new file mode 100644 index 000000000..6b5e2c825 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/fvcom__tools_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/docs/fvcom_tools.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/docs/fvcom_tools.md
    +
    +
    +
    1 # fvcom_tools
    2 
    3 # Introduction
    4 
    5 This code replaces lake surface and lake ice temperature along
    6 with aerial ice concentration generated from Great Lakes
    7 Operational Forecast System (GLOFS), an FVCOM-based model, into
    8 sfc_data.nc.
    9 
    10 This document is part of the <a href="../index.html">UFS_UTILS
    11 documentation</a>.
    12 
    13 The fvcom_tools program is part of the
    14 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    15 
    16 ## NOTE
    17 
    18 The variables in the input files must reside on
    19 the same grid. This means data from FVCOM must be horizontally
    20 interpolated to the FV3 grid. This routine will also force a
    21 minimum ice concentration of 15%. If ice concentration is less
    22 than 15% in FVCOM, it will be set to 0% to avoid FV3 from
    23 changing values less than 15% to 15% and generating unrealistic
    24 lake ice temperatures.
    25 
    26 ## Library Dependencies:
    27 
    28 Installation depends on the netCDF library and cmake.
    29 
    30 ## Running
    31 
    32 This routine will take four variables from the command line:
    33 1. Name of FV3 sfc data file (e.g. sfc_data.tile7.halo0.nc)
    34  which is generated from chgres_cube.exe.
    35 2. Name of FVCOM data file in netcdf format (e.g. fvcom.nc)
    36 3. "warm" or "cold" start. "warm" start will read in
    37  sfc_data.nc files generated from a restart of UFS-SRW.
    38  "cold" start will read in sfc_data.nc files generated
    39  from chgres_cube.
    40 4. String of time slice to use in the fvcom.nc file. This string
    41  should match exactly what is in the Times variable of the .nc file.
    42 To run the script, use the following example, modifying file
    43 names as needed:
    44  ./fvcom_to_FV3 sfc_data.tile7.halo0.nc fvcom.nc cold \
    45  2020-01-31T18:00:00.000000
    46 Output will be to the sfc data file and include lake surface
    47 and lake ice temperature, and lake ice concentration from the
    48 first time in the FVCOM file.
    49 
    50 This routine is *strongly* based upon Eric James' (ESRL/GSL) work
    51 to update HRRR/WRF Great Lakes' temperature data with FVCOM.
    52 It also relies heavily on Ming Hu's (ESRL/GSL) ncio module.
    53 
    54 ## For more information, please contact:
    55 
    56 David Wright, University of Michigan and GLERL: dmwright@umich.edu
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/globals.html b/ver-1.11.0/fvcom_tools/globals.html new file mode 100644 index 000000000..418e9d02a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/globals.html @@ -0,0 +1,105 @@ + + + + + + + +fvcom_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/globals_func.html b/ver-1.11.0/fvcom_tools/globals_func.html new file mode 100644 index 000000000..0f0358538 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/globals_func.html @@ -0,0 +1,105 @@ + + + + + + + +fvcom_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/index.html b/ver-1.11.0/fvcom_tools/index.html new file mode 100644 index 000000000..5a881c7c5 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/index.html @@ -0,0 +1,127 @@ + + + + + + + +fvcom_tools: fvcom_tools + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    fvcom_tools
    +
    +
    +

    +Introduction

    +

    This code replaces lake surface and lake ice temperature along with aerial ice concentration generated from Great Lakes Operational Forecast System (GLOFS), an FVCOM-based model, into sfc_data.nc.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The fvcom_tools program is part of the UFS_UTILS project.

    +

    +NOTE

    +

    The variables in the input files must reside on the same grid. This means data from FVCOM must be horizontally interpolated to the FV3 grid. This routine will also force a minimum ice concentration of 15%. If ice concentration is less than 15% in FVCOM, it will be set to 0% to avoid FV3 from changing values less than 15% to 15% and generating unrealistic lake ice temperatures.

    +

    +Library Dependencies:

    +

    Installation depends on the netCDF library and cmake.

    +

    +Running

    +

    This routine will take four variables from the command line:

      +
    1. Name of FV3 sfc data file (e.g. sfc_data.tile7.halo0.nc) which is generated from chgres_cube.exe.
    2. +
    3. Name of FVCOM data file in netcdf format (e.g. fvcom.nc)
    4. +
    5. "warm" or "cold" start. "warm" start will read in sfc_data.nc files generated from a restart of UFS-SRW. "cold" start will read in sfc_data.nc files generated from chgres_cube.
    6. +
    7. String of time slice to use in the fvcom.nc file. This string should match exactly what is in the Times variable of the .nc file. To run the script, use the following example, modifying file names as needed: ./fvcom_to_FV3 sfc_data.tile7.halo0.nc fvcom.nc cold \ 2020-01-31T18:00:00.000000 Output will be to the sfc data file and include lake surface and lake ice temperature, and lake ice concentration from the first time in the FVCOM file.
    8. +
    +

    This routine is strongly based upon Eric James' (ESRL/GSL) work to update HRRR/WRF Great Lakes' temperature data with FVCOM. It also relies heavily on Ming Hu's (ESRL/GSL) ncio module.

    +

    +For more information, please contact:

    +

    David Wright, University of Michigan and GLERL: dmwri.nosp@m.ght@.nosp@m.umich.nosp@m..edu

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/jquery.js b/ver-1.11.0/fvcom_tools/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    kinds.f90 File Reference
    +
    +
    + +

    Hold specification kinds for variable declaration. +More...

    + +

    Go to the source code of this file.

    +
    + + + + +

    +Modules

    module  kinds
     Module to hold specification kinds for variable declaration.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    real(r_kind), parameter, public kinds::drmissing =-99999.0
     Fill value for double real missing data. More...
     
    integer, parameter, public kinds::i_byte = 1
     generic specification kind for default byte. More...
     
    integer, parameter, public kinds::i_kind = 4
     generic specification kind for default integer. More...
     
    integer, parameter, public kinds::i_short = 2
     generic specification kind for default short. More...
     
    real(i_kind), parameter, public kinds::imissing =-99999
     Fill value for integer missing data. More...
     
    integer, parameter, public kinds::len_sta_name = 8
     Name length. More...
     
    integer, parameter, public kinds::r_kind = 8
     generic specification kind for default floating point More...
     
    integer, parameter, public kinds::r_single = 4
     specification kind for single precision (4-byte) real variable. More...
     
    real(r_single), parameter, public kinds::rmissing =-99999.0
     Fill value for single real missing data. More...
     
    +

    Detailed Description

    +

    Hold specification kinds for variable declaration.

    +
    Author
    David Wright, University of Michigan
    + +

    Definition in file kinds.f90.

    +
    + + + + + diff --git a/ver-1.11.0/fvcom_tools/kinds_8f90.js b/ver-1.11.0/fvcom_tools/kinds_8f90.js new file mode 100644 index 000000000..a96ee5d14 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/kinds_8f90.js @@ -0,0 +1,12 @@ +var kinds_8f90 = +[ + [ "drmissing", "kinds_8f90.html#aa7b48b25ed23323e461a788878720b51", null ], + [ "i_byte", "kinds_8f90.html#a5dfbd654e549ff3a80c6e1bc2d7d5661", null ], + [ "i_kind", "kinds_8f90.html#a2bf18edacdd0f57294e42719753d0168", null ], + [ "i_short", "kinds_8f90.html#a7294b1421464f1c39e4ed41245ea44f7", null ], + [ "imissing", "kinds_8f90.html#a7cc86e3396d927fd6cf192212af8b21c", null ], + [ "len_sta_name", "kinds_8f90.html#a2e35624b3e7919d10ccf50acf9bb1a6b", null ], + [ "r_kind", "kinds_8f90.html#a699e36574bc3d76eb8c85e14f6234212", null ], + [ "r_single", "kinds_8f90.html#a2941a091aedaf97539960bc627db578c", null ], + [ "rmissing", "kinds_8f90.html#af5dd83b916095f8d5d146dafc5246dad", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/kinds_8f90_source.html b/ver-1.11.0/fvcom_tools/kinds_8f90_source.html new file mode 100644 index 000000000..b4b933e3d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/kinds_8f90_source.html @@ -0,0 +1,115 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/kinds.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    kinds.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    11 module kinds
    12  implicit none
    13  private
    14 !
    15 ! for name string
    16  integer, parameter, public :: len_sta_name = 8
    17 
    18 ! Integer type definitions below
    19 
    20 ! Integer types
    21  integer, parameter, public :: i_kind = 4
    22  integer, parameter, public :: i_short = 2
    23  integer, parameter, public :: i_byte = 1
    24 ! Real types
    25  integer, parameter, public :: r_single = 4
    26  integer, parameter, public :: r_kind = 8
    27 
    28 !
    29  real(r_single),parameter,public :: rmissing=-99999.0
    30  real(i_kind),parameter,public :: imissing=-99999
    31  real(r_kind),parameter,public :: drmissing=-99999.0
    32 
    33 end module kinds
    integer, parameter, public len_sta_name
    Name length.
    Definition: kinds.f90:16
    +
    real(r_kind), parameter, public drmissing
    Fill value for double real missing data.
    Definition: kinds.f90:31
    +
    real(r_single), parameter, public rmissing
    Fill value for single real missing data.
    Definition: kinds.f90:29
    +
    integer, parameter, public i_byte
    generic specification kind for default byte.
    Definition: kinds.f90:23
    +
    integer, parameter, public i_kind
    generic specification kind for default integer.
    Definition: kinds.f90:21
    +
    real(i_kind), parameter, public imissing
    Fill value for integer missing data.
    Definition: kinds.f90:30
    +
    integer, parameter, public i_short
    generic specification kind for default short.
    Definition: kinds.f90:22
    +
    integer, parameter, public r_kind
    generic specification kind for default floating point
    Definition: kinds.f90:26
    +
    integer, parameter, public r_single
    specification kind for single precision (4-byte) real variable.
    Definition: kinds.f90:25
    +
    Module to hold specification kinds for variable declaration.
    Definition: kinds.f90:11
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/man/man3/add_new_var.3 b/ver-1.11.0/fvcom_tools/man/man3/add_new_var.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/add_new_var.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/add_new_var_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/add_new_var_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/add_new_var_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/add_new_var_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/add_new_var_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/add_new_var_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/close.3 b/ver-1.11.0/fvcom_tools/man/man3/close.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/close.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/close_nc.3 b/ver-1.11.0/fvcom_tools/man/man3/close_nc.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/close_nc.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/convert_theta2t_2dgrid.3 b/ver-1.11.0/fvcom_tools/man/man3/convert_theta2t_2dgrid.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/convert_theta2t_2dgrid.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/datatype.3 b/ver-1.11.0/fvcom_tools/man/man3/datatype.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/datatype.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/datelen.3 b/ver-1.11.0/fvcom_tools/man/man3/datelen.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/datelen.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/debug_level.3 b/ver-1.11.0/fvcom_tools/man/man3/debug_level.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/debug_level.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/dimname.3 b/ver-1.11.0/fvcom_tools/man/man3/dimname.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/dimname.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/dimnamedate.3 b/ver-1.11.0/fvcom_tools/man/man3/dimnamedate.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/dimnamedate.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/dimnameew.3 b/ver-1.11.0/fvcom_tools/man/man3/dimnameew.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/dimnameew.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/dimnamens.3 b/ver-1.11.0/fvcom_tools/man/man3/dimnamens.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/dimnamens.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/dimnametime.3 b/ver-1.11.0/fvcom_tools/man/man3/dimnametime.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/dimnametime.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/drmissing.3 b/ver-1.11.0/fvcom_tools/man/man3/drmissing.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/drmissing.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/ends.3 b/ver-1.11.0/fvcom_tools/man/man3/ends.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/ends.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/filename.3 b/ver-1.11.0/fvcom_tools/man/man3/filename.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/filename.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/finish.3 b/ver-1.11.0/fvcom_tools/man/man3/finish.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/finish.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/finish_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/finish_nwp.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/finish_nwp.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_att.3 b/ver-1.11.0/fvcom_tools/man/man3/get_att.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_att.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_int.3 b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_int.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_int.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_real.3 b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_real.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_real.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_string.3 b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_string.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_att_nc_string.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_dim.3 b/ver-1.11.0/fvcom_tools/man/man3/get_dim.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_dim.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_dim_nc.3 b/ver-1.11.0/fvcom_tools/man/man3/get_dim_nc.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_dim_nc.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_time_ind.3 b/ver-1.11.0/fvcom_tools/man/man3/get_time_ind.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_time_ind.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_time_ind_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/get_time_ind_nwp.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_time_ind_nwp.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_char_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_double_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_int_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_real_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/get_var_nc_short_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/handle_err.3 b/ver-1.11.0/fvcom_tools/man/man3/handle_err.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/handle_err.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_byte.3 b/ver-1.11.0/fvcom_tools/man/man3/i_byte.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_byte.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_hice.3 b/ver-1.11.0/fvcom_tools/man/man3/i_hice.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_hice.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_ice.3 b/ver-1.11.0/fvcom_tools/man/man3/i_ice.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_ice.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_icet.3 b/ver-1.11.0/fvcom_tools/man/man3/i_icet.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_icet.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_kind.3 b/ver-1.11.0/fvcom_tools/man/man3/i_kind.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_kind.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_mask.3 b/ver-1.11.0/fvcom_tools/man/man3/i_mask.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_mask.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_sfct.3 b/ver-1.11.0/fvcom_tools/man/man3/i_sfct.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_sfct.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_sfctl.3 b/ver-1.11.0/fvcom_tools/man/man3/i_sfctl.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_sfctl.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_short.3 b/ver-1.11.0/fvcom_tools/man/man3/i_short.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_short.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_sst.3 b/ver-1.11.0/fvcom_tools/man/man3/i_sst.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_sst.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/i_zorl.3 b/ver-1.11.0/fvcom_tools/man/man3/i_zorl.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/i_zorl.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/imissing.3 b/ver-1.11.0/fvcom_tools/man/man3/imissing.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/imissing.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/initial.3 b/ver-1.11.0/fvcom_tools/man/man3/initial.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/initial.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/initial_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/initial_nwp.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/initial_nwp.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/kinds.3 b/ver-1.11.0/fvcom_tools/man/man3/kinds.3 new file mode 100644 index 000000000..4dea59107 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/kinds.3 @@ -0,0 +1,126 @@ +.TH "kinds" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +kinds \- Module to hold specification kinds for variable declaration\&. + +.SH SYNOPSIS +.br +.PP +.SS "Variables" + +.in +1c +.ti -1c +.RI "real(\fBr_kind\fP), parameter, public \fBdrmissing\fP =\-99999\&.0" +.br +.RI "Fill value for double real missing data\&. " +.ti -1c +.RI "integer, parameter, public \fBi_byte\fP = 1" +.br +.RI "generic specification kind for default byte\&. " +.ti -1c +.RI "integer, parameter, public \fBi_kind\fP = 4" +.br +.RI "generic specification kind for default integer\&. " +.ti -1c +.RI "integer, parameter, public \fBi_short\fP = 2" +.br +.RI "generic specification kind for default short\&. " +.ti -1c +.RI "real(\fBi_kind\fP), parameter, public \fBimissing\fP =\-99999" +.br +.RI "Fill value for integer missing data\&. " +.ti -1c +.RI "integer, parameter, public \fBlen_sta_name\fP = 8" +.br +.RI "Name length\&. " +.ti -1c +.RI "integer, parameter, public \fBr_kind\fP = 8" +.br +.RI "generic specification kind for default floating point " +.ti -1c +.RI "integer, parameter, public \fBr_single\fP = 4" +.br +.RI "specification kind for single precision (4-byte) real variable\&. " +.ti -1c +.RI "real(\fBr_single\fP), parameter, public \fBrmissing\fP =\-99999\&.0" +.br +.RI "Fill value for single real missing data\&. " +.in -1c +.SH "Detailed Description" +.PP +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 +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan +.RE +.PP + +.SH "Variable Documentation" +.PP +.SS "real(\fBr_kind\fP), parameter, public kinds::drmissing =\-99999\&.0" + +.PP +Fill value for double real missing data\&. +.PP +Definition at line 31 of file kinds\&.f90\&. +.SS "integer, parameter, public kinds::i_byte = 1" + +.PP +generic specification kind for default byte\&. +.PP +Definition at line 23 of file kinds\&.f90\&. +.SS "integer, parameter, public kinds::i_kind = 4" + +.PP +generic specification kind for default integer\&. +.PP +Definition at line 21 of file kinds\&.f90\&. +.PP +Referenced by process_FVCOM()\&. +.SS "integer, parameter, public kinds::i_short = 2" + +.PP +generic specification kind for default short\&. +.PP +Definition at line 22 of file kinds\&.f90\&. +.SS "real(\fBi_kind\fP), parameter, public kinds::imissing =\-99999" + +.PP +Fill value for integer missing data\&. +.PP +Definition at line 30 of file kinds\&.f90\&. +.SS "integer, parameter, public kinds::len_sta_name = 8" + +.PP +Name length\&. +.PP +Definition at line 16 of file kinds\&.f90\&. +.SS "integer, parameter, public kinds::r_kind = 8" + +.PP +generic specification kind for default floating point +.PP +Definition at line 26 of file kinds\&.f90\&. +.PP +Referenced by process_FVCOM()\&. +.SS "integer, parameter, public kinds::r_single = 4" + +.PP +specification kind for single precision (4-byte) real variable\&. +.PP +Definition at line 25 of file kinds\&.f90\&. +.PP +Referenced by process_FVCOM()\&. +.SS "real(\fBr_single\fP), parameter, public kinds::rmissing =\-99999\&.0" + +.PP +Fill value for single real missing data\&. +.PP +Definition at line 29 of file kinds\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/kinds.f90.3 b/ver-1.11.0/fvcom_tools/man/man3/kinds.f90.3 new file mode 100644 index 000000000..32ef0ddf7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/kinds.f90.3 @@ -0,0 +1,74 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/kinds.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/kinds.f90 \- Hold specification kinds for variable declaration\&. + +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fBkinds\fP" +.br +.RI "Module to hold specification kinds for variable declaration\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "real(r_kind), parameter, public \fBkinds::drmissing\fP =\-99999\&.0" +.br +.RI "Fill value for double real missing data\&. " +.ti -1c +.RI "integer, parameter, public \fBkinds::i_byte\fP = 1" +.br +.RI "generic specification kind for default byte\&. " +.ti -1c +.RI "integer, parameter, public \fBkinds::i_kind\fP = 4" +.br +.RI "generic specification kind for default integer\&. " +.ti -1c +.RI "integer, parameter, public \fBkinds::i_short\fP = 2" +.br +.RI "generic specification kind for default short\&. " +.ti -1c +.RI "real(i_kind), parameter, public \fBkinds::imissing\fP =\-99999" +.br +.RI "Fill value for integer missing data\&. " +.ti -1c +.RI "integer, parameter, public \fBkinds::len_sta_name\fP = 8" +.br +.RI "Name length\&. " +.ti -1c +.RI "integer, parameter, public \fBkinds::r_kind\fP = 8" +.br +.RI "generic specification kind for default floating point " +.ti -1c +.RI "integer, parameter, public \fBkinds::r_single\fP = 4" +.br +.RI "specification kind for single precision (4-byte) real variable\&. " +.ti -1c +.RI "real(r_single), parameter, public \fBkinds::rmissing\fP =\-99999\&.0" +.br +.RI "Fill value for single real missing data\&. " +.in -1c +.SH "Detailed Description" +.PP +Hold specification kinds for variable declaration\&. + + +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan +.RE +.PP + +.PP +Definition in file \fBkinds\&.f90\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/latname.3 b/ver-1.11.0/fvcom_tools/man/man3/latname.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/latname.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/len_sta_name.3 b/ver-1.11.0/fvcom_tools/man/man3/len_sta_name.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/len_sta_name.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/list_initial.3 b/ver-1.11.0/fvcom_tools/man/man3/list_initial.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/list_initial.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/list_initial_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/list_initial_nwp.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/list_initial_nwp.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/lonname.3 b/ver-1.11.0/fvcom_tools/man/man3/lonname.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/lonname.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README.3 b/ver-1.11.0/fvcom_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README.3 new file mode 100644 index 000000000..229594e75 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README.3 @@ -0,0 +1,8 @@ +.TH "md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_fvcom_tools.fd_docs_README \- README +This program replaces lake surface and lake ice temperature along with aerial ice concentration generated from the Great Lakes Operational Forecast System (GLOFS) into the model surface restart file\&. +.PP +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_ncio.3 b/ver-1.11.0/fvcom_tools/man/man3/module_ncio.3 new file mode 100644 index 000000000..f73066928 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_ncio.3 @@ -0,0 +1,1637 @@ +.TH "module_ncio" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +module_ncio \- Functions to read and write netcdf files\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBncio\fP" +.br +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBadd_new_var_2d\fP (this, varname, dname1, dname2, lname, units, dtype)" +.br +.RI "Add a new variable to sfc_data\&.nc with dimensions (yaxis_1, xaxis_1)\&. " +.ti -1c +.RI "subroutine \fBadd_new_var_3d\fP (this, varname, dname1, dname2, dname3, lname, units, dtype)" +.br +.RI "Add a new variable to sfc_data\&.nc with dimensions (Time, yaxis_1, xaxis_1)\&. " +.ti -1c +.RI "subroutine \fBclose_nc\fP (this)" +.br +.RI "Close a netcdf file\&. " +.ti -1c +.RI "subroutine \fBconvert_theta2t_2dgrid\fP (this, nx, ny, ps, t2)" +.br +.RI "Convert theta T (Kelvin) to T (deg C)\&. " +.ti -1c +.RI "subroutine \fBget_att_nc_int\fP (this, attname, ival)" +.br +.RI "Get integer attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBget_att_nc_real\fP (this, attname, rval)" +.br +.RI "Get attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBget_att_nc_string\fP (this, attname, string)" +.br +.RI "Get string attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBget_dim_nc\fP (this, dimname, dimvalue)" +.br +.RI "Get dimensions in netcdf file\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_char\fP (this, varname, ilength, field)" +.br +.RI "Read in character type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_char_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D character type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_char_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D character type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_char_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D character type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_double\fP (this, varname, ilength, field)" +.br +.RI "Read in double type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_double_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D double type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_double_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D double type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_double_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D double type field\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_int\fP (this, varname, ilength, field)" +.br +.RI "Read in integer type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_int_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D integer variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_int_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D integer type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_int_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D integer type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_real\fP (this, varname, ilength, field)" +.br +.RI "Read in real type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_real_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D real type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_real_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D real type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_real_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D real type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_short\fP (this, varname, ilength, field)" +.br +.RI "Read in short type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_short_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D short type variable\&. " +.ti -1c +.RI "subroutine \fBget_var_nc_short_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D short type variable\&. " +.ti -1c +.RI "subroutine \fBhandle_err\fP (this, status)" +.br +.RI "Handle netCDF errors\&. " +.ti -1c +.RI "subroutine \fBopen_nc\fP (this, filename, action, debug_level)" +.br +.RI "Open a netcdf file, set initial debug level\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_char\fP (this, varname, ilength, field)" +.br +.RI "Replace character type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_char_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D character type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_char_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D character type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_char_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D character type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_double\fP (this, varname, ilength, field)" +.br +.RI "Replace double type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_double_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D double type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_double_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D double type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_double_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D double type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_int\fP (this, varname, ilength, field)" +.br +.RI "Replace integer type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_int_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D integer type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_int_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D integer type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_int_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D integer type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_real\fP (this, varname, ilength, field)" +.br +.RI "Replace real type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_real_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D real type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_real_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D real type variable\&. " +.ti -1c +.RI "subroutine \fBreplace_var_nc_real_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D real type variable\&. " +.in -1c +.SH "Detailed Description" +.PP +Functions to read and write netcdf files\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine module_ncio::add_new_var_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, character(len=*), intent(in) dname1, character(len=*), intent(in) dname2, character(len=*), intent(in) lname, character(len=*), intent(in) units, character(len=*), intent(in) dtype)\fC [private]\fP" + +.PP +Add a new variable to sfc_data\&.nc with dimensions (yaxis_1, xaxis_1)\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP Name of variable to be created in netcdf file +.br +\fIdname1\fP 1st dimension name +.br +\fIdname2\fP 2nd dimension name +.br +\fIlname\fP long name output for netcdf variable +.br +\fIunits\fP units to use in netcdf variable +.br +\fIdtype\fP data type of netcdf variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +David\&.M\&.Wright org: UM/GLERL +.RE +.PP +\fBDate:\fP +.RS 4 +2021-10-07 +.RE +.PP + +.PP +Definition at line 2575 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::add_new_var()\&. +.SS "subroutine module_ncio::add_new_var_3d (class(\fBncio\fP) this, character(len=*), intent(in) varname, character(len=*), intent(in) dname1, character(len=*), intent(in) dname2, character(len=*), intent(in) dname3, character(len=*), intent(in) lname, character(len=*), intent(in) units, character(len=*), intent(in) dtype)\fC [private]\fP" + +.PP +Add a new variable to sfc_data\&.nc with dimensions (Time, yaxis_1, xaxis_1)\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP Name of variable to be created in netcdf file +.br +\fIdname1\fP 1st dimension name +.br +\fIdname2\fP 2nd dimension name +.br +\fIdname3\fP 3rd dimension name +.br +\fIlname\fP long name output for netcdf variable +.br +\fIunits\fP units to use in netcdf variable +.br +\fIdtype\fP date type of netcdf variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +David\&.M\&.Wright org: UM/GLERL +.RE +.PP +\fBDate:\fP +.RS 4 +2020-09-01 +.RE +.PP + +.PP +Definition at line 2518 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::add_new_var()\&. +.SS "subroutine module_ncio::close_nc (class(\fBncio\fP) this)\fC [private]\fP" + +.PP +Close a netcdf file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-04-10 +.RE +.PP + +.PP +Definition at line 141 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::convert_theta2t_2dgrid (class(\fBncio\fP) this, integer nx, integer ny, real, dimension(nx,ny), intent(in) ps, real, dimension(nx,ny), intent(inout) t2)" + +.PP +Convert theta T (Kelvin) to T (deg C)\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fInx\fP number of grid points in x-dir +.br +\fIny\fP number of grid points in y-dir +.br +\fIps\fP Pressure (Pa) +.br +\fIt2\fP Pot\&. Temperature (Kelvin) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2481 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_att_nc_int (class(\fBncio\fP) this, character(len=*), intent(in) attname, integer, intent(out) ival)\fC [private]\fP" + +.PP +Get integer attribute in wrf netcdf file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIattname\fP name of the attribute to get +.br +\fIival\fP value of attribute\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-10-04 +.RE +.PP + +.PP +Definition at line 187 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_att()\&. +.SS "subroutine module_ncio::get_att_nc_real (class(\fBncio\fP) this, character(len=*), intent(in) attname, real, intent(out) rval)\fC [private]\fP" + +.PP +Get attribute in wrf netcdf file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIattname\fP name of the attribute to get +.br +\fIrval\fP return value +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-10-04 +.RE +.PP + +.PP +Definition at line 163 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_att()\&. +.SS "subroutine module_ncio::get_att_nc_string (class(\fBncio\fP) this, character(len=*), intent(in) attname, character(len=*), intent(out) string)\fC [private]\fP" + +.PP +Get string attribute in wrf netcdf file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIattname\fP name of the attribute to get +.br +\fIstring\fP value of attribute\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-10-04 +.RE +.PP + +.PP +Definition at line 211 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_att()\&. +.SS "subroutine module_ncio::get_dim_nc (class(\fBncio\fP) this, character(len=*), intent(in) dimname, integer, intent(out) dimvalue)\fC [private]\fP" + +.PP +Get dimensions in netcdf file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIdimname\fP name of the dimension +.br +\fIdimvalue\fP length of the dimension +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 236 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_char (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, character, dimension(ilength), intent(out) field)" + +.PP +Read in character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2354 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_char_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, character, dimension(nd1), intent(out) field)" + +.PP +Read in 1D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2210 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_char_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, character, dimension(nd1,nd2), intent(out) field)" + +.PP +Read in 2D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2248 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_char_3d (class(\fBncio\fP) 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)" + +.PP +Read in 3D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2300 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_double (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, real(8), dimension(ilength), intent(out) field)" + +.PP +Read in double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1390 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_double_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, real(8), dimension(nd1), intent(out) field)" + +.PP +Read in 1D double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP lenth of first dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1244 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_double_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, real(8), dimension(nd1,nd2), intent(out) field)" + +.PP +Read in 2D double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1282 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_double_3d (class(\fBncio\fP) 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)" + +.PP +Read in 3D double type field\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1334 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_int (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, integer, dimension(ilength), intent(out) field)" + +.PP +Read in integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1904 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_int_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, dimension(nd1), intent(out) field)" + +.PP +Read in 1D integer variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1755 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_int_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, integer, dimension(nd1,nd2), intent(out) field)" + +.PP +Read in 2D integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1793 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_int_3d (class(\fBncio\fP) 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)" + +.PP +Read in 3D integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1848 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_real (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, real(4), dimension(ilength), intent(out) field)" + +.PP +Read in real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1646 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_real_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, real(4), dimension(nd1), intent(out) field)" + +.PP +Read in 1D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1497 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_real_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, real(4), dimension(nd1,nd2), intent(out) field)" + +.PP +Read in 2D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1535 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_real_3d (class(\fBncio\fP) 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)" + +.PP +Read in 3D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1590 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_short (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, integer(2), dimension(ilength), intent(out) field)" + +.PP +Read in short type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2104 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::get_var_nc_short_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer(2), dimension(nd1), intent(out) field)" + +.PP +Read in 1D short type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2013 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::get_var_nc_short_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, integer(2), dimension(nd1,nd2), intent(out) field)" + +.PP +Read in 2D short type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP output variable +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2051 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::get_var()\&. +.SS "subroutine module_ncio::handle_err (class(\fBncio\fP) this, integer, intent(in) status)" + +.PP +Handle netCDF errors\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIstatus\fP return code from neCDF +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 2461 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::open_nc (class(\fBncio\fP) this, character(len=*), intent(in) filename, character(len=1), intent(in) action, integer, intent(in), optional debug_level)\fC [private]\fP" + +.PP +Open a netcdf file, set initial debug level\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIfilename\fP the file to open +.br +\fIaction\fP 'r' for read, 'w' for write +.br +\fIdebug_level\fP set to non-zero for some verbose output +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 104 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::replace_var_nc_char (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, character, dimension(ilength), intent(in) field)" + +.PP +Replace character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP length of array +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 398 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::replace_var_nc_char_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, character, dimension(nd1), intent(in) field)\fC [private]\fP" + +.PP +Replace 1D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 264 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_char_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, character, dimension(nd1,nd2), intent(in) field)" + +.PP +Replace 2D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 300 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_char_3d (class(\fBncio\fP) 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)" + +.PP +Replace 3D character type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 348 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_double (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, real(8), dimension(ilength), intent(in) field)" + +.PP +Replace double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 894 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::replace_var_nc_double_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, real(8), dimension(nd1), intent(in) field)" + +.PP +Replace 1D double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 749 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_double_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, real(8), dimension(nd1,nd2), intent(in) field)" + +.PP +Replace 2D double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 787 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_double_3d (class(\fBncio\fP) 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)" + +.PP +Replace 3D double type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 838 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_int (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, integer, dimension(ilength), intent(in) field)" + +.PP +Replace integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP size of array +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1138 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::replace_var_nc_int_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, dimension(nd1), intent(in) field)" + +.PP +Replace 1D integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP lenth of first dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1000 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_int_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, integer, dimension(nd1,nd2), intent(in) field)" + +.PP +Replace 2D integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1035 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_int_3d (class(\fBncio\fP) 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)" + +.PP +Replace 3D integer type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 1086 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_real (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) ilength, real(4), dimension(ilength), intent(in) field)" + +.PP +Replace real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fIilength\fP length of array +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 643 of file module_ncio\&.f90\&. +.SS "subroutine module_ncio::replace_var_nc_real_1d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, real(4), dimension(nd1), intent(in) field)" + +.PP +Replace 1D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 505 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_real_2d (class(\fBncio\fP) this, character(len=*), intent(in) varname, integer, intent(in) nd1, integer, intent(in) nd2, real(4), dimension(nd1,nd2), intent(in) field)" + +.PP +Replace 2D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 540 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SS "subroutine module_ncio::replace_var_nc_real_3d (class(\fBncio\fP) 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)" + +.PP +Replace 3D real type variable\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP instance of an ncio class +.br +\fIvarname\fP name of the variable +.br +\fInd1\fP length of first dimension +.br +\fInd2\fP length of second dimension +.br +\fInd3\fP length of third dimension +.br +\fIfield\fP replacement field +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu org: GSD/AMB +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition at line 588 of file module_ncio\&.f90\&. +.PP +Referenced by module_ncio::ncio::replace_var()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_ncio.f90.3 b/ver-1.11.0/fvcom_tools/man/man3/module_ncio.f90.3 new file mode 100644 index 000000000..0fffe3dc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_ncio.f90.3 @@ -0,0 +1,230 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_ncio.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_ncio.f90 \- Functions to read and write netcdf files\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBmodule_ncio::ncio\fP" +.br +.in -1c +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fBmodule_ncio\fP" +.br +.RI "Functions to read and write netcdf files\&. " +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBmodule_ncio::add_new_var_2d\fP (this, varname, dname1, dname2, lname, units, dtype)" +.br +.RI "Add a new variable to sfc_data\&.nc with dimensions (yaxis_1, xaxis_1)\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::add_new_var_3d\fP (this, varname, dname1, dname2, dname3, lname, units, dtype)" +.br +.RI "Add a new variable to sfc_data\&.nc with dimensions (Time, yaxis_1, xaxis_1)\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::close_nc\fP (this)" +.br +.RI "Close a netcdf file\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::convert_theta2t_2dgrid\fP (this, nx, ny, ps, t2)" +.br +.RI "Convert theta T (Kelvin) to T (deg C)\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_att_nc_int\fP (this, attname, ival)" +.br +.RI "Get integer attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_att_nc_real\fP (this, attname, rval)" +.br +.RI "Get attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_att_nc_string\fP (this, attname, string)" +.br +.RI "Get string attribute in wrf netcdf file\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_dim_nc\fP (this, dimname, dimvalue)" +.br +.RI "Get dimensions in netcdf file\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_char\fP (this, varname, ilength, field)" +.br +.RI "Read in character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_char_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_char_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_char_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_double\fP (this, varname, ilength, field)" +.br +.RI "Read in double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_double_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_double_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_double_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D double type field\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_int\fP (this, varname, ilength, field)" +.br +.RI "Read in integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_int_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D integer variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_int_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_int_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_real\fP (this, varname, ilength, field)" +.br +.RI "Read in real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_real_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_real_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_real_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Read in 3D real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_short\fP (this, varname, ilength, field)" +.br +.RI "Read in short type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_short_1d\fP (this, varname, nd1, field)" +.br +.RI "Read in 1D short type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::get_var_nc_short_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Read in 2D short type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::handle_err\fP (this, status)" +.br +.RI "Handle netCDF errors\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::open_nc\fP (this, filename, action, debug_level)" +.br +.RI "Open a netcdf file, set initial debug level\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_char\fP (this, varname, ilength, field)" +.br +.RI "Replace character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_char_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_char_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_char_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D character type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_double\fP (this, varname, ilength, field)" +.br +.RI "Replace double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_double_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_double_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_double_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D double type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_int\fP (this, varname, ilength, field)" +.br +.RI "Replace integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_int_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_int_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_int_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D integer type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_real\fP (this, varname, ilength, field)" +.br +.RI "Replace real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_real_1d\fP (this, varname, nd1, field)" +.br +.RI "Replace 1D real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_real_2d\fP (this, varname, nd1, nd2, field)" +.br +.RI "Replace 2D real type variable\&. " +.ti -1c +.RI "subroutine \fBmodule_ncio::replace_var_nc_real_3d\fP (this, varname, nd1, nd2, nd3, field)" +.br +.RI "Replace 3D real type variable\&. " +.in -1c +.SH "Detailed Description" +.PP +Functions to read and write netcdf files\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Ming Hu +.RE +.PP +\fBDate:\fP +.RS 4 +2017-11-01 +.RE +.PP + +.PP +Definition in file \fBmodule_ncio\&.f90\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_ncio_ncio.3 b/ver-1.11.0/fvcom_tools/man/man3/module_ncio_ncio.3 new file mode 100644 index 000000000..c91437cc2 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_ncio_ncio.3 @@ -0,0 +1,948 @@ +.TH "module_ncio::ncio" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +module_ncio::ncio +.SH SYNOPSIS +.br +.PP +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "generic \fBadd_new_var\fP => \fBadd_new_var_2d\fP, \fBadd_new_var_3d\fP" +.br +.RI "Add a new 2d or 3d variable to ouput file\&. " +.ti -1c +.RI "procedure \fBadd_new_var_2d\fP" +.br +.RI "Add a new 2d variable to output file\&. " +.ti -1c +.RI "procedure \fBadd_new_var_3d\fP" +.br +.RI "Add a new 3d variable to output file\&. " +.ti -1c +.RI "procedure \fBclose\fP => \fBclose_nc\fP" +.br +.RI "Close netCDF file\&. " +.ti -1c +.RI "procedure \fBconvert_theta2t_2dgrid\fP" +.br +.RI "Convert theta T (Kelvin) to T (deg C)\&. " +.ti -1c +.RI "generic \fBget_att\fP => \fBget_att_nc_int\fP, \fBget_att_nc_real\fP, \fBget_att_nc_string\fP" +.br +.RI "Get attribute\&. " +.ti -1c +.RI "procedure \fBget_att_nc_int\fP" +.br +.RI "Get attribute\&. " +.ti -1c +.RI "procedure \fBget_att_nc_real\fP" +.br +.RI "Get attribute\&. " +.ti -1c +.RI "procedure \fBget_att_nc_string\fP" +.br +.RI "Get attribute\&. " +.ti -1c +.RI "procedure \fBget_dim\fP => \fBget_dim_nc\fP" +.br +.RI "read in dimension from the nc file " +.ti -1c +.RI "generic \fBget_var\fP => \fBget_var_nc_double_1d\fP, \fBget_var_nc_double_2d\fP, \fBget_var_nc_double_3d\fP, \fBget_var_nc_real_1d\fP, \fBget_var_nc_real_2d\fP, \fBget_var_nc_real_3d\fP, \fBget_var_nc_short_1d\fP, \fBget_var_nc_short_2d\fP, \fBget_var_nc_int_1d\fP, \fBget_var_nc_int_2d\fP, \fBget_var_nc_int_3d\fP, \fBget_var_nc_char_1d\fP, \fBget_var_nc_char_2d\fP, \fBget_var_nc_char_3d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_char\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_char_1d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_char_2d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_char_3d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_double\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_double_1d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_double_2d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_double_3d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_int\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_int_1d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_int_2d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_int_3d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_real\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_real_1d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_real_2d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_real_3d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_short\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_short_1d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBget_var_nc_short_2d\fP" +.br +.RI "Read in a 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBhandle_err\fP" +.br +.RI "Handle netCDF errors\&. " +.ti -1c +.RI "procedure \fBopen\fP => \fBopen_nc\fP" +.br +.RI "Open netCDF file\&. " +.ti -1c +.RI "generic \fBreplace_var\fP => \fBreplace_var_nc_double_1d\fP, \fBreplace_var_nc_double_2d\fP, \fBreplace_var_nc_double_3d\fP, \fBreplace_var_nc_real_1d\fP, \fBreplace_var_nc_real_2d\fP, \fBreplace_var_nc_real_3d\fP, \fBreplace_var_nc_int_1d\fP, \fBreplace_var_nc_int_2d\fP, \fBreplace_var_nc_int_3d\fP, \fBreplace_var_nc_char_1d\fP, \fBreplace_var_nc_char_2d\fP, \fBreplace_var_nc_char_3d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_char\fP" +.br +.RI "Replace character type variable\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_char_1d\fP" +.br +.RI "Replace character type variable\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_char_2d\fP" +.br +.RI "Replace character type variable\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_char_3d\fP" +.br +.RI "Replace 3D character type variable\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_double\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_double_1d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_double_2d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_double_3d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_int\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_int_1d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_int_2d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_int_3d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_real\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_real_1d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_real_2d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.ti -1c +.RI "procedure \fBreplace_var_nc_real_3d\fP" +.br +.RI "Replace 1d, 2d, 3d, or 4d field from the nc file\&. " +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "integer \fBdebug_level\fP" +.br +.RI "Debug level\&. " +.ti -1c +.RI "character(len=40), dimension(4) \fBdimname\fP" +.br +.RI "Name of dims\&. " +.ti -1c +.RI "integer, dimension(4) \fBends\fP" +.br +.RI "Counts of dims\&. " +.ti -1c +.RI "character(len=256) \fBfilename\fP" +.br +.RI "Name of data file\&. " +.ti -1c +.RI "integer \fBncid\fP" +.br +.RI "File ID\&. " +.ti -1c +.RI "integer \fBndims\fP" +.br +.RI "Number of dims\&. " +.ti -1c +.RI "integer \fBstatus\fP" +.br +.RI "Return code\&. " +.ti -1c +.RI "integer \fBxtype\fP" +.br +.RI "Type of data\&. " +.in -1c +.SH "Detailed Description" +.PP +Definition at line 16 of file module_ncio\&.f90\&. +.SH "Member Function/Subroutine Documentation" +.PP +.SS "generic module_ncio::ncio::add_new_var ()\fC [private]\fP" + +.PP +Add a new 2d or 3d variable to ouput file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 88 of file module_ncio\&.f90\&. +.PP +References module_ncio::add_new_var_2d(), and module_ncio::add_new_var_3d()\&. +.SS "procedure module_ncio::ncio::add_new_var_2d ()\fC [private]\fP" + +.PP +Add a new 2d variable to output file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 90 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::add_new_var_3d ()\fC [private]\fP" + +.PP +Add a new 3d variable to output file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 91 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::close ()\fC [private]\fP" + +.PP +Close netCDF file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 28 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::convert_theta2t_2dgrid ()\fC [private]\fP" + +.PP +Convert theta T (Kelvin) to T (deg C)\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 87 of file module_ncio\&.f90\&. +.SS "generic module_ncio::ncio::get_att ()\fC [private]\fP" + +.PP +Get attribute\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 30 of file module_ncio\&.f90\&. +.PP +References module_ncio::get_att_nc_int(), module_ncio::get_att_nc_real(), and module_ncio::get_att_nc_string()\&. +.SS "procedure module_ncio::ncio::get_att_nc_int ()\fC [private]\fP" + +.PP +Get attribute\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 31 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_att_nc_real ()\fC [private]\fP" + +.PP +Get attribute\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 32 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_att_nc_string ()\fC [private]\fP" + +.PP +Get attribute\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 33 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_dim ()\fC [private]\fP" + +.PP +read in dimension from the nc file +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 29 of file module_ncio\&.f90\&. +.SS "generic module_ncio::ncio::get_var ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 34 of file module_ncio\&.f90\&. +.PP +References module_ncio::get_var_nc_char_1d(), module_ncio::get_var_nc_char_2d(), module_ncio::get_var_nc_char_3d(), module_ncio::get_var_nc_double_1d(), module_ncio::get_var_nc_double_2d(), module_ncio::get_var_nc_double_3d(), module_ncio::get_var_nc_int_1d(), module_ncio::get_var_nc_int_2d(), module_ncio::get_var_nc_int_3d(), module_ncio::get_var_nc_real_1d(), module_ncio::get_var_nc_real_2d(), module_ncio::get_var_nc_real_3d(), module_ncio::get_var_nc_short_1d(), and module_ncio::get_var_nc_short_2d()\&. +.SS "procedure module_ncio::ncio::get_var_nc_char ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 58 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_char_1d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 59 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_char_2d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 60 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_char_3d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 61 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_double ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 54 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_double_1d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 55 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_double_2d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 56 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_double_3d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 57 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_int ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 46 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_int_1d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 47 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_int_2d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 48 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_int_3d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 49 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_real ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 50 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_real_1d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 51 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_real_2d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 52 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_real_3d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 53 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_short ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 43 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_short_1d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 44 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::get_var_nc_short_2d ()\fC [private]\fP" + +.PP +Read in a 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 45 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::handle_err ()\fC [private]\fP" + +.PP +Handle netCDF errors\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 86 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::open ()\fC [private]\fP" + +.PP +Open netCDF file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 27 of file module_ncio\&.f90\&. +.SS "generic module_ncio::ncio::replace_var ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 62 of file module_ncio\&.f90\&. +.PP +References module_ncio::replace_var_nc_char_1d(), module_ncio::replace_var_nc_char_2d(), module_ncio::replace_var_nc_char_3d(), module_ncio::replace_var_nc_double_1d(), module_ncio::replace_var_nc_double_2d(), module_ncio::replace_var_nc_double_3d(), module_ncio::replace_var_nc_int_1d(), module_ncio::replace_var_nc_int_2d(), module_ncio::replace_var_nc_int_3d(), module_ncio::replace_var_nc_real_1d(), module_ncio::replace_var_nc_real_2d(), and module_ncio::replace_var_nc_real_3d()\&. +.SS "procedure module_ncio::ncio::replace_var_nc_char ()\fC [private]\fP" + +.PP +Replace character type variable\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 82 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_char_1d ()\fC [private]\fP" + +.PP +Replace character type variable\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 83 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_char_2d ()\fC [private]\fP" + +.PP +Replace character type variable\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 84 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_char_3d ()\fC [private]\fP" + +.PP +Replace 3D character type variable\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 85 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_double ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 78 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_double_1d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 79 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_double_2d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 80 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_double_3d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 81 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_int ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 70 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_int_1d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 71 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_int_2d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 72 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_int_3d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 73 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_real ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 74 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_real_1d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 75 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_real_2d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 76 of file module_ncio\&.f90\&. +.SS "procedure module_ncio::ncio::replace_var_nc_real_3d ()\fC [private]\fP" + +.PP +Replace 1d, 2d, 3d, or 4d field from the nc file\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 77 of file module_ncio\&.f90\&. +.SH "Field Documentation" +.PP +.SS "integer module_ncio::ncio::debug_level\fC [private]\fP" + +.PP +Debug level\&. +.PP +Definition at line 20 of file module_ncio\&.f90\&. +.SS "character(len=40), dimension(4) module_ncio::ncio::dimname\fC [private]\fP" + +.PP +Name of dims\&. +.PP +Definition at line 25 of file module_ncio\&.f90\&. +.SS "integer, dimension(4) module_ncio::ncio::ends\fC [private]\fP" + +.PP +Counts of dims\&. +.PP +Definition at line 23 of file module_ncio\&.f90\&. +.SS "character(len=256) module_ncio::ncio::filename\fC [private]\fP" + +.PP +Name of data file\&. +.PP +Definition at line 17 of file module_ncio\&.f90\&. +.SS "integer module_ncio::ncio::ncid\fC [private]\fP" + +.PP +File ID\&. +.PP +Definition at line 18 of file module_ncio\&.f90\&. +.SS "integer module_ncio::ncio::ndims\fC [private]\fP" + +.PP +Number of dims\&. +.PP +Definition at line 22 of file module_ncio\&.f90\&. +.SS "integer module_ncio::ncio::status\fC [private]\fP" + +.PP +Return code\&. +.PP +Definition at line 19 of file module_ncio\&.f90\&. +.SS "integer module_ncio::ncio::xtype\fC [private]\fP" + +.PP +Type of data\&. +.PP +Definition at line 24 of file module_ncio\&.f90\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/module_nwp.3 new file mode 100644 index 000000000..67edbed1b --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_nwp.3 @@ -0,0 +1,224 @@ +.TH "module_nwp" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +module_nwp \- This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBfcst_nwp\fP" +.br +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBfinish_nwp\fP (this, itype, wcstart)" +.br +.RI "Finish and deallocate\&. " +.ti -1c +.RI "subroutine \fBget_time_ind_nwp\fP (this, filename, instr, outindex)" +.br +.RI "This subroutine searches the FVCOM 'Times' variable and returns the matching index\&. " +.ti -1c +.RI "subroutine \fBinitial_nwp\fP (this, itype, wcstart)" +.br +.RI "This subroutine defines the number of variables and their names for each NWP data type\&. " +.ti -1c +.RI "subroutine \fBlist_initial_nwp\fP (this)" +.br +.RI "This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine\&. " +.ti -1c +.RI "subroutine \fBread_nwp\fP (this, filename, itype, wcstart, numlon, numlat, numtimes, time_to_get, mask, sst, ice, sfcT, iceT, sfcTl, zorl, hice, ybegin, yend)" +.br +.RI "This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "type(\fBncio\fP) \fBncdata\fP" +.br +.RI "Wrapper object for netCDF data file\&. " +.in -1c +.SH "Detailed Description" +.PP +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\&. +.PP +This script is strongly based upon Eric James' (ESRL/GSL) work with HRRR/WRF to get FVCOM data into the model\&. +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL, +.RE +.PP +\fBDate:\fP +.RS 4 +17 Aug 2020 +.RE +.PP + +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine module_nwp::finish_nwp (class(\fBfcst_nwp\fP) this, character(len=6), intent(in) itype, character(len=4), intent(in) wcstart)\fC [private]\fP" + +.PP +Finish and deallocate\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP \fBfcst_nwp\fP object +.br +\fIitype\fP either ' FVCOM' or 'FV3LAM' +.br +\fIwcstart\fP either 'warm' or 'cold'\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP + +.PP +Definition at line 440 of file module_nwp\&.f90\&. +.SS "subroutine module_nwp::get_time_ind_nwp (class(\fBfcst_nwp\fP) this, character(len=*), intent(in) filename, character(len=*), intent(in) instr, integer, intent(out) outindex)\fC [private]\fP" + +.PP +This subroutine searches the FVCOM 'Times' variable and returns the matching index\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP \fBfcst_nwp\fP ojbect +.br +\fIfilename\fP netcdf file name +.br +\fIinstr\fP string of requested time +.br +\fIoutindex\fP int index that matches instr +.RE +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP + +.PP +Definition at line 488 of file module_nwp\&.f90\&. +.PP +References ncdata\&. +.SS "subroutine module_nwp::initial_nwp (class(\fBfcst_nwp\fP) this, character(len=6), intent(in) itype, character(len=4), intent(in) wcstart)\fC [private]\fP" + +.PP +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\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP \fBfcst_nwp\fP object +.br +\fIitype\fP either ' FVCOM' or 'FV3LAM'\&. +.br +\fIwcstart\fP either 'warm' or 'cold'\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP + +.PP +Definition at line 89 of file module_nwp\&.f90\&. +.SS "subroutine module_nwp::list_initial_nwp (class(\fBfcst_nwp\fP) this)\fC [private]\fP" + +.PP +This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP \fBfcst_nwp\fP object +.RE +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP + +.PP +Definition at line 215 of file module_nwp\&.f90\&. +.SS "subroutine module_nwp::read_nwp (class(\fBfcst_nwp\fP) this, character(len=*), intent(in) filename, character(len=6), intent(in) itype, character(len=4), intent(in) wcstart, integer, intent(inout) numlon, integer, intent(inout) numlat, integer, intent(inout) numtimes, integer, intent(in) time_to_get, real(r_single), dimension(:,:), intent(inout) mask, real(r_single), dimension(:,:), intent(inout) sst, real(r_single), dimension(:,:), intent(inout) ice, real(r_single), dimension(:,:), intent(inout) sfcT, real(r_single), dimension(:,:), intent(inout) iceT, real(r_single), dimension(:,:), intent(inout) sfcTl, real(r_single), dimension(:,:), intent(inout) zorl, real(r_single), dimension(:,:), intent(inout) hice, integer, intent(in) ybegin, integer, intent(in) yend)\fC [private]\fP" + +.PP +This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data\&. +.PP +\fBParameters:\fP +.RS 4 +\fIthis\fP \fBfcst_nwp\fP ojbect +.br +\fIfilename\fP netcdf file name +.br +\fIitype\fP either ' FVCOM' or 'FV3LAM' +.br +\fIwcstart\fP either 'warm' or 'cold'\&. +.br +\fInumlon\fP number of grid points in x-direction +.br +\fInumlat\fP number of grid poinst in y-direction +.br +\fInumtimes\fP length of time dimension +.br +\fItime_to_get\fP integer of time dimension to read in +.br +\fImask\fP Water points mask +.br +\fIsst\fP Water surface temperature +.br +\fIice\fP Ice concentration (%) +.br +\fIsfcT\fP Skin Temperature +.br +\fIiceT\fP Ice Skin Temperature +.br +\fIsfcTl\fP Skin Temperature in restart file +.br +\fIzorl\fP Surface roughness length +.br +\fIhice\fP Ice thickness +.br +\fIybegin\fP Start grid point in Y direction for the domain +.br +\fIyend\fP End grid point in Y direction for the domain +.RE +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP + +.PP +Definition at line 259 of file module_nwp\&.f90\&. +.PP +References ncdata\&. +.SH "Variable Documentation" +.PP +.SS "type(\fBncio\fP) module_nwp::ncdata\fC [private]\fP" + +.PP +Wrapper object for netCDF data file\&. +.PP +Definition at line 75 of file module_nwp\&.f90\&. +.PP +Referenced by get_time_ind_nwp(), and read_nwp()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_nwp.f90.3 b/ver-1.11.0/fvcom_tools/man/man3/module_nwp.f90.3 new file mode 100644 index 000000000..4a57fd579 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_nwp.f90.3 @@ -0,0 +1,78 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_nwp.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_nwp.f90 \- Defines FV3LAM and FVCOM forecast data structure\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBmodule_nwp::fcst_nwp\fP" +.br +.in -1c +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fBmodule_nwp\fP" +.br +.RI "This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures\&. " +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBmodule_nwp::finish_nwp\fP (this, itype, wcstart)" +.br +.RI "Finish and deallocate\&. " +.ti -1c +.RI "subroutine \fBmodule_nwp::get_time_ind_nwp\fP (this, filename, instr, outindex)" +.br +.RI "This subroutine searches the FVCOM 'Times' variable and returns the matching index\&. " +.ti -1c +.RI "subroutine \fBmodule_nwp::initial_nwp\fP (this, itype, wcstart)" +.br +.RI "This subroutine defines the number of variables and their names for each NWP data type\&. " +.ti -1c +.RI "subroutine \fBmodule_nwp::list_initial_nwp\fP (this)" +.br +.RI "This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine\&. " +.ti -1c +.RI "subroutine \fBmodule_nwp::read_nwp\fP (this, filename, itype, wcstart, numlon, numlat, numtimes, time_to_get, mask, sst, ice, sfcT, iceT, sfcTl, zorl, hice, ybegin, yend)" +.br +.RI "This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "type(ncio) \fBmodule_nwp::ncdata\fP" +.br +.RI "Wrapper object for netCDF data file\&. " +.in -1c +.SH "Detailed Description" +.PP +Defines FV3LAM and FVCOM forecast data structure\&. + + +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL, +.RE +.PP +\fBDate:\fP +.RS 4 +17 Aug 2020 +.RE +.PP + +.PP +Definition in file \fBmodule_nwp\&.f90\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/module_nwp_fcst_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/module_nwp_fcst_nwp.3 new file mode 100644 index 000000000..d88bc44ab --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/module_nwp_fcst_nwp.3 @@ -0,0 +1,482 @@ +.TH "module_nwp::fcst_nwp" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +module_nwp::fcst_nwp +.SH SYNOPSIS +.br +.PP +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "procedure \fBfinish\fP => \fBfinish_nwp\fP" +.br +.RI "Finish and deallocate\&. " +.ti -1c +.RI "procedure \fBget_time_ind\fP => \fBget_time_ind_nwp\fP" +.br +.RI "Get time ind\&. " +.ti -1c +.RI "procedure \fBinitial\fP => \fBinitial_nwp\fP" +.br +.RI "Defines vars and names\&. " +.ti -1c +.RI "procedure \fBlist_initial\fP => \fBlist_initial_nwp\fP" +.br +.RI "List the setup\&. " +.ti -1c +.RI "procedure \fBread_n\fP => \fBread_nwp\fP" +.br +.RI "Initialize arrays, get data\&. " +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "character(len=6) \fBdatatype\fP" +.br +.RI "Data type\&. " +.ti -1c +.RI "integer \fBdatelen\fP" +.br +.RI "Length of date string\&. " +.ti -1c +.RI "character(len=20), allocatable \fBdimnamedate\fP" +.br +.RI "String dimension name\&. " +.ti -1c +.RI "character(len=20), allocatable \fBdimnameew\fP" +.br +.RI "East/West dimension name\&. " +.ti -1c +.RI "character(len=20), allocatable \fBdimnamens\fP" +.br +.RI "North/South dimension name\&. " +.ti -1c +.RI "character(len=20), allocatable \fBdimnametime\fP" +.br +.RI "Time dimension name\&. " +.ti -1c +.RI "integer \fBi_hice\fP" +.br +.RI "Index of ice thickness\&. " +.ti -1c +.RI "integer \fBi_ice\fP" +.br +.RI "Index of ice var\&. " +.ti -1c +.RI "integer \fBi_icet\fP" +.br +.RI "Index of ice temp var\&. " +.ti -1c +.RI "integer \fBi_mask\fP" +.br +.RI "Is var visible (always 1)\&. " +.ti -1c +.RI "integer \fBi_sfct\fP" +.br +.RI "Index of sst temp var\&. " +.ti -1c +.RI "integer \fBi_sfctl\fP" +.br +.RI "Index of sfcTl\&. " +.ti -1c +.RI "integer \fBi_sst\fP" +.br +.RI "Index of sst var\&. " +.ti -1c +.RI "integer \fBi_zorl\fP" +.br +.RI "Index of surface roughness\&. " +.ti -1c +.RI "character(len=20), allocatable \fBlatname\fP" +.br +.RI "Latitude name\&. " +.ti -1c +.RI "character(len=20), allocatable \fBlonname\fP" +.br +.RI "Longitude name\&. " +.ti -1c +.RI "integer \fBnumvar\fP" +.br +.RI "Number of variabls\&. " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_hice_c\fP" +.br +.RI "cold start ice thickness " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_hice_w\fP" +.br +.RI "warm start ice thickness " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_ice_c\fP" +.br +.RI "cold start over water ice concentration 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_ice_w\fP" +.br +.RI "warm start over water ice concentration 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_icet_c\fP" +.br +.RI "cold start ice skin temperature 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_icet_w\fP" +.br +.RI "warm start ice skin temperature 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_mask_c\fP" +.br +.RI "cold start land/water mask 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_mask_w\fP" +.br +.RI "warm start land/water mask 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_sfct_c\fP" +.br +.RI "cold start skin temperature 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_sfct_w\fP" +.br +.RI "warm start skin temperature 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_sfctl_w\fP" +.br +.RI "warm start skin temperature 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_sst_c\fP" +.br +.RI "cold start sst 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_sst_w\fP" +.br +.RI "warm start sst 3d array " +.ti -1c +.RI "real(r_single), dimension(:,:,:), allocatable \fBnwp_zorl_c\fP" +.br +.RI "cold start surface roughness " +.ti -1c +.RI "real(r_single), dimension(:,:), allocatable \fBnwp_zorl_w\fP" +.br +.RI "warm start surface roughness " +.ti -1c +.RI "character(len=1), dimension(:,:), allocatable \fBtimes\fP" +.br +.RI "Array of times in FVCOM\&. " +.ti -1c +.RI "character(len=20), dimension(:), allocatable \fBvarnames\fP" +.br +.RI "Variable names\&. " +.ti -1c +.RI "integer \fBxlat\fP" +.br +.RI "Number of latitudes\&. " +.ti -1c +.RI "integer \fBxlon\fP" +.br +.RI "Number of longitudes\&. " +.ti -1c +.RI "integer \fBxtime\fP" +.br +.RI "Number of times\&. " +.in -1c +.SH "Detailed Description" +.PP +Definition at line 26 of file module_nwp\&.f90\&. +.SH "Member Function/Subroutine Documentation" +.PP +.SS "procedure module_nwp::fcst_nwp::finish ()\fC [private]\fP" + +.PP +Finish and deallocate\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 72 of file module_nwp\&.f90\&. +.SS "procedure module_nwp::fcst_nwp::get_time_ind ()\fC [private]\fP" + +.PP +Get time ind\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 71 of file module_nwp\&.f90\&. +.SS "procedure module_nwp::fcst_nwp::initial ()\fC [private]\fP" + +.PP +Defines vars and names\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 68 of file module_nwp\&.f90\&. +.SS "procedure module_nwp::fcst_nwp::list_initial ()\fC [private]\fP" + +.PP +List the setup\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 69 of file module_nwp\&.f90\&. +.SS "procedure module_nwp::fcst_nwp::read_n ()\fC [private]\fP" + +.PP +Initialize arrays, get data\&. +.PP +\fBReturns:\fP +.RS 4 + +.RE +.PP + +.PP +Definition at line 70 of file module_nwp\&.f90\&. +.SH "Field Documentation" +.PP +.SS "character(len=6) module_nwp::fcst_nwp::datatype\fC [private]\fP" + +.PP +Data type\&. +.PP +Definition at line 27 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::datelen\fC [private]\fP" + +.PP +Length of date string\&. +.PP +Definition at line 32 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::dimnamedate\fC [private]\fP" + +.PP +String dimension name\&. +.PP +Definition at line 47 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::dimnameew\fC [private]\fP" + +.PP +East/West dimension name\&. +.PP +Definition at line 44 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::dimnamens\fC [private]\fP" + +.PP +North/South dimension name\&. +.PP +Definition at line 45 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::dimnametime\fC [private]\fP" + +.PP +Time dimension name\&. +.PP +Definition at line 46 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_hice\fC [private]\fP" + +.PP +Index of ice thickness\&. +.PP +Definition at line 40 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_ice\fC [private]\fP" + +.PP +Index of ice var\&. +.PP +Definition at line 35 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_icet\fC [private]\fP" + +.PP +Index of ice temp var\&. +.PP +Definition at line 37 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_mask\fC [private]\fP" + +.PP +Is var visible (always 1)\&. +.PP +Definition at line 33 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_sfct\fC [private]\fP" + +.PP +Index of sst temp var\&. +.PP +Definition at line 36 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_sfctl\fC [private]\fP" + +.PP +Index of sfcTl\&. +.PP +Definition at line 38 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_sst\fC [private]\fP" + +.PP +Index of sst var\&. +.PP +Definition at line 34 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::i_zorl\fC [private]\fP" + +.PP +Index of surface roughness\&. +.PP +Definition at line 39 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::latname\fC [private]\fP" + +.PP +Latitude name\&. +.PP +Definition at line 42 of file module_nwp\&.f90\&. +.SS "character(len=20), allocatable module_nwp::fcst_nwp::lonname\fC [private]\fP" + +.PP +Longitude name\&. +.PP +Definition at line 43 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::numvar\fC [private]\fP" + +.PP +Number of variabls\&. +.PP +Definition at line 28 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_hice_c\fC [private]\fP" + +.PP +cold start ice thickness +.PP +Definition at line 56 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_hice_w\fC [private]\fP" + +.PP +warm start ice thickness +.PP +Definition at line 65 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_ice_c\fC [private]\fP" + +.PP +cold start over water ice concentration 3d array +.PP +Definition at line 52 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_ice_w\fC [private]\fP" + +.PP +warm start over water ice concentration 3d array +.PP +Definition at line 60 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_icet_c\fC [private]\fP" + +.PP +cold start ice skin temperature 3d array +.PP +Definition at line 54 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_icet_w\fC [private]\fP" + +.PP +warm start ice skin temperature 3d array +.PP +Definition at line 62 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_mask_c\fC [private]\fP" + +.PP +cold start land/water mask 3d array +.PP +Definition at line 50 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_mask_w\fC [private]\fP" + +.PP +warm start land/water mask 3d array +.PP +Definition at line 58 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_sfct_c\fC [private]\fP" + +.PP +cold start skin temperature 3d array +.PP +Definition at line 53 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sfct_w\fC [private]\fP" + +.PP +warm start skin temperature 3d array +.PP +Definition at line 61 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sfctl_w\fC [private]\fP" + +.PP +warm start skin temperature 3d array +.PP +Definition at line 63 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_sst_c\fC [private]\fP" + +.PP +cold start sst 3d array +.PP +Definition at line 51 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sst_w\fC [private]\fP" + +.PP +warm start sst 3d array +.PP +Definition at line 59 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_zorl_c\fC [private]\fP" + +.PP +cold start surface roughness +.PP +Definition at line 55 of file module_nwp\&.f90\&. +.SS "real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_zorl_w\fC [private]\fP" + +.PP +warm start surface roughness +.PP +Definition at line 64 of file module_nwp\&.f90\&. +.SS "character(len=1), dimension(:,:), allocatable module_nwp::fcst_nwp::times\fC [private]\fP" + +.PP +Array of times in FVCOM\&. +.PP +Definition at line 48 of file module_nwp\&.f90\&. +.SS "character(len=20), dimension(:), allocatable module_nwp::fcst_nwp::varnames\fC [private]\fP" + +.PP +Variable names\&. +.PP +Definition at line 41 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::xlat\fC [private]\fP" + +.PP +Number of latitudes\&. +.PP +Definition at line 29 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::xlon\fC [private]\fP" + +.PP +Number of longitudes\&. +.PP +Definition at line 30 of file module_nwp\&.f90\&. +.SS "integer module_nwp::fcst_nwp::xtime\fC [private]\fP" + +.PP +Number of times\&. +.PP +Definition at line 31 of file module_nwp\&.f90\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/ncdata.3 b/ver-1.11.0/fvcom_tools/man/man3/ncdata.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/ncdata.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/ncid.3 b/ver-1.11.0/fvcom_tools/man/man3/ncid.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/ncid.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/ndims.3 b/ver-1.11.0/fvcom_tools/man/man3/ndims.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/ndims.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/numvar.3 b/ver-1.11.0/fvcom_tools/man/man3/numvar.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/numvar.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_hice_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_ice_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_icet_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_mask_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfct_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_sfctl_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfctl_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_sfctl_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_sst_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_c.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_c.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_c.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_w.3 b/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_w.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/nwp_zorl_w.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/open.3 b/ver-1.11.0/fvcom_tools/man/man3/open.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/open.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/open_nc.3 b/ver-1.11.0/fvcom_tools/man/man3/open_nc.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/open_nc.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.3 b/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.3 new file mode 100644 index 000000000..6f8d666ae --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.3 @@ -0,0 +1 @@ +.so man3/process_FVCOM.f90.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.f90.3 b/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.f90.3 new file mode 100644 index 000000000..72f1433cc --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/process_FVCOM.f90.3 @@ -0,0 +1,63 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/process_FVCOM.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "fvcom_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/process_FVCOM.f90 \- This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data\&.nc\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "program \fBprocess_FVCOM\fP" +.br +.RI "Put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data\&.nc\&. " +.in -1c +.SH "Detailed Description" +.PP +This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data\&.nc\&. + + +.PP +Definition in file \fBprocess_FVCOM\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "program process_FVCOM ()" + +.PP +Put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data\&.nc\&. This script will take four variables from the command line: +.IP "1." 4 +Name of FV3 sfc data file (e\&.g\&. sfc_data\&.tile7\&.halo0\&.nc) +.IP "2." 4 +Name of FVCOM data file (e\&.g\&. fvcom\&.nc) +.IP "3." 4 +'warm' or 'cold' start\&. 'warm' start will read in sfc_data\&.nc files generated from a restart of UFS-SRW\&. 'cold' start will read in sfc_data\&.nc files generated from chgres_cube\&. +.IP "4." 4 +String of time slice to use in the fvcom\&.nc file\&. This string should match exactly what is in the Times variable of the \&.nc file\&. To run the script, use the following example, modifying file names as needed: \&./fvcom_to_FV3 sfc_data\&.tile7\&.halo0\&.nc fvcom\&.nc cold \\ 2020-01-31T18:00:00\&.000000 Code is strongly based upon Eric James' (ESRL/GSL) work to update HRRR/WRF Great Lakes' temperature data with FVCOM\&. Code also relies heavily on Ming Hu's ncio module\&. +.PP +.PP +\fBAuthor:\fP +.RS 4 +David Wright, University of Michigan and GLERL +.RE +.PP +\fBDate:\fP +.RS 4 +17 Aug 2020 +.RE +.PP +\fBReturns:\fP +.RS 4 +0 for success, error code otherwise +.RE +.PP + +.PP +Definition at line 32 of file process_FVCOM\&.f90\&. +.PP +References kinds::i_kind, kinds::r_kind, and kinds::r_single\&. +.SH "Author" +.PP +Generated automatically by Doxygen for fvcom_tools from the source code\&. diff --git a/ver-1.11.0/fvcom_tools/man/man3/r_kind.3 b/ver-1.11.0/fvcom_tools/man/man3/r_kind.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/r_kind.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/r_single.3 b/ver-1.11.0/fvcom_tools/man/man3/r_single.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/r_single.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/read_n.3 b/ver-1.11.0/fvcom_tools/man/man3/read_n.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/read_n.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/read_nwp.3 b/ver-1.11.0/fvcom_tools/man/man3/read_nwp.3 new file mode 100644 index 000000000..d330c296d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/read_nwp.3 @@ -0,0 +1 @@ +.so man3/module_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_char_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_double_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_int_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_1d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_1d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_1d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_2d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_2d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_2d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_3d.3 b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_3d.3 new file mode 100644 index 000000000..94de65c24 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/replace_var_nc_real_3d.3 @@ -0,0 +1 @@ +.so man3/module_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/rmissing.3 b/ver-1.11.0/fvcom_tools/man/man3/rmissing.3 new file mode 100644 index 000000000..1817041f9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/rmissing.3 @@ -0,0 +1 @@ +.so man3/kinds.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/status.3 b/ver-1.11.0/fvcom_tools/man/man3/status.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/status.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/times.3 b/ver-1.11.0/fvcom_tools/man/man3/times.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/times.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/varnames.3 b/ver-1.11.0/fvcom_tools/man/man3/varnames.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/varnames.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/xlat.3 b/ver-1.11.0/fvcom_tools/man/man3/xlat.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/xlat.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/xlon.3 b/ver-1.11.0/fvcom_tools/man/man3/xlon.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/xlon.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/xtime.3 b/ver-1.11.0/fvcom_tools/man/man3/xtime.3 new file mode 100644 index 000000000..499fa59d3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/xtime.3 @@ -0,0 +1 @@ +.so man3/module_nwp_fcst_nwp.3 diff --git a/ver-1.11.0/fvcom_tools/man/man3/xtype.3 b/ver-1.11.0/fvcom_tools/man/man3/xtype.3 new file mode 100644 index 000000000..2c877edc8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/man/man3/xtype.3 @@ -0,0 +1 @@ +.so man3/module_ncio_ncio.3 diff --git a/ver-1.11.0/fvcom_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html b/ver-1.11.0/fvcom_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html new file mode 100644 index 000000000..6f65d92b7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html @@ -0,0 +1,106 @@ + + + + + + + +fvcom_tools: README + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    README
    +
    +
    +

    This program replaces lake surface and lake ice temperature along with aerial ice concentration generated from the Great Lakes Operational Forecast System (GLOFS) into the model surface restart file.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/menu.js b/ver-1.11.0/fvcom_tools/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/fvcom_tools/menudata.js b/ver-1.11.0/fvcom_tools/menudata.js new file mode 100644 index 000000000..5d3f50237 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/menudata.js @@ -0,0 +1,98 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html",children:[ +{text:"a",url:"namespacemembers_func.html#index_a"}, +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"f",url:"namespacemembers_func.html#index_f"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"h",url:"namespacemembers_func.html#index_h"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"o",url:"namespacemembers_func.html#index_o"}, +{text:"r",url:"namespacemembers_func.html#index_r"}]}, +{text:"Variables",url:"namespacemembers_vars.html"}]}]}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"v",url:"functions.html#index_v"}, +{text:"x",url:"functions.html#index_x"}]}, +{text:"Functions/Subroutines",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"r",url:"functions_func.html#index_r"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"x",url:"functions_vars.html#index_x"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/fvcom_tools/module__ncio_8f90.html b/ver-1.11.0/fvcom_tools/module__ncio_8f90.html new file mode 100644 index 000000000..632691e75 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__ncio_8f90.html @@ -0,0 +1,270 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_ncio.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_ncio.f90 File Reference
    +
    +
    + +

    Functions to read and write netcdf files. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Data Types

    type  module_ncio::ncio
     
    + + + + +

    +Modules

    module  module_ncio
     Functions to read and write netcdf files.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine module_ncio::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 module_ncio::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 module_ncio::close_nc (this)
     Close a netcdf file. More...
     
    subroutine module_ncio::convert_theta2t_2dgrid (this, nx, ny, ps, t2)
     Convert theta T (Kelvin) to T (deg C). More...
     
    subroutine module_ncio::get_att_nc_int (this, attname, ival)
     Get integer attribute in wrf netcdf file. More...
     
    subroutine module_ncio::get_att_nc_real (this, attname, rval)
     Get attribute in wrf netcdf file. More...
     
    subroutine module_ncio::get_att_nc_string (this, attname, string)
     Get string attribute in wrf netcdf file. More...
     
    subroutine module_ncio::get_dim_nc (this, dimname, dimvalue)
     Get dimensions in netcdf file. More...
     
    subroutine module_ncio::get_var_nc_char (this, varname, ilength, field)
     Read in character type variable. More...
     
    subroutine module_ncio::get_var_nc_char_1d (this, varname, nd1, field)
     Read in 1D character type variable. More...
     
    subroutine module_ncio::get_var_nc_char_2d (this, varname, nd1, nd2, field)
     Read in 2D character type variable. More...
     
    subroutine module_ncio::get_var_nc_char_3d (this, varname, nd1, nd2, nd3, field)
     Read in 3D character type variable. More...
     
    subroutine module_ncio::get_var_nc_double (this, varname, ilength, field)
     Read in double type variable. More...
     
    subroutine module_ncio::get_var_nc_double_1d (this, varname, nd1, field)
     Read in 1D double type variable. More...
     
    subroutine module_ncio::get_var_nc_double_2d (this, varname, nd1, nd2, field)
     Read in 2D double type variable. More...
     
    subroutine module_ncio::get_var_nc_double_3d (this, varname, nd1, nd2, nd3, field)
     Read in 3D double type field. More...
     
    subroutine module_ncio::get_var_nc_int (this, varname, ilength, field)
     Read in integer type variable. More...
     
    subroutine module_ncio::get_var_nc_int_1d (this, varname, nd1, field)
     Read in 1D integer variable. More...
     
    subroutine module_ncio::get_var_nc_int_2d (this, varname, nd1, nd2, field)
     Read in 2D integer type variable. More...
     
    subroutine module_ncio::get_var_nc_int_3d (this, varname, nd1, nd2, nd3, field)
     Read in 3D integer type variable. More...
     
    subroutine module_ncio::get_var_nc_real (this, varname, ilength, field)
     Read in real type variable. More...
     
    subroutine module_ncio::get_var_nc_real_1d (this, varname, nd1, field)
     Read in 1D real type variable. More...
     
    subroutine module_ncio::get_var_nc_real_2d (this, varname, nd1, nd2, field)
     Read in 2D real type variable. More...
     
    subroutine module_ncio::get_var_nc_real_3d (this, varname, nd1, nd2, nd3, field)
     Read in 3D real type variable. More...
     
    subroutine module_ncio::get_var_nc_short (this, varname, ilength, field)
     Read in short type variable. More...
     
    subroutine module_ncio::get_var_nc_short_1d (this, varname, nd1, field)
     Read in 1D short type variable. More...
     
    subroutine module_ncio::get_var_nc_short_2d (this, varname, nd1, nd2, field)
     Read in 2D short type variable. More...
     
    subroutine module_ncio::handle_err (this, status)
     Handle netCDF errors. More...
     
    subroutine module_ncio::open_nc (this, filename, action, debug_level)
     Open a netcdf file, set initial debug level. More...
     
    subroutine module_ncio::replace_var_nc_char (this, varname, ilength, field)
     Replace character type variable. More...
     
    subroutine module_ncio::replace_var_nc_char_1d (this, varname, nd1, field)
     Replace 1D character type variable. More...
     
    subroutine module_ncio::replace_var_nc_char_2d (this, varname, nd1, nd2, field)
     Replace 2D character type variable. More...
     
    subroutine module_ncio::replace_var_nc_char_3d (this, varname, nd1, nd2, nd3, field)
     Replace 3D character type variable. More...
     
    subroutine module_ncio::replace_var_nc_double (this, varname, ilength, field)
     Replace double type variable. More...
     
    subroutine module_ncio::replace_var_nc_double_1d (this, varname, nd1, field)
     Replace 1D double type variable. More...
     
    subroutine module_ncio::replace_var_nc_double_2d (this, varname, nd1, nd2, field)
     Replace 2D double type variable. More...
     
    subroutine module_ncio::replace_var_nc_double_3d (this, varname, nd1, nd2, nd3, field)
     Replace 3D double type variable. More...
     
    subroutine module_ncio::replace_var_nc_int (this, varname, ilength, field)
     Replace integer type variable. More...
     
    subroutine module_ncio::replace_var_nc_int_1d (this, varname, nd1, field)
     Replace 1D integer type variable. More...
     
    subroutine module_ncio::replace_var_nc_int_2d (this, varname, nd1, nd2, field)
     Replace 2D integer type variable. More...
     
    subroutine module_ncio::replace_var_nc_int_3d (this, varname, nd1, nd2, nd3, field)
     Replace 3D integer type variable. More...
     
    subroutine module_ncio::replace_var_nc_real (this, varname, ilength, field)
     Replace real type variable. More...
     
    subroutine module_ncio::replace_var_nc_real_1d (this, varname, nd1, field)
     Replace 1D real type variable. More...
     
    subroutine module_ncio::replace_var_nc_real_2d (this, varname, nd1, nd2, field)
     Replace 2D real type variable. More...
     
    subroutine module_ncio::replace_var_nc_real_3d (this, varname, nd1, nd2, nd3, field)
     Replace 3D real type variable. More...
     
    +

    Detailed Description

    +

    Functions to read and write netcdf files.

    +
    Author
    Ming Hu
    +
    Date
    2017-11-01
    + +

    Definition in file module_ncio.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/module__ncio_8f90.js b/ver-1.11.0/fvcom_tools/module__ncio_8f90.js new file mode 100644 index 000000000..aa465228e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__ncio_8f90.js @@ -0,0 +1,49 @@ +var module__ncio_8f90 = +[ + [ "ncio", "structmodule__ncio_1_1ncio.html", "structmodule__ncio_1_1ncio" ], + [ "add_new_var_2d", "module__ncio_8f90.html#a3a5af221792e9c4677e778f995b4c673", null ], + [ "add_new_var_3d", "module__ncio_8f90.html#afcf167057aef272b73e9ee7136930e51", null ], + [ "close_nc", "module__ncio_8f90.html#a61ba2044f4a26a3fee7c6f7e25b4d4c3", null ], + [ "convert_theta2t_2dgrid", "module__ncio_8f90.html#ab234b47224611d258c57578d613a1d2b", null ], + [ "get_att_nc_int", "module__ncio_8f90.html#a0a31d1f98726c06ae2c74053df76e1be", null ], + [ "get_att_nc_real", "module__ncio_8f90.html#a575af68b4565afe52a34671127407ef0", null ], + [ "get_att_nc_string", "module__ncio_8f90.html#a666be87b95a2c3807b0edaac5c57638d", null ], + [ "get_dim_nc", "module__ncio_8f90.html#aaa941aaa7fff66951506b34e126efc94", null ], + [ "get_var_nc_char", "module__ncio_8f90.html#a37faa5d6ec80c3dc0e7cacda8f5b579c", null ], + [ "get_var_nc_char_1d", "module__ncio_8f90.html#aadf4411fb333fe1b2ad4191e11d93b5a", null ], + [ "get_var_nc_char_2d", "module__ncio_8f90.html#a395da74b11c6bea87f1ec19435d0caa6", null ], + [ "get_var_nc_char_3d", "module__ncio_8f90.html#a7acfdd829c3a921115edd071f5371246", null ], + [ "get_var_nc_double", "module__ncio_8f90.html#a62c566792058619f4c173cd5c02f35c4", null ], + [ "get_var_nc_double_1d", "module__ncio_8f90.html#ad6153b922e38c5fc8e92a0f82ec05de1", null ], + [ "get_var_nc_double_2d", "module__ncio_8f90.html#a70d11ffb02c66bb27a184dcd3fb8c62a", null ], + [ "get_var_nc_double_3d", "module__ncio_8f90.html#a329e9332e11c76879ace7219891e8832", null ], + [ "get_var_nc_int", "module__ncio_8f90.html#a1431a7935b2021fd2339ffce497ef6a9", null ], + [ "get_var_nc_int_1d", "module__ncio_8f90.html#a58b95b5efe6f468982852b1b1fe19847", null ], + [ "get_var_nc_int_2d", "module__ncio_8f90.html#af1b2922f691a13497ad9b896d4be3bfa", null ], + [ "get_var_nc_int_3d", "module__ncio_8f90.html#abde7c8af6a716eeccfcfbec98154ea1d", null ], + [ "get_var_nc_real", "module__ncio_8f90.html#a7bb09b9a8f7d19757a3d91860efa198f", null ], + [ "get_var_nc_real_1d", "module__ncio_8f90.html#ac864bbfce29e8d61c5b953da69d6cfc0", null ], + [ "get_var_nc_real_2d", "module__ncio_8f90.html#a33b8a7f2aa67aa4fad971deedd05be4c", null ], + [ "get_var_nc_real_3d", "module__ncio_8f90.html#ace5963c01dcbe1adb0a69dfd4a748151", null ], + [ "get_var_nc_short", "module__ncio_8f90.html#a6169988ed61eaed28a960889df99bd14", null ], + [ "get_var_nc_short_1d", "module__ncio_8f90.html#a06d93e176941656f77e431bc682b4d01", null ], + [ "get_var_nc_short_2d", "module__ncio_8f90.html#a0a94b937458cba21e4aaad6fe46c2ed8", null ], + [ "handle_err", "module__ncio_8f90.html#a9b2fa53702df8148f74e94bc10a04b5a", null ], + [ "open_nc", "module__ncio_8f90.html#aec222d5cf92989f3472d4a161866a5c8", null ], + [ "replace_var_nc_char", "module__ncio_8f90.html#a4d6c31878ed51f0ea0e82c293aa190c7", null ], + [ "replace_var_nc_char_1d", "module__ncio_8f90.html#a6c89908dc867d0cf935b7983ca0ef87d", null ], + [ "replace_var_nc_char_2d", "module__ncio_8f90.html#a20695cf6a6beb1117028831be139e56a", null ], + [ "replace_var_nc_char_3d", "module__ncio_8f90.html#a1b8b39f4af5134ede4b3fb00617b7fb0", null ], + [ "replace_var_nc_double", "module__ncio_8f90.html#a96b5f07fb7b6a3ead30f118c57ad013b", null ], + [ "replace_var_nc_double_1d", "module__ncio_8f90.html#a3c63a88ba20b584bf878258b830589fc", null ], + [ "replace_var_nc_double_2d", "module__ncio_8f90.html#a89052cf6ad0ae83f77e508251e2f3924", null ], + [ "replace_var_nc_double_3d", "module__ncio_8f90.html#a345c44b1d96cdddeb70ccebab6026938", null ], + [ "replace_var_nc_int", "module__ncio_8f90.html#a0a835228e31148b3ba945fba57fe804f", null ], + [ "replace_var_nc_int_1d", "module__ncio_8f90.html#ad04af9add949379d9a4b475af3d56940", null ], + [ "replace_var_nc_int_2d", "module__ncio_8f90.html#ac094a9984074f088754fc392e7d80450", null ], + [ "replace_var_nc_int_3d", "module__ncio_8f90.html#a488d0a16ecb0b877f003d6383231712c", null ], + [ "replace_var_nc_real", "module__ncio_8f90.html#af228f466b83468a56ae64932769b6e9a", null ], + [ "replace_var_nc_real_1d", "module__ncio_8f90.html#aec8faf445d41345677ef6cc3ce9cf7f8", null ], + [ "replace_var_nc_real_2d", "module__ncio_8f90.html#af5a5bf3fbb075259e68d17acea03fa95", null ], + [ "replace_var_nc_real_3d", "module__ncio_8f90.html#a9fa16fe14ec52e3cfaba1e0613d7420c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/module__ncio_8f90_source.html b/ver-1.11.0/fvcom_tools/module__ncio_8f90_source.html new file mode 100644 index 000000000..3ed52e596 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__ncio_8f90_source.html @@ -0,0 +1,152 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_ncio.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    module_ncio.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7 module module_ncio
    8 
    9  use netcdf
    10  implicit none
    11 
    12  public :: ncio
    13  ! set default to private
    14  private
    15  !
    16  type :: ncio
    17  character(len=256) :: filename
    18  integer :: ncid
    19  integer :: status
    20  integer :: debug_level
    21 
    22  integer :: ndims
    23  integer :: ends(4)
    24  integer :: xtype
    25  character(len=40) :: dimname(4)
    26  contains
    27  procedure :: open => open_nc
    28  procedure :: close => close_nc
    29  procedure :: get_dim => get_dim_nc
    31  procedure :: get_att_nc_int
    32  procedure :: get_att_nc_real
    33  procedure :: get_att_nc_string
    34  generic :: get_var => get_var_nc_double_1d, get_var_nc_double_2d, &
    43  procedure :: get_var_nc_short
    44  procedure :: get_var_nc_short_1d
    45  procedure :: get_var_nc_short_2d
    46  procedure :: get_var_nc_int
    47  procedure :: get_var_nc_int_1d
    48  procedure :: get_var_nc_int_2d
    49  procedure :: get_var_nc_int_3d
    50  procedure :: get_var_nc_real
    51  procedure :: get_var_nc_real_1d
    52  procedure :: get_var_nc_real_2d
    53  procedure :: get_var_nc_real_3d
    54  procedure :: get_var_nc_double
    55  procedure :: get_var_nc_double_1d
    56  procedure :: get_var_nc_double_2d
    57  procedure :: get_var_nc_double_3d
    58  procedure :: get_var_nc_char
    59  procedure :: get_var_nc_char_1d
    60  procedure :: get_var_nc_char_2d
    61  procedure :: get_var_nc_char_3d
    62  generic :: replace_var => replace_var_nc_double_1d, replace_var_nc_double_2d, &
    70  procedure :: replace_var_nc_int
    71  procedure :: replace_var_nc_int_1d
    72  procedure :: replace_var_nc_int_2d
    73  procedure :: replace_var_nc_int_3d
    74  procedure :: replace_var_nc_real
    78  procedure :: replace_var_nc_double
    82  procedure :: replace_var_nc_char
    86  procedure :: handle_err
    88  generic :: add_new_var => add_new_var_2d, &
    90  procedure :: add_new_var_2d
    91  procedure :: add_new_var_3d
    92  end type ncio
    93 
    94 contains
    95 
    103  subroutine open_nc(this,filename,action,debug_level)
    105  implicit none
    106  !
    107  class(ncio) :: this
    108  character(len=*),intent(in) :: filename
    109  character(len=1),intent(in) :: action
    110  integer,intent(in),optional :: debug_level
    111 
    112  integer :: ncid, status
    113 
    114  this%debug_level=20
    115  if(present(debug_level)) this%debug_level=debug_level
    116 
    117  this%filename=trim(filename)
    118  ! open existing netCDF dataset
    119  if(action=="r" .or. action=="R") then
    120  status = nf90_open(path = trim(filename), mode = nf90_nowrite, ncid = ncid)
    121  elseif(action=="w" .or. action=="W") then
    122  status = nf90_open(path = trim(filename), mode = nf90_write, ncid = ncid)
    123  else
    124  write(6,*) 'unknow action :', action
    125  stop 123
    126  endif
    127  if (status /= nf90_noerr) call this%handle_err(status)
    128  this%ncid=ncid
    129 
    130  if(this%debug_level>0) then
    131  write(6,*) '>>> open file: ',trim(this%filename)
    132  endif
    133 
    134  end subroutine open_nc
    135 
    140  subroutine close_nc(this)
    142  implicit none
    143  !
    144  class(ncio) :: this
    145 
    146  integer :: ncid, status
    147 
    148  ncid=this%ncid
    149  !
    150  ! close netCDF dataset
    151  status = nf90_close(ncid)
    152  if (status /= nf90_noerr) call this%handle_err(status)
    153 
    154  end subroutine close_nc
    155 
    162  subroutine get_att_nc_real(this,attname,rval)
    163  implicit none
    164  !
    165  class(ncio) :: this
    166  character(len=*),intent(in) :: attname
    167  real, intent(out) :: rval
    168 
    169  integer :: ncid, status
    170 
    171  ! open existing netCDF dataset
    172  ncid=this%ncid
    173 
    174  ! get date from exisiting NC file
    175  status = nf90_get_att(ncid, nf90_global, trim(attname), rval)
    176  if (status /= nf90_noerr) call this%handle_err(status)
    177  !
    178  end subroutine get_att_nc_real
    179 
    186  subroutine get_att_nc_int(this,attname,ival)
    187  implicit none
    188  !
    189  class(ncio) :: this
    190  character(len=*),intent(in) :: attname
    191  integer, intent(out) :: ival
    192 
    193  integer :: ncid, status
    194 
    195  ! open existing netCDF dataset
    196  ncid=this%ncid
    197 
    198  ! get date from exisiting NC file
    199  status = nf90_get_att(ncid, nf90_global, trim(attname), ival)
    200  if (status /= nf90_noerr) call this%handle_err(status)
    201  !
    202  end subroutine get_att_nc_int
    203 
    210  subroutine get_att_nc_string(this,attname,string)
    211  implicit none
    212  !
    213  class(ncio) :: this
    214  character(len=*),intent(in) :: attname
    215  character(len=*), intent(out) :: string
    216 
    217  integer :: ncid, status
    218 
    219  ! open existing netCDF dataset
    220  ncid=this%ncid
    221 
    222  ! get date from exisiting NC file
    223  status = nf90_get_att(ncid, nf90_global, trim(attname), string)
    224  if (status /= nf90_noerr) call this%handle_err(status)
    225  !
    226  end subroutine get_att_nc_string
    227 
    228 
    235  subroutine get_dim_nc(this,dimname,dimvalue)
    236  implicit none
    237  !
    238  class(ncio) :: this
    239  character(len=*), intent(in) :: dimname
    240  integer,intent(out) :: dimvalue
    241 
    242  integer :: ncid, status
    243  integer :: DimId
    244 
    245  ! open existing netCDF dataset
    246  ncid=this%ncid
    247 
    248  ! get dimension from exisiting NC file
    249  status = nf90_inq_dimid(ncid,trim(dimname), dimid)
    250  if (status /= nf90_noerr) call this%handle_err(status)
    251  status = nf90_inquire_dimension(ncid, dimid, len = dimvalue)
    252  if (status /= nf90_noerr) call this%handle_err(status)
    253  !
    254  end subroutine get_dim_nc
    255 
    263  subroutine replace_var_nc_char_1d(this,varname,nd1,field)
    265  use netcdf
    266  !
    267  implicit none
    268  !
    269  class(ncio) :: this
    270  character(len=*),intent(in) :: varname ! name of the field to read
    271  integer, intent(in) :: nd1 ! size of array dval
    272  character, intent(in) :: field(nd1) ! values of the field read in
    273  integer :: ilength
    274  !
    275  character*40,parameter :: thissubname='replace_var_nc_char_1d'
    276  !
    277  integer :: i
    278  !
    279  !
    280  ilength=nd1
    281  !
    282  if(this%debug_level>100) then
    283  write(6,*) trim(thissubname),' show samples:'
    284  write(6,*) (field(i),i=1,min(nd1,10))
    285  endif
    286 
    287  call this%replace_var_nc_char(varname,ilength,field)
    288  !
    289  end subroutine replace_var_nc_char_1d
    290 
    299  subroutine replace_var_nc_char_2d(this,varname,nd1,nd2,field)
    300  use netcdf
    301  !
    302  implicit none
    303  !
    304  class(ncio) :: this
    305  character(len=*),intent(in) :: varname ! name of the field to read
    306  integer, intent(in) :: nd1,nd2 ! size of array dval
    307  character, intent(in) :: field(nd1,nd2) ! values of the field read in
    308  integer :: ilength
    309  !
    310  character,allocatable :: temp(:)
    311  !
    312  character*40,parameter :: thissubname='replace_var_nc_char_2d'
    313  !
    314  integer :: i,j,k
    315  integer :: istart,iend
    316  !
    317  !
    318  ilength=nd1*nd2
    319  allocate(temp(ilength))
    320 
    321  do j=1,nd2
    322  istart=(j-1)*nd1+1
    323  iend=(j-1)*nd1+nd1
    324  temp(istart:iend)=field(:,j)
    325  enddo
    326  !
    327  if(this%debug_level>100) then
    328  write(6,*) trim(thissubname),' show samples:'
    329  write(6,*) field(1,1)
    330  endif
    331  !
    332  call this%replace_var_nc_char(varname,ilength,temp)
    333 
    334  deallocate(temp)
    335  !
    336  end subroutine replace_var_nc_char_2d
    337 
    347  subroutine replace_var_nc_char_3d(this,varname,nd1,nd2,nd3,field)
    348  use netcdf
    349  !
    350  implicit none
    351  !
    352  class(ncio) :: this
    353  character(len=*),intent(in) :: varname ! name of the field to read
    354  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    355  character, intent(in) :: field(nd1,nd2,nd3) ! values of the field read in
    356  integer :: ilength
    357  !
    358  character,allocatable :: temp(:)
    359  !
    360  character*40,parameter :: thissubname='replace_var_nc_char_3d'
    361  !
    362  integer :: i,j,k
    363  integer :: length2d
    364  integer :: istart,iend
    365  !
    366  !
    367  length2d=nd1*nd2
    368  ilength=length2d*nd3
    369  allocate(temp(ilength))
    370 
    371  do k=1,nd3
    372  do j=1,nd2
    373  istart=(k-1)*length2d+(j-1)*nd1+1
    374  iend =(k-1)*length2d+(j-1)*nd1+nd1
    375  temp(istart:iend)=field(:,j,k)
    376  enddo
    377  enddo
    378  !
    379  if(this%debug_level>100) then
    380  write(6,*) trim(thissubname),' show samples:'
    381  write(6,*) field(1,1,1)
    382  endif
    383 
    384  call this%replace_var_nc_char(varname,ilength,temp)
    385 
    386  deallocate(temp)
    387  !
    388  end subroutine replace_var_nc_char_3d
    389 
    397  subroutine replace_var_nc_char(this,varname,ilength,field)
    398  use netcdf
    399  !
    400  implicit none
    401  !
    402  class(ncio) :: this
    403  character(len=*),intent(in) :: varname ! name of the field to read
    404  integer, intent(in) :: ilength ! size of array dval
    405  character, intent(in) :: field(ilength) ! values of the field read in
    406  !
    407  integer :: ncid
    408  !
    409  integer :: status
    410  integer :: varid
    411  integer :: ends(4),start(4)
    412 
    413  integer :: length4d,length3d,length2d
    414  integer :: nDims,ndim
    415  integer :: dimids(4)
    416  integer :: xtype
    417  character*40 :: dimname
    418 
    419  character*40,parameter :: thissubname='replace_var_nc_char'
    420  !
    421  integer :: i,k
    422  !
    423  !
    424  ncid=this%ncid
    425 
    426  ! get variable IDs
    427  status = nf90_inq_varid(ncid, trim(varname), varid)
    428  if(status /= nf90_noerr) call this%handle_err(status)
    429 
    430  ! get dimensions
    431  ends=1
    432  start=1
    433  this%ends=1
    434 
    435  this%dimname=" "
    436  ! get variable type
    437  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    438  if(status /= nf90_noerr) call this%handle_err(status)
    439  if(xtype==nf90_char) then
    440  this%xtype=xtype
    441  else
    442  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_int,' but read in ',xtype
    443  stop 123
    444  endif
    445 
    446  ! get dimension size
    447  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    448  if(status /= nf90_noerr) call this%handle_err(status)
    449  this%ndims=ndims
    450  !
    451  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    452  if(status /= nf90_noerr) call this%handle_err(status)
    453  do i=1,ndims
    454  dimname=" "
    455  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    456  if (status /= nf90_noerr) call this%handle_err(status)
    457  ends(i)=ndim
    458  this%ends(i)=ends(i)
    459  this%dimname(i)=trim(dimname)
    460  if(this%ends(i) < 1) then
    461  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    462  stop 1234
    463  endif
    464  enddo
    465  length2d=ends(1)*ends(2)
    466  length3d=length2d*ends(3)
    467  length4d=length3d*ends(4)
    468  if(ilength .ne. length4d) then
    469  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    470  stop 123
    471  endif
    472  !
    473  if(ndims <=4 ) then
    474  status = nf90_put_var(ncid, varid, field, &
    475  start = start(1:4) , &
    476  count = ends(1:4))
    477  if(status /= nf90_noerr) call this%handle_err(status)
    478  else
    479  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    480  stop 1234
    481  endif
    482  !
    483  if(this%debug_level>0) then
    484  write(6,'(a,a)') '>>>replace variable: ',trim(varname)
    485  endif
    486  if(this%debug_level>10) then
    487  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    488  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    489  do i=1,this%nDims
    490  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    491  enddo
    492  endif
    493  !
    494  end subroutine replace_var_nc_char
    495  !--- replace_var_nc_char
    496 
    504  subroutine replace_var_nc_real_1d(this,varname,nd1,field)
    505  use netcdf
    506  !
    507  implicit none
    508  !
    509  class(ncio) :: this
    510  character(len=*),intent(in) :: varname ! name of the field to read
    511  integer, intent(in) :: nd1 ! size of array dval
    512  real(4), intent(in) :: field(nd1) ! values of the field read in
    513  integer :: ilength
    514  !
    515  character*40,parameter :: thissubname='replace_var_nc_real_1d'
    516  !
    517  integer :: i
    518  !
    519  !
    520  ilength=nd1
    521  !
    522  if(this%debug_level>100) then
    523  write(6,*) trim(thissubname),' show samples:'
    524  write(6,*) (field(i),i=1,min(nd1,10))
    525  endif
    526  !
    527  call this%replace_var_nc_real(varname,ilength,field)
    528  !
    529  end subroutine replace_var_nc_real_1d
    530 
    539  subroutine replace_var_nc_real_2d(this,varname,nd1,nd2,field)
    540  use netcdf
    541  !
    542  implicit none
    543  !
    544  class(ncio) :: this
    545  character(len=*),intent(in) :: varname ! name of the field to read
    546  integer, intent(in) :: nd1,nd2 ! size of array dval
    547  real(4), intent(in) :: field(nd1,nd2) ! values of the field read in
    548  integer :: ilength
    549  !
    550  real(4),allocatable :: temp(:)
    551  !
    552  character*40,parameter :: thissubname='replace_var_nc_real_2d'
    553  !
    554  integer :: i,j,k
    555  integer :: istart,iend
    556  !
    557  !
    558  ilength=nd1*nd2
    559  allocate(temp(ilength))
    560 
    561  do j=1,nd2
    562  istart=(j-1)*nd1+1
    563  iend=(j-1)*nd1+nd1
    564  temp(istart:iend)=field(:,j)
    565  enddo
    566  !
    567  if(this%debug_level>100) then
    568  write(6,*) trim(thissubname),' show samples:'
    569  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    570  endif
    571 
    572  call this%replace_var_nc_real(varname,ilength,temp)
    573 
    574  deallocate(temp)
    575  !
    576  end subroutine replace_var_nc_real_2d
    577 
    587  subroutine replace_var_nc_real_3d(this,varname,nd1,nd2,nd3,field)
    588  !
    589  ! read in one field
    590  !
    591  use netcdf
    592  !
    593  implicit none
    594  !
    595  class(ncio) :: this
    596  character(len=*),intent(in) :: varname ! name of the field to read
    597  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    598  real(4), intent(in) :: field(nd1,nd2,nd3) ! values of the field read in
    599  integer :: ilength
    600  !
    601  real(4),allocatable :: temp(:)
    602  !
    603  character*40,parameter :: thissubname='replace_var_nc_real_3d'
    604  !
    605  integer :: i,j,k
    606  integer :: length2d
    607  integer :: istart,iend
    608  !
    609  !
    610  length2d=nd1*nd2
    611  ilength=length2d*nd3
    612  allocate(temp(ilength))
    613 
    614  do k=1,nd3
    615  do j=1,nd2
    616  istart=(k-1)*length2d+(j-1)*nd1+1
    617  iend =(k-1)*length2d+(j-1)*nd1+nd1
    618  temp(istart:iend)=field(:,j,k)
    619  enddo
    620  enddo
    621  !
    622  if(this%debug_level>100) then
    623  write(6,*) trim(thissubname),' show samples:'
    624  do k=1,nd3
    625  write(6,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    626  enddo
    627  endif
    628 
    629  call this%replace_var_nc_real(varname,ilength,temp)
    630 
    631  deallocate(temp)
    632  !
    633  end subroutine replace_var_nc_real_3d
    634 
    642  subroutine replace_var_nc_real(this,varname,ilength,field)
    643  use netcdf
    644  !
    645  implicit none
    646  !
    647  class(ncio) :: this
    648  character(len=*),intent(in) :: varname ! name of the field to read
    649  integer, intent(in) :: ilength ! size of array dval
    650  real(4), intent(in) :: field(ilength) ! values of the field read in
    651  !
    652  integer :: ncid
    653  !
    654  integer :: status
    655  integer :: varid
    656  integer :: ends(4),start(4)
    657 
    658  integer :: length4d,length3d,length2d
    659  integer :: nDims,ndim
    660  integer :: dimids(4)
    661  integer :: xtype
    662  character*40 :: dimname
    663 
    664  character*40,parameter :: thissubname='replace_var_nc_real'
    665  !
    666  integer :: i,k
    667  !
    668  !
    669  ncid=this%ncid
    670 
    671  ! get variable IDs
    672  status = nf90_inq_varid(ncid, trim(varname), varid)
    673  if(status /= nf90_noerr) call this%handle_err(status)
    674 
    675  ! get dimensions
    676  ends=1
    677  start=1
    678  this%ends=1
    679 
    680  this%dimname=" "
    681  ! get variable type
    682  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    683  if(status /= nf90_noerr) call this%handle_err(status)
    684  if(xtype==nf90_float) then
    685  this%xtype=xtype
    686  else
    687  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_int,' but read in ',xtype
    688  stop 123
    689  endif
    690 
    691  ! get dimension size
    692  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    693  if(status /= nf90_noerr) call this%handle_err(status)
    694  this%ndims=ndims
    695  !
    696  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    697  if(status /= nf90_noerr) call this%handle_err(status)
    698  do i=1,ndims
    699  dimname=" "
    700  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    701  if (status /= nf90_noerr) call this%handle_err(status)
    702  ends(i)=ndim
    703  this%ends(i)=ends(i)
    704  this%dimname(i)=trim(dimname)
    705  if(this%ends(i) < 1) then
    706  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    707  stop 1234
    708  endif
    709  enddo
    710  length2d=ends(1)*ends(2)
    711  length3d=length2d*ends(3)
    712  length4d=length3d*ends(4)
    713  if(ilength .ne. length4d) then
    714  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    715  stop 123
    716  endif
    717  !
    718  if(ndims <=4 ) then
    719  status = nf90_put_var(ncid, varid, field, &
    720  start = start(1:4) , &
    721  count = ends(1:4))
    722  if(status /= nf90_noerr) call this%handle_err(status)
    723  else
    724  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    725  stop 1234
    726  endif
    727  !
    728  if(this%debug_level>0) then
    729  write(6,'(a,a)') '>>>replace variable: ',trim(varname)
    730  endif
    731  if(this%debug_level>10) then
    732  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    733  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    734  do i=1,this%nDims
    735  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    736  enddo
    737  endif
    738  !
    739  end subroutine replace_var_nc_real
    740 
    748  subroutine replace_var_nc_double_1d(this,varname,nd1,field)
    749  !
    750  ! read in one field
    751  !
    752  use netcdf
    753  !
    754  implicit none
    755  !
    756  class(ncio) :: this
    757  character(len=*),intent(in) :: varname ! name of the field to read
    758  integer, intent(in) :: nd1 ! size of array dval
    759  real(8), intent(in) :: field(nd1) ! values of the field read in
    760  integer :: ilength
    761  !
    762  character*40,parameter :: thissubname='replace_var_nc_double_1d'
    763  !
    764  integer :: i
    765  !
    766  !
    767  ilength=nd1
    768  !
    769  if(this%debug_level>100) then
    770  write(6,*) trim(thissubname),' show samples:'
    771  write(6,*) (field(i),i=1,min(nd1,10))
    772  endif
    773  !
    774  call this%replace_var_nc_double(varname,ilength,field)
    775  !
    776  end subroutine replace_var_nc_double_1d
    777 
    786  subroutine replace_var_nc_double_2d(this,varname,nd1,nd2,field)
    787  !
    788  ! read in one field
    789  !
    790  use netcdf
    791  !
    792  implicit none
    793  !
    794  class(ncio) :: this
    795  character(len=*),intent(in) :: varname ! name of the field to read
    796  integer, intent(in) :: nd1,nd2 ! size of array dval
    797  real(8), intent(in) :: field(nd1,nd2) ! values of the field read in
    798  integer :: ilength
    799  !
    800  real(8),allocatable :: temp(:)
    801  !
    802  character*40,parameter :: thissubname='replace_var_nc_double_2d'
    803  !
    804  integer :: i,j,k
    805  integer :: istart,iend
    806  !
    807  !
    808  ilength=nd1*nd2
    809  allocate(temp(ilength))
    810 
    811  do j=1,nd2
    812  istart=(j-1)*nd1+1
    813  iend=(j-1)*nd1+nd1
    814  temp(istart:iend)=field(:,j)
    815  enddo
    816  !
    817  if(this%debug_level>100) then
    818  write(6,*) trim(thissubname),' show samples:'
    819  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    820  endif
    821 
    822  call this%replace_var_nc_double(varname,ilength,temp)
    823 
    824  deallocate(temp)
    825  !
    826  end subroutine replace_var_nc_double_2d
    827 
    837  subroutine replace_var_nc_double_3d(this,varname,nd1,nd2,nd3,field)
    838  !
    839  ! read in one field
    840  !
    841  use netcdf
    842  !
    843  implicit none
    844  !
    845  class(ncio) :: this
    846  character(len=*),intent(in) :: varname ! name of the field to read
    847  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    848  real(8), intent(in) :: field(nd1,nd2,nd3) ! values of the field read in
    849  integer :: ilength
    850  !
    851  real(8),allocatable :: temp(:)
    852  !
    853  character*40,parameter :: thissubname='replace_var_nc_double_3d'
    854  !
    855  integer :: i,j,k
    856  integer :: length2d
    857  integer :: istart,iend
    858  !
    859  !
    860  length2d=nd1*nd2
    861  ilength=length2d*nd3
    862  allocate(temp(ilength))
    863 
    864  do k=1,nd3
    865  do j=1,nd2
    866  istart=(k-1)*length2d+(j-1)*nd1+1
    867  iend =(k-1)*length2d+(j-1)*nd1+nd1
    868  temp(istart:iend)=field(:,j,k)
    869  enddo
    870  enddo
    871  !
    872  if(this%debug_level>100) then
    873  write(6,*) trim(thissubname),' show samples:'
    874  do k=1,nd3
    875  write(6,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    876  enddo
    877  endif
    878 
    879  call this%replace_var_nc_double(varname,ilength,temp)
    880 
    881  deallocate(temp)
    882  !
    883  end subroutine replace_var_nc_double_3d
    884  !
    885 
    893  subroutine replace_var_nc_double(this,varname,ilength,field)
    894  use netcdf
    895  !
    896  implicit none
    897  !
    898  class(ncio) :: this
    899  character(len=*),intent(in) :: varname ! name of the field to read
    900  integer, intent(in) :: ilength ! size of array dval
    901  real(8), intent(in) :: field(ilength) ! values of the field read in
    902  !
    903  integer :: ncid
    904  !
    905  integer :: status
    906  integer :: varid
    907  integer :: ends(4),start(4)
    908 
    909  integer :: length4d,length3d,length2d
    910  integer :: nDims,ndim
    911  integer :: dimids(4)
    912  integer :: xtype
    913  character*40 :: dimname
    914 
    915  character*40,parameter :: thissubname='replace_var_nc_double'
    916  !
    917  integer :: i,k
    918  !
    919  !
    920  ncid=this%ncid
    921 
    922  ! get variable IDs
    923  status = nf90_inq_varid(ncid, trim(varname), varid)
    924  if(status /= nf90_noerr) call this%handle_err(status)
    925 
    926  ! get dimensions
    927  ends=1
    928  start=1
    929  this%ends=1
    930 
    931  this%dimname=" "
    932  ! get variable type
    933  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    934  if(status /= nf90_noerr) call this%handle_err(status)
    935  if(xtype==nf90_double) then
    936  this%xtype=xtype
    937  else
    938  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_int,' but read in ',xtype
    939  stop 123
    940  endif
    941 
    942  ! get dimension size
    943  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    944  if(status /= nf90_noerr) call this%handle_err(status)
    945  this%ndims=ndims
    946  !
    947  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    948  if(status /= nf90_noerr) call this%handle_err(status)
    949  do i=1,ndims
    950  dimname=" "
    951  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    952  if (status /= nf90_noerr) call this%handle_err(status)
    953  ends(i)=ndim
    954  this%ends(i)=ends(i)
    955  this%dimname(i)=trim(dimname)
    956  if(this%ends(i) < 1) then
    957  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    958  stop 1234
    959  endif
    960  enddo
    961  length2d=ends(1)*ends(2)
    962  length3d=length2d*ends(3)
    963  length4d=length3d*ends(4)
    964  if(ilength .ne. length4d) then
    965  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    966  stop 123
    967  endif
    968  !
    969  if(ndims <=4 ) then
    970  status = nf90_put_var(ncid, varid, field, &
    971  start = start(1:4) , &
    972  count = ends(1:4))
    973  if(status /= nf90_noerr) call this%handle_err(status)
    974  else
    975  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    976  stop 1234
    977  endif
    978  !
    979  if(this%debug_level>0) then
    980  write(6,'(a,a)') '>>>replace variable: ',trim(varname)
    981  endif
    982  if(this%debug_level>10) then
    983  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    984  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    985  do i=1,this%nDims
    986  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    987  enddo
    988  endif
    989  !
    990  end subroutine replace_var_nc_double
    991 
    999  subroutine replace_var_nc_int_1d(this,varname,nd1,field)
    1000  use netcdf
    1001  !
    1002  implicit none
    1003  !
    1004  class(ncio) :: this
    1005  character(len=*),intent(in) :: varname ! name of the field to read
    1006  integer, intent(in) :: nd1 ! size of array dval
    1007  integer, intent(in) :: field(nd1) ! values of the field read in
    1008  integer :: ilength
    1009  !
    1010  character*40,parameter :: thissubname='get_var_nc_int_1d'
    1011  !
    1012  integer :: i
    1013  !
    1014  !
    1015  ilength=nd1
    1016  !
    1017  if(this%debug_level>100) then
    1018  write(6,*) trim(thissubname),' show samples:'
    1019  write(6,*) (field(i),i=1,min(nd1,10))
    1020  endif
    1021 
    1022  call this%replace_var_nc_int(varname,ilength,field)
    1023  !
    1024  end subroutine replace_var_nc_int_1d
    1025 
    1034  subroutine replace_var_nc_int_2d(this,varname,nd1,nd2,field)
    1035  !
    1036  ! read in one field
    1037  !
    1038  use netcdf
    1039  !
    1040  implicit none
    1041  !
    1042  class(ncio) :: this
    1043  character(len=*),intent(in) :: varname ! name of the field to read
    1044  integer, intent(in) :: nd1,nd2 ! size of array dval
    1045  integer, intent(in) :: field(nd1,nd2) ! values of the field read in
    1046  integer :: ilength
    1047  !
    1048  integer,allocatable :: temp(:)
    1049  !
    1050  character*40,parameter :: thissubname='replace_var_nc_int_2d'
    1051  !
    1052  integer :: i,j,k
    1053  integer :: istart,iend
    1054  !
    1055  !
    1056  ilength=nd1*nd2
    1057  allocate(temp(ilength))
    1058 
    1059  do j=1,nd2
    1060  istart=(j-1)*nd1+1
    1061  iend=(j-1)*nd1+nd1
    1062  temp(istart:iend)=field(:,j)
    1063  enddo
    1064  !
    1065  if(this%debug_level>100) then
    1066  write(6,*) trim(thissubname),' show samples:'
    1067  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    1068  endif
    1069 
    1070  call this%replace_var_nc_int(varname,ilength,temp)
    1071 
    1072  deallocate(temp)
    1073  !
    1074  end subroutine replace_var_nc_int_2d
    1075 
    1085  subroutine replace_var_nc_int_3d(this,varname,nd1,nd2,nd3,field)
    1086  use netcdf
    1087  !
    1088  implicit none
    1089  !
    1090  class(ncio) :: this
    1091  character(len=*),intent(in) :: varname ! name of the field to read
    1092  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    1093  integer, intent(in) :: field(nd1,nd2,nd3) ! values of the field read in
    1094  integer :: ilength
    1095  !
    1096  integer,allocatable :: temp(:)
    1097  !
    1098  character*40,parameter :: thissubname='replace_var_nc_int_3d'
    1099  !
    1100  integer :: i,j,k
    1101  integer :: length2d
    1102  integer :: istart,iend
    1103  !
    1104  !
    1105  length2d=nd1*nd2
    1106  ilength=length2d*nd3
    1107  allocate(temp(ilength))
    1108 
    1109  do k=1,nd3
    1110  do j=1,nd2
    1111  istart=(k-1)*length2d+(j-1)*nd1+1
    1112  iend =(k-1)*length2d+(j-1)*nd1+nd1
    1113  temp(istart:iend)=field(:,j,k)
    1114  enddo
    1115  enddo
    1116  !
    1117  if(this%debug_level>100) then
    1118  write(6,*) trim(thissubname),' show samples:'
    1119  do k=1,nd3
    1120  write(6,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    1121  enddo
    1122  endif
    1123 
    1124  call this%replace_var_nc_int(varname,ilength,temp)
    1125 
    1126  deallocate(temp)
    1127  !
    1128  end subroutine replace_var_nc_int_3d
    1129 
    1137  subroutine replace_var_nc_int(this,varname,ilength,field)
    1138  use netcdf
    1139  !
    1140  implicit none
    1141  !
    1142  class(ncio) :: this
    1143  character(len=*),intent(in) :: varname ! name of the field to read
    1144  integer, intent(in) :: ilength ! size of array dval
    1145  integer, intent(in) :: field(ilength) ! values of the field read in
    1146  !
    1147  integer :: ncid
    1148  !
    1149  integer :: status
    1150  integer :: varid
    1151  integer :: ends(4),start(4)
    1152 
    1153  integer :: length4d,length3d,length2d
    1154  integer :: nDims,ndim
    1155  integer :: dimids(4)
    1156  integer :: xtype
    1157  character*40 :: dimname
    1158 
    1159  character*40,parameter :: thissubname='replace_var_nc_int'
    1160  !
    1161  integer :: i,k
    1162  !
    1163  !
    1164  ncid=this%ncid
    1165 
    1166  ! get variable IDs
    1167  status = nf90_inq_varid(ncid, trim(varname), varid)
    1168  if(status /= nf90_noerr) call this%handle_err(status)
    1169 
    1170  ! get dimensions
    1171  ends=1
    1172  start=1
    1173  this%ends=1
    1174 
    1175  this%dimname=" "
    1176  ! get variable type
    1177  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    1178  if(status /= nf90_noerr) call this%handle_err(status)
    1179  if(xtype==nf90_int) then
    1180  this%xtype=xtype
    1181  else
    1182  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_int,' but read in ',xtype
    1183  stop 123
    1184  endif
    1185 
    1186  ! get dimension size
    1187  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    1188  if(status /= nf90_noerr) call this%handle_err(status)
    1189  this%ndims=ndims
    1190  !
    1191  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    1192  if(status /= nf90_noerr) call this%handle_err(status)
    1193  do i=1,ndims
    1194  dimname=" "
    1195  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    1196  if (status /= nf90_noerr) call this%handle_err(status)
    1197  ends(i)=ndim
    1198  this%ends(i)=ends(i)
    1199  this%dimname(i)=trim(dimname)
    1200  if(this%ends(i) < 1) then
    1201  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    1202  stop 1234
    1203  endif
    1204  enddo
    1205  length2d=ends(1)*ends(2)
    1206  length3d=length2d*ends(3)
    1207  length4d=length3d*ends(4)
    1208  if(ilength .ne. length4d) then
    1209  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    1210  stop 123
    1211  endif
    1212  !
    1213  if(ndims <=4 ) then
    1214  status = nf90_put_var(ncid, varid, field, &
    1215  start = start(1:4) , &
    1216  count = ends(1:4))
    1217  if(status /= nf90_noerr) call this%handle_err(status)
    1218  else
    1219  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    1220  stop 1634
    1221  endif
    1222  !
    1223  if(this%debug_level>0) then
    1224  write(6,'(a,a)') '>>>replace variable: ',trim(varname)
    1225  endif
    1226  if(this%debug_level>10) then
    1227  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    1228  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    1229  do i=1,this%nDims
    1230  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    1231  enddo
    1232  endif
    1233  !
    1234  end subroutine replace_var_nc_int
    1235 
    1243  subroutine get_var_nc_double_1d(this,varname,nd1,field)
    1244  use netcdf
    1245  !
    1246  implicit none
    1247  !
    1248  class(ncio) :: this
    1249  character(len=*),intent(in) :: varname ! name of the field to read
    1250  integer, intent(in) :: nd1 ! size of array dval
    1251  real(8), intent(out) :: field(nd1) ! values of the field read in
    1252  integer :: ilength
    1253  !
    1254  character*40,parameter :: thissubname='get_var_nc_double_1d'
    1255  !
    1256  integer :: i
    1257  !
    1258  !
    1259  ilength=nd1
    1260  call this%get_var_nc_double(varname,ilength,field)
    1261  !
    1262  if(nd1==this%ends(1)) then
    1263  if(this%debug_level>100) then
    1264  write(6,*) trim(thissubname),' show samples:'
    1265  write(6,*) (field(i),i=1,min(nd1,10))
    1266  endif
    1267  else
    1268  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1269  endif
    1270  !
    1271  end subroutine get_var_nc_double_1d
    1272 
    1281  subroutine get_var_nc_double_2d(this,varname,nd1,nd2,field)
    1282  use netcdf
    1283  !
    1284  implicit none
    1285  !
    1286  class(ncio) :: this
    1287  character(len=*),intent(in) :: varname ! name of the field to read
    1288  integer, intent(in) :: nd1,nd2 ! size of array dval
    1289  real(8), intent(out) :: field(nd1,nd2) ! values of the field read in
    1290  integer :: ilength
    1291  !
    1292  real(8),allocatable :: temp(:)
    1293  !
    1294  character*40,parameter :: thissubname='get_var_nc_double_2d'
    1295  !
    1296  integer :: i,j,k
    1297  integer :: istart,iend
    1298  !
    1299  !
    1300  ilength=nd1*nd2
    1301  allocate(temp(ilength))
    1302 
    1303  call this%get_var_nc_double(varname,ilength,temp)
    1304 
    1305  if(nd1==this%ends(1) .and. nd2==this%ends(2)) then
    1306  do j=1,nd2
    1307  istart=(j-1)*nd1+1
    1308  iend=(j-1)*nd1+nd1
    1309  field(:,j)=temp(istart:iend)
    1310  enddo
    1311  !
    1312 ! if(this%debug_level>100) then
    1313 ! write(*,*) trim(thissubname),' show samples:'
    1314 ! write(*,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    1315 ! endif
    1316  else
    1317  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1318  write(6,*) nd1,this%ends(1),nd2,this%ends(2)
    1319  endif
    1320  deallocate(temp)
    1321  !
    1322  end subroutine get_var_nc_double_2d
    1323 
    1333  subroutine get_var_nc_double_3d(this,varname,nd1,nd2,nd3,field)
    1334  use netcdf
    1335  !
    1336  implicit none
    1337  !
    1338  class(ncio) :: this
    1339  character(len=*),intent(in) :: varname ! name of the field to read
    1340  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    1341  real(8), intent(out) :: field(nd1,nd2,nd3) ! values of the field read in
    1342  integer :: ilength
    1343  !
    1344  real(8),allocatable :: temp(:)
    1345  !
    1346  character*40,parameter :: thissubname='get_var_nc_double_3d'
    1347  !
    1348  integer :: i,j,k
    1349  integer :: length2d
    1350  integer :: istart,iend
    1351  !
    1352  !
    1353  length2d=nd1*nd2
    1354  ilength=length2d*nd3
    1355  allocate(temp(ilength))
    1356 
    1357  call this%get_var_nc_double(varname,ilength,temp)
    1358 
    1359  if(nd1==this%ends(1) .and. nd2==this%ends(2) .and. nd3==this%ends(3)) then
    1360  do k=1,nd3
    1361  do j=1,nd2
    1362  istart=(k-1)*length2d+(j-1)*nd1+1
    1363  iend =(k-1)*length2d+(j-1)*nd1+nd1
    1364  field(:,j,k)=temp(istart:iend)
    1365  enddo
    1366  enddo
    1367  !
    1368 ! if(this%debug_level>100) then
    1369 ! write(*,*) trim(thissubname),' show samples:'
    1370 ! do k=1,nd3
    1371 ! write(*,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    1372 ! enddo
    1373 ! endif
    1374  else
    1375  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1376  write(6,*) nd1,this%ends(1),nd2,this%ends(2),nd3,this%ends(3)
    1377  endif
    1378  deallocate(temp)
    1379  !
    1380  end subroutine get_var_nc_double_3d
    1381 
    1389  subroutine get_var_nc_double(this,varname,ilength,field)
    1390  use netcdf
    1391  !
    1392  implicit none
    1393  !
    1394  class(ncio) :: this
    1395  character(len=*),intent(in) :: varname ! name of the field to read
    1396  integer, intent(in) :: ilength ! size of array dval
    1397  real(8), intent(out) :: field(ilength) ! values of the field read in
    1398  !
    1399  integer :: ncid
    1400  !
    1401  integer :: status
    1402  integer :: varid
    1403  integer :: ends(4),start(4)
    1404 
    1405  integer :: length4d,length3d,length2d
    1406  integer :: nDims,ndim
    1407  integer :: dimids(4)
    1408  integer :: xtype
    1409  character*40 :: dimname
    1410 
    1411  character*40,parameter :: thissubname='get_var_nc_double'
    1412  !
    1413  integer :: i,k
    1414  !
    1415  !
    1416  ncid=this%ncid
    1417 
    1418  ! get variable IDs
    1419  status = nf90_inq_varid(ncid, trim(varname), varid)
    1420  if(status /= nf90_noerr) call this%handle_err(status)
    1421 
    1422  ! get dimensions
    1423  ends=1
    1424  start=1
    1425  this%ends=1
    1426 
    1427  this%dimname=" "
    1428  ! get variable type
    1429  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    1430  if(status /= nf90_noerr) call this%handle_err(status)
    1431  if(xtype==nf90_double) then
    1432  this%xtype=xtype
    1433  else
    1434  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_double,' but read in ',xtype
    1435  stop 123
    1436  endif
    1437 
    1438  ! get dimension size
    1439  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    1440  if(status /= nf90_noerr) call this%handle_err(status)
    1441  this%ndims=ndims
    1442  !
    1443  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    1444  if(status /= nf90_noerr) call this%handle_err(status)
    1445  do i=1,ndims
    1446  dimname=" "
    1447  write(6,*) 'dimids(i) = ', dimids(i)
    1448  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    1449  if (status /= nf90_noerr) call this%handle_err(status)
    1450  ends(i)=ndim
    1451  this%ends(i)=ends(i)
    1452  this%dimname(i)=trim(dimname)
    1453  if(this%ends(i) < 1) then
    1454  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    1455  stop 1234
    1456  endif
    1457  enddo
    1458  length2d=ends(1)*ends(2)
    1459  length3d=length2d*ends(3)
    1460  length4d=length3d*ends(4)
    1461  if(ilength .ne. length4d) then
    1462  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    1463  stop 123
    1464  endif
    1465  !
    1466  if(ndims <=4 ) then
    1467  status = nf90_get_var(ncid, varid, field, &
    1468  start = start(1:4) , &
    1469  count = ends(1:4))
    1470  if(status /= nf90_noerr) call this%handle_err(status)
    1471  else
    1472  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    1473  stop 1234
    1474  endif
    1475  !
    1476  if(this%debug_level>0) then
    1477  write(6,'(a,a)') '>>>read in variable: ',trim(varname)
    1478  endif
    1479  if(this%debug_level>10) then
    1480  write(6,'(a,I10)') ' data type : ',this%xtype
    1481  write(6,'(a,I10)')' dimension size: ',this%nDims
    1482  do i=1,this%nDims
    1483  write(6,'(a,I5,I10,2x,a)') ' rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    1484  enddo
    1485  endif
    1486  !
    1487  end subroutine get_var_nc_double
    1488 
    1496  subroutine get_var_nc_real_1d(this,varname,nd1,field)
    1497  use netcdf
    1498  !
    1499  implicit none
    1500  !
    1501  class(ncio) :: this
    1502  character(len=*),intent(in) :: varname ! name of the field to read
    1503  integer, intent(in) :: nd1 ! size of array dval
    1504  real(4), intent(out) :: field(nd1) ! values of the field read in
    1505  integer :: ilength
    1506  !
    1507  character*40,parameter :: thissubname='get_var_nc_real_1d'
    1508  !
    1509  integer :: i
    1510  !
    1511  !
    1512  ilength=nd1
    1513  call this%get_var_nc_real(varname,ilength,field)
    1514  !
    1515  if(nd1==this%ends(1)) then
    1516  if(this%debug_level>100) then
    1517  write(6,*) trim(thissubname),' show samples:'
    1518  write(6,*) (field(i),i=1,min(nd1,10))
    1519  endif
    1520  else
    1521  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1522  endif
    1523  !
    1524  end subroutine get_var_nc_real_1d
    1525 
    1534  subroutine get_var_nc_real_2d(this,varname,nd1,nd2,field)
    1535  !
    1536  ! read in one field
    1537  !
    1538  use netcdf
    1539  !
    1540  implicit none
    1541  !
    1542  class(ncio) :: this
    1543  character(len=*),intent(in) :: varname ! name of the field to read
    1544  integer, intent(in) :: nd1,nd2 ! size of array dval
    1545  real(4), intent(out) :: field(nd1,nd2) ! values of the field read in
    1546  integer :: ilength
    1547  !
    1548  real(4),allocatable :: temp(:)
    1549  !
    1550  character*40,parameter :: thissubname='get_var_nc_real_2d'
    1551  !
    1552  integer :: i,j,k
    1553  integer :: istart,iend
    1554  !
    1555  !
    1556  ilength=nd1*nd2
    1557  allocate(temp(ilength))
    1558 
    1559  call this%get_var_nc_real(varname,ilength,temp)
    1560 
    1561  if(nd1==this%ends(1) .and. nd2==this%ends(2)) then
    1562  do j=1,nd2
    1563  istart=(j-1)*nd1+1
    1564  iend=(j-1)*nd1+nd1
    1565  field(:,j)=temp(istart:iend)
    1566  enddo
    1567  !
    1568  if(this%debug_level>100) then
    1569  write(6,*) trim(thissubname),' show samples:'
    1570  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    1571  endif
    1572  else
    1573  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1574  write(6,*) nd1,this%ends(1),nd2,this%ends(2)
    1575  endif
    1576  deallocate(temp)
    1577  !
    1578  end subroutine get_var_nc_real_2d
    1579 
    1589  subroutine get_var_nc_real_3d(this,varname,nd1,nd2,nd3,field)
    1590  use netcdf
    1591  !
    1592  implicit none
    1593  !
    1594  class(ncio) :: this
    1595  character(len=*),intent(in) :: varname ! name of the field to read
    1596  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    1597  real(4), intent(out) :: field(nd1,nd2,nd3) ! values of the field read in
    1598  integer :: ilength
    1599  !
    1600  real(4),allocatable :: temp(:)
    1601  !
    1602  character*40,parameter :: thissubname='get_var_nc_real_3d'
    1603  !
    1604  integer :: i,j,k
    1605  integer :: length2d
    1606  integer :: istart,iend
    1607  !
    1608  !
    1609  length2d=nd1*nd2
    1610  ilength=length2d*nd3
    1611  allocate(temp(ilength))
    1612 
    1613  call this%get_var_nc_real(varname,ilength,temp)
    1614 
    1615  if(nd1==this%ends(1) .and. nd2==this%ends(2) .and. nd3==this%ends(3)) then
    1616  do k=1,nd3
    1617  do j=1,nd2
    1618  istart=(k-1)*length2d+(j-1)*nd1+1
    1619  iend =(k-1)*length2d+(j-1)*nd1+nd1
    1620  field(:,j,k)=temp(istart:iend)
    1621  enddo
    1622  enddo
    1623  !
    1624  if(this%debug_level>100) then
    1625  write(6,*) trim(thissubname),' show samples:'
    1626  do k=1,nd3
    1627  write(6,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    1628  enddo
    1629  endif
    1630  else
    1631  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1632  write(6,*) nd1,this%ends(1),nd2,this%ends(2),nd3,this%ends(3)
    1633  endif
    1634  deallocate(temp)
    1635  !
    1636  end subroutine get_var_nc_real_3d
    1637 
    1645  subroutine get_var_nc_real(this,varname,ilength,field)
    1646  !
    1647  ! read in one field
    1648  !
    1649  use netcdf
    1650  !
    1651  implicit none
    1652  !
    1653  class(ncio) :: this
    1654  character(len=*),intent(in) :: varname ! name of the field to read
    1655  integer, intent(in) :: ilength ! size of array dval
    1656  real(4), intent(out) :: field(ilength) ! values of the field read in
    1657  !
    1658  integer :: ncid
    1659  !
    1660  integer :: status
    1661  integer :: varid
    1662  integer :: ends(4),start(4)
    1663 
    1664  integer :: length4d,length3d,length2d
    1665  integer :: nDims,ndim
    1666  integer :: dimids(4)
    1667  integer :: xtype
    1668  character*40 :: dimname
    1669 
    1670  character*40,parameter :: thissubname='get_var_nc_real'
    1671  !
    1672  integer :: i,k
    1673  !
    1674  !
    1675  ncid=this%ncid
    1676 
    1677  ! get variable IDs
    1678  status = nf90_inq_varid(ncid, trim(varname), varid)
    1679  if(status /= nf90_noerr) call this%handle_err(status)
    1680 
    1681  ! get dimensions
    1682  ends=1
    1683  start=1
    1684  this%ends=1
    1685 
    1686  this%dimname=" "
    1687  ! get variable type
    1688  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    1689  if(status /= nf90_noerr) call this%handle_err(status)
    1690  if(xtype==nf90_float) then
    1691  this%xtype=xtype
    1692  else
    1693  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_float,' but read in ',xtype
    1694  stop 123
    1695  endif
    1696 
    1697  ! get dimension size
    1698  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    1699  if(status /= nf90_noerr) call this%handle_err(status)
    1700  this%ndims=ndims
    1701  !
    1702  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    1703  if(status /= nf90_noerr) call this%handle_err(status)
    1704  do i=1,ndims
    1705  dimname=" "
    1706  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    1707  if (status /= nf90_noerr) call this%handle_err(status)
    1708  ends(i)=ndim
    1709  this%ends(i)=ends(i)
    1710  this%dimname(i)=trim(dimname)
    1711  if(this%ends(i) < 1) then
    1712  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    1713  stop 1234
    1714  endif
    1715  enddo
    1716  length2d=ends(1)*ends(2)
    1717  length3d=length2d*ends(3)
    1718  length4d=length3d*ends(4)
    1719  if(ilength .ne. length4d) then
    1720  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    1721  stop 123
    1722  endif
    1723  !
    1724  if(ndims <=4 ) then
    1725  status = nf90_get_var(ncid, varid, field, &
    1726  start = start(1:4) , &
    1727  count = ends(1:4))
    1728  if(status /= nf90_noerr) call this%handle_err(status)
    1729  else
    1730  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    1731  stop 1234
    1732  endif
    1733  !
    1734  if(this%debug_level>0) then
    1735  write(6,'(a,a)') '>>>read in variable: ',trim(varname)
    1736  endif
    1737  if(this%debug_level>10) then
    1738  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    1739  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    1740  do i=1,this%nDims
    1741  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    1742  enddo
    1743  endif
    1744  !
    1745  end subroutine get_var_nc_real
    1746 
    1754  subroutine get_var_nc_int_1d(this,varname,nd1,field)
    1755  use netcdf
    1756  !
    1757  implicit none
    1758  !
    1759  class(ncio) :: this
    1760  character(len=*),intent(in) :: varname ! name of the field to read
    1761  integer, intent(in) :: nd1 ! size of array dval
    1762  integer, intent(out) :: field(nd1) ! values of the field read in
    1763  integer :: ilength
    1764  !
    1765  character*40,parameter :: thissubname='get_var_nc_int_1d'
    1766  !
    1767  integer :: i
    1768  !
    1769  !
    1770  ilength=nd1
    1771  call this%get_var_nc_int(varname,ilength,field)
    1772  !
    1773  if(nd1==this%ends(1)) then
    1774  if(this%debug_level>100) then
    1775  write(6,*) trim(thissubname),' show samples:'
    1776  write(6,*) (field(i),i=1,min(nd1,10))
    1777  endif
    1778  else
    1779  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1780  endif
    1781  !
    1782  end subroutine get_var_nc_int_1d
    1783 
    1792  subroutine get_var_nc_int_2d(this,varname,nd1,nd2,field)
    1793  !
    1794  ! read in one field
    1795  !
    1796  use netcdf
    1797  !
    1798  implicit none
    1799  !
    1800  class(ncio) :: this
    1801  character(len=*),intent(in) :: varname ! name of the field to read
    1802  integer, intent(in) :: nd1,nd2 ! size of array dval
    1803  integer, intent(out) :: field(nd1,nd2) ! values of the field read in
    1804  integer :: ilength
    1805  !
    1806  integer,allocatable :: temp(:)
    1807  !
    1808  character*40,parameter :: thissubname='get_var_nc_int_2d'
    1809  !
    1810  integer :: i,j,k
    1811  integer :: istart,iend
    1812  !
    1813  !
    1814  ilength=nd1*nd2
    1815  allocate(temp(ilength))
    1816 
    1817  call this%get_var_nc_int(varname,ilength,temp)
    1818 
    1819  if(nd1==this%ends(1) .and. nd2==this%ends(2)) then
    1820  do j=1,nd2
    1821  istart=(j-1)*nd1+1
    1822  iend=(j-1)*nd1+nd1
    1823  field(:,j)=temp(istart:iend)
    1824  enddo
    1825  !
    1826  if(this%debug_level>100) then
    1827  write(6,*) trim(thissubname),' show samples:'
    1828  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    1829  endif
    1830  else
    1831  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1832  write(6,*) nd1,this%ends(1),nd2,this%ends(2)
    1833  endif
    1834  deallocate(temp)
    1835  !
    1836  end subroutine get_var_nc_int_2d
    1837 
    1847  subroutine get_var_nc_int_3d(this,varname,nd1,nd2,nd3,field)
    1848  use netcdf
    1849  !
    1850  implicit none
    1851  !
    1852  class(ncio) :: this
    1853  character(len=*),intent(in) :: varname ! name of the field to read
    1854  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    1855  integer, intent(out) :: field(nd1,nd2,nd3) ! values of the field read in
    1856  integer :: ilength
    1857  !
    1858  integer,allocatable :: temp(:)
    1859  !
    1860  character*40,parameter :: thissubname='get_var_nc_int_3d'
    1861  !
    1862  integer :: i,j,k
    1863  integer :: length2d
    1864  integer :: istart,iend
    1865  !
    1866  !
    1867  length2d=nd1*nd2
    1868  ilength=length2d*nd3
    1869  allocate(temp(ilength))
    1870 
    1871  call this%get_var_nc_int(varname,ilength,temp)
    1872 
    1873  if(nd1==this%ends(1) .and. nd2==this%ends(2) .and. nd3==this%ends(3)) then
    1874  do k=1,nd3
    1875  do j=1,nd2
    1876  istart=(k-1)*length2d+(j-1)*nd1+1
    1877  iend =(k-1)*length2d+(j-1)*nd1+nd1
    1878  field(:,j,k)=temp(istart:iend)
    1879  enddo
    1880  enddo
    1881  !
    1882  if(this%debug_level>100) then
    1883  write(6,*) trim(thissubname),' show samples:'
    1884  do k=1,nd3
    1885  write(6,*) 'k,max,min:',k,maxval(field(:,:,k)),minval(field(:,:,k))
    1886  enddo
    1887  endif
    1888  else
    1889  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    1890  write(6,*) nd1,this%ends(1),nd2,this%ends(2),nd3,this%ends(3)
    1891  endif
    1892  deallocate(temp)
    1893  !
    1894  end subroutine get_var_nc_int_3d
    1895 
    1903  subroutine get_var_nc_int(this,varname,ilength,field)
    1904  !
    1905  ! read in one field
    1906  !
    1907  use netcdf
    1908  !
    1909  implicit none
    1910  !
    1911  class(ncio) :: this
    1912  character(len=*),intent(in) :: varname ! name of the field to read
    1913  integer, intent(in) :: ilength ! size of array dval
    1914  integer, intent(out) :: field(ilength) ! values of the field read in
    1915  !
    1916  integer :: ncid
    1917  !
    1918  integer :: status
    1919  integer :: varid
    1920  integer :: ends(4),start(4)
    1921 
    1922  integer :: length4d,length3d,length2d
    1923  integer :: nDims,ndim
    1924  integer :: dimids(4)
    1925  integer :: xtype
    1926  character*40 :: dimname
    1927 
    1928  character*40,parameter :: thissubname='get_var_nc_int'
    1929  !
    1930  integer :: i,k
    1931  !
    1932  !
    1933  ncid=this%ncid
    1934 
    1935  ! get variable IDs
    1936  status = nf90_inq_varid(ncid, trim(varname), varid)
    1937  if(status /= nf90_noerr) call this%handle_err(status)
    1938 
    1939  ! get dimensions
    1940  ends=1
    1941  start=1
    1942  this%ends=1
    1943 
    1944  this%dimname=" "
    1945  ! get variable type
    1946  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    1947  if(status /= nf90_noerr) call this%handle_err(status)
    1948  if(xtype==nf90_int) then
    1949  this%xtype=xtype
    1950  else
    1951  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_int,' but read in ',xtype
    1952  stop 123
    1953  endif
    1954 
    1955  ! get dimension size
    1956  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    1957  if(status /= nf90_noerr) call this%handle_err(status)
    1958  this%ndims=ndims
    1959  !
    1960  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    1961  if(status /= nf90_noerr) call this%handle_err(status)
    1962  do i=1,ndims
    1963  dimname=" "
    1964  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    1965  if (status /= nf90_noerr) call this%handle_err(status)
    1966  ends(i)=ndim
    1967  this%ends(i)=ends(i)
    1968  this%dimname(i)=trim(dimname)
    1969  if(this%ends(i) < 1) then
    1970  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    1971  stop 1234
    1972  endif
    1973  enddo
    1974  length2d=ends(1)*ends(2)
    1975  length3d=length2d*ends(3)
    1976  length4d=length3d*ends(4)
    1977  if(ilength .ne. length4d) then
    1978  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    1979  stop 123
    1980  endif
    1981  !
    1982  if(ndims <=4 ) then
    1983  status = nf90_get_var(ncid, varid, field, &
    1984  start = start(1:4) , &
    1985  count = ends(1:4))
    1986  if(status /= nf90_noerr) call this%handle_err(status)
    1987  else
    1988  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    1989  stop 1234
    1990  endif
    1991  !
    1992  if(this%debug_level>0) then
    1993  write(6,'(a,a)') '>>>read in variable: ',trim(varname)
    1994  endif
    1995  if(this%debug_level>10) then
    1996  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    1997  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    1998  do i=1,this%nDims
    1999  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    2000  enddo
    2001  endif
    2002  !
    2003  end subroutine get_var_nc_int
    2004 
    2012  subroutine get_var_nc_short_1d(this,varname,nd1,field)
    2013  use netcdf
    2014  !
    2015  implicit none
    2016  !
    2017  class(ncio) :: this
    2018  character(len=*),intent(in) :: varname ! name of the field to read
    2019  integer, intent(in) :: nd1 ! size of array dval
    2020  integer(2), intent(out) :: field(nd1) ! values of the field read in
    2021  integer :: ilength
    2022  !
    2023  character*40,parameter :: thissubname='get_var_nc_short_1d'
    2024  !
    2025  integer :: i
    2026  !
    2027  !
    2028  ilength=nd1
    2029  call this%get_var_nc_short(varname,ilength,field)
    2030  !
    2031  if(nd1==this%ends(1)) then
    2032  if(this%debug_level>100) then
    2033  write(6,*) trim(thissubname),' show samples:'
    2034  write(6,*) (field(i),i=1,min(nd1,10))
    2035  endif
    2036  else
    2037  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    2038  endif
    2039  !
    2040  end subroutine get_var_nc_short_1d
    2041 
    2050  subroutine get_var_nc_short_2d(this,varname,nd1,nd2,field)
    2051  !
    2052  ! read in one field
    2053  !
    2054  use netcdf
    2055  !
    2056  implicit none
    2057  !
    2058  class(ncio) :: this
    2059  character(len=*),intent(in) :: varname ! name of the field to read
    2060  integer, intent(in) :: nd1,nd2 ! size of array dval
    2061  integer(2), intent(out) :: field(nd1,nd2) ! values of the field read in
    2062  integer :: ilength
    2063  !
    2064  integer(2),allocatable :: temp(:)
    2065  !
    2066  character*40,parameter :: thissubname='get_var_nc_short_2d'
    2067  !
    2068  integer :: i,j,k
    2069  integer :: istart,iend
    2070  !
    2071  !
    2072  ilength=nd1*nd2
    2073  allocate(temp(ilength))
    2074 
    2075  call this%get_var_nc_short(varname,ilength,temp)
    2076 
    2077  if(nd1==this%ends(1) .and. nd2==this%ends(2)) then
    2078  do j=1,nd2
    2079  istart=(j-1)*nd1+1
    2080  iend=(j-1)*nd1+nd1
    2081  field(:,j)=temp(istart:iend)
    2082  enddo
    2083  !
    2084  if(this%debug_level>100) then
    2085  write(6,*) trim(thissubname),' show samples:'
    2086  write(6,*) 'max,min:',maxval(field(:,:)),minval(field(:,:))
    2087  endif
    2088  else
    2089  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    2090  write(6,*) nd1,this%ends(1),nd2,this%ends(2)
    2091  endif
    2092  deallocate(temp)
    2093  !
    2094  end subroutine get_var_nc_short_2d
    2095  !
    2103  subroutine get_var_nc_short(this,varname,ilength,field)
    2104  use netcdf
    2105  !
    2106  implicit none
    2107  !
    2108  class(ncio) :: this
    2109  character(len=*),intent(in) :: varname ! name of the field to read
    2110  integer, intent(in) :: ilength ! size of array dval
    2111  integer(2), intent(out) :: field(ilength) ! values of the field read in
    2112  !
    2113  integer :: ncid
    2114  !
    2115  integer :: status
    2116  integer :: varid
    2117  integer :: ends(4),start(4)
    2118 
    2119  integer :: length4d,length3d,length2d
    2120  integer :: nDims,ndim
    2121  integer :: dimids(4)
    2122  integer :: xtype
    2123  character*40 :: dimname
    2124 
    2125  character*40,parameter :: thissubname='get_var_nc_short'
    2126  !
    2127  integer :: i,k
    2128  !
    2129  !
    2130  ncid=this%ncid
    2131 
    2132  ! get variable IDs
    2133  status = nf90_inq_varid(ncid, trim(varname), varid)
    2134  if(status /= nf90_noerr) call this%handle_err(status)
    2135 
    2136  ! get dimensions
    2137  ends=1
    2138  start=1
    2139  this%ends=1
    2140 
    2141  this%dimname=" "
    2142  ! get variable type
    2143  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    2144  if(status /= nf90_noerr) call this%handle_err(status)
    2145  if(xtype==nf90_short) then
    2146  this%xtype=xtype
    2147  else
    2148  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_short,' but read in ',xtype
    2149  stop 123
    2150  endif
    2151 
    2152  ! get dimension size
    2153  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    2154  if(status /= nf90_noerr) call this%handle_err(status)
    2155  this%ndims=ndims
    2156  !
    2157  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    2158  if(status /= nf90_noerr) call this%handle_err(status)
    2159  do i=1,ndims
    2160  dimname=" "
    2161  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    2162  if (status /= nf90_noerr) call this%handle_err(status)
    2163  ends(i)=ndim
    2164  this%ends(i)=ends(i)
    2165  this%dimname(i)=trim(dimname)
    2166  if(this%ends(i) < 1) then
    2167  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    2168  stop 1234
    2169  endif
    2170  enddo
    2171  length2d=ends(1)*ends(2)
    2172  length3d=length2d*ends(3)
    2173  length4d=length3d*ends(4)
    2174  if(ilength .ne. length4d) then
    2175  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    2176  stop 123
    2177  endif
    2178  !
    2179  if(ndims <=4 ) then
    2180  status = nf90_get_var(ncid, varid, field, &
    2181  start = start(1:4) , &
    2182  count = ends(1:4))
    2183  if(status /= nf90_noerr) call this%handle_err(status)
    2184  else
    2185  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    2186  stop 1234
    2187  endif
    2188  !
    2189  if(this%debug_level>0) then
    2190  write(6,'(a,a)') '>>>read in variable: ',trim(varname)
    2191  endif
    2192  if(this%debug_level>10) then
    2193  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    2194  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    2195  do i=1,this%nDims
    2196  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    2197  enddo
    2198  endif
    2199  !
    2200  end subroutine get_var_nc_short
    2201 
    2209  subroutine get_var_nc_char_1d(this,varname,nd1,field)
    2210  use netcdf
    2211  !
    2212  implicit none
    2213  !
    2214  class(ncio) :: this
    2215  character(len=*),intent(in) :: varname ! name of the field to read
    2216  integer, intent(in) :: nd1 ! size of array dval
    2217  character, intent(out) :: field(nd1) ! values of the field read in
    2218  integer :: ilength
    2219  !
    2220  character*40,parameter :: thissubname='get_var_nc_char_1d'
    2221  !
    2222  integer :: i
    2223  !
    2224  !
    2225  ilength=nd1
    2226  call this%get_var_nc_char(varname,ilength,field)
    2227  !
    2228  if(nd1==this%ends(1)) then
    2229  if(this%debug_level>100) then
    2230  write(6,*) trim(thissubname),' show samples:'
    2231  write(6,*) (field(i),i=1,min(nd1,10))
    2232  endif
    2233  else
    2234  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    2235  endif
    2236  !
    2237  end subroutine get_var_nc_char_1d
    2238 
    2247  subroutine get_var_nc_char_2d(this,varname,nd1,nd2,field)
    2248  use netcdf
    2249  !
    2250  implicit none
    2251  !
    2252  class(ncio) :: this
    2253  character(len=*),intent(in) :: varname ! name of the field to read
    2254  integer, intent(in) :: nd1,nd2 ! size of array dval
    2255  character, intent(out) :: field(nd1,nd2) ! values of the field read in
    2256  integer :: ilength
    2257  !
    2258  character,allocatable :: temp(:)
    2259  !
    2260  character*40,parameter :: thissubname='get_var_nc_char_2d'
    2261  !
    2262  integer :: i,j,k
    2263  integer :: istart,iend
    2264  !
    2265  !
    2266  ilength=nd1*nd2
    2267  allocate(temp(ilength))
    2268 
    2269  call this%get_var_nc_char(varname,ilength,temp)
    2270 
    2271  if(nd1==this%ends(1) .and. nd2==this%ends(2)) then
    2272  do j=1,nd2
    2273  istart=(j-1)*nd1+1
    2274  iend=(j-1)*nd1+nd1
    2275  field(:,j)=temp(istart:iend)
    2276  enddo
    2277  !
    2278 ! if(this%debug_level>100) then
    2279 ! write(*,*) trim(thissubname),' show samples:'
    2280 ! write(*,*) field(1,1)
    2281 ! endif
    2282  else
    2283  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    2284  write(6,*) nd1,this%ends(1),nd2,this%ends(2)
    2285  endif
    2286  deallocate(temp)
    2287  !
    2288  end subroutine get_var_nc_char_2d
    2289 
    2299  subroutine get_var_nc_char_3d(this,varname,nd1,nd2,nd3,field)
    2300  use netcdf
    2301  !
    2302  implicit none
    2303  !
    2304  class(ncio) :: this
    2305  character(len=*),intent(in) :: varname ! name of the field to read
    2306  integer, intent(in) :: nd1,nd2,nd3 ! size of array dval
    2307  character, intent(out) :: field(nd1,nd2,nd3) ! values of the field read in
    2308  integer :: ilength
    2309  !
    2310  character,allocatable :: temp(:)
    2311  !
    2312  character*40,parameter :: thissubname='get_var_nc_char_3d'
    2313  !
    2314  integer :: i,j,k
    2315  integer :: length2d
    2316  integer :: istart,iend
    2317  !
    2318  !
    2319  length2d=nd1*nd2
    2320  ilength=length2d*nd3
    2321  allocate(temp(ilength))
    2322 
    2323  call this%get_var_nc_char(varname,ilength,temp)
    2324 
    2325  if(nd1==this%ends(1) .and. nd2==this%ends(2) .and. nd3==this%ends(3)) then
    2326  do k=1,nd3
    2327  do j=1,nd2
    2328  istart=(k-1)*length2d+(j-1)*nd1+1
    2329  iend =(k-1)*length2d+(j-1)*nd1+nd1
    2330  field(:,j,k)=temp(istart:iend)
    2331  enddo
    2332  enddo
    2333  !
    2334 ! if(this%debug_level>100) then
    2335 ! write(*,*) trim(thissubname),' show samples:'
    2336 ! write(*,*) field(1,1,1)
    2337 ! endif
    2338  else
    2339  write(6,*) trim(thissubname),' ERROR: dimension does not match.'
    2340  write(6,*) nd1,this%ends(1),nd2,this%ends(2),nd3,this%ends(3)
    2341  endif
    2342  deallocate(temp)
    2343  !
    2344  end subroutine get_var_nc_char_3d
    2345  !
    2353  subroutine get_var_nc_char(this,varname,ilength,field)
    2354  !
    2355  ! read in one field
    2356  !
    2357  use netcdf
    2358  !
    2359  implicit none
    2360  !
    2361  class(ncio) :: this
    2362  character(len=*),intent(in) :: varname ! name of the field to read
    2363  integer, intent(in) :: ilength ! size of array dval
    2364  character, intent(out) :: field(ilength) ! values of the field read in
    2365  !
    2366  integer :: ncid
    2367  !
    2368  integer :: status
    2369  integer :: varid
    2370  integer :: ends(4),start(4)
    2371 
    2372  integer :: length4d,length3d,length2d
    2373  integer :: nDims,ndim
    2374  integer :: dimids(4)
    2375  integer :: xtype
    2376  character*40 :: dimname
    2377 
    2378  character*40,parameter :: thissubname='get_var_nc_char'
    2379  !
    2380  integer :: i,k
    2381  !
    2382  !
    2383  ncid=this%ncid
    2384 
    2385  ! get variable IDs
    2386  status = nf90_inq_varid(ncid, trim(varname), varid)
    2387  if(status /= nf90_noerr) call this%handle_err(status)
    2388 
    2389  ! get dimensions
    2390  ends=1
    2391  start=1
    2392  this%ends=1
    2393 
    2394  this%dimname=" "
    2395  ! get variable type
    2396  status = nf90_inquire_variable(ncid, varid, xtype = xtype)
    2397  if(status /= nf90_noerr) call this%handle_err(status)
    2398  if(xtype==nf90_char) then
    2399  this%xtype=xtype
    2400  else
    2401  write(6,*) trim(thissubname),' ERROR: wrong data type, expect ',nf90_char,' but read in ',xtype
    2402  stop 123
    2403  endif
    2404 
    2405  ! get dimension size
    2406  status = nf90_inquire_variable(ncid, varid, ndims = ndims)
    2407  if(status /= nf90_noerr) call this%handle_err(status)
    2408  this%ndims=ndims
    2409  !
    2410  status = nf90_inquire_variable(ncid, varid, dimids = dimids(1:ndims))
    2411  if(status /= nf90_noerr) call this%handle_err(status)
    2412  do i=1,ndims
    2413  dimname=" "
    2414  status = nf90_inquire_dimension(ncid, dimids(i), dimname, len = ndim)
    2415  if (status /= nf90_noerr) call this%handle_err(status)
    2416  ends(i)=ndim
    2417  this%ends(i)=ends(i)
    2418  this%dimname(i)=trim(dimname)
    2419  if(this%ends(i) < 1) then
    2420  write(6,*) trim(thissubname),' Error, ends dimension should larger than 0 :', ends(i)
    2421  stop 1234
    2422  endif
    2423  enddo
    2424  length2d=ends(1)*ends(2)
    2425  length3d=length2d*ends(3)
    2426  length4d=length3d*ends(4)
    2427  if(ilength .ne. length4d) then
    2428  write(6,*) trim(thissubname),'ERROR: ',ilength,' should equal to ',length4d
    2429  stop 123
    2430  endif
    2431  !
    2432  if(ndims <=4 ) then
    2433  status = nf90_get_var(ncid, varid, field, &
    2434  start = start(1:4) , &
    2435  count = ends(1:4))
    2436  if(status /= nf90_noerr) call this%handle_err(status)
    2437  else
    2438  write(6,*) trim(thissubname),'Error: too many dimensions:',ndims
    2439  stop 1234
    2440  endif
    2441  !
    2442  if(this%debug_level>0) then
    2443  write(6,'(a,a)') '>>>read in variable: ',trim(varname)
    2444  endif
    2445  if(this%debug_level>10) then
    2446  write(6,'(8x,a,I10)') 'data type : ',this%xtype
    2447  write(6,'(8x,a,I10)') 'dimension size: ',this%nDims
    2448  do i=1,this%nDims
    2449  write(6,'(8x,a,I5,I10,2x,a)') 'rank, ends, name=',i,this%ends(i),trim(this%dimname(i))
    2450  enddo
    2451  endif
    2452  !
    2453  end subroutine get_var_nc_char
    2454 
    2460  subroutine handle_err(this,status)
    2461  use netcdf
    2462  implicit none
    2463  class(ncio) :: this
    2464  !
    2465  integer, intent ( in) :: status
    2466  if(status /= nf90_noerr) then
    2467  print *, trim(nf90_strerror(status))
    2468  stop "Stopped"
    2469  end if
    2470  end subroutine handle_err
    2471 
    2480  subroutine convert_theta2t_2dgrid(this,nx,ny,ps,t2)
    2481  implicit none
    2482  class(ncio) :: this
    2483 
    2484  integer :: nx,ny
    2485  real, intent(in ) :: ps(nx,ny)
    2486  real, intent(inout) :: t2(nx,ny)
    2487 
    2488  integer :: i,j
    2489  real(8) :: rd,cp,rd_over_cp
    2490 
    2491 
    2492  rd = 2.8705e+2_8
    2493  cp = 1.0046e+3_8 ! specific heat of air @pressure (J/kg/K)
    2494  rd_over_cp = rd/cp
    2495 
    2496  do j=1,ny
    2497  do i=1,nx
    2498  t2(i,j)=t2(i,j)*(ps(i,j)/1000.0)**rd_over_cp - 273.15
    2499  enddo
    2500  enddo
    2501 
    2502  end subroutine convert_theta2t_2dgrid
    2503 
    2517  subroutine add_new_var_3d(this,varname,dname1,dname2,dname3,lname,units,dtype)
    2518  implicit none
    2519  !
    2520  class(ncio) :: this
    2521  character(len=*),intent(in) :: varname,dname1,dname2,dname3 &
    2522  ,lname,units
    2523  integer :: status, ncid, dim1id, dim2id, dim3id, varid
    2524  character(len=*),intent(in) :: dtype
    2525 
    2526  status = nf90_redef(this%ncid) !Enter Define Mode
    2527  if (status /= nf90_noerr) call this%handle_err(status)
    2528 
    2529  status = nf90_inq_dimid(this%ncid, dname1, dim1id)
    2530  if (status /= nf90_noerr) call this%handle_err(status)
    2531  status = nf90_inq_dimid(this%ncid, dname2, dim2id)
    2532  if (status /= nf90_noerr) call this%handle_err(status)
    2533  status = nf90_inq_dimid(this%ncid, dname3, dim3id)
    2534  if (status /= nf90_noerr) call this%handle_err(status)
    2535 
    2536  if(trim(dtype)=="double") then
    2537  status = nf90_def_var(this%ncid, varname, nf90_double, &
    2538  (/ dim1id, dim2id, dim3id /), varid)
    2539  elseif(trim(dtype)=="float") then
    2540  status = nf90_def_var(this%ncid, varname, nf90_float, &
    2541  (/ dim1id, dim2id, dim3id /), varid)
    2542  elseif(trim(dtype)=="int") then
    2543  status = nf90_def_var(this%ncid, varname, nf90_int, &
    2544  (/ dim1id, dim2id, dim3id /), varid)
    2545  else
    2546  write(*,*) ' undefined data type ', trim(dtype)
    2547  call this%handle_err(status)
    2548  endif
    2549  if (status /= nf90_noerr) call this%handle_err(status)
    2550 
    2551  status = nf90_put_att(this%ncid, varid, 'long_name', lname)
    2552  if (status /= nf90_noerr) call this%handle_err(status)
    2553  status = nf90_put_att(this%ncid, varid, 'units', units)
    2554  if (status /= nf90_noerr) call this%handle_err(status)
    2555 
    2556  status = nf90_enddef(this%ncid) !Exit Define Mode and
    2557  ! return to Data Mode
    2558  if (status /= nf90_noerr) call this%handle_err(status)
    2559 
    2560  end subroutine add_new_var_3d
    2561 
    2574  subroutine add_new_var_2d(this,varname,dname1,dname2,lname,units,dtype)
    2575  implicit none
    2576  !
    2577  class(ncio) :: this
    2578  character(len=*),intent(in) :: varname,dname1,dname2 &
    2579  ,lname,units
    2580  integer :: status, ncid, dim1id, dim2id, varid
    2581  character(len=*),intent(in) :: dtype
    2582 
    2583  status = nf90_redef(this%ncid) !Enter Define Mode
    2584  if (status /= nf90_noerr) call this%handle_err(status)
    2585 
    2586  status = nf90_inq_dimid(this%ncid, dname1, dim1id)
    2587  if (status /= nf90_noerr) call this%handle_err(status)
    2588  status = nf90_inq_dimid(this%ncid, dname2, dim2id)
    2589  if (status /= nf90_noerr) call this%handle_err(status)
    2590 
    2591  if(trim(dtype)=="double") then
    2592  status = nf90_def_var(this%ncid, varname, nf90_double, &
    2593  (/ dim1id, dim2id /), varid)
    2594  elseif(trim(dtype)=="float") then
    2595  status = nf90_def_var(this%ncid, varname, nf90_float, &
    2596  (/ dim1id, dim2id /), varid)
    2597  elseif(trim(dtype)=="int") then
    2598  status = nf90_def_var(this%ncid, varname, nf90_int, &
    2599  (/ dim1id, dim2id /), varid)
    2600  else
    2601  write(*,*) ' undefined data type ', trim(dtype)
    2602  call this%handle_err(status)
    2603  endif
    2604  if (status /= nf90_noerr) call this%handle_err(status)
    2605 
    2606  status = nf90_put_att(this%ncid, varid, 'long_name', lname)
    2607  if (status /= nf90_noerr) call this%handle_err(status)
    2608  status = nf90_put_att(this%ncid, varid, 'units', units)
    2609  if (status /= nf90_noerr) call this%handle_err(status)
    2610 
    2611  status = nf90_enddef(this%ncid) !Exit Define Mode and
    2612  ! return to Data Mode
    2613  if (status /= nf90_noerr) call this%handle_err(status)
    2614 
    2615  end subroutine add_new_var_2d
    2616 
    2617 
    2618 end module module_ncio
    subroutine get_var_nc_char_1d(this, varname, nd1, field)
    Read in 1D character type variable.
    +
    subroutine get_var_nc_char(this, varname, ilength, field)
    Read in character type variable.
    +
    subroutine get_var_nc_double_2d(this, varname, nd1, nd2, field)
    Read in 2D double type variable.
    +
    subroutine get_var_nc_double_1d(this, varname, nd1, field)
    Read in 1D double type variable.
    +
    subroutine replace_var_nc_int_1d(this, varname, nd1, field)
    Replace 1D integer type variable.
    +
    subroutine get_var_nc_int_2d(this, varname, nd1, nd2, field)
    Read in 2D integer type variable.
    +
    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).
    +
    subroutine get_att_nc_string(this, attname, string)
    Get string attribute in wrf netcdf file.
    +
    subroutine get_var_nc_short(this, varname, ilength, field)
    Read in short type variable.
    +
    subroutine get_var_nc_real_3d(this, varname, nd1, nd2, nd3, field)
    Read in 3D real type variable.
    +
    subroutine get_var_nc_double_3d(this, varname, nd1, nd2, nd3, field)
    Read in 3D double type field.
    +
    subroutine replace_var_nc_real_3d(this, varname, nd1, nd2, nd3, field)
    Replace 3D real type variable.
    +
    subroutine replace_var_nc_char_3d(this, varname, nd1, nd2, nd3, field)
    Replace 3D character type variable.
    +
    subroutine get_var_nc_char_3d(this, varname, nd1, nd2, nd3, field)
    Read in 3D character type variable.
    +
    subroutine handle_err(this, status)
    Handle netCDF errors.
    +
    subroutine replace_var_nc_double(this, varname, ilength, field)
    Replace double type variable.
    +
    subroutine get_var_nc_real(this, varname, ilength, field)
    Read in real type variable.
    +
    subroutine close_nc(this)
    Close a netcdf file.
    +
    subroutine get_var_nc_real_1d(this, varname, nd1, field)
    Read in 1D real type variable.
    + +
    subroutine replace_var_nc_int_3d(this, varname, nd1, nd2, nd3, field)
    Replace 3D integer type variable.
    +
    subroutine convert_theta2t_2dgrid(this, nx, ny, ps, t2)
    Convert theta T (Kelvin) to T (deg C).
    +
    subroutine get_var_nc_short_1d(this, varname, nd1, field)
    Read in 1D short type variable.
    +
    subroutine get_var_nc_double(this, varname, ilength, field)
    Read in double type variable.
    +
    subroutine replace_var_nc_real_2d(this, varname, nd1, nd2, field)
    Replace 2D real type variable.
    +
    subroutine replace_var_nc_double_1d(this, varname, nd1, field)
    Replace 1D double type variable.
    +
    Functions to read and write netcdf files.
    Definition: module_ncio.f90:7
    +
    subroutine get_var_nc_int(this, varname, ilength, field)
    Read in integer type variable.
    +
    subroutine replace_var_nc_double_3d(this, varname, nd1, nd2, nd3, field)
    Replace 3D double type variable.
    +
    subroutine replace_var_nc_int_2d(this, varname, nd1, nd2, field)
    Replace 2D integer type variable.
    +
    subroutine get_var_nc_int_3d(this, varname, nd1, nd2, nd3, field)
    Read in 3D integer type variable.
    +
    subroutine replace_var_nc_real_1d(this, varname, nd1, field)
    Replace 1D real type variable.
    +
    subroutine get_att_nc_int(this, attname, ival)
    Get integer attribute in wrf netcdf file.
    +
    subroutine replace_var_nc_char(this, varname, ilength, field)
    Replace character type variable.
    +
    subroutine get_var_nc_char_2d(this, varname, nd1, nd2, field)
    Read in 2D character type variable.
    +
    subroutine replace_var_nc_real(this, varname, ilength, field)
    Replace real type variable.
    +
    subroutine replace_var_nc_char_2d(this, varname, nd1, nd2, field)
    Replace 2D character type variable.
    +
    subroutine get_var_nc_int_1d(this, varname, nd1, field)
    Read in 1D integer variable.
    +
    subroutine replace_var_nc_int(this, varname, ilength, field)
    Replace integer type variable.
    +
    subroutine open_nc(this, filename, action, debug_level)
    Open a netcdf file, set initial debug level.
    +
    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).
    +
    subroutine get_att_nc_real(this, attname, rval)
    Get attribute in wrf netcdf file.
    +
    subroutine get_dim_nc(this, dimname, dimvalue)
    Get dimensions in netcdf file.
    +
    subroutine get_var_nc_short_2d(this, varname, nd1, nd2, field)
    Read in 2D short type variable.
    +
    subroutine replace_var_nc_double_2d(this, varname, nd1, nd2, field)
    Replace 2D double type variable.
    +
    subroutine replace_var_nc_char_1d(this, varname, nd1, field)
    Replace 1D character type variable.
    +
    subroutine get_var_nc_real_2d(this, varname, nd1, nd2, field)
    Read in 2D real type variable.
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/module__nwp_8f90.html b/ver-1.11.0/fvcom_tools/module__nwp_8f90.html new file mode 100644 index 000000000..062668b2c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__nwp_8f90.html @@ -0,0 +1,157 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_nwp.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_nwp.f90 File Reference
    +
    +
    + +

    Defines FV3LAM and FVCOM forecast data structure. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Data Types

    type  module_nwp::fcst_nwp
     
    + + + + +

    +Modules

    module  module_nwp
     This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures.
     
    + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine module_nwp::finish_nwp (this, itype, wcstart)
     Finish and deallocate. More...
     
    subroutine module_nwp::get_time_ind_nwp (this, filename, instr, outindex)
     This subroutine searches the FVCOM 'Times' variable and returns the matching index. More...
     
    subroutine module_nwp::initial_nwp (this, itype, wcstart)
     This subroutine defines the number of variables and their names for each NWP data type. More...
     
    subroutine module_nwp::list_initial_nwp (this)
     This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine. More...
     
    subroutine module_nwp::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) module_nwp::ncdata
     Wrapper object for netCDF data file. More...
     
    +

    Detailed Description

    +

    Defines FV3LAM and FVCOM forecast data structure.

    +
    Author
    David Wright, University of Michigan and GLERL,
    +
    Date
    17 Aug 2020
    + +

    Definition in file module_nwp.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/module__nwp_8f90.js b/ver-1.11.0/fvcom_tools/module__nwp_8f90.js new file mode 100644 index 000000000..e2f58881f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__nwp_8f90.js @@ -0,0 +1,10 @@ +var module__nwp_8f90 = +[ + [ "fcst_nwp", "structmodule__nwp_1_1fcst__nwp.html", "structmodule__nwp_1_1fcst__nwp" ], + [ "finish_nwp", "module__nwp_8f90.html#ad98dc62d45549b7716f3f62b59c63474", null ], + [ "get_time_ind_nwp", "module__nwp_8f90.html#aaae0ecd9fdd67b6c0fd661f5034e183a", null ], + [ "initial_nwp", "module__nwp_8f90.html#ae8abd781460c305e506ef99e82e54dfb", null ], + [ "list_initial_nwp", "module__nwp_8f90.html#a8813da3d8f29617bee44f7209b765b4a", null ], + [ "read_nwp", "module__nwp_8f90.html#af30f01266f32c2c1cacd7062e6148289", null ], + [ "ncdata", "module__nwp_8f90.html#af103c9fe9d0bfa17cc2c55e1cf463cdd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/module__nwp_8f90_source.html b/ver-1.11.0/fvcom_tools/module__nwp_8f90_source.html new file mode 100644 index 000000000..f6b9ceb02 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/module__nwp_8f90_source.html @@ -0,0 +1,120 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_nwp.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    module_nwp.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    15 module module_nwp
    16 
    17  use kinds, only: r_kind, r_single, i_short, rmissing
    18 ! use module_map_utils, only: map_util
    19  use module_ncio, only: ncio
    20 
    21  implicit none
    22 
    23  public :: fcst_nwp
    24 
    25  private
    26  type :: fcst_nwp
    27  character(len=6) :: datatype
    28  integer :: numvar
    29  integer :: xlat
    30  integer :: xlon
    31  integer :: xtime
    32  integer :: datelen
    33  integer :: i_mask
    34  integer :: i_sst
    35  integer :: i_ice
    36  integer :: i_sfct
    37  integer :: i_icet
    38  integer :: i_sfctl
    39  integer :: i_zorl
    40  integer :: i_hice
    41  character(len=20), allocatable :: varnames(:)
    42  character(len=20), allocatable :: latname
    43  character(len=20), allocatable :: lonname
    44  character(len=20), allocatable :: dimnameew
    45  character(len=20), allocatable :: dimnamens
    46  character(len=20), allocatable :: dimnametime
    47  character(len=20), allocatable :: dimnamedate
    48  character(len=1), allocatable :: times(:,:)
    49 
    50  real(r_single), allocatable :: nwp_mask_c(:,:)
    51  real(r_single), allocatable :: nwp_sst_c(:,:,:)
    52  real(r_single), allocatable :: nwp_ice_c(:,:,:)
    53  real(r_single), allocatable :: nwp_sfct_c(:,:,:)
    54  real(r_single), allocatable :: nwp_icet_c(:,:,:)
    55  real(r_single), allocatable :: nwp_zorl_c(:,:,:)
    56  real(r_single), allocatable :: nwp_hice_c(:,:,:)
    57 
    58  real(r_single), allocatable :: nwp_mask_w(:,:)
    59  real(r_single), allocatable :: nwp_sst_w(:,:)
    60  real(r_single), allocatable :: nwp_ice_w(:,:)
    61  real(r_single), allocatable :: nwp_sfct_w(:,:)
    62  real(r_single), allocatable :: nwp_icet_w(:,:)
    63  real(r_single), allocatable :: nwp_sfctl_w(:,:)
    64  real(r_single), allocatable :: nwp_zorl_w(:,:)
    65  real(r_single), allocatable :: nwp_hice_w(:,:)
    66 
    67  contains
    68  procedure :: initial => initial_nwp
    69  procedure :: list_initial => list_initial_nwp
    70  procedure :: read_n => read_nwp
    71  procedure :: get_time_ind => get_time_ind_nwp
    72  procedure :: finish => finish_nwp
    73  end type fcst_nwp
    74 
    75  type(ncio) :: ncdata
    76 ! type(map_util) :: map
    77 
    78  contains
    79 
    88  subroutine initial_nwp(this,itype,wcstart)
    89  class(fcst_nwp) :: this
    90 
    91  character(len=6), intent(in) :: itype
    92  character(len=4), intent(in) :: wcstart
    93 
    94 ! FVCOM grid
    95  if (itype==' FVCOM') then
    96  this%datatype = itype
    97  this%numvar = 5
    98 
    99  this%i_mask = 1
    100  this%i_sst = 2
    101  this%i_ice = 3
    102  this%i_iceT = 4
    103  this%i_hice = 5
    104  this%i_sfcT = 0
    105  this%i_zorl = 0
    106 
    107  allocate(this%varnames(this%numvar))
    108  this%varnames(1) = 'glmask'
    109  this%varnames(2) = 'tsfc'
    110  this%varnames(3) = 'aice'
    111  this%varnames(4) = 'tisfc'
    112  this%varnames(5) = 'vice'
    113 
    114  allocate(this%latname)
    115  allocate(this%lonname)
    116  this%latname = 'lat'
    117  this%lonname = 'lon'
    118 
    119  allocate(this%dimnameEW)
    120  allocate(this%dimnameNS)
    121  allocate(this%dimnameTIME)
    122  allocate(this%dimnameDATE)
    123  this%dimnameEW = 'lon'
    124  this%dimnameNS = 'lat'
    125  this%dimnameTIME = 'Time'
    126  this%dimnameDATE = 'DateStrLen'
    127 
    128 ! FV3LAM grid
    129 
    130  else if (trim(itype)=='FV3LAM' .AND. wcstart=='warm') then
    131  this%datatype = itype
    132  this%numvar = 8
    133 
    134  this%i_mask = 1
    135  this%i_sst = 2
    136  this%i_ice = 3
    137  this%i_iceT = 4
    138  this%i_sfcT = 5
    139  this%i_sfcTl= 6
    140  this%i_zorl = 7
    141  this%i_hice = 8
    142 
    143  allocate(this%varnames(this%numvar))
    144  this%varnames(1) = 'slmsk'
    145  this%varnames(2) = 'tsea'
    146  this%varnames(3) = 'fice'
    147  this%varnames(4) = 'tisfc'
    148  this%varnames(5) = 'tsfc'
    149  this%varnames(6) = 'tsfcl'
    150  this%varnames(7) = 'zorli'
    151  this%varnames(8) = 'hice'
    152 
    153  allocate(this%latname)
    154  allocate(this%lonname)
    155  this%latname = 'yaxis_1'
    156  this%lonname = 'xaxis_1'
    157 
    158  allocate(this%dimnameEW)
    159  allocate(this%dimnameNS)
    160  allocate(this%dimnameTIME)
    161  this%dimnameEW = 'xaxis_1'
    162  this%dimnameNS = 'yaxis_1'
    163  this%dimnameTIME = 'Time'
    164 
    165  else if (trim(itype)=='FV3LAM' .AND. wcstart=='cold') then
    166  this%datatype = itype
    167  this%numvar = 6
    168 
    169  this%i_mask = 1
    170  this%i_sst = 2
    171  this%i_ice = 3
    172  this%i_iceT = 4
    173  this%i_zorl = 5
    174  this%i_hice = 6
    175  this%i_sfcT = 0
    176 
    177  allocate(this%varnames(this%numvar))
    178  this%varnames(1) = 'slmsk'
    179  this%varnames(2) = 'tsea'
    180  this%varnames(3) = 'fice'
    181  this%varnames(4) = 'tisfc'
    182  this%varnames(5) = 'zorl'
    183  this%varnames(6) = 'hice'
    184 
    185  allocate(this%latname)
    186  allocate(this%lonname)
    187  this%latname = 'yaxis_1'
    188  this%lonname = 'xaxis_1'
    189 
    190  allocate(this%dimnameEW)
    191  allocate(this%dimnameNS)
    192  allocate(this%dimnameTIME)
    193  this%dimnameEW = 'xaxis_1'
    194  this%dimnameNS = 'yaxis_1'
    195  this%dimnameTIME = 'Time'
    196 
    197 ! If the data type does not match one of the known types, exit.
    198 
    199  else
    200  write(6,*) 'Unknown data type:', itype
    201  stop 1234
    202  end if
    203 
    204  write(6,*) 'Finished initial_nwp'
    205  write(6,*) ' '
    206 
    207  end subroutine initial_nwp
    208 
    214  subroutine list_initial_nwp(this)
    216  class(fcst_nwp) :: this
    217 
    218  integer :: k
    219 
    220  write(6,*) 'List initial setup for ', this%datatype
    221  write(6,*) 'number of variables ', this%numvar
    222  write(6,*) 'variable index: mask, sst, ice, sfcT, sfcTl'
    223  write(6,'(15x,10I3)') this%i_mask, this%i_sst, this%i_ice, &
    224  & this%i_sfcT, this%i_sfcTl
    225  write(6,*) 'variable name:'
    226  do k=1,this%numvar
    227  write(6,*) k,trim(this%varnames(k))
    228  enddo
    229 
    230  write(6,*) 'Finished list_initial_nwp'
    231  write(6,*) ' '
    232 
    233  end subroutine list_initial_nwp
    234 
    258  subroutine read_nwp(this,filename,itype,wcstart,numlon,numlat,numtimes,time_to_get,mask,sst,ice,sfcT,iceT,sfcTl,zorl,hice,ybegin,yend)
    260  class(fcst_nwp) :: this
    261 
    262  character(len=6), intent(in) :: itype
    263  character(len=*), intent(in) :: filename
    264  character(len=4), intent(in) :: wcstart
    265 
    266  integer, intent(in) :: time_to_get
    267  integer, intent(in) :: ybegin,yend
    268  integer, intent(inout) :: numlon, numlat, numtimes
    269 ! real(r_single), intent(inout) :: mask(:,:), sst(:,:), ice(:,:), sfcT(:,:)
    270  real(r_single), intent(inout) :: mask(:,:),sst(:,:),ice(:,:),sfcT(:,:) &
    271  ,iceT(:,:),sfcTl(:,:),zorl(:,:),hice(:,:)
    272 
    273  real(r_kind),allocatable :: tmp2d8b(:,:)
    274  real(r_kind),allocatable :: tmp3d8b(:,:,:)
    275 
    276 !
    277 ! Open the file using module_ncio.f90 code, and find the number of
    278 ! lat/lon points
    279 
    280  call ncdata%open(trim(filename),'r',200)
    281  call ncdata%get_dim(this%dimnameEW,this%xlon)
    282  call ncdata%get_dim(this%dimnameNS,this%xlat)
    283  call ncdata%get_dim(this%dimnameTIME,this%xtime)
    284 
    285  write(6,*) 'number of longitudes for file ', filename, this%xlon
    286  numlon = this%xlon
    287  write(6,*) 'number of latitudes for file ', filename, this%xlat
    288  !numlat = this%xlat
    289  numlat = yend-ybegin+1
    290  write(6,*) 'number of times for file ', filename, this%xtime
    291  numtimes = this%xtime
    292  write(6,*) 'the range of Y for this domain is=',ybegin,yend
    293 
    294 ! Allocate all the arrays to receive data
    295  if (wcstart == 'cold' .OR. itype == ' FVCOM') then
    296  allocate(this%nwp_mask_c(this%xlon,this%xlat))
    297  allocate(this%nwp_sst_c(this%xlon,this%xlat,this%xtime))
    298  allocate(this%nwp_ice_c(this%xlon,this%xlat,this%xtime))
    299  allocate(this%nwp_sfcT_c(this%xlon,this%xlat,this%xtime))
    300  allocate(this%nwp_iceT_c(this%xlon,this%xlat,this%xtime))
    301  allocate(this%nwp_zorl_c(this%xlon,this%xlat,this%xtime))
    302  allocate(this%nwp_hice_c(this%xlon,this%xlat,this%xtime))
    303  allocate(tmp2d8b(this%xlon,this%xlat))
    304  allocate(tmp3d8b(this%xlon,this%xlat,this%xtime))
    305 
    306 ! Get variables from the data file, but only if the variable is
    307 ! defined for that data type.
    308 
    309  write(6,*) 'itype = ', itype
    310  write(6,*) 'wcstart = ', wcstart
    311  write(6,*) 'xlat = ', this%xlat
    312  write(6,*) 'xlon = ', this%xlon
    313  write(6,*) 'xtime = ', this%xtime
    314 
    315  if (this%i_mask .gt. 0) then
    316  call ncdata%get_var(this%varnames(this%i_mask),this%xlon, &
    317  this%xlat,tmp2d8b)
    318  this%nwp_mask_c=tmp2d8b
    319  mask = this%nwp_mask_c(:,ybegin:yend)
    320  end if
    321  if (this%i_sst .gt. 0) then
    322  write(6,*) 'get sst for cold or FVCOM'
    323  call ncdata%get_var(this%varnames(this%i_sst),this%xlon, &
    324  this%xlat,this%xtime,tmp3d8b)
    325  this%nwp_sst_c=tmp3d8b
    326  sst = this%nwp_sst_c(:,ybegin:yend,time_to_get)
    327  end if
    328  if (this%i_ice .gt. 0) then
    329  call ncdata%get_var(this%varnames(this%i_ice),this%xlon, &
    330  this%xlat,this%xtime,tmp3d8b)
    331  this%nwp_ice_c=tmp3d8b
    332  ice = this%nwp_ice_c(:,ybegin:yend,time_to_get)
    333  end if
    334  if (this%i_sfcT .gt. 0) then
    335  call ncdata%get_var(this%varnames(this%i_sfcT),this%xlon, &
    336  this%xlat,this%xtime,tmp3d8b)
    337  this%nwp_sfcT_c=tmp3d8b
    338  sfct = this%nwp_sfcT_c(:,ybegin:yend,time_to_get)
    339  end if
    340  if (this%i_iceT .gt. 0) then
    341  call ncdata%get_var(this%varnames(this%i_iceT),this%xlon, &
    342  this%xlat,this%xtime,tmp3d8b)
    343  this%nwp_iceT_c=tmp3d8b
    344  icet = this%nwp_iceT_c(:,ybegin:yend,time_to_get)
    345  end if
    346  if (this%i_zorl .gt. 0) then
    347  call ncdata%get_var(this%varnames(this%i_zorl),this%xlon, &
    348  this%xlat,this%xtime,tmp3d8b)
    349  this%nwp_zorl_c=tmp3d8b
    350  zorl = this%nwp_zorl_c(:,ybegin:yend,time_to_get)
    351  end if
    352  if (this%i_hice .gt. 0) then
    353  call ncdata%get_var(this%varnames(this%i_hice),this%xlon, &
    354  this%xlat,this%xtime,tmp3d8b)
    355  this%nwp_hice_c=tmp3d8b
    356  hice = this%nwp_hice_c(:,ybegin:yend,time_to_get)
    357  end if
    358  deallocate(tmp2d8b)
    359  deallocate(tmp3d8b)
    360 
    361  else if (wcstart == 'warm') then
    362  allocate(this%nwp_mask_w(this%xlon,this%xlat))
    363  allocate(this%nwp_sst_w(this%xlon,this%xlat))
    364  allocate(this%nwp_ice_w(this%xlon,this%xlat))
    365  allocate(this%nwp_sfcT_w(this%xlon,this%xlat))
    366  allocate(this%nwp_iceT_w(this%xlon,this%xlat))
    367  allocate(this%nwp_sfcTl_w(this%xlon,this%xlat))
    368  allocate(this%nwp_zorl_w(this%xlon,this%xlat))
    369  allocate(this%nwp_hice_w(this%xlon,this%xlat))
    370 ! Get variables from the data file, but only if the variable is
    371 ! defined for that data type.
    372 
    373  write(6,*) 'itype = ', itype
    374  write(6,*) 'wcstart =', wcstart
    375  write(6,*) 'xlat = ', this%xlat
    376  write(6,*) 'xlon = ', this%xlon
    377  write(6,*) 'xtime = ', this%xtime
    378 
    379  if (this%i_mask .gt. 0) then
    380  call ncdata%get_var(this%varnames(this%i_mask),this%xlon, &
    381  this%xlat,this%nwp_mask_w)
    382  mask = this%nwp_mask_w(:,ybegin:yend)
    383  end if
    384  if (this%i_sst .gt. 0) then
    385  call ncdata%get_var(this%varnames(this%i_sst),this%xlon, &
    386  this%xlat,this%nwp_sst_w)
    387  sst = this%nwp_sst_w(:,ybegin:yend)
    388  end if
    389  if (this%i_ice .gt. 0) then
    390  call ncdata%get_var(this%varnames(this%i_ice),this%xlon, &
    391  this%xlat,this%nwp_ice_w)
    392  ice = this%nwp_ice_w(:,ybegin:yend)
    393  end if
    394  if (this%i_sfcT .gt. 0) then
    395  call ncdata%get_var(this%varnames(this%i_sfcT),this%xlon, &
    396  this%xlat,this%nwp_sfcT_w)
    397  sfct = this%nwp_sfcT_w(:,ybegin:yend)
    398  end if
    399  if (this%i_iceT .gt. 0) then
    400  call ncdata%get_var(this%varnames(this%i_iceT),this%xlon, &
    401  this%xlat,this%nwp_iceT_w)
    402  icet = this%nwp_iceT_w(:,ybegin:yend)
    403  end if
    404  if (this%i_sfcTl .gt. 0) then
    405  call ncdata%get_var(this%varnames(this%i_sfcTl),this%xlon, &
    406  this%xlat,this%nwp_sfcTl_w)
    407  sfctl = this%nwp_sfcTl_w(:,ybegin:yend)
    408  end if
    409  if (this%i_zorl .gt. 0) then
    410  call ncdata%get_var(this%varnames(this%i_zorl),this%xlon, &
    411  this%xlat,this%nwp_zorl_w)
    412  zorl = this%nwp_zorl_w(:,ybegin:yend)
    413  end if
    414  if (this%i_hice .gt. 0) then
    415  call ncdata%get_var(this%varnames(this%i_hice),this%xlon, &
    416  this%xlat,this%nwp_hice_w)
    417  hice = this%nwp_hice_w(:,ybegin:yend)
    418  end if
    419 
    420  else
    421  write(6,*) 'Choose either "warm" or "cold" for file'
    422  stop 'Error in wcstart. Check spelling or if variable was assigned'
    423  end if
    424 ! Close the netCDF file.
    425 
    426  call ncdata%close
    427 
    428  write(6,*) 'Finished read_nwp'
    429  write(6,*) ' '
    430 
    431  end subroutine read_nwp
    432 
    439  subroutine finish_nwp(this,itype,wcstart)
    441  class(fcst_nwp) :: this
    442  character(len=6), intent(in) :: itype
    443  character(len=4), intent(in) :: wcstart
    444 
    445  deallocate(this%varnames)
    446  deallocate(this%latname)
    447  deallocate(this%lonname)
    448  deallocate(this%dimnameEW)
    449  deallocate(this%dimnameNS)
    450  deallocate(this%dimnameTIME)
    451  if (wcstart == 'cold' .OR. itype==' FVCOM') then
    452  deallocate(this%nwp_mask_c)
    453  deallocate(this%nwp_sst_c)
    454  deallocate(this%nwp_ice_c)
    455  deallocate(this%nwp_sfcT_c)
    456  deallocate(this%nwp_iceT_c)
    457  deallocate(this%nwp_zorl_c)
    458  deallocate(this%nwp_hice_c)
    459  if (itype==' FVCOM') deallocate(this%dimnameDATE)
    460  else if (wcstart == 'warm') then
    461  deallocate(this%nwp_mask_w)
    462  deallocate(this%nwp_sst_w)
    463  deallocate(this%nwp_ice_w)
    464  deallocate(this%nwp_sfcT_w)
    465  deallocate(this%nwp_iceT_w)
    466  deallocate(this%nwp_sfcTl_w)
    467  deallocate(this%nwp_zorl_w)
    468  deallocate(this%nwp_hice_w)
    469  else
    470  write(6,*) 'no deallocation'
    471  end if
    472 
    473  write(6,*) 'Finished finish_nwp'
    474  write(6,*) ' '
    475 
    476  end subroutine finish_nwp
    477 
    487  subroutine get_time_ind_nwp(this,filename,instr,outindex)
    489  class(fcst_nwp) :: this
    490 
    491  character(len=*), intent(in) :: filename
    492  character(len=*), intent(in) :: instr
    493  integer, intent(out) :: outindex
    494 
    495  character(len=26) :: temp
    496  integer :: foundind
    497  integer :: k,i
    498 
    499 ! Open the file using module_ncio.f90 code, and find the length of
    500 ! time in the file
    501  call ncdata%open(trim(filename),'r',200)
    502  call ncdata%get_dim(this%dimnameTIME,this%xtime)
    503  call ncdata%get_dim(this%dimnameDATE,this%datelen)
    504  write(6,*) 'xtime = ', this%xtime
    505  write(6,*) 'datelen = ', this%datelen
    506  allocate(this%times(this%datelen,this%xtime))
    507  call ncdata%get_var('Times',this%datelen,this%xtime,this%times)
    508 
    509  foundind = 0
    510 
    511  do k=1,this%xtime,1
    512  do i = 1,len(temp),1
    513  temp(i:i) = this%times(i,k)
    514  end do
    515  if (trim(temp) == trim(instr)) then !If times are equal return k
    516  outindex = k
    517  foundind = 1
    518  end if
    519  end do
    520  if (foundind == 0) then
    521  outindex = -999
    522  deallocate(this%times)
    523  call ncdata%close
    524  write(6,*) 'WARNING: Supplied time not found in file: ', trim(instr)
    525  write(6,*) 'Stoppping fvcom_to_FV3 and proceeding without using FVCOM data'
    526  stop
    527  end if
    528 
    529  deallocate(this%times)
    530  call ncdata%close
    531 
    532  end subroutine get_time_ind_nwp
    533 
    534 end module module_nwp
    subroutine finish_nwp(this, itype, wcstart)
    Finish and deallocate.
    Definition: module_nwp.f90:440
    +
    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...
    Definition: module_nwp.f90:259
    + +
    subroutine get_time_ind_nwp(this, filename, instr, outindex)
    This subroutine searches the FVCOM &#39;Times&#39; variable and returns the matching index.
    Definition: module_nwp.f90:488
    +
    type(ncio) ncdata
    Wrapper object for netCDF data file.
    Definition: module_nwp.f90:75
    +
    subroutine initial_nwp(this, itype, wcstart)
    This subroutine defines the number of variables and their names for each NWP data type...
    Definition: module_nwp.f90:89
    +
    real(r_single), parameter, public rmissing
    Fill value for single real missing data.
    Definition: kinds.f90:29
    + +
    Functions to read and write netcdf files.
    Definition: module_ncio.f90:7
    +
    integer, parameter, public i_short
    generic specification kind for default short.
    Definition: kinds.f90:22
    +
    This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observa...
    Definition: module_nwp.f90:15
    +
    integer, parameter, public r_kind
    generic specification kind for default floating point
    Definition: kinds.f90:26
    +
    subroutine list_initial_nwp(this)
    This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine.
    Definition: module_nwp.f90:215
    +
    integer, parameter, public r_single
    specification kind for single precision (4-byte) real variable.
    Definition: kinds.f90:25
    +
    Module to hold specification kinds for variable declaration.
    Definition: kinds.f90:11
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacekinds.html b/ver-1.11.0/fvcom_tools/namespacekinds.html new file mode 100644 index 000000000..6d6a9088f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacekinds.html @@ -0,0 +1,314 @@ + + + + + + + +fvcom_tools: kinds Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    kinds Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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

    +
    Author
    David Wright, University of Michigan
    +

    Variable Documentation

    + +

    ◆ drmissing

    + +
    +
    + + + + +
    real(r_kind), parameter, public kinds::drmissing =-99999.0
    +
    + +

    Fill value for double real missing data.

    + +

    Definition at line 31 of file kinds.f90.

    + +
    +
    + +

    ◆ i_byte

    + +
    +
    + + + + +
    integer, parameter, public kinds::i_byte = 1
    +
    + +

    generic specification kind for default byte.

    + +

    Definition at line 23 of file kinds.f90.

    + +
    +
    + +

    ◆ i_kind

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ i_short

    + +
    +
    + + + + +
    integer, parameter, public kinds::i_short = 2
    +
    + +

    generic specification kind for default short.

    + +

    Definition at line 22 of file kinds.f90.

    + +
    +
    + +

    ◆ imissing

    + +
    +
    + + + + +
    real(i_kind), parameter, public kinds::imissing =-99999
    +
    + +

    Fill value for integer missing data.

    + +

    Definition at line 30 of file kinds.f90.

    + +
    +
    + +

    ◆ len_sta_name

    + +
    +
    + + + + +
    integer, parameter, public kinds::len_sta_name = 8
    +
    + +

    Name length.

    + +

    Definition at line 16 of file kinds.f90.

    + +
    +
    + +

    ◆ r_kind

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ r_single

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ rmissing

    + +
    +
    + + + + +
    real(r_single), parameter, public kinds::rmissing =-99999.0
    +
    + +

    Fill value for single real missing data.

    + +

    Definition at line 29 of file kinds.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemembers.html b/ver-1.11.0/fvcom_tools/namespacemembers.html new file mode 100644 index 000000000..c4701f104 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemembers.html @@ -0,0 +1,324 @@ + + + + + + + +fvcom_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - n -

    + + +

    - o -

    + + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemembers_func.html b/ver-1.11.0/fvcom_tools/namespacemembers_func.html new file mode 100644 index 000000000..ed0c0362c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemembers_func.html @@ -0,0 +1,286 @@ + + + + + + + +fvcom_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - o -

    + + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemembers_vars.html b/ver-1.11.0/fvcom_tools/namespacemembers_vars.html new file mode 100644 index 000000000..c7da001fe --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemembers_vars.html @@ -0,0 +1,132 @@ + + + + + + + +fvcom_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemodule__ncio.html b/ver-1.11.0/fvcom_tools/namespacemodule__ncio.html new file mode 100644 index 000000000..95352ad7c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemodule__ncio.html @@ -0,0 +1,3033 @@ + + + + + + + +fvcom_tools: module_ncio Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_ncio Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Functions to read and write netcdf files.

    +
    Author
    Ming Hu
    +
    Date
    2017-11-01
    +

    Function/Subroutine Documentation

    + +

    ◆ add_new_var_2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::add_new_var_2d (class(nciothis,
    character(len=*), intent(in) varname,
    character(len=*), intent(in) dname1,
    character(len=*), intent(in) dname2,
    character(len=*), intent(in) lname,
    character(len=*), intent(in) units,
    character(len=*), intent(in) dtype 
    )
    +
    +private
    +
    + +

    Add a new variable to sfc_data.nc with dimensions (yaxis_1, xaxis_1).

    +
    Parameters
    + + + + + + + + +
    thisinstance of an ncio class
    [in]varnameName of variable to be created in netcdf file
    [in]dname11st dimension name
    [in]dname22nd dimension name
    [in]lnamelong name output for netcdf variable
    [in]unitsunits to use in netcdf variable
    [in]dtypedata type of netcdf variable
    +
    +
    +
    Author
    David.M.Wright org: UM/GLERL
    +
    Date
    2021-10-07
    + +

    Definition at line 2575 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::add_new_var().

    + +
    +
    + +

    ◆ add_new_var_3d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::add_new_var_3d (class(nciothis,
    character(len=*), intent(in) varname,
    character(len=*), intent(in) dname1,
    character(len=*), intent(in) dname2,
    character(len=*), intent(in) dname3,
    character(len=*), intent(in) lname,
    character(len=*), intent(in) units,
    character(len=*), intent(in) dtype 
    )
    +
    +private
    +
    + +

    Add a new variable to sfc_data.nc with dimensions (Time, yaxis_1, xaxis_1).

    +
    Parameters
    + + + + + + + + + +
    thisinstance of an ncio class
    [in]varnameName of variable to be created in netcdf file
    [in]dname11st dimension name
    [in]dname22nd dimension name
    [in]dname33rd dimension name
    [in]lnamelong name output for netcdf variable
    [in]unitsunits to use in netcdf variable
    [in]dtypedate type of netcdf variable
    +
    +
    +
    Author
    David.M.Wright org: UM/GLERL
    +
    Date
    2020-09-01
    + +

    Definition at line 2518 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::add_new_var().

    + +
    +
    + +

    ◆ close_nc()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine module_ncio::close_nc (class(nciothis)
    +
    +private
    +
    + +

    Close a netcdf file.

    +
    Parameters
    + + +
    thisinstance of an ncio class
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-04-10
    + +

    Definition at line 141 of file module_ncio.f90.

    + +
    +
    + +

    ◆ convert_theta2t_2dgrid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::convert_theta2t_2dgrid (class(nciothis,
    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).

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]nxnumber of grid points in x-dir
    [in]nynumber of grid points in y-dir
    [in]psPressure (Pa)
    [in,out]t2Pot. Temperature (Kelvin)
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2481 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_att_nc_int()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_att_nc_int (class(nciothis,
    character(len=*), intent(in) attname,
    integer, intent(out) ival 
    )
    +
    +private
    +
    + +

    Get integer attribute in wrf netcdf file.

    +
    Parameters
    + + + + +
    thisinstance of an ncio class
    attnamename of the attribute to get
    ivalvalue of attribute.
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-10-04
    + +

    Definition at line 187 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_att().

    + +
    +
    + +

    ◆ get_att_nc_real()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_att_nc_real (class(nciothis,
    character(len=*), intent(in) attname,
    real, intent(out) rval 
    )
    +
    +private
    +
    + +

    Get attribute in wrf netcdf file.

    +
    Parameters
    + + + + +
    thisinstance of an ncio class
    attnamename of the attribute to get
    rvalreturn value
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-10-04
    + +

    Definition at line 163 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_att().

    + +
    +
    + +

    ◆ get_att_nc_string()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_att_nc_string (class(nciothis,
    character(len=*), intent(in) attname,
    character(len=*), intent(out) string 
    )
    +
    +private
    +
    + +

    Get string attribute in wrf netcdf file.

    +
    Parameters
    + + + + +
    thisinstance of an ncio class
    attnamename of the attribute to get
    stringvalue of attribute.
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-10-04
    + +

    Definition at line 211 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_att().

    + +
    +
    + +

    ◆ get_dim_nc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_dim_nc (class(nciothis,
    character(len=*), intent(in) dimname,
    integer, intent(out) dimvalue 
    )
    +
    +private
    +
    + +

    Get dimensions in netcdf file.

    +
    Parameters
    + + + + +
    [in]thisinstance of an ncio class
    [in]dimnamename of the dimension
    [out]dimvaluelength of the dimension
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 236 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_char()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_char (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    character, dimension(ilength), intent(out) field 
    )
    +
    + +

    Read in character type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2354 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_char_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_char_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    character, dimension(nd1), intent(out) field 
    )
    +
    + +

    Read in 1D character type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2210 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_char_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_char_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2248 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_char_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_char_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2300 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_double()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_double (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    real(8), dimension(ilength), intent(out) field 
    )
    +
    + +

    Read in double type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1390 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_double_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_double_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    real(8), dimension(nd1), intent(out) field 
    )
    +
    + +

    Read in 1D double type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1lenth of first dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1244 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_double_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_double_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1282 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_double_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_double_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1334 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_int()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_int (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    integer, dimension(ilength), intent(out) field 
    )
    +
    + +

    Read in integer type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [in]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1904 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_int_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_int_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    integer, dimension(nd1), intent(out) field 
    )
    +
    + +

    Read in 1D integer variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1755 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_int_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_int_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1793 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_int_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_int_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [in]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1848 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_real (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    real(4), dimension(ilength), intent(out) field 
    )
    +
    + +

    Read in real type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1646 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_real_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_real_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    real(4), dimension(nd1), intent(out) field 
    )
    +
    + +

    Read in 1D real type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1497 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_real_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_real_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1535 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_real_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_real_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1590 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_short()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_short (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    integer(2), dimension(ilength), intent(out) field 
    )
    +
    + +

    Read in short type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2104 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_short_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_short_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    integer(2), dimension(nd1), intent(out) field 
    )
    +
    + +

    Read in 1D short type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2013 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ get_var_nc_short_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::get_var_nc_short_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [out]fieldoutput variable
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2051 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::get_var().

    + +
    +
    + +

    ◆ handle_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::handle_err (class(nciothis,
    integer, intent(in) status 
    )
    +
    + +

    Handle netCDF errors.

    +
    Parameters
    + + + +
    [in]thisinstance of an ncio class
    [in]statusreturn code from neCDF
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 2461 of file module_ncio.f90.

    + +
    +
    + +

    ◆ open_nc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::open_nc (class(nciothis,
    character(len=*), intent(in) filename,
    character(len=1), intent(in) action,
    integer, intent(in), optional debug_level 
    )
    +
    +private
    +
    + +

    Open a netcdf file, set initial debug level.

    +
    Parameters
    + + + + + +
    thisinstance of an ncio class
    filenamethe file to open
    action"r" for read, "w" for write
    debug_levelset to non-zero for some verbose output
    +
    +
    +
    Author
    Ming Hu
    +
    Date
    2017-11-01
    + +

    Definition at line 104 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_char()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_char (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    character, dimension(ilength), intent(in) field 
    )
    +
    + +

    Replace character type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthlength of array
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 398 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_char_1d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_char_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    character, dimension(nd1), intent(in) field 
    )
    +
    +private
    +
    + +

    Replace 1D character type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 264 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_char_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_char_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 300 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_char_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_char_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 348 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_double()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_double (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    real(8), dimension(ilength), intent(in) field 
    )
    +
    + +

    Replace double type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 894 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_double_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_double_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    real(8), dimension(nd1), intent(in) field 
    )
    +
    + +

    Replace 1D double type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 749 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_double_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_double_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 787 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_double_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_double_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 838 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_int()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_int (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    integer, dimension(ilength), intent(in) field 
    )
    +
    + +

    Replace integer type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthsize of array
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1138 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_int_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_int_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    integer, dimension(nd1), intent(in) field 
    )
    +
    + +

    Replace 1D integer type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1lenth of first dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1000 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_int_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_int_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1035 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_int_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_int_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 1086 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_real()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_real (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) ilength,
    real(4), dimension(ilength), intent(in) field 
    )
    +
    + +

    Replace real type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]ilengthlength of array
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 643 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_real_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_real_1d (class(nciothis,
    character(len=*), intent(in) varname,
    integer, intent(in) nd1,
    real(4), dimension(nd1), intent(in) field 
    )
    +
    + +

    Replace 1D real type variable.

    +
    Parameters
    + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 505 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_real_2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_real_2d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 540 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    + +

    ◆ replace_var_nc_real_3d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_ncio::replace_var_nc_real_3d (class(nciothis,
    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.

    +
    Parameters
    + + + + + + + +
    [in]thisinstance of an ncio class
    [in]varnamename of the variable
    [in]nd1length of first dimension
    [in]nd2length of second dimension
    [in]nd3length of third dimension
    [in]fieldreplacement field
    +
    +
    +
    Author
    Ming Hu org: GSD/AMB
    +
    Date
    2017-11-01
    + +

    Definition at line 588 of file module_ncio.f90.

    + +

    Referenced by module_ncio::ncio::replace_var().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemodule__ncio.js b/ver-1.11.0/fvcom_tools/namespacemodule__ncio.js new file mode 100644 index 000000000..45461e93e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemodule__ncio.js @@ -0,0 +1,4 @@ +var namespacemodule__ncio = +[ + [ "ncio", "structmodule__ncio_1_1ncio.html", "structmodule__ncio_1_1ncio" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/namespacemodule__nwp.html b/ver-1.11.0/fvcom_tools/namespacemodule__nwp.html new file mode 100644 index 000000000..a5aeb6760 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemodule__nwp.html @@ -0,0 +1,552 @@ + + + + + + + +fvcom_tools: module_nwp Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_nwp Module Reference
    +
    +
    + +

    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(ncioncdata
     Wrapper object for netCDF data file. More...
     
    +

    Detailed Description

    +

    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.

    +
    Author
    David Wright, University of Michigan and GLERL,
    +
    Date
    17 Aug 2020
    +

    Function/Subroutine Documentation

    + +

    ◆ finish_nwp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_nwp::finish_nwp (class(fcst_nwpthis,
    character(len=6), intent(in) itype,
    character(len=4), intent(in) wcstart 
    )
    +
    +private
    +
    + +

    Finish and deallocate.

    +
    Parameters
    + + + + +
    thisfcst_nwp object
    [in]itypeeither ' FVCOM' or 'FV3LAM'
    [in]wcstarteither 'warm' or 'cold'.
    +
    +
    +
    Author
    David Wright, University of Michigan and GLERL
    + +

    Definition at line 440 of file module_nwp.f90.

    + +
    +
    + +

    ◆ get_time_ind_nwp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_nwp::get_time_ind_nwp (class(fcst_nwpthis,
    character(len=*), intent(in) filename,
    character(len=*), intent(in) instr,
    integer, intent(out) outindex 
    )
    +
    +private
    +
    + +

    This subroutine searches the FVCOM 'Times' variable and returns the matching index.

    +
    Parameters
    + + + + + +
    thisfcst_nwp ojbect
    [in]filenamenetcdf file name
    [in]instrstring of requested time
    [out]outindexint index that matches instr
    +
    +
    +
    Author
    David Wright, University of Michigan and GLERL
    + +

    Definition at line 488 of file module_nwp.f90.

    + +

    References ncdata.

    + +
    +
    + +

    ◆ initial_nwp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_nwp::initial_nwp (class(fcst_nwpthis,
    character(len=6), intent(in) itype,
    character(len=4), intent(in) wcstart 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    thisfcst_nwp object
    [in]itypeeither ' FVCOM' or 'FV3LAM'.
    [in]wcstarteither 'warm' or 'cold'.
    +
    +
    +
    Author
    David Wright, University of Michigan and GLERL
    + +

    Definition at line 89 of file module_nwp.f90.

    + +
    +
    + +

    ◆ list_initial_nwp()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine module_nwp::list_initial_nwp (class(fcst_nwpthis)
    +
    +private
    +
    + +

    This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine.

    +
    Parameters
    + + +
    thisfcst_nwp object
    +
    +
    +
    Author
    David Wright, University of Michigan and GLERL
    + +

    Definition at line 215 of file module_nwp.f90.

    + +
    +
    + +

    ◆ read_nwp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine module_nwp::read_nwp (class(fcst_nwpthis,
    character(len=*), intent(in) filename,
    character(len=6), intent(in) itype,
    character(len=4), intent(in) wcstart,
    integer, intent(inout) numlon,
    integer, intent(inout) numlat,
    integer, intent(inout) numtimes,
    integer, intent(in) time_to_get,
    real(r_single), dimension(:,:), intent(inout) mask,
    real(r_single), dimension(:,:), intent(inout) sst,
    real(r_single), dimension(:,:), intent(inout) ice,
    real(r_single), dimension(:,:), intent(inout) sfcT,
    real(r_single), dimension(:,:), intent(inout) iceT,
    real(r_single), dimension(:,:), intent(inout) sfcTl,
    real(r_single), dimension(:,:), intent(inout) zorl,
    real(r_single), dimension(:,:), intent(inout) hice,
    integer, intent(in) ybegin,
    integer, intent(in) yend 
    )
    +
    +private
    +
    + +

    This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + +
    thisfcst_nwp ojbect
    [in]filenamenetcdf file name
    [in]itypeeither ' FVCOM' or 'FV3LAM'
    [in]wcstarteither 'warm' or 'cold'.
    [in,out]numlonnumber of grid points in x-direction
    [in,out]numlatnumber of grid poinst in y-direction
    [in,out]numtimeslength of time dimension
    [in]time_to_getinteger of time dimension to read in
    [in,out]maskWater points mask
    [in,out]sstWater surface temperature
    [in,out]iceIce concentration (%)
    [in,out]sfcTSkin Temperature
    [in,out]iceTIce Skin Temperature
    [in,out]sfcTlSkin Temperature in restart file
    [in,out]zorlSurface roughness length
    [in,out]hiceIce thickness
    [in]ybeginStart grid point in Y direction for the domain
    [in]yendEnd grid point in Y direction for the domain
    +
    +
    +
    Author
    David Wright, University of Michigan and GLERL
    + +

    Definition at line 259 of file module_nwp.f90.

    + +

    References ncdata.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ ncdata

    + +
    +
    + + + + + +
    + + + + +
    type(ncio) module_nwp::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().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespacemodule__nwp.js b/ver-1.11.0/fvcom_tools/namespacemodule__nwp.js new file mode 100644 index 000000000..dc3c99f86 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespacemodule__nwp.js @@ -0,0 +1,4 @@ +var namespacemodule__nwp = +[ + [ "fcst_nwp", "structmodule__nwp_1_1fcst__nwp.html", "structmodule__nwp_1_1fcst__nwp" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/namespaces.html b/ver-1.11.0/fvcom_tools/namespaces.html new file mode 100644 index 000000000..e2b456a8c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespaces.html @@ -0,0 +1,111 @@ + + + + + + + +fvcom_tools: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + + + +
     NkindsModule to hold specification kinds for variable declaration
     Nmodule_ncioFunctions to read and write netcdf files
     Nmodule_nwpThis module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/namespaces_dup.js b/ver-1.11.0/fvcom_tools/namespaces_dup.js new file mode 100644 index 000000000..8b5037480 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/namespaces_dup.js @@ -0,0 +1,6 @@ +var namespaces_dup = +[ + [ "kinds", "namespacekinds.html", null ], + [ "module_ncio", "namespacemodule__ncio.html", null ], + [ "module_nwp", "namespacemodule__nwp.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/nav_f.png b/ver-1.11.0/fvcom_tools/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/nav_g.png b/ver-1.11.0/fvcom_tools/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +fvcom_tools: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.html b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.html new file mode 100644 index 000000000..1c54fa977 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.html @@ -0,0 +1,156 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/process_FVCOM.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    process_FVCOM.f90 File Reference
    +
    +
    + +

    This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program process_FVCOM
     Put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc. More...
     
    +

    Detailed Description

    +

    This is the code to put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc.

    + +

    Definition in file process_FVCOM.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ process_FVCOM()

    + +
    +
    + + + + + + + +
    program process_FVCOM ()
    +
    + +

    Put lake surface temperature and aerial ice concentration from GLERL-provided FVCOM forecast files (which have already been mapped to the FV3-LAM grid) into sfc_data.nc.

    +

    This script will take four variables from the command line:

      +
    1. Name of FV3 sfc data file (e.g. sfc_data.tile7.halo0.nc)
    2. +
    3. Name of FVCOM data file (e.g. fvcom.nc)
    4. +
    5. "warm" or "cold" start. "warm" start will read in sfc_data.nc files generated from a restart of UFS-SRW. "cold" start will read in sfc_data.nc files generated from chgres_cube.
    6. +
    7. String of time slice to use in the fvcom.nc file. This string should match exactly what is in the Times variable of the .nc file. To run the script, use the following example, modifying file names as needed: ./fvcom_to_FV3 sfc_data.tile7.halo0.nc fvcom.nc cold \ 2020-01-31T18:00:00.000000 Code is strongly based upon Eric James' (ESRL/GSL) work to update HRRR/WRF Great Lakes' temperature data with FVCOM. Code also relies heavily on Ming Hu's ncio module.
    8. +
    +
    Author
    David Wright, University of Michigan and GLERL
    +
    Date
    17 Aug 2020
    +
    Returns
    0 for success, error code otherwise
    + +

    Definition at line 32 of file process_FVCOM.f90.

    + +

    References kinds::i_kind, kinds::r_kind, and kinds::r_single.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.js b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.js new file mode 100644 index 000000000..cba44bb33 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90.js @@ -0,0 +1,4 @@ +var process__FVCOM_8f90 = +[ + [ "process_FVCOM", "process__FVCOM_8f90.html#add40d3ba83ac0362b6a274ab28a701d8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/process__FVCOM_8f90_source.html b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90_source.html new file mode 100644 index 000000000..d6b009556 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/process__FVCOM_8f90_source.html @@ -0,0 +1,113 @@ + + + + + + + +fvcom_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/process_FVCOM.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    process_FVCOM.f90
    +
    +
    +Go to the documentation of this file.
    1 
    6 
    32 program process_fvcom
    33 
    34  use mpi
    35  use kinds, only: r_kind, i_kind, r_single
    36  use module_ncio, only: ncio
    37  use module_nwp, only: fcst_nwp
    38 
    39  implicit none
    40 
    41 ! MPI variables
    42  integer :: npe, mype, mypelocal,ierror
    43  integer,allocatable :: mpi_layout_begin(:),mpi_layout_end(:)
    44 !
    45 
    46 ! New object-oriented declarations
    47 
    48  type(ncio) :: geo
    49  type(fcst_nwp) :: fcst
    50 
    51 ! Grid variables
    52 
    53  character*180 :: thisfv3file
    54  character*2 :: workpath
    55  character*1 :: char1
    56 
    57  integer :: map_proj, nlon, nlat
    58  integer :: fv3lon, fv3lat, fv3times
    59  integer :: lbclon, lbclat, lbctimes
    60  integer :: i, j, t1, t2
    61  integer :: num_args, ix
    62  integer :: indexfvcomsel
    63 
    64  real :: rad2deg = 180.0/3.1415926
    65  real :: userdx, userdy, cen_lat, cen_lon
    66  real :: usertruelat1, usertruelat2, moad_cen_lat, stand_lon
    67  real :: truelat1, truelat2, stdlon, lat1, lon1, r_earth
    68  real :: knowni, knownj, dx
    69  real :: one, pi, deg2rad
    70  real :: zero
    71 
    72  character(len=180) :: fv3file
    73  character(len=180) :: fvcomfile
    74  character(len=180) :: wcstart
    75  character(len=180) :: inputfvcomselstr
    76  character(len=180), dimension(:), allocatable :: args
    77  integer :: fv3_io_layout_y
    78  integer,allocatable :: fv3_layout_begin(:),fv3_layout_end(:)
    79 
    80  real(r_single), allocatable :: fv3ice(:,:), fv3sst(:,:)
    81  real(r_single), allocatable :: fv3sfct(:,:), fv3mask(:,:)
    82  real(r_single), allocatable :: fv3icet(:,:), fv3sfctl(:,:)
    83  real(r_single), allocatable :: fv3zorl(:,:), fv3hice(:,:)
    84  real(r_single), allocatable :: lbcice(:,:), lbcsst(:,:)
    85  real(r_single), allocatable :: lbcsfct(:,:), lbcmask(:,:)
    86  real(r_single), allocatable :: lbcicet(:,:), lbczorl(:,:)
    87  real(r_single), allocatable :: lbchice(:,:)
    88 
    89 ! Declare namelists
    90 ! SETUP (general control namelist) :
    91 
    92  integer :: update_type
    93  character(len=4) :: clayout_y
    94  integer :: iy,iblock
    95 
    96 ! namelist/setup/update_type, t2
    97 
    98 ! MPI setup
    99  call mpi_init(ierror)
    100  call mpi_comm_size(mpi_comm_world,npe,ierror)
    101  call mpi_comm_rank(mpi_comm_world,mype,ierror)
    102 !
    103 ! NCEP LSF has to use all cores allocated to run this application
    104 ! but this if check can make sure only one core run through the real code.
    105 !
    106 
    107  write(*,*) 'number of cores=',npe
    108 
    109  zero = 0.0
    110 ! Get file names from command line arguements
    111  num_args = command_argument_count()
    112  allocate(args(num_args))
    113 
    114  do ix = 1, num_args
    115  call get_command_argument(ix,args(ix))
    116  end do
    117 ! fv3file: location of UFS grid
    118 ! fvcomfile: location of FVCOM data file
    119 ! wcstart: warm (restart) or cold start
    120 ! inputFVCOMtimes: string of time to use
    121  fv3file=trim(args(1))
    122  write(*,*) 'surface file=',trim(fv3file)
    123  fvcomfile=trim(args(2))
    124  write(*,*) 'fvcom file=',trim(fvcomfile)
    125  wcstart=trim(args(3))
    126  write(*,*) 'warm or cold start = ', trim(wcstart)
    127  inputfvcomselstr=trim(args(4))
    128 ! read(inputFVCOMselStr,*) inputFVCOMsel
    129  write(*,*) 'select time = ', trim(inputfvcomselstr)
    130  clayout_y=trim(args(5))
    131  read(clayout_y,'(I2)') fv3_io_layout_y
    132  if (wcstart == 'cold') then
    133  fv3_io_layout_y=1
    134  endif
    135  write(*,*) 'subdomain number=',fv3_io_layout_y
    136  if(mype < fv3_io_layout_y) then
    137  write(thisfv3file,'(a,I3.3)') 'stdout_fvcom.',mype
    138  open(6, file=trim(thisfv3file),form='formatted',status='unknown')
    139  write(6,*) '===> start process for core = ', mype
    140  endif
    141 !
    142 ! figure out subdomain grid begin and end grid index in Y for each core
    143 ! The match the subdomains to each core
    144 !
    145  allocate(fv3_layout_begin(fv3_io_layout_y))
    146  allocate(fv3_layout_end(fv3_io_layout_y))
    147  allocate(mpi_layout_begin(npe))
    148  allocate(mpi_layout_end(npe))
    149  fv3_layout_begin=0
    150  fv3_layout_end=0
    151 
    152  workpath='./'
    153  iy=0
    154  do ix=1,fv3_io_layout_y
    155  if(fv3_io_layout_y > 1) then
    156  write(thisfv3file,'(a,a,a1,I4.4)') trim(workpath), trim(fv3file),'.',ix-1
    157  else
    158  write(thisfv3file,'(a,a)') trim(workpath), trim(fv3file)
    159  endif
    160  call geo%open(trim(thisfv3file),'r',200)
    161  call geo%get_dim("yaxis_1",nlat)
    162  call geo%close
    163  fv3_layout_begin(ix)=iy+1
    164  fv3_layout_end(ix)=iy+nlat
    165  iy=fv3_layout_end(ix)
    166  enddo ! find dimension
    167  write(6,'(a,20I5)') 'begin index for each subdomain',fv3_layout_begin
    168  write(6,'(a,20I5)') ' end index for each subdomain',fv3_layout_end
    169 
    170  mypelocal=mype+1
    171  if(npe==1) then
    172  mpi_layout_begin(mypelocal)=1
    173  mpi_layout_end(mypelocal)=fv3_io_layout_y
    174  else
    175  mpi_layout_begin=0
    176  mpi_layout_end=0
    177  do ix=1,fv3_io_layout_y
    178  iy=mod(ix-1,npe)+1
    179  mpi_layout_end(iy)=mpi_layout_end(iy)+1
    180  enddo
    181  iy=0
    182  do ix=1,npe
    183  if(mpi_layout_end(ix) > 0) then
    184  mpi_layout_begin(ix)=iy+1
    185  mpi_layout_end(ix)=iy+mpi_layout_end(ix)
    186  iy=mpi_layout_end(ix)
    187  else
    188  mpi_layout_begin(ix)=0
    189  mpi_layout_end(ix)=0
    190  endif
    191  enddo
    192  endif
    193  write(6,'(a)') 'begin and end domain index for each core:'
    194  write(6,'(20I5)') mpi_layout_begin
    195  write(6,'(20I5)') mpi_layout_end
    196 
    197 if(mypelocal <= fv3_io_layout_y) then
    198 
    199  do ix=mpi_layout_begin(mypelocal),mpi_layout_end(mypelocal)
    200 
    201  write(6,*) 'process subdomain ',ix,' with core ',mype
    202  if(fv3_io_layout_y > 1) then
    203  write(thisfv3file,'(a,a,a1,I4.4)') trim(workpath), trim(fv3file),'.',ix-1
    204  else
    205  write(thisfv3file,'(a,a)') trim(workpath), trim(fv3file)
    206  endif
    207  write(6,*) 'sfc data file', trim(thisfv3file)
    208 
    209  call geo%open(trim(thisfv3file),'r',200)
    210  call geo%get_dim("xaxis_1",nlon)
    211  call geo%get_dim("yaxis_1",nlat)
    212  write(6,*) 'NLON,NLAT:', nlon, nlat
    213  call geo%close
    214 
    215  write(6,*) 'Finished reading sfc_data grid information.'
    216  write(6,*) ' '
    217 !
    218 ! figure out subdomain grid dimension in Y
    219 !
    220  write(6,*) 'the Y dimensions=',fv3_layout_begin(ix),fv3_layout_end(ix)
    221 
    222 ! Allocate variables for I/O
    223 
    224  allocate(fv3ice(nlon,nlat))
    225  allocate(fv3sfct(nlon,nlat))
    226  allocate(fv3sst(nlon,nlat))
    227  allocate(fv3mask(nlon,nlat))
    228  allocate(fv3icet(nlon,nlat))
    229  allocate(fv3sfctl(nlon,nlat))
    230  allocate(fv3zorl(nlon,nlat))
    231  allocate(fv3hice(nlon,nlat))
    232 
    233  allocate(lbcice(nlon,nlat))
    234  allocate(lbcsfct(nlon,nlat))
    235  allocate(lbcsst(nlon,nlat))
    236  allocate(lbcmask(nlon,nlat))
    237  allocate(lbcicet(nlon,nlat))
    238  allocate(lbczorl(nlon,nlat))
    239  allocate(lbchice(nlon,nlat))
    240 ! Read fv3 sfc_data.nc before update
    241 
    242 ! fv3file='sfc_data.nc'
    243 ! fv3times: length of time dimension of UFS atmospheric grid (should be 1)
    244 ! t1: index of time dimension to pull (should be 1)
    245  fv3times=1
    246  t1=1
    247 
    248  call fcst%initial('FV3LAM',wcstart)
    249  call fcst%list_initial
    250  call fcst%read_n(trim(thisfv3file),'FV3LAM',wcstart,fv3lon,fv3lat,fv3times,t1,&
    251  fv3mask,fv3sst,fv3ice,fv3sfct,fv3icet,fv3sfctl,fv3zorl,fv3hice, &
    252  1,nlat)
    253  call fcst%finish('FV3LAM',wcstart)
    254 
    255 
    256  write(6,*) 'fv3times: ', fv3times
    257  write(6,*) 'time to use: ', t1
    258 
    259 ! Read FVCOM input datasets
    260 
    261 ! fvcomfile='fvcom.nc'
    262 ! lbctimes: length of time dimension of FVCOM input data (command line input)
    263 ! Space infront of ' FVCOM' below is important!!
    264  call fcst%initial(' FVCOM',wcstart)
    265  call fcst%list_initial
    266  call fcst%get_time_ind(trim(fvcomfile),inputfvcomselstr,indexfvcomsel)
    267 ! t2: index of time dimension to pull from FVCOM
    268  t2=indexfvcomsel
    269  write(6,*) 'time asked for =', trim(inputfvcomselstr)
    270  write(6,*) 'time index selected = ', t2
    271  call fcst%read_n(trim(fvcomfile),' FVCOM',wcstart,lbclon,lbclat,lbctimes,t2, &
    272  lbcmask,lbcsst,lbcice,lbcsfct,lbcicet,fv3sfctl,lbczorl,lbchice, &
    273  fv3_layout_begin(ix),fv3_layout_end(ix))
    274  call fcst%finish(' FVCOM',wcstart)
    275 
    276 ! Check that the dimensions match
    277 
    278  if (lbclon .ne. nlon .or. lbclat .ne. nlat) then
    279  write(6,*) 'ERROR: FVCOM/FV3 dimensions do not match:'
    280  write(6,*) 'lbclon: ', lbclon
    281  write(6,*) 'nlon: ', nlon
    282  write(6,*) 'lbclat: ', lbclat
    283  write(6,*) 'nlat: ', nlat
    284  stop 'error'
    285  endif
    286 
    287  write(6,*) 'lbctimes: ', lbctimes
    288  write(6,*) 'time to use: ', t2
    289 
    290  if (t2 .gt. lbctimes) then
    291  write(6,*) 'ERROR: Requested time dimension out of range'
    292  write(6,*) 'Length of time dimension: ', lbctimes
    293  write(6,*) 'Time index to use: ', t2
    294  stop 'error'
    295  endif
    296 
    297 ! Update with FVCOM fields and process
    298 ! ice cover data. Ice fraction is set
    299 ! to a minimum of 15% due to FV3-LAM
    300 ! raising any value below 15% to 15%.
    301  if (wcstart == 'warm') then
    302  do j=1,nlat
    303  do i=1,nlon
    304  if (lbcmask(i,j) > 0. .and. lbcsst(i,j) .ge. -90.0) then !GL Points
    305  !If ice fraction below 15%, set to 0
    306  if (lbcice(i,j) < 0.15) then
    307  lbcice(i,j) = 0.0
    308  lbchice(i,j) = 0.0 !remove ice thickness
    309  endif
    310  fv3ice(i,j) = lbcice(i,j)
    311  fv3hice(i,j) = lbchice(i,j)
    312 
    313  !If ice in FVCOM, but not in FV3-LAM, change to ice
    314  if (lbcice(i,j) > 0. .and. fv3mask(i,j) == 0.) then
    315  fv3mask(i,j) = 2.
    316  fv3zorl(i,j) = 1.1
    317  endif
    318  !If ice in FV3-LAM and not FVCOM, remove it from FV3-LAM
    319  if (fv3mask(i,j) == 2. .and. lbcice(i,j) == 0.) then
    320  fv3mask(i,j) = 0.
    321  fv3zorl(i,j) = zero / zero !Use Fill_Value
    322  endif
    323  fv3sst(i,j) = lbcsst(i,j) + 273.15
    324  fv3sfct(i,j) = lbcsst(i,j) + 273.15
    325  fv3icet(i,j) = lbcsst(i,j) + 273.15
    326  fv3sfctl(i,j)= lbcsst(i,j) + 273.15
    327  !If ice exists in FVCOM, change ice surface temp
    328  if (lbcice(i,j) > 0.) then
    329  fv3icet(i,j) = lbcicet(i,j) + 273.15
    330  end if
    331  end if
    332  enddo
    333  enddo
    334  else if (wcstart == 'cold') then
    335  do j=1,nlat
    336  do i=1,nlon
    337  if (lbcmask(i,j) > 0. .and. lbcsst(i,j) .ge. -90.0) then
    338  !If ice fraction below 15%, set to 0
    339  if (lbcice(i,j) < 0.15) then
    340  lbcice(i,j) = 0.0
    341  lbchice(i,j) = 0.0 !remove ice thickness
    342  endif
    343  fv3ice(i,j) = lbcice(i,j)
    344  fv3hice(i,j) = lbchice(i,j)
    345  !If ice in FVCOM, but not in FV3-LAM, change to ice
    346  if (lbcice(i,j) > 0. .and. fv3mask(i,j) == 0.) then
    347  fv3mask(i,j) = 2.
    348  fv3zorl(i,j) = 1.1
    349  endif
    350  !If ice in FV3-LAM and not FVCOM, remove it from FV3-LAM
    351  if (fv3mask(i,j) == 2. .and. lbcice(i,j) == 0.) then
    352  fv3mask(i,j) = 0.
    353  fv3zorl(i,j) = zero / zero !Use Fill_Value
    354  endif
    355  fv3sst(i,j) = lbcsst(i,j) + 273.15
    356  fv3sfct(i,j) = lbcsst(i,j) + 273.15
    357  fv3icet(i,j) = lbcsst(i,j) + 273.15
    358  !If ice exists in FVCOM, change ice surface temp
    359  if (lbcice(i,j) > 0.) then
    360  fv3icet(i,j) = lbcicet(i,j) + 273.15
    361  end if
    362  end if
    363  enddo
    364  enddo
    365  else
    366  write(6,*) 'Variable wcstart is not set to either warm or cold'
    367  end if
    368 
    369 ! Write out sfc file again
    370 
    371  write(6,*) "udpate file=",trim(thisfv3file)
    372  call geo%open(trim(thisfv3file),'w',300)
    373  call geo%replace_var("tsea",nlon,nlat,fv3sst)
    374  call geo%replace_var("fice",nlon,nlat,fv3ice)
    375  call geo%replace_var("slmsk",nlon,nlat,fv3mask)
    376  call geo%replace_var("tisfc",nlon,nlat,fv3icet)
    377  call geo%replace_var("hice",nlon,nlat,fv3hice)
    378  if (wcstart == 'cold') then
    379 ! Add_New_Var takes names of (Variable,Dim1,Dim2,Dim3,Long_Name,Units)
    380  call geo%replace_var("zorl",nlon,nlat,fv3zorl)
    381  call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none','float')
    382  call geo%replace_var('glmsk',nlon,nlat,lbcmask)
    383  end if
    384  if (wcstart == 'warm') then
    385  call geo%replace_var("zorli",nlon,nlat,fv3zorl)
    386  call geo%replace_var("tsfc",nlon,nlat,fv3sfct)
    387  call geo%replace_var("tsfcl",nlon,nlat,fv3sfctl)
    388  call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none','float')
    389  call geo%replace_var('glmsk',nlon,nlat,lbcmask)
    390  end if
    391  call geo%close
    392 
    393  deallocate(fv3ice)
    394  deallocate(fv3sfct)
    395  deallocate(fv3sst)
    396  deallocate(fv3mask)
    397  deallocate(fv3icet)
    398  deallocate(fv3sfctl)
    399  deallocate(fv3zorl)
    400  deallocate(fv3hice)
    401 
    402  deallocate(lbcice)
    403  deallocate(lbcsfct)
    404  deallocate(lbcsst)
    405  deallocate(lbcmask)
    406  deallocate(lbcicet)
    407  deallocate(lbczorl)
    408  deallocate(lbchice)
    409 
    410  write(6,*) "=== LOWBC UPDATE SUCCESS ===",ix
    411 
    412  enddo ! loop through subdomain
    413 
    414 endif ! mype==0
    415 
    416 call mpi_finalize(ierror)
    417 
    418 
    419 end program process_fvcom
    + +
    Functions to read and write netcdf files.
    Definition: module_ncio.f90:7
    +
    integer, parameter, public i_kind
    generic specification kind for default integer.
    Definition: kinds.f90:21
    +
    This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observa...
    Definition: module_nwp.f90:15
    +
    integer, parameter, public r_kind
    generic specification kind for default floating point
    Definition: kinds.f90:26
    +
    integer, parameter, public r_single
    specification kind for single precision (4-byte) real variable.
    Definition: kinds.f90:25
    +
    Module to hold specification kinds for variable declaration.
    Definition: kinds.f90:11
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/resize.js b/ver-1.11.0/fvcom_tools/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/fvcom_tools/search/all_0.html b/ver-1.11.0/fvcom_tools/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_0.js b/ver-1.11.0/fvcom_tools/search/all_0.js new file mode 100644 index 000000000..6a04eff90 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['add_5fnew_5fvar',['add_new_var',['../structmodule__ncio_1_1ncio.html#a8851d6006e00d7055e2921dce6e99cd8',1,'module_ncio::ncio']]], + ['add_5fnew_5fvar_5f2d',['add_new_var_2d',['../structmodule__ncio_1_1ncio.html#a3436a66b0d823559d365992916b7832c',1,'module_ncio::ncio::add_new_var_2d()'],['../namespacemodule__ncio.html#a3a5af221792e9c4677e778f995b4c673',1,'module_ncio::add_new_var_2d()']]], + ['add_5fnew_5fvar_5f3d',['add_new_var_3d',['../structmodule__ncio_1_1ncio.html#ab8dbeffbba653826686bb5ed1795149e',1,'module_ncio::ncio::add_new_var_3d()'],['../namespacemodule__ncio.html#afcf167057aef272b73e9ee7136930e51',1,'module_ncio::add_new_var_3d()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_1.html b/ver-1.11.0/fvcom_tools/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_1.js b/ver-1.11.0/fvcom_tools/search/all_1.js new file mode 100644 index 000000000..26e2980f4 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['close',['close',['../structmodule__ncio_1_1ncio.html#a782798cda1e2777d0a7d8998fc264ed9',1,'module_ncio::ncio']]], + ['close_5fnc',['close_nc',['../namespacemodule__ncio.html#a61ba2044f4a26a3fee7c6f7e25b4d4c3',1,'module_ncio']]], + ['convert_5ftheta2t_5f2dgrid',['convert_theta2t_2dgrid',['../structmodule__ncio_1_1ncio.html#a8028124b918efde884e98d2edab4b8d4',1,'module_ncio::ncio::convert_theta2t_2dgrid()'],['../namespacemodule__ncio.html#ab234b47224611d258c57578d613a1d2b',1,'module_ncio::convert_theta2t_2dgrid()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_10.html b/ver-1.11.0/fvcom_tools/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_10.js b/ver-1.11.0/fvcom_tools/search/all_10.js new file mode 100644 index 000000000..06df09bd6 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['times',['times',['../structmodule__nwp_1_1fcst__nwp.html#ac81311ccea36bb1eb65d9a316208463f',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_11.html b/ver-1.11.0/fvcom_tools/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_11.js b/ver-1.11.0/fvcom_tools/search/all_11.js new file mode 100644 index 000000000..ff7ab0409 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['varnames',['varnames',['../structmodule__nwp_1_1fcst__nwp.html#a437d0bc64a273e6bd59b10159dd05ae3',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_12.html b/ver-1.11.0/fvcom_tools/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_12.js b/ver-1.11.0/fvcom_tools/search/all_12.js new file mode 100644 index 000000000..649925ef3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_12.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['xlat',['xlat',['../structmodule__nwp_1_1fcst__nwp.html#a8fea723cab12bbf8234ebcd76a304ef0',1,'module_nwp::fcst_nwp']]], + ['xlon',['xlon',['../structmodule__nwp_1_1fcst__nwp.html#ae8b446b2907f0c7fcec5f11062913743',1,'module_nwp::fcst_nwp']]], + ['xtime',['xtime',['../structmodule__nwp_1_1fcst__nwp.html#a4b47351797dff8a654b3b13ec6b48290',1,'module_nwp::fcst_nwp']]], + ['xtype',['xtype',['../structmodule__ncio_1_1ncio.html#a1f6a93616c5b829134581befc96dd438',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_2.html b/ver-1.11.0/fvcom_tools/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_2.js b/ver-1.11.0/fvcom_tools/search/all_2.js new file mode 100644 index 000000000..aa94be692 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['datatype',['datatype',['../structmodule__nwp_1_1fcst__nwp.html#a6d86226bbeb5953ff239375dfd816535',1,'module_nwp::fcst_nwp']]], + ['datelen',['datelen',['../structmodule__nwp_1_1fcst__nwp.html#a153c4320e63706941bfe539ad363af81',1,'module_nwp::fcst_nwp']]], + ['debug_5flevel',['debug_level',['../structmodule__ncio_1_1ncio.html#a165db4f542055f0a16fe0b1bf8f02da7',1,'module_ncio::ncio']]], + ['dimname',['dimname',['../structmodule__ncio_1_1ncio.html#aa93d9e0ed76f3170ad15db0bfbd9d99c',1,'module_ncio::ncio']]], + ['dimnamedate',['dimnamedate',['../structmodule__nwp_1_1fcst__nwp.html#acbc57e7e8b02a11a75d96ae6cce54a80',1,'module_nwp::fcst_nwp']]], + ['dimnameew',['dimnameew',['../structmodule__nwp_1_1fcst__nwp.html#a9dff66877f96bf713a23d455ef8b6237',1,'module_nwp::fcst_nwp']]], + ['dimnamens',['dimnamens',['../structmodule__nwp_1_1fcst__nwp.html#a07eb32dec0977c96713c01f218cba393',1,'module_nwp::fcst_nwp']]], + ['dimnametime',['dimnametime',['../structmodule__nwp_1_1fcst__nwp.html#a0ef5e68cb1cb3c4013cd0bb88a455e29',1,'module_nwp::fcst_nwp']]], + ['drmissing',['drmissing',['../namespacekinds.html#aa7b48b25ed23323e461a788878720b51',1,'kinds']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_3.html b/ver-1.11.0/fvcom_tools/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_3.js b/ver-1.11.0/fvcom_tools/search/all_3.js new file mode 100644 index 000000000..71572c0bc --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ends',['ends',['../structmodule__ncio_1_1ncio.html#aaddfeb4a5235e44a0058e220efd0dd01',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_4.html b/ver-1.11.0/fvcom_tools/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_4.js b/ver-1.11.0/fvcom_tools/search/all_4.js new file mode 100644 index 000000000..ed66cb698 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fcst_5fnwp',['fcst_nwp',['../structmodule__nwp_1_1fcst__nwp.html',1,'module_nwp']]], + ['filename',['filename',['../structmodule__ncio_1_1ncio.html#a904ccc2afd3226c84b2b91be9e555483',1,'module_ncio::ncio']]], + ['finish',['finish',['../structmodule__nwp_1_1fcst__nwp.html#a102b90122aaaa595a8e9121ecbfa392a',1,'module_nwp::fcst_nwp']]], + ['finish_5fnwp',['finish_nwp',['../namespacemodule__nwp.html#ad98dc62d45549b7716f3f62b59c63474',1,'module_nwp']]], + ['fvcom_5ftools',['fvcom_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_5.html b/ver-1.11.0/fvcom_tools/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_5.js b/ver-1.11.0/fvcom_tools/search/all_5.js new file mode 100644 index 000000000..0d1714378 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_5.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['get_5fatt',['get_att',['../structmodule__ncio_1_1ncio.html#ac210738461dd6d73ded7aa9140677de0',1,'module_ncio::ncio']]], + ['get_5fatt_5fnc_5fint',['get_att_nc_int',['../structmodule__ncio_1_1ncio.html#a58f1f4af5b678249c51a894ab49b9045',1,'module_ncio::ncio::get_att_nc_int()'],['../namespacemodule__ncio.html#a0a31d1f98726c06ae2c74053df76e1be',1,'module_ncio::get_att_nc_int()']]], + ['get_5fatt_5fnc_5freal',['get_att_nc_real',['../structmodule__ncio_1_1ncio.html#a5844b694f7933e49ede08d05b0d5d57f',1,'module_ncio::ncio::get_att_nc_real()'],['../namespacemodule__ncio.html#a575af68b4565afe52a34671127407ef0',1,'module_ncio::get_att_nc_real()']]], + ['get_5fatt_5fnc_5fstring',['get_att_nc_string',['../structmodule__ncio_1_1ncio.html#adad86eda2a4b41d6f7d73e5eaaf4f1a1',1,'module_ncio::ncio::get_att_nc_string()'],['../namespacemodule__ncio.html#a666be87b95a2c3807b0edaac5c57638d',1,'module_ncio::get_att_nc_string()']]], + ['get_5fdim',['get_dim',['../structmodule__ncio_1_1ncio.html#ab79ff7acc30376d1d459803d53468cfb',1,'module_ncio::ncio']]], + ['get_5fdim_5fnc',['get_dim_nc',['../namespacemodule__ncio.html#aaa941aaa7fff66951506b34e126efc94',1,'module_ncio']]], + ['get_5ftime_5find',['get_time_ind',['../structmodule__nwp_1_1fcst__nwp.html#a7612bb24ce8b8e3326ceee2593dd2739',1,'module_nwp::fcst_nwp']]], + ['get_5ftime_5find_5fnwp',['get_time_ind_nwp',['../namespacemodule__nwp.html#aaae0ecd9fdd67b6c0fd661f5034e183a',1,'module_nwp']]], + ['get_5fvar',['get_var',['../structmodule__ncio_1_1ncio.html#aa8ecd7a7f447f30751ca023205675166',1,'module_ncio::ncio']]], + ['get_5fvar_5fnc_5fchar',['get_var_nc_char',['../structmodule__ncio_1_1ncio.html#a9458c74f6489fb0c3fab458da1165a3f',1,'module_ncio::ncio::get_var_nc_char()'],['../namespacemodule__ncio.html#a37faa5d6ec80c3dc0e7cacda8f5b579c',1,'module_ncio::get_var_nc_char()']]], + ['get_5fvar_5fnc_5fchar_5f1d',['get_var_nc_char_1d',['../structmodule__ncio_1_1ncio.html#a8e16f9f8cd6e097afb735eb856dd9097',1,'module_ncio::ncio::get_var_nc_char_1d()'],['../namespacemodule__ncio.html#aadf4411fb333fe1b2ad4191e11d93b5a',1,'module_ncio::get_var_nc_char_1d()']]], + ['get_5fvar_5fnc_5fchar_5f2d',['get_var_nc_char_2d',['../structmodule__ncio_1_1ncio.html#a8d9f4efe9eddb77a5d3ae75d2f5e5596',1,'module_ncio::ncio::get_var_nc_char_2d()'],['../namespacemodule__ncio.html#a395da74b11c6bea87f1ec19435d0caa6',1,'module_ncio::get_var_nc_char_2d()']]], + ['get_5fvar_5fnc_5fchar_5f3d',['get_var_nc_char_3d',['../structmodule__ncio_1_1ncio.html#afd958dc5c2186870a896c812b3e25ce5',1,'module_ncio::ncio::get_var_nc_char_3d()'],['../namespacemodule__ncio.html#a7acfdd829c3a921115edd071f5371246',1,'module_ncio::get_var_nc_char_3d()']]], + ['get_5fvar_5fnc_5fdouble',['get_var_nc_double',['../structmodule__ncio_1_1ncio.html#a05c91623b115c327a39971dab3a0e6e9',1,'module_ncio::ncio::get_var_nc_double()'],['../namespacemodule__ncio.html#a62c566792058619f4c173cd5c02f35c4',1,'module_ncio::get_var_nc_double()']]], + ['get_5fvar_5fnc_5fdouble_5f1d',['get_var_nc_double_1d',['../structmodule__ncio_1_1ncio.html#af40752239489230abd97a9d6e9ab4ff3',1,'module_ncio::ncio::get_var_nc_double_1d()'],['../namespacemodule__ncio.html#ad6153b922e38c5fc8e92a0f82ec05de1',1,'module_ncio::get_var_nc_double_1d()']]], + ['get_5fvar_5fnc_5fdouble_5f2d',['get_var_nc_double_2d',['../structmodule__ncio_1_1ncio.html#a8df70ec276348284d27b4d3d41dafcf1',1,'module_ncio::ncio::get_var_nc_double_2d()'],['../namespacemodule__ncio.html#a70d11ffb02c66bb27a184dcd3fb8c62a',1,'module_ncio::get_var_nc_double_2d()']]], + ['get_5fvar_5fnc_5fdouble_5f3d',['get_var_nc_double_3d',['../structmodule__ncio_1_1ncio.html#aa0831178e673305f5b789527d380b446',1,'module_ncio::ncio::get_var_nc_double_3d()'],['../namespacemodule__ncio.html#a329e9332e11c76879ace7219891e8832',1,'module_ncio::get_var_nc_double_3d()']]], + ['get_5fvar_5fnc_5fint',['get_var_nc_int',['../structmodule__ncio_1_1ncio.html#a6a8e663342018343054a9f3323c3e2bc',1,'module_ncio::ncio::get_var_nc_int()'],['../namespacemodule__ncio.html#a1431a7935b2021fd2339ffce497ef6a9',1,'module_ncio::get_var_nc_int()']]], + ['get_5fvar_5fnc_5fint_5f1d',['get_var_nc_int_1d',['../structmodule__ncio_1_1ncio.html#a79cab7ab4e7bf5a006f86e7832435cc0',1,'module_ncio::ncio::get_var_nc_int_1d()'],['../namespacemodule__ncio.html#a58b95b5efe6f468982852b1b1fe19847',1,'module_ncio::get_var_nc_int_1d()']]], + ['get_5fvar_5fnc_5fint_5f2d',['get_var_nc_int_2d',['../structmodule__ncio_1_1ncio.html#a4584cce0696fb57e1871367d76642cd9',1,'module_ncio::ncio::get_var_nc_int_2d()'],['../namespacemodule__ncio.html#af1b2922f691a13497ad9b896d4be3bfa',1,'module_ncio::get_var_nc_int_2d()']]], + ['get_5fvar_5fnc_5fint_5f3d',['get_var_nc_int_3d',['../structmodule__ncio_1_1ncio.html#ab3e4a6c96d4c78749018e0854380c87c',1,'module_ncio::ncio::get_var_nc_int_3d()'],['../namespacemodule__ncio.html#abde7c8af6a716eeccfcfbec98154ea1d',1,'module_ncio::get_var_nc_int_3d()']]], + ['get_5fvar_5fnc_5freal',['get_var_nc_real',['../structmodule__ncio_1_1ncio.html#a72beeb8eb55cfc17cbff1583723e8284',1,'module_ncio::ncio::get_var_nc_real()'],['../namespacemodule__ncio.html#a7bb09b9a8f7d19757a3d91860efa198f',1,'module_ncio::get_var_nc_real()']]], + ['get_5fvar_5fnc_5freal_5f1d',['get_var_nc_real_1d',['../structmodule__ncio_1_1ncio.html#a35e0ecdb13ee55830a4e53d833a7301c',1,'module_ncio::ncio::get_var_nc_real_1d()'],['../namespacemodule__ncio.html#ac864bbfce29e8d61c5b953da69d6cfc0',1,'module_ncio::get_var_nc_real_1d()']]], + ['get_5fvar_5fnc_5freal_5f2d',['get_var_nc_real_2d',['../structmodule__ncio_1_1ncio.html#ac6c87eb3e35db224ac910768b1745ed5',1,'module_ncio::ncio::get_var_nc_real_2d()'],['../namespacemodule__ncio.html#a33b8a7f2aa67aa4fad971deedd05be4c',1,'module_ncio::get_var_nc_real_2d()']]], + ['get_5fvar_5fnc_5freal_5f3d',['get_var_nc_real_3d',['../structmodule__ncio_1_1ncio.html#afe2489df6db1724090aae015c0209e96',1,'module_ncio::ncio::get_var_nc_real_3d()'],['../namespacemodule__ncio.html#ace5963c01dcbe1adb0a69dfd4a748151',1,'module_ncio::get_var_nc_real_3d()']]], + ['get_5fvar_5fnc_5fshort',['get_var_nc_short',['../structmodule__ncio_1_1ncio.html#acfdd2f4a9e1a6beb6ecbe96e60fb6cb9',1,'module_ncio::ncio::get_var_nc_short()'],['../namespacemodule__ncio.html#a6169988ed61eaed28a960889df99bd14',1,'module_ncio::get_var_nc_short()']]], + ['get_5fvar_5fnc_5fshort_5f1d',['get_var_nc_short_1d',['../structmodule__ncio_1_1ncio.html#a1d1c9bccb35c89416e9cb96e4dd7ede6',1,'module_ncio::ncio::get_var_nc_short_1d()'],['../namespacemodule__ncio.html#a06d93e176941656f77e431bc682b4d01',1,'module_ncio::get_var_nc_short_1d()']]], + ['get_5fvar_5fnc_5fshort_5f2d',['get_var_nc_short_2d',['../structmodule__ncio_1_1ncio.html#a639270062b980a83d4adc54c3d2edbc1',1,'module_ncio::ncio::get_var_nc_short_2d()'],['../namespacemodule__ncio.html#a0a94b937458cba21e4aaad6fe46c2ed8',1,'module_ncio::get_var_nc_short_2d()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_6.html b/ver-1.11.0/fvcom_tools/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_6.js b/ver-1.11.0/fvcom_tools/search/all_6.js new file mode 100644 index 000000000..31d73dfa2 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handle_5ferr',['handle_err',['../structmodule__ncio_1_1ncio.html#a56a713d2470067afb55eeaa47198483c',1,'module_ncio::ncio::handle_err()'],['../namespacemodule__ncio.html#a9b2fa53702df8148f74e94bc10a04b5a',1,'module_ncio::handle_err()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_7.html b/ver-1.11.0/fvcom_tools/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_7.js b/ver-1.11.0/fvcom_tools/search/all_7.js new file mode 100644 index 000000000..e892ba401 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_7.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['i_5fbyte',['i_byte',['../namespacekinds.html#a5dfbd654e549ff3a80c6e1bc2d7d5661',1,'kinds']]], + ['i_5fhice',['i_hice',['../structmodule__nwp_1_1fcst__nwp.html#a4b93b2bb9aecf3f898281f3f8585b50a',1,'module_nwp::fcst_nwp']]], + ['i_5fice',['i_ice',['../structmodule__nwp_1_1fcst__nwp.html#a719d8a62514e6bed6a36c5f3a615b2ca',1,'module_nwp::fcst_nwp']]], + ['i_5ficet',['i_icet',['../structmodule__nwp_1_1fcst__nwp.html#afac91cc13d13d2c921f19457e6f53992',1,'module_nwp::fcst_nwp']]], + ['i_5fkind',['i_kind',['../namespacekinds.html#a2bf18edacdd0f57294e42719753d0168',1,'kinds']]], + ['i_5fmask',['i_mask',['../structmodule__nwp_1_1fcst__nwp.html#a51c783ca67885356c54c649579b08222',1,'module_nwp::fcst_nwp']]], + ['i_5fsfct',['i_sfct',['../structmodule__nwp_1_1fcst__nwp.html#a26432e0d22e744abbc984963ae3297a4',1,'module_nwp::fcst_nwp']]], + ['i_5fsfctl',['i_sfctl',['../structmodule__nwp_1_1fcst__nwp.html#aaf57061b62536890e93ab8c3889ee302',1,'module_nwp::fcst_nwp']]], + ['i_5fshort',['i_short',['../namespacekinds.html#a7294b1421464f1c39e4ed41245ea44f7',1,'kinds']]], + ['i_5fsst',['i_sst',['../structmodule__nwp_1_1fcst__nwp.html#aaf80cfad537428aa33421192c0e439ed',1,'module_nwp::fcst_nwp']]], + ['i_5fzorl',['i_zorl',['../structmodule__nwp_1_1fcst__nwp.html#a34d6e4dd2ddeda3f53f64cc75d22d47e',1,'module_nwp::fcst_nwp']]], + ['imissing',['imissing',['../namespacekinds.html#a7cc86e3396d927fd6cf192212af8b21c',1,'kinds']]], + ['initial',['initial',['../structmodule__nwp_1_1fcst__nwp.html#aa1f5e76c7e78037362680bea3111be2c',1,'module_nwp::fcst_nwp']]], + ['initial_5fnwp',['initial_nwp',['../namespacemodule__nwp.html#ae8abd781460c305e506ef99e82e54dfb',1,'module_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_8.html b/ver-1.11.0/fvcom_tools/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_8.js b/ver-1.11.0/fvcom_tools/search/all_8.js new file mode 100644 index 000000000..e67ab64ea --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kinds',['kinds',['../namespacekinds.html',1,'']]], + ['kinds_2ef90',['kinds.f90',['../kinds_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_9.html b/ver-1.11.0/fvcom_tools/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_9.js b/ver-1.11.0/fvcom_tools/search/all_9.js new file mode 100644 index 000000000..289ca29c2 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['latname',['latname',['../structmodule__nwp_1_1fcst__nwp.html#a01c0f452c916d4658f7e9a0132b67adc',1,'module_nwp::fcst_nwp']]], + ['len_5fsta_5fname',['len_sta_name',['../namespacekinds.html#a2e35624b3e7919d10ccf50acf9bb1a6b',1,'kinds']]], + ['list_5finitial',['list_initial',['../structmodule__nwp_1_1fcst__nwp.html#ab1cf99d8a13c42432ae4bade78e6d971',1,'module_nwp::fcst_nwp']]], + ['list_5finitial_5fnwp',['list_initial_nwp',['../namespacemodule__nwp.html#a8813da3d8f29617bee44f7209b765b4a',1,'module_nwp']]], + ['lonname',['lonname',['../structmodule__nwp_1_1fcst__nwp.html#a9413d8b15ec180908afc1add97452780',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_a.html b/ver-1.11.0/fvcom_tools/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_a.js b/ver-1.11.0/fvcom_tools/search/all_a.js new file mode 100644 index 000000000..8ec4c1450 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['module_5fncio',['module_ncio',['../namespacemodule__ncio.html',1,'']]], + ['module_5fncio_2ef90',['module_ncio.f90',['../module__ncio_8f90.html',1,'']]], + ['module_5fnwp',['module_nwp',['../namespacemodule__nwp.html',1,'']]], + ['module_5fnwp_2ef90',['module_nwp.f90',['../module__nwp_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_b.html b/ver-1.11.0/fvcom_tools/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_b.js b/ver-1.11.0/fvcom_tools/search/all_b.js new file mode 100644 index 000000000..a408b69f1 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_b.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['ncdata',['ncdata',['../namespacemodule__nwp.html#af103c9fe9d0bfa17cc2c55e1cf463cdd',1,'module_nwp']]], + ['ncid',['ncid',['../structmodule__ncio_1_1ncio.html#a4fd65e0d85fc05d062edde67e44e529c',1,'module_ncio::ncio']]], + ['ncio',['ncio',['../structmodule__ncio_1_1ncio.html',1,'module_ncio']]], + ['ndims',['ndims',['../structmodule__ncio_1_1ncio.html#a136bcb35ff9c5504d550f2c0448b2f7f',1,'module_ncio::ncio']]], + ['numvar',['numvar',['../structmodule__nwp_1_1fcst__nwp.html#a506430ac3f18b6b3699b67ac3b4781f1',1,'module_nwp::fcst_nwp']]], + ['nwp_5fhice_5fc',['nwp_hice_c',['../structmodule__nwp_1_1fcst__nwp.html#aa2229cde909510f4825e250c3d1c5642',1,'module_nwp::fcst_nwp']]], + ['nwp_5fhice_5fw',['nwp_hice_w',['../structmodule__nwp_1_1fcst__nwp.html#ad20d9302cfdb42ba8bf771d980f10cf6',1,'module_nwp::fcst_nwp']]], + ['nwp_5fice_5fc',['nwp_ice_c',['../structmodule__nwp_1_1fcst__nwp.html#ac4221284ae5757dbd35de7bba7c7ed5d',1,'module_nwp::fcst_nwp']]], + ['nwp_5fice_5fw',['nwp_ice_w',['../structmodule__nwp_1_1fcst__nwp.html#a7a1b01ce504fdaa2393387a7aabfe441',1,'module_nwp::fcst_nwp']]], + ['nwp_5ficet_5fc',['nwp_icet_c',['../structmodule__nwp_1_1fcst__nwp.html#adb555ef50f1dce5f521391845623864f',1,'module_nwp::fcst_nwp']]], + ['nwp_5ficet_5fw',['nwp_icet_w',['../structmodule__nwp_1_1fcst__nwp.html#a87f3901b07cc993830337f98d7229741',1,'module_nwp::fcst_nwp']]], + ['nwp_5fmask_5fc',['nwp_mask_c',['../structmodule__nwp_1_1fcst__nwp.html#acfebaff0d3c552390d3690d7a08ef861',1,'module_nwp::fcst_nwp']]], + ['nwp_5fmask_5fw',['nwp_mask_w',['../structmodule__nwp_1_1fcst__nwp.html#a0770dacee8110669ce5b945b58a277c8',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfct_5fc',['nwp_sfct_c',['../structmodule__nwp_1_1fcst__nwp.html#a2d54be75bde48b67313828f0240f5d74',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfct_5fw',['nwp_sfct_w',['../structmodule__nwp_1_1fcst__nwp.html#a3c071d67dbb279adce1a84b7a68a866f',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfctl_5fw',['nwp_sfctl_w',['../structmodule__nwp_1_1fcst__nwp.html#af1d3478290e0ba808b385ef32a22900d',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsst_5fc',['nwp_sst_c',['../structmodule__nwp_1_1fcst__nwp.html#acd74ef4c93126671a16ec6ea6ab22c02',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsst_5fw',['nwp_sst_w',['../structmodule__nwp_1_1fcst__nwp.html#abf121c9f81fd763b30a12749abcde2a3',1,'module_nwp::fcst_nwp']]], + ['nwp_5fzorl_5fc',['nwp_zorl_c',['../structmodule__nwp_1_1fcst__nwp.html#acd797274b25fb7dc5bb862917d72feda',1,'module_nwp::fcst_nwp']]], + ['nwp_5fzorl_5fw',['nwp_zorl_w',['../structmodule__nwp_1_1fcst__nwp.html#a1c121ba314f6896ffb9d10d491435a13',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_c.html b/ver-1.11.0/fvcom_tools/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_c.js b/ver-1.11.0/fvcom_tools/search/all_c.js new file mode 100644 index 000000000..1ce81e2a8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['open',['open',['../structmodule__ncio_1_1ncio.html#ab403c269b83f9d22599bb22d0fee6a83',1,'module_ncio::ncio']]], + ['open_5fnc',['open_nc',['../namespacemodule__ncio.html#aec222d5cf92989f3472d4a161866a5c8',1,'module_ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_d.html b/ver-1.11.0/fvcom_tools/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_d.js b/ver-1.11.0/fvcom_tools/search/all_d.js new file mode 100644 index 000000000..f85379764 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['process_5ffvcom',['process_FVCOM',['../process__FVCOM_8f90.html#add40d3ba83ac0362b6a274ab28a701d8',1,'process_FVCOM.f90']]], + ['process_5ffvcom_2ef90',['process_FVCOM.f90',['../process__FVCOM_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_e.html b/ver-1.11.0/fvcom_tools/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_e.js b/ver-1.11.0/fvcom_tools/search/all_e.js new file mode 100644 index 000000000..a620050d7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_e.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html',1,'']]], + ['r_5fkind',['r_kind',['../namespacekinds.html#a699e36574bc3d76eb8c85e14f6234212',1,'kinds']]], + ['r_5fsingle',['r_single',['../namespacekinds.html#a2941a091aedaf97539960bc627db578c',1,'kinds']]], + ['read_5fn',['read_n',['../structmodule__nwp_1_1fcst__nwp.html#ae01e5bb75ed1d59e452951f96ab7ebff',1,'module_nwp::fcst_nwp']]], + ['read_5fnwp',['read_nwp',['../namespacemodule__nwp.html#af30f01266f32c2c1cacd7062e6148289',1,'module_nwp']]], + ['replace_5fvar',['replace_var',['../structmodule__ncio_1_1ncio.html#aed5eef1278d15a0c7141fd5cdfb19b58',1,'module_ncio::ncio']]], + ['replace_5fvar_5fnc_5fchar',['replace_var_nc_char',['../structmodule__ncio_1_1ncio.html#ae74ff4f16d1f83a7c9af9649b25426be',1,'module_ncio::ncio::replace_var_nc_char()'],['../namespacemodule__ncio.html#a4d6c31878ed51f0ea0e82c293aa190c7',1,'module_ncio::replace_var_nc_char()']]], + ['replace_5fvar_5fnc_5fchar_5f1d',['replace_var_nc_char_1d',['../structmodule__ncio_1_1ncio.html#acc91961c2729e90e51fa3030069366e5',1,'module_ncio::ncio::replace_var_nc_char_1d()'],['../namespacemodule__ncio.html#a6c89908dc867d0cf935b7983ca0ef87d',1,'module_ncio::replace_var_nc_char_1d()']]], + ['replace_5fvar_5fnc_5fchar_5f2d',['replace_var_nc_char_2d',['../structmodule__ncio_1_1ncio.html#a2ccd1e207892931d4b66f4c5464f44c6',1,'module_ncio::ncio::replace_var_nc_char_2d()'],['../namespacemodule__ncio.html#a20695cf6a6beb1117028831be139e56a',1,'module_ncio::replace_var_nc_char_2d()']]], + ['replace_5fvar_5fnc_5fchar_5f3d',['replace_var_nc_char_3d',['../structmodule__ncio_1_1ncio.html#a692b81f590f5ee5099f31adfb111997d',1,'module_ncio::ncio::replace_var_nc_char_3d()'],['../namespacemodule__ncio.html#a1b8b39f4af5134ede4b3fb00617b7fb0',1,'module_ncio::replace_var_nc_char_3d()']]], + ['replace_5fvar_5fnc_5fdouble',['replace_var_nc_double',['../structmodule__ncio_1_1ncio.html#a3fd7a56a2be221a1598cdd9403516e9b',1,'module_ncio::ncio::replace_var_nc_double()'],['../namespacemodule__ncio.html#a96b5f07fb7b6a3ead30f118c57ad013b',1,'module_ncio::replace_var_nc_double()']]], + ['replace_5fvar_5fnc_5fdouble_5f1d',['replace_var_nc_double_1d',['../structmodule__ncio_1_1ncio.html#a059d84ec702ec60e2f7d4ec4d02616bc',1,'module_ncio::ncio::replace_var_nc_double_1d()'],['../namespacemodule__ncio.html#a3c63a88ba20b584bf878258b830589fc',1,'module_ncio::replace_var_nc_double_1d()']]], + ['replace_5fvar_5fnc_5fdouble_5f2d',['replace_var_nc_double_2d',['../structmodule__ncio_1_1ncio.html#af4e9d764b135dc6a2d9c7369ca954eb9',1,'module_ncio::ncio::replace_var_nc_double_2d()'],['../namespacemodule__ncio.html#a89052cf6ad0ae83f77e508251e2f3924',1,'module_ncio::replace_var_nc_double_2d()']]], + ['replace_5fvar_5fnc_5fdouble_5f3d',['replace_var_nc_double_3d',['../structmodule__ncio_1_1ncio.html#ad02a9a644f63c2feebfc4f49293eb3d0',1,'module_ncio::ncio::replace_var_nc_double_3d()'],['../namespacemodule__ncio.html#a345c44b1d96cdddeb70ccebab6026938',1,'module_ncio::replace_var_nc_double_3d()']]], + ['replace_5fvar_5fnc_5fint',['replace_var_nc_int',['../structmodule__ncio_1_1ncio.html#a31d9c2cc6e92b62aa06a159ff90f6b88',1,'module_ncio::ncio::replace_var_nc_int()'],['../namespacemodule__ncio.html#a0a835228e31148b3ba945fba57fe804f',1,'module_ncio::replace_var_nc_int()']]], + ['replace_5fvar_5fnc_5fint_5f1d',['replace_var_nc_int_1d',['../structmodule__ncio_1_1ncio.html#ab2cdfce6f220f5aa4c6bc152a10746a6',1,'module_ncio::ncio::replace_var_nc_int_1d()'],['../namespacemodule__ncio.html#ad04af9add949379d9a4b475af3d56940',1,'module_ncio::replace_var_nc_int_1d()']]], + ['replace_5fvar_5fnc_5fint_5f2d',['replace_var_nc_int_2d',['../structmodule__ncio_1_1ncio.html#a448dfacc5abd9ff451b8d920d60b2834',1,'module_ncio::ncio::replace_var_nc_int_2d()'],['../namespacemodule__ncio.html#ac094a9984074f088754fc392e7d80450',1,'module_ncio::replace_var_nc_int_2d()']]], + ['replace_5fvar_5fnc_5fint_5f3d',['replace_var_nc_int_3d',['../structmodule__ncio_1_1ncio.html#a2dd8aafe0da77099081cf270bc01b3e5',1,'module_ncio::ncio::replace_var_nc_int_3d()'],['../namespacemodule__ncio.html#a488d0a16ecb0b877f003d6383231712c',1,'module_ncio::replace_var_nc_int_3d()']]], + ['replace_5fvar_5fnc_5freal',['replace_var_nc_real',['../structmodule__ncio_1_1ncio.html#a521faa792d7a83702ac21ffbc7aacf1b',1,'module_ncio::ncio::replace_var_nc_real()'],['../namespacemodule__ncio.html#af228f466b83468a56ae64932769b6e9a',1,'module_ncio::replace_var_nc_real()']]], + ['replace_5fvar_5fnc_5freal_5f1d',['replace_var_nc_real_1d',['../structmodule__ncio_1_1ncio.html#a1bbb0a073a7e6991b5b506b3ed2b9ce3',1,'module_ncio::ncio::replace_var_nc_real_1d()'],['../namespacemodule__ncio.html#aec8faf445d41345677ef6cc3ce9cf7f8',1,'module_ncio::replace_var_nc_real_1d()']]], + ['replace_5fvar_5fnc_5freal_5f2d',['replace_var_nc_real_2d',['../structmodule__ncio_1_1ncio.html#a986cc749d7749e10582a07f5580664cc',1,'module_ncio::ncio::replace_var_nc_real_2d()'],['../namespacemodule__ncio.html#af5a5bf3fbb075259e68d17acea03fa95',1,'module_ncio::replace_var_nc_real_2d()']]], + ['replace_5fvar_5fnc_5freal_5f3d',['replace_var_nc_real_3d',['../structmodule__ncio_1_1ncio.html#a439e7cc1fe00c9c2b789a17ad35782bf',1,'module_ncio::ncio::replace_var_nc_real_3d()'],['../namespacemodule__ncio.html#a9fa16fe14ec52e3cfaba1e0613d7420c',1,'module_ncio::replace_var_nc_real_3d()']]], + ['rmissing',['rmissing',['../namespacekinds.html#af5dd83b916095f8d5d146dafc5246dad',1,'kinds']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/all_f.html b/ver-1.11.0/fvcom_tools/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/all_f.js b/ver-1.11.0/fvcom_tools/search/all_f.js new file mode 100644 index 000000000..41a1718d0 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['status',['status',['../structmodule__ncio_1_1ncio.html#a39c6bb8934015215afb671fcd20373c7',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/classes_0.html b/ver-1.11.0/fvcom_tools/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/classes_0.js b/ver-1.11.0/fvcom_tools/search/classes_0.js new file mode 100644 index 000000000..0d7fb4131 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fcst_5fnwp',['fcst_nwp',['../structmodule__nwp_1_1fcst__nwp.html',1,'module_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/classes_1.html b/ver-1.11.0/fvcom_tools/search/classes_1.html new file mode 100644 index 000000000..3df6e80ac --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/classes_1.js b/ver-1.11.0/fvcom_tools/search/classes_1.js new file mode 100644 index 000000000..b1d0c0774 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ncio',['ncio',['../structmodule__ncio_1_1ncio.html',1,'module_ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/close.png b/ver-1.11.0/fvcom_tools/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/search/files_0.html b/ver-1.11.0/fvcom_tools/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/files_0.js b/ver-1.11.0/fvcom_tools/search/files_0.js new file mode 100644 index 000000000..00a24513a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kinds_2ef90',['kinds.f90',['../kinds_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/files_1.html b/ver-1.11.0/fvcom_tools/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/files_1.js b/ver-1.11.0/fvcom_tools/search/files_1.js new file mode 100644 index 000000000..e28dd93c3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['module_5fncio_2ef90',['module_ncio.f90',['../module__ncio_8f90.html',1,'']]], + ['module_5fnwp_2ef90',['module_nwp.f90',['../module__nwp_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/files_2.html b/ver-1.11.0/fvcom_tools/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/files_2.js b/ver-1.11.0/fvcom_tools/search/files_2.js new file mode 100644 index 000000000..f0bae924f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['process_5ffvcom_2ef90',['process_FVCOM.f90',['../process__FVCOM_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_0.html b/ver-1.11.0/fvcom_tools/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_0.js b/ver-1.11.0/fvcom_tools/search/functions_0.js new file mode 100644 index 000000000..6a04eff90 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['add_5fnew_5fvar',['add_new_var',['../structmodule__ncio_1_1ncio.html#a8851d6006e00d7055e2921dce6e99cd8',1,'module_ncio::ncio']]], + ['add_5fnew_5fvar_5f2d',['add_new_var_2d',['../structmodule__ncio_1_1ncio.html#a3436a66b0d823559d365992916b7832c',1,'module_ncio::ncio::add_new_var_2d()'],['../namespacemodule__ncio.html#a3a5af221792e9c4677e778f995b4c673',1,'module_ncio::add_new_var_2d()']]], + ['add_5fnew_5fvar_5f3d',['add_new_var_3d',['../structmodule__ncio_1_1ncio.html#ab8dbeffbba653826686bb5ed1795149e',1,'module_ncio::ncio::add_new_var_3d()'],['../namespacemodule__ncio.html#afcf167057aef272b73e9ee7136930e51',1,'module_ncio::add_new_var_3d()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_1.html b/ver-1.11.0/fvcom_tools/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_1.js b/ver-1.11.0/fvcom_tools/search/functions_1.js new file mode 100644 index 000000000..26e2980f4 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['close',['close',['../structmodule__ncio_1_1ncio.html#a782798cda1e2777d0a7d8998fc264ed9',1,'module_ncio::ncio']]], + ['close_5fnc',['close_nc',['../namespacemodule__ncio.html#a61ba2044f4a26a3fee7c6f7e25b4d4c3',1,'module_ncio']]], + ['convert_5ftheta2t_5f2dgrid',['convert_theta2t_2dgrid',['../structmodule__ncio_1_1ncio.html#a8028124b918efde884e98d2edab4b8d4',1,'module_ncio::ncio::convert_theta2t_2dgrid()'],['../namespacemodule__ncio.html#ab234b47224611d258c57578d613a1d2b',1,'module_ncio::convert_theta2t_2dgrid()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_2.html b/ver-1.11.0/fvcom_tools/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_2.js b/ver-1.11.0/fvcom_tools/search/functions_2.js new file mode 100644 index 000000000..f8fadfb60 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['finish',['finish',['../structmodule__nwp_1_1fcst__nwp.html#a102b90122aaaa595a8e9121ecbfa392a',1,'module_nwp::fcst_nwp']]], + ['finish_5fnwp',['finish_nwp',['../namespacemodule__nwp.html#ad98dc62d45549b7716f3f62b59c63474',1,'module_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_3.html b/ver-1.11.0/fvcom_tools/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_3.js b/ver-1.11.0/fvcom_tools/search/functions_3.js new file mode 100644 index 000000000..0d1714378 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_3.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['get_5fatt',['get_att',['../structmodule__ncio_1_1ncio.html#ac210738461dd6d73ded7aa9140677de0',1,'module_ncio::ncio']]], + ['get_5fatt_5fnc_5fint',['get_att_nc_int',['../structmodule__ncio_1_1ncio.html#a58f1f4af5b678249c51a894ab49b9045',1,'module_ncio::ncio::get_att_nc_int()'],['../namespacemodule__ncio.html#a0a31d1f98726c06ae2c74053df76e1be',1,'module_ncio::get_att_nc_int()']]], + ['get_5fatt_5fnc_5freal',['get_att_nc_real',['../structmodule__ncio_1_1ncio.html#a5844b694f7933e49ede08d05b0d5d57f',1,'module_ncio::ncio::get_att_nc_real()'],['../namespacemodule__ncio.html#a575af68b4565afe52a34671127407ef0',1,'module_ncio::get_att_nc_real()']]], + ['get_5fatt_5fnc_5fstring',['get_att_nc_string',['../structmodule__ncio_1_1ncio.html#adad86eda2a4b41d6f7d73e5eaaf4f1a1',1,'module_ncio::ncio::get_att_nc_string()'],['../namespacemodule__ncio.html#a666be87b95a2c3807b0edaac5c57638d',1,'module_ncio::get_att_nc_string()']]], + ['get_5fdim',['get_dim',['../structmodule__ncio_1_1ncio.html#ab79ff7acc30376d1d459803d53468cfb',1,'module_ncio::ncio']]], + ['get_5fdim_5fnc',['get_dim_nc',['../namespacemodule__ncio.html#aaa941aaa7fff66951506b34e126efc94',1,'module_ncio']]], + ['get_5ftime_5find',['get_time_ind',['../structmodule__nwp_1_1fcst__nwp.html#a7612bb24ce8b8e3326ceee2593dd2739',1,'module_nwp::fcst_nwp']]], + ['get_5ftime_5find_5fnwp',['get_time_ind_nwp',['../namespacemodule__nwp.html#aaae0ecd9fdd67b6c0fd661f5034e183a',1,'module_nwp']]], + ['get_5fvar',['get_var',['../structmodule__ncio_1_1ncio.html#aa8ecd7a7f447f30751ca023205675166',1,'module_ncio::ncio']]], + ['get_5fvar_5fnc_5fchar',['get_var_nc_char',['../structmodule__ncio_1_1ncio.html#a9458c74f6489fb0c3fab458da1165a3f',1,'module_ncio::ncio::get_var_nc_char()'],['../namespacemodule__ncio.html#a37faa5d6ec80c3dc0e7cacda8f5b579c',1,'module_ncio::get_var_nc_char()']]], + ['get_5fvar_5fnc_5fchar_5f1d',['get_var_nc_char_1d',['../structmodule__ncio_1_1ncio.html#a8e16f9f8cd6e097afb735eb856dd9097',1,'module_ncio::ncio::get_var_nc_char_1d()'],['../namespacemodule__ncio.html#aadf4411fb333fe1b2ad4191e11d93b5a',1,'module_ncio::get_var_nc_char_1d()']]], + ['get_5fvar_5fnc_5fchar_5f2d',['get_var_nc_char_2d',['../structmodule__ncio_1_1ncio.html#a8d9f4efe9eddb77a5d3ae75d2f5e5596',1,'module_ncio::ncio::get_var_nc_char_2d()'],['../namespacemodule__ncio.html#a395da74b11c6bea87f1ec19435d0caa6',1,'module_ncio::get_var_nc_char_2d()']]], + ['get_5fvar_5fnc_5fchar_5f3d',['get_var_nc_char_3d',['../structmodule__ncio_1_1ncio.html#afd958dc5c2186870a896c812b3e25ce5',1,'module_ncio::ncio::get_var_nc_char_3d()'],['../namespacemodule__ncio.html#a7acfdd829c3a921115edd071f5371246',1,'module_ncio::get_var_nc_char_3d()']]], + ['get_5fvar_5fnc_5fdouble',['get_var_nc_double',['../structmodule__ncio_1_1ncio.html#a05c91623b115c327a39971dab3a0e6e9',1,'module_ncio::ncio::get_var_nc_double()'],['../namespacemodule__ncio.html#a62c566792058619f4c173cd5c02f35c4',1,'module_ncio::get_var_nc_double()']]], + ['get_5fvar_5fnc_5fdouble_5f1d',['get_var_nc_double_1d',['../structmodule__ncio_1_1ncio.html#af40752239489230abd97a9d6e9ab4ff3',1,'module_ncio::ncio::get_var_nc_double_1d()'],['../namespacemodule__ncio.html#ad6153b922e38c5fc8e92a0f82ec05de1',1,'module_ncio::get_var_nc_double_1d()']]], + ['get_5fvar_5fnc_5fdouble_5f2d',['get_var_nc_double_2d',['../structmodule__ncio_1_1ncio.html#a8df70ec276348284d27b4d3d41dafcf1',1,'module_ncio::ncio::get_var_nc_double_2d()'],['../namespacemodule__ncio.html#a70d11ffb02c66bb27a184dcd3fb8c62a',1,'module_ncio::get_var_nc_double_2d()']]], + ['get_5fvar_5fnc_5fdouble_5f3d',['get_var_nc_double_3d',['../structmodule__ncio_1_1ncio.html#aa0831178e673305f5b789527d380b446',1,'module_ncio::ncio::get_var_nc_double_3d()'],['../namespacemodule__ncio.html#a329e9332e11c76879ace7219891e8832',1,'module_ncio::get_var_nc_double_3d()']]], + ['get_5fvar_5fnc_5fint',['get_var_nc_int',['../structmodule__ncio_1_1ncio.html#a6a8e663342018343054a9f3323c3e2bc',1,'module_ncio::ncio::get_var_nc_int()'],['../namespacemodule__ncio.html#a1431a7935b2021fd2339ffce497ef6a9',1,'module_ncio::get_var_nc_int()']]], + ['get_5fvar_5fnc_5fint_5f1d',['get_var_nc_int_1d',['../structmodule__ncio_1_1ncio.html#a79cab7ab4e7bf5a006f86e7832435cc0',1,'module_ncio::ncio::get_var_nc_int_1d()'],['../namespacemodule__ncio.html#a58b95b5efe6f468982852b1b1fe19847',1,'module_ncio::get_var_nc_int_1d()']]], + ['get_5fvar_5fnc_5fint_5f2d',['get_var_nc_int_2d',['../structmodule__ncio_1_1ncio.html#a4584cce0696fb57e1871367d76642cd9',1,'module_ncio::ncio::get_var_nc_int_2d()'],['../namespacemodule__ncio.html#af1b2922f691a13497ad9b896d4be3bfa',1,'module_ncio::get_var_nc_int_2d()']]], + ['get_5fvar_5fnc_5fint_5f3d',['get_var_nc_int_3d',['../structmodule__ncio_1_1ncio.html#ab3e4a6c96d4c78749018e0854380c87c',1,'module_ncio::ncio::get_var_nc_int_3d()'],['../namespacemodule__ncio.html#abde7c8af6a716eeccfcfbec98154ea1d',1,'module_ncio::get_var_nc_int_3d()']]], + ['get_5fvar_5fnc_5freal',['get_var_nc_real',['../structmodule__ncio_1_1ncio.html#a72beeb8eb55cfc17cbff1583723e8284',1,'module_ncio::ncio::get_var_nc_real()'],['../namespacemodule__ncio.html#a7bb09b9a8f7d19757a3d91860efa198f',1,'module_ncio::get_var_nc_real()']]], + ['get_5fvar_5fnc_5freal_5f1d',['get_var_nc_real_1d',['../structmodule__ncio_1_1ncio.html#a35e0ecdb13ee55830a4e53d833a7301c',1,'module_ncio::ncio::get_var_nc_real_1d()'],['../namespacemodule__ncio.html#ac864bbfce29e8d61c5b953da69d6cfc0',1,'module_ncio::get_var_nc_real_1d()']]], + ['get_5fvar_5fnc_5freal_5f2d',['get_var_nc_real_2d',['../structmodule__ncio_1_1ncio.html#ac6c87eb3e35db224ac910768b1745ed5',1,'module_ncio::ncio::get_var_nc_real_2d()'],['../namespacemodule__ncio.html#a33b8a7f2aa67aa4fad971deedd05be4c',1,'module_ncio::get_var_nc_real_2d()']]], + ['get_5fvar_5fnc_5freal_5f3d',['get_var_nc_real_3d',['../structmodule__ncio_1_1ncio.html#afe2489df6db1724090aae015c0209e96',1,'module_ncio::ncio::get_var_nc_real_3d()'],['../namespacemodule__ncio.html#ace5963c01dcbe1adb0a69dfd4a748151',1,'module_ncio::get_var_nc_real_3d()']]], + ['get_5fvar_5fnc_5fshort',['get_var_nc_short',['../structmodule__ncio_1_1ncio.html#acfdd2f4a9e1a6beb6ecbe96e60fb6cb9',1,'module_ncio::ncio::get_var_nc_short()'],['../namespacemodule__ncio.html#a6169988ed61eaed28a960889df99bd14',1,'module_ncio::get_var_nc_short()']]], + ['get_5fvar_5fnc_5fshort_5f1d',['get_var_nc_short_1d',['../structmodule__ncio_1_1ncio.html#a1d1c9bccb35c89416e9cb96e4dd7ede6',1,'module_ncio::ncio::get_var_nc_short_1d()'],['../namespacemodule__ncio.html#a06d93e176941656f77e431bc682b4d01',1,'module_ncio::get_var_nc_short_1d()']]], + ['get_5fvar_5fnc_5fshort_5f2d',['get_var_nc_short_2d',['../structmodule__ncio_1_1ncio.html#a639270062b980a83d4adc54c3d2edbc1',1,'module_ncio::ncio::get_var_nc_short_2d()'],['../namespacemodule__ncio.html#a0a94b937458cba21e4aaad6fe46c2ed8',1,'module_ncio::get_var_nc_short_2d()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_4.html b/ver-1.11.0/fvcom_tools/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_4.js b/ver-1.11.0/fvcom_tools/search/functions_4.js new file mode 100644 index 000000000..31d73dfa2 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handle_5ferr',['handle_err',['../structmodule__ncio_1_1ncio.html#a56a713d2470067afb55eeaa47198483c',1,'module_ncio::ncio::handle_err()'],['../namespacemodule__ncio.html#a9b2fa53702df8148f74e94bc10a04b5a',1,'module_ncio::handle_err()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_5.html b/ver-1.11.0/fvcom_tools/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_5.js b/ver-1.11.0/fvcom_tools/search/functions_5.js new file mode 100644 index 000000000..04cc01800 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['initial',['initial',['../structmodule__nwp_1_1fcst__nwp.html#aa1f5e76c7e78037362680bea3111be2c',1,'module_nwp::fcst_nwp']]], + ['initial_5fnwp',['initial_nwp',['../namespacemodule__nwp.html#ae8abd781460c305e506ef99e82e54dfb',1,'module_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_6.html b/ver-1.11.0/fvcom_tools/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_6.js b/ver-1.11.0/fvcom_tools/search/functions_6.js new file mode 100644 index 000000000..a960415ff --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['list_5finitial',['list_initial',['../structmodule__nwp_1_1fcst__nwp.html#ab1cf99d8a13c42432ae4bade78e6d971',1,'module_nwp::fcst_nwp']]], + ['list_5finitial_5fnwp',['list_initial_nwp',['../namespacemodule__nwp.html#a8813da3d8f29617bee44f7209b765b4a',1,'module_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_7.html b/ver-1.11.0/fvcom_tools/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_7.js b/ver-1.11.0/fvcom_tools/search/functions_7.js new file mode 100644 index 000000000..1ce81e2a8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['open',['open',['../structmodule__ncio_1_1ncio.html#ab403c269b83f9d22599bb22d0fee6a83',1,'module_ncio::ncio']]], + ['open_5fnc',['open_nc',['../namespacemodule__ncio.html#aec222d5cf92989f3472d4a161866a5c8',1,'module_ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_8.html b/ver-1.11.0/fvcom_tools/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_8.js b/ver-1.11.0/fvcom_tools/search/functions_8.js new file mode 100644 index 000000000..cdb5f4d95 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['process_5ffvcom',['process_FVCOM',['../process__FVCOM_8f90.html#add40d3ba83ac0362b6a274ab28a701d8',1,'process_FVCOM.f90']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/functions_9.html b/ver-1.11.0/fvcom_tools/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/functions_9.js b/ver-1.11.0/fvcom_tools/search/functions_9.js new file mode 100644 index 000000000..bd4ba9b5d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/functions_9.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['read_5fn',['read_n',['../structmodule__nwp_1_1fcst__nwp.html#ae01e5bb75ed1d59e452951f96ab7ebff',1,'module_nwp::fcst_nwp']]], + ['read_5fnwp',['read_nwp',['../namespacemodule__nwp.html#af30f01266f32c2c1cacd7062e6148289',1,'module_nwp']]], + ['replace_5fvar',['replace_var',['../structmodule__ncio_1_1ncio.html#aed5eef1278d15a0c7141fd5cdfb19b58',1,'module_ncio::ncio']]], + ['replace_5fvar_5fnc_5fchar',['replace_var_nc_char',['../structmodule__ncio_1_1ncio.html#ae74ff4f16d1f83a7c9af9649b25426be',1,'module_ncio::ncio::replace_var_nc_char()'],['../namespacemodule__ncio.html#a4d6c31878ed51f0ea0e82c293aa190c7',1,'module_ncio::replace_var_nc_char()']]], + ['replace_5fvar_5fnc_5fchar_5f1d',['replace_var_nc_char_1d',['../structmodule__ncio_1_1ncio.html#acc91961c2729e90e51fa3030069366e5',1,'module_ncio::ncio::replace_var_nc_char_1d()'],['../namespacemodule__ncio.html#a6c89908dc867d0cf935b7983ca0ef87d',1,'module_ncio::replace_var_nc_char_1d()']]], + ['replace_5fvar_5fnc_5fchar_5f2d',['replace_var_nc_char_2d',['../structmodule__ncio_1_1ncio.html#a2ccd1e207892931d4b66f4c5464f44c6',1,'module_ncio::ncio::replace_var_nc_char_2d()'],['../namespacemodule__ncio.html#a20695cf6a6beb1117028831be139e56a',1,'module_ncio::replace_var_nc_char_2d()']]], + ['replace_5fvar_5fnc_5fchar_5f3d',['replace_var_nc_char_3d',['../structmodule__ncio_1_1ncio.html#a692b81f590f5ee5099f31adfb111997d',1,'module_ncio::ncio::replace_var_nc_char_3d()'],['../namespacemodule__ncio.html#a1b8b39f4af5134ede4b3fb00617b7fb0',1,'module_ncio::replace_var_nc_char_3d()']]], + ['replace_5fvar_5fnc_5fdouble',['replace_var_nc_double',['../structmodule__ncio_1_1ncio.html#a3fd7a56a2be221a1598cdd9403516e9b',1,'module_ncio::ncio::replace_var_nc_double()'],['../namespacemodule__ncio.html#a96b5f07fb7b6a3ead30f118c57ad013b',1,'module_ncio::replace_var_nc_double()']]], + ['replace_5fvar_5fnc_5fdouble_5f1d',['replace_var_nc_double_1d',['../structmodule__ncio_1_1ncio.html#a059d84ec702ec60e2f7d4ec4d02616bc',1,'module_ncio::ncio::replace_var_nc_double_1d()'],['../namespacemodule__ncio.html#a3c63a88ba20b584bf878258b830589fc',1,'module_ncio::replace_var_nc_double_1d()']]], + ['replace_5fvar_5fnc_5fdouble_5f2d',['replace_var_nc_double_2d',['../structmodule__ncio_1_1ncio.html#af4e9d764b135dc6a2d9c7369ca954eb9',1,'module_ncio::ncio::replace_var_nc_double_2d()'],['../namespacemodule__ncio.html#a89052cf6ad0ae83f77e508251e2f3924',1,'module_ncio::replace_var_nc_double_2d()']]], + ['replace_5fvar_5fnc_5fdouble_5f3d',['replace_var_nc_double_3d',['../structmodule__ncio_1_1ncio.html#ad02a9a644f63c2feebfc4f49293eb3d0',1,'module_ncio::ncio::replace_var_nc_double_3d()'],['../namespacemodule__ncio.html#a345c44b1d96cdddeb70ccebab6026938',1,'module_ncio::replace_var_nc_double_3d()']]], + ['replace_5fvar_5fnc_5fint',['replace_var_nc_int',['../structmodule__ncio_1_1ncio.html#a31d9c2cc6e92b62aa06a159ff90f6b88',1,'module_ncio::ncio::replace_var_nc_int()'],['../namespacemodule__ncio.html#a0a835228e31148b3ba945fba57fe804f',1,'module_ncio::replace_var_nc_int()']]], + ['replace_5fvar_5fnc_5fint_5f1d',['replace_var_nc_int_1d',['../structmodule__ncio_1_1ncio.html#ab2cdfce6f220f5aa4c6bc152a10746a6',1,'module_ncio::ncio::replace_var_nc_int_1d()'],['../namespacemodule__ncio.html#ad04af9add949379d9a4b475af3d56940',1,'module_ncio::replace_var_nc_int_1d()']]], + ['replace_5fvar_5fnc_5fint_5f2d',['replace_var_nc_int_2d',['../structmodule__ncio_1_1ncio.html#a448dfacc5abd9ff451b8d920d60b2834',1,'module_ncio::ncio::replace_var_nc_int_2d()'],['../namespacemodule__ncio.html#ac094a9984074f088754fc392e7d80450',1,'module_ncio::replace_var_nc_int_2d()']]], + ['replace_5fvar_5fnc_5fint_5f3d',['replace_var_nc_int_3d',['../structmodule__ncio_1_1ncio.html#a2dd8aafe0da77099081cf270bc01b3e5',1,'module_ncio::ncio::replace_var_nc_int_3d()'],['../namespacemodule__ncio.html#a488d0a16ecb0b877f003d6383231712c',1,'module_ncio::replace_var_nc_int_3d()']]], + ['replace_5fvar_5fnc_5freal',['replace_var_nc_real',['../structmodule__ncio_1_1ncio.html#a521faa792d7a83702ac21ffbc7aacf1b',1,'module_ncio::ncio::replace_var_nc_real()'],['../namespacemodule__ncio.html#af228f466b83468a56ae64932769b6e9a',1,'module_ncio::replace_var_nc_real()']]], + ['replace_5fvar_5fnc_5freal_5f1d',['replace_var_nc_real_1d',['../structmodule__ncio_1_1ncio.html#a1bbb0a073a7e6991b5b506b3ed2b9ce3',1,'module_ncio::ncio::replace_var_nc_real_1d()'],['../namespacemodule__ncio.html#aec8faf445d41345677ef6cc3ce9cf7f8',1,'module_ncio::replace_var_nc_real_1d()']]], + ['replace_5fvar_5fnc_5freal_5f2d',['replace_var_nc_real_2d',['../structmodule__ncio_1_1ncio.html#a986cc749d7749e10582a07f5580664cc',1,'module_ncio::ncio::replace_var_nc_real_2d()'],['../namespacemodule__ncio.html#af5a5bf3fbb075259e68d17acea03fa95',1,'module_ncio::replace_var_nc_real_2d()']]], + ['replace_5fvar_5fnc_5freal_5f3d',['replace_var_nc_real_3d',['../structmodule__ncio_1_1ncio.html#a439e7cc1fe00c9c2b789a17ad35782bf',1,'module_ncio::ncio::replace_var_nc_real_3d()'],['../namespacemodule__ncio.html#a9fa16fe14ec52e3cfaba1e0613d7420c',1,'module_ncio::replace_var_nc_real_3d()']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/mag_sel.png b/ver-1.11.0/fvcom_tools/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/search/namespaces_0.html b/ver-1.11.0/fvcom_tools/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/namespaces_0.js b/ver-1.11.0/fvcom_tools/search/namespaces_0.js new file mode 100644 index 000000000..1302f361a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kinds',['kinds',['../namespacekinds.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/namespaces_1.html b/ver-1.11.0/fvcom_tools/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/namespaces_1.js b/ver-1.11.0/fvcom_tools/search/namespaces_1.js new file mode 100644 index 000000000..fbee679e9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/namespaces_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['module_5fncio',['module_ncio',['../namespacemodule__ncio.html',1,'']]], + ['module_5fnwp',['module_nwp',['../namespacemodule__nwp.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/nomatches.html b/ver-1.11.0/fvcom_tools/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/pages_0.html b/ver-1.11.0/fvcom_tools/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/pages_0.js b/ver-1.11.0/fvcom_tools/search/pages_0.js new file mode 100644 index 000000000..d0d410389 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fvcom_5ftools',['fvcom_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/pages_1.html b/ver-1.11.0/fvcom_tools/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/pages_1.js b/ver-1.11.0/fvcom_tools/search/pages_1.js new file mode 100644 index 000000000..e4d6a159f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_fvcom_tools_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/search.css b/ver-1.11.0/fvcom_tools/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/fvcom_tools/search/search.js b/ver-1.11.0/fvcom_tools/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/search/search_r.png b/ver-1.11.0/fvcom_tools/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_0.js b/ver-1.11.0/fvcom_tools/search/variables_0.js new file mode 100644 index 000000000..aa94be692 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['datatype',['datatype',['../structmodule__nwp_1_1fcst__nwp.html#a6d86226bbeb5953ff239375dfd816535',1,'module_nwp::fcst_nwp']]], + ['datelen',['datelen',['../structmodule__nwp_1_1fcst__nwp.html#a153c4320e63706941bfe539ad363af81',1,'module_nwp::fcst_nwp']]], + ['debug_5flevel',['debug_level',['../structmodule__ncio_1_1ncio.html#a165db4f542055f0a16fe0b1bf8f02da7',1,'module_ncio::ncio']]], + ['dimname',['dimname',['../structmodule__ncio_1_1ncio.html#aa93d9e0ed76f3170ad15db0bfbd9d99c',1,'module_ncio::ncio']]], + ['dimnamedate',['dimnamedate',['../structmodule__nwp_1_1fcst__nwp.html#acbc57e7e8b02a11a75d96ae6cce54a80',1,'module_nwp::fcst_nwp']]], + ['dimnameew',['dimnameew',['../structmodule__nwp_1_1fcst__nwp.html#a9dff66877f96bf713a23d455ef8b6237',1,'module_nwp::fcst_nwp']]], + ['dimnamens',['dimnamens',['../structmodule__nwp_1_1fcst__nwp.html#a07eb32dec0977c96713c01f218cba393',1,'module_nwp::fcst_nwp']]], + ['dimnametime',['dimnametime',['../structmodule__nwp_1_1fcst__nwp.html#a0ef5e68cb1cb3c4013cd0bb88a455e29',1,'module_nwp::fcst_nwp']]], + ['drmissing',['drmissing',['../namespacekinds.html#aa7b48b25ed23323e461a788878720b51',1,'kinds']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_1.html b/ver-1.11.0/fvcom_tools/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_1.js b/ver-1.11.0/fvcom_tools/search/variables_1.js new file mode 100644 index 000000000..71572c0bc --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ends',['ends',['../structmodule__ncio_1_1ncio.html#aaddfeb4a5235e44a0058e220efd0dd01',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_2.html b/ver-1.11.0/fvcom_tools/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_2.js b/ver-1.11.0/fvcom_tools/search/variables_2.js new file mode 100644 index 000000000..f654254b7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['filename',['filename',['../structmodule__ncio_1_1ncio.html#a904ccc2afd3226c84b2b91be9e555483',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_3.html b/ver-1.11.0/fvcom_tools/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_3.js b/ver-1.11.0/fvcom_tools/search/variables_3.js new file mode 100644 index 000000000..4df04e35b --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['i_5fbyte',['i_byte',['../namespacekinds.html#a5dfbd654e549ff3a80c6e1bc2d7d5661',1,'kinds']]], + ['i_5fhice',['i_hice',['../structmodule__nwp_1_1fcst__nwp.html#a4b93b2bb9aecf3f898281f3f8585b50a',1,'module_nwp::fcst_nwp']]], + ['i_5fice',['i_ice',['../structmodule__nwp_1_1fcst__nwp.html#a719d8a62514e6bed6a36c5f3a615b2ca',1,'module_nwp::fcst_nwp']]], + ['i_5ficet',['i_icet',['../structmodule__nwp_1_1fcst__nwp.html#afac91cc13d13d2c921f19457e6f53992',1,'module_nwp::fcst_nwp']]], + ['i_5fkind',['i_kind',['../namespacekinds.html#a2bf18edacdd0f57294e42719753d0168',1,'kinds']]], + ['i_5fmask',['i_mask',['../structmodule__nwp_1_1fcst__nwp.html#a51c783ca67885356c54c649579b08222',1,'module_nwp::fcst_nwp']]], + ['i_5fsfct',['i_sfct',['../structmodule__nwp_1_1fcst__nwp.html#a26432e0d22e744abbc984963ae3297a4',1,'module_nwp::fcst_nwp']]], + ['i_5fsfctl',['i_sfctl',['../structmodule__nwp_1_1fcst__nwp.html#aaf57061b62536890e93ab8c3889ee302',1,'module_nwp::fcst_nwp']]], + ['i_5fshort',['i_short',['../namespacekinds.html#a7294b1421464f1c39e4ed41245ea44f7',1,'kinds']]], + ['i_5fsst',['i_sst',['../structmodule__nwp_1_1fcst__nwp.html#aaf80cfad537428aa33421192c0e439ed',1,'module_nwp::fcst_nwp']]], + ['i_5fzorl',['i_zorl',['../structmodule__nwp_1_1fcst__nwp.html#a34d6e4dd2ddeda3f53f64cc75d22d47e',1,'module_nwp::fcst_nwp']]], + ['imissing',['imissing',['../namespacekinds.html#a7cc86e3396d927fd6cf192212af8b21c',1,'kinds']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_4.html b/ver-1.11.0/fvcom_tools/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_4.js b/ver-1.11.0/fvcom_tools/search/variables_4.js new file mode 100644 index 000000000..b7226dc59 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['latname',['latname',['../structmodule__nwp_1_1fcst__nwp.html#a01c0f452c916d4658f7e9a0132b67adc',1,'module_nwp::fcst_nwp']]], + ['len_5fsta_5fname',['len_sta_name',['../namespacekinds.html#a2e35624b3e7919d10ccf50acf9bb1a6b',1,'kinds']]], + ['lonname',['lonname',['../structmodule__nwp_1_1fcst__nwp.html#a9413d8b15ec180908afc1add97452780',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_5.html b/ver-1.11.0/fvcom_tools/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_5.js b/ver-1.11.0/fvcom_tools/search/variables_5.js new file mode 100644 index 000000000..e0bff4086 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_5.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['ncdata',['ncdata',['../namespacemodule__nwp.html#af103c9fe9d0bfa17cc2c55e1cf463cdd',1,'module_nwp']]], + ['ncid',['ncid',['../structmodule__ncio_1_1ncio.html#a4fd65e0d85fc05d062edde67e44e529c',1,'module_ncio::ncio']]], + ['ndims',['ndims',['../structmodule__ncio_1_1ncio.html#a136bcb35ff9c5504d550f2c0448b2f7f',1,'module_ncio::ncio']]], + ['numvar',['numvar',['../structmodule__nwp_1_1fcst__nwp.html#a506430ac3f18b6b3699b67ac3b4781f1',1,'module_nwp::fcst_nwp']]], + ['nwp_5fhice_5fc',['nwp_hice_c',['../structmodule__nwp_1_1fcst__nwp.html#aa2229cde909510f4825e250c3d1c5642',1,'module_nwp::fcst_nwp']]], + ['nwp_5fhice_5fw',['nwp_hice_w',['../structmodule__nwp_1_1fcst__nwp.html#ad20d9302cfdb42ba8bf771d980f10cf6',1,'module_nwp::fcst_nwp']]], + ['nwp_5fice_5fc',['nwp_ice_c',['../structmodule__nwp_1_1fcst__nwp.html#ac4221284ae5757dbd35de7bba7c7ed5d',1,'module_nwp::fcst_nwp']]], + ['nwp_5fice_5fw',['nwp_ice_w',['../structmodule__nwp_1_1fcst__nwp.html#a7a1b01ce504fdaa2393387a7aabfe441',1,'module_nwp::fcst_nwp']]], + ['nwp_5ficet_5fc',['nwp_icet_c',['../structmodule__nwp_1_1fcst__nwp.html#adb555ef50f1dce5f521391845623864f',1,'module_nwp::fcst_nwp']]], + ['nwp_5ficet_5fw',['nwp_icet_w',['../structmodule__nwp_1_1fcst__nwp.html#a87f3901b07cc993830337f98d7229741',1,'module_nwp::fcst_nwp']]], + ['nwp_5fmask_5fc',['nwp_mask_c',['../structmodule__nwp_1_1fcst__nwp.html#acfebaff0d3c552390d3690d7a08ef861',1,'module_nwp::fcst_nwp']]], + ['nwp_5fmask_5fw',['nwp_mask_w',['../structmodule__nwp_1_1fcst__nwp.html#a0770dacee8110669ce5b945b58a277c8',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfct_5fc',['nwp_sfct_c',['../structmodule__nwp_1_1fcst__nwp.html#a2d54be75bde48b67313828f0240f5d74',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfct_5fw',['nwp_sfct_w',['../structmodule__nwp_1_1fcst__nwp.html#a3c071d67dbb279adce1a84b7a68a866f',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsfctl_5fw',['nwp_sfctl_w',['../structmodule__nwp_1_1fcst__nwp.html#af1d3478290e0ba808b385ef32a22900d',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsst_5fc',['nwp_sst_c',['../structmodule__nwp_1_1fcst__nwp.html#acd74ef4c93126671a16ec6ea6ab22c02',1,'module_nwp::fcst_nwp']]], + ['nwp_5fsst_5fw',['nwp_sst_w',['../structmodule__nwp_1_1fcst__nwp.html#abf121c9f81fd763b30a12749abcde2a3',1,'module_nwp::fcst_nwp']]], + ['nwp_5fzorl_5fc',['nwp_zorl_c',['../structmodule__nwp_1_1fcst__nwp.html#acd797274b25fb7dc5bb862917d72feda',1,'module_nwp::fcst_nwp']]], + ['nwp_5fzorl_5fw',['nwp_zorl_w',['../structmodule__nwp_1_1fcst__nwp.html#a1c121ba314f6896ffb9d10d491435a13',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_6.html b/ver-1.11.0/fvcom_tools/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_6.js b/ver-1.11.0/fvcom_tools/search/variables_6.js new file mode 100644 index 000000000..fe53b47f2 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['r_5fkind',['r_kind',['../namespacekinds.html#a699e36574bc3d76eb8c85e14f6234212',1,'kinds']]], + ['r_5fsingle',['r_single',['../namespacekinds.html#a2941a091aedaf97539960bc627db578c',1,'kinds']]], + ['rmissing',['rmissing',['../namespacekinds.html#af5dd83b916095f8d5d146dafc5246dad',1,'kinds']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_7.html b/ver-1.11.0/fvcom_tools/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_7.js b/ver-1.11.0/fvcom_tools/search/variables_7.js new file mode 100644 index 000000000..41a1718d0 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['status',['status',['../structmodule__ncio_1_1ncio.html#a39c6bb8934015215afb671fcd20373c7',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_8.html b/ver-1.11.0/fvcom_tools/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_8.js b/ver-1.11.0/fvcom_tools/search/variables_8.js new file mode 100644 index 000000000..06df09bd6 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['times',['times',['../structmodule__nwp_1_1fcst__nwp.html#ac81311ccea36bb1eb65d9a316208463f',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_9.html b/ver-1.11.0/fvcom_tools/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_9.js b/ver-1.11.0/fvcom_tools/search/variables_9.js new file mode 100644 index 000000000..ff7ab0409 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['varnames',['varnames',['../structmodule__nwp_1_1fcst__nwp.html#a437d0bc64a273e6bd59b10159dd05ae3',1,'module_nwp::fcst_nwp']]] +]; diff --git a/ver-1.11.0/fvcom_tools/search/variables_a.html b/ver-1.11.0/fvcom_tools/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/fvcom_tools/search/variables_a.js b/ver-1.11.0/fvcom_tools/search/variables_a.js new file mode 100644 index 000000000..649925ef3 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['xlat',['xlat',['../structmodule__nwp_1_1fcst__nwp.html#a8fea723cab12bbf8234ebcd76a304ef0',1,'module_nwp::fcst_nwp']]], + ['xlon',['xlon',['../structmodule__nwp_1_1fcst__nwp.html#ae8b446b2907f0c7fcec5f11062913743',1,'module_nwp::fcst_nwp']]], + ['xtime',['xtime',['../structmodule__nwp_1_1fcst__nwp.html#a4b47351797dff8a654b3b13ec6b48290',1,'module_nwp::fcst_nwp']]], + ['xtype',['xtype',['../structmodule__ncio_1_1ncio.html#a1f6a93616c5b829134581befc96dd438',1,'module_ncio::ncio']]] +]; diff --git a/ver-1.11.0/fvcom_tools/splitbar.png b/ver-1.11.0/fvcom_tools/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.html b/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.html new file mode 100644 index 000000000..09b04c9dd --- /dev/null +++ b/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.html @@ -0,0 +1,1980 @@ + + + + + + + +fvcom_tools: module_ncio::ncio Type Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_ncio::ncio Type Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    generic add_new_var => add_new_var_2d, add_new_var_3d
     Add a new 2d or 3d variable to ouput file. More...
     
    procedure add_new_var_2d
     Add a new 2d variable to output file. More...
     
    procedure add_new_var_3d
     Add a new 3d variable to output file. More...
     
    procedure close => close_nc
     Close netCDF file. More...
     
    procedure convert_theta2t_2dgrid
     Convert theta T (Kelvin) to T (deg C). More...
     
    generic get_att => get_att_nc_int, get_att_nc_real, get_att_nc_string
     Get attribute. More...
     
    procedure get_att_nc_int
     Get attribute. More...
     
    procedure get_att_nc_real
     Get attribute. More...
     
    procedure get_att_nc_string
     Get attribute. More...
     
    procedure get_dim => get_dim_nc
     read in dimension from the nc file More...
     
    generic get_var => get_var_nc_double_1d, get_var_nc_double_2d, get_var_nc_double_3d, get_var_nc_real_1d, get_var_nc_real_2d, get_var_nc_real_3d, get_var_nc_short_1d, get_var_nc_short_2d, get_var_nc_int_1d, get_var_nc_int_2d, get_var_nc_int_3d, get_var_nc_char_1d, get_var_nc_char_2d, get_var_nc_char_3d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_char
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_char_1d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_char_2d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_char_3d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_double
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_double_1d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_double_2d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_double_3d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_int
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_int_1d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_int_2d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_int_3d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_real
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_real_1d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_real_2d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_real_3d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_short
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_short_1d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure get_var_nc_short_2d
     Read in a 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure handle_err
     Handle netCDF errors. More...
     
    procedure open => open_nc
     Open netCDF file. More...
     
    generic replace_var => replace_var_nc_double_1d, replace_var_nc_double_2d, replace_var_nc_double_3d, replace_var_nc_real_1d, replace_var_nc_real_2d, replace_var_nc_real_3d, replace_var_nc_int_1d, replace_var_nc_int_2d, replace_var_nc_int_3d, replace_var_nc_char_1d, replace_var_nc_char_2d, replace_var_nc_char_3d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_char
     Replace character type variable. More...
     
    procedure replace_var_nc_char_1d
     Replace character type variable. More...
     
    procedure replace_var_nc_char_2d
     Replace character type variable. More...
     
    procedure replace_var_nc_char_3d
     Replace 3D character type variable. More...
     
    procedure replace_var_nc_double
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_double_1d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_double_2d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_double_3d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_int
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_int_1d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_int_2d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_int_3d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_real
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_real_1d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_real_2d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    procedure replace_var_nc_real_3d
     Replace 1d, 2d, 3d, or 4d field from the nc file. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Private Attributes

    integer debug_level
     Debug level. More...
     
    character(len=40), dimension(4) dimname
     Name of dims. More...
     
    integer, dimension(4) ends
     Counts of dims. More...
     
    character(len=256) filename
     Name of data file. More...
     
    integer ncid
     File ID. More...
     
    integer ndims
     Number of dims. More...
     
    integer status
     Return code. More...
     
    integer xtype
     Type of data. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 16 of file module_ncio.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ add_new_var()

    + +
    +
    + + + + + +
    + + + + + + + +
    generic module_ncio::ncio::add_new_var ()
    +
    +private
    +
    + +

    Add a new 2d or 3d variable to ouput file.

    +
    Returns
    + +

    Definition at line 88 of file module_ncio.f90.

    + +

    References module_ncio::add_new_var_2d(), and module_ncio::add_new_var_3d().

    + +
    +
    + +

    ◆ add_new_var_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::add_new_var_2d ()
    +
    +private
    +
    + +

    Add a new 2d variable to output file.

    +
    Returns
    + +

    Definition at line 90 of file module_ncio.f90.

    + +
    +
    + +

    ◆ add_new_var_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::add_new_var_3d ()
    +
    +private
    +
    + +

    Add a new 3d variable to output file.

    +
    Returns
    + +

    Definition at line 91 of file module_ncio.f90.

    + +
    +
    + +

    ◆ close()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::close ()
    +
    +private
    +
    + +

    Close netCDF file.

    +
    Returns
    + +

    Definition at line 28 of file module_ncio.f90.

    + +
    +
    + +

    ◆ convert_theta2t_2dgrid()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::convert_theta2t_2dgrid ()
    +
    +private
    +
    + +

    Convert theta T (Kelvin) to T (deg C).

    +
    Returns
    + +

    Definition at line 87 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_att()

    + +
    +
    + + + + + +
    + + + + + + + +
    generic module_ncio::ncio::get_att ()
    +
    +private
    +
    + +

    Get attribute.

    +
    Returns
    + +

    Definition at line 30 of file module_ncio.f90.

    + +

    References module_ncio::get_att_nc_int(), module_ncio::get_att_nc_real(), and module_ncio::get_att_nc_string().

    + +
    +
    + +

    ◆ get_att_nc_int()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_att_nc_int ()
    +
    +private
    +
    + +

    Get attribute.

    +
    Returns
    + +

    Definition at line 31 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_att_nc_real()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_att_nc_real ()
    +
    +private
    +
    + +

    Get attribute.

    +
    Returns
    + +

    Definition at line 32 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_att_nc_string()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_att_nc_string ()
    +
    +private
    +
    + +

    Get attribute.

    +
    Returns
    + +

    Definition at line 33 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_dim()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_dim ()
    +
    +private
    +
    + +

    read in dimension from the nc file

    +
    Returns
    + +

    Definition at line 29 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var()

    + + + +

    ◆ get_var_nc_char()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_char ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 58 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_char_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_char_1d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 59 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_char_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_char_2d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 60 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_char_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_char_3d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 61 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_double()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_double ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 54 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_double_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_double_1d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 55 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_double_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_double_2d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 56 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_double_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_double_3d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 57 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_int()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_int ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 46 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_int_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_int_1d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 47 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_int_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_int_2d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 48 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_int_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_int_3d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 49 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_real()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_real ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 50 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_real_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_real_1d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 51 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_real_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_real_2d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 52 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_real_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_real_3d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 53 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_short()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_short ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 43 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_short_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_short_1d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 44 of file module_ncio.f90.

    + +
    +
    + +

    ◆ get_var_nc_short_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::get_var_nc_short_2d ()
    +
    +private
    +
    + +

    Read in a 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 45 of file module_ncio.f90.

    + +
    +
    + +

    ◆ handle_err()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::handle_err ()
    +
    +private
    +
    + +

    Handle netCDF errors.

    +
    Returns
    + +

    Definition at line 86 of file module_ncio.f90.

    + +
    +
    + +

    ◆ open()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::open ()
    +
    +private
    +
    + +

    Open netCDF file.

    +
    Returns
    + +

    Definition at line 27 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var()

    + + + +

    ◆ replace_var_nc_char()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_char ()
    +
    +private
    +
    + +

    Replace character type variable.

    +
    Returns
    + +

    Definition at line 82 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_char_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_char_1d ()
    +
    +private
    +
    + +

    Replace character type variable.

    +
    Returns
    + +

    Definition at line 83 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_char_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_char_2d ()
    +
    +private
    +
    + +

    Replace character type variable.

    +
    Returns
    + +

    Definition at line 84 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_char_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_char_3d ()
    +
    +private
    +
    + +

    Replace 3D character type variable.

    +
    Returns
    + +

    Definition at line 85 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_double()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_double ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 78 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_double_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_double_1d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 79 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_double_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_double_2d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 80 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_double_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_double_3d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 81 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_int()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_int ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 70 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_int_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_int_1d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 71 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_int_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_int_2d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 72 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_int_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_int_3d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 73 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_real()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_real ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 74 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_real_1d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_real_1d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 75 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_real_2d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_real_2d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 76 of file module_ncio.f90.

    + +
    +
    + +

    ◆ replace_var_nc_real_3d()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_ncio::ncio::replace_var_nc_real_3d ()
    +
    +private
    +
    + +

    Replace 1d, 2d, 3d, or 4d field from the nc file.

    +
    Returns
    + +

    Definition at line 77 of file module_ncio.f90.

    + +
    +
    +

    Field Documentation

    + +

    ◆ debug_level

    + +
    +
    + + + + + +
    + + + + +
    integer module_ncio::ncio::debug_level
    +
    +private
    +
    + +

    Debug level.

    + +

    Definition at line 20 of file module_ncio.f90.

    + +
    +
    + +

    ◆ dimname

    + +
    +
    + + + + + +
    + + + + +
    character(len=40), dimension(4) module_ncio::ncio::dimname
    +
    +private
    +
    + +

    Name of dims.

    + +

    Definition at line 25 of file module_ncio.f90.

    + +
    +
    + +

    ◆ ends

    + +
    +
    + + + + + +
    + + + + +
    integer, dimension(4) module_ncio::ncio::ends
    +
    +private
    +
    + +

    Counts of dims.

    + +

    Definition at line 23 of file module_ncio.f90.

    + +
    +
    + +

    ◆ filename

    + +
    +
    + + + + + +
    + + + + +
    character(len=256) module_ncio::ncio::filename
    +
    +private
    +
    + +

    Name of data file.

    + +

    Definition at line 17 of file module_ncio.f90.

    + +
    +
    + +

    ◆ ncid

    + +
    +
    + + + + + +
    + + + + +
    integer module_ncio::ncio::ncid
    +
    +private
    +
    + +

    File ID.

    + +

    Definition at line 18 of file module_ncio.f90.

    + +
    +
    + +

    ◆ ndims

    + +
    +
    + + + + + +
    + + + + +
    integer module_ncio::ncio::ndims
    +
    +private
    +
    + +

    Number of dims.

    + +

    Definition at line 22 of file module_ncio.f90.

    + +
    +
    + +

    ◆ status

    + +
    +
    + + + + + +
    + + + + +
    integer module_ncio::ncio::status
    +
    +private
    +
    + +

    Return code.

    + +

    Definition at line 19 of file module_ncio.f90.

    + +
    +
    + +

    ◆ xtype

    + +
    +
    + + + + + +
    + + + + +
    integer module_ncio::ncio::xtype
    +
    +private
    +
    + +

    Type of data.

    + +

    Definition at line 24 of file module_ncio.f90.

    + +
    +
    +
    The documentation for this type was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_ncio.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.js b/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.js new file mode 100644 index 000000000..b8cd0c862 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/structmodule__ncio_1_1ncio.js @@ -0,0 +1,60 @@ +var structmodule__ncio_1_1ncio = +[ + [ "add_new_var", "structmodule__ncio_1_1ncio.html#a8851d6006e00d7055e2921dce6e99cd8", null ], + [ "add_new_var_2d", "structmodule__ncio_1_1ncio.html#a3436a66b0d823559d365992916b7832c", null ], + [ "add_new_var_3d", "structmodule__ncio_1_1ncio.html#ab8dbeffbba653826686bb5ed1795149e", null ], + [ "close", "structmodule__ncio_1_1ncio.html#a782798cda1e2777d0a7d8998fc264ed9", null ], + [ "convert_theta2t_2dgrid", "structmodule__ncio_1_1ncio.html#a8028124b918efde884e98d2edab4b8d4", null ], + [ "get_att", "structmodule__ncio_1_1ncio.html#ac210738461dd6d73ded7aa9140677de0", null ], + [ "get_att_nc_int", "structmodule__ncio_1_1ncio.html#a58f1f4af5b678249c51a894ab49b9045", null ], + [ "get_att_nc_real", "structmodule__ncio_1_1ncio.html#a5844b694f7933e49ede08d05b0d5d57f", null ], + [ "get_att_nc_string", "structmodule__ncio_1_1ncio.html#adad86eda2a4b41d6f7d73e5eaaf4f1a1", null ], + [ "get_dim", "structmodule__ncio_1_1ncio.html#ab79ff7acc30376d1d459803d53468cfb", null ], + [ "get_var", "structmodule__ncio_1_1ncio.html#aa8ecd7a7f447f30751ca023205675166", null ], + [ "get_var_nc_char", "structmodule__ncio_1_1ncio.html#a9458c74f6489fb0c3fab458da1165a3f", null ], + [ "get_var_nc_char_1d", "structmodule__ncio_1_1ncio.html#a8e16f9f8cd6e097afb735eb856dd9097", null ], + [ "get_var_nc_char_2d", "structmodule__ncio_1_1ncio.html#a8d9f4efe9eddb77a5d3ae75d2f5e5596", null ], + [ "get_var_nc_char_3d", "structmodule__ncio_1_1ncio.html#afd958dc5c2186870a896c812b3e25ce5", null ], + [ "get_var_nc_double", "structmodule__ncio_1_1ncio.html#a05c91623b115c327a39971dab3a0e6e9", null ], + [ "get_var_nc_double_1d", "structmodule__ncio_1_1ncio.html#af40752239489230abd97a9d6e9ab4ff3", null ], + [ "get_var_nc_double_2d", "structmodule__ncio_1_1ncio.html#a8df70ec276348284d27b4d3d41dafcf1", null ], + [ "get_var_nc_double_3d", "structmodule__ncio_1_1ncio.html#aa0831178e673305f5b789527d380b446", null ], + [ "get_var_nc_int", "structmodule__ncio_1_1ncio.html#a6a8e663342018343054a9f3323c3e2bc", null ], + [ "get_var_nc_int_1d", "structmodule__ncio_1_1ncio.html#a79cab7ab4e7bf5a006f86e7832435cc0", null ], + [ "get_var_nc_int_2d", "structmodule__ncio_1_1ncio.html#a4584cce0696fb57e1871367d76642cd9", null ], + [ "get_var_nc_int_3d", "structmodule__ncio_1_1ncio.html#ab3e4a6c96d4c78749018e0854380c87c", null ], + [ "get_var_nc_real", "structmodule__ncio_1_1ncio.html#a72beeb8eb55cfc17cbff1583723e8284", null ], + [ "get_var_nc_real_1d", "structmodule__ncio_1_1ncio.html#a35e0ecdb13ee55830a4e53d833a7301c", null ], + [ "get_var_nc_real_2d", "structmodule__ncio_1_1ncio.html#ac6c87eb3e35db224ac910768b1745ed5", null ], + [ "get_var_nc_real_3d", "structmodule__ncio_1_1ncio.html#afe2489df6db1724090aae015c0209e96", null ], + [ "get_var_nc_short", "structmodule__ncio_1_1ncio.html#acfdd2f4a9e1a6beb6ecbe96e60fb6cb9", null ], + [ "get_var_nc_short_1d", "structmodule__ncio_1_1ncio.html#a1d1c9bccb35c89416e9cb96e4dd7ede6", null ], + [ "get_var_nc_short_2d", "structmodule__ncio_1_1ncio.html#a639270062b980a83d4adc54c3d2edbc1", null ], + [ "handle_err", "structmodule__ncio_1_1ncio.html#a56a713d2470067afb55eeaa47198483c", null ], + [ "open", "structmodule__ncio_1_1ncio.html#ab403c269b83f9d22599bb22d0fee6a83", null ], + [ "replace_var", "structmodule__ncio_1_1ncio.html#aed5eef1278d15a0c7141fd5cdfb19b58", null ], + [ "replace_var_nc_char", "structmodule__ncio_1_1ncio.html#ae74ff4f16d1f83a7c9af9649b25426be", null ], + [ "replace_var_nc_char_1d", "structmodule__ncio_1_1ncio.html#acc91961c2729e90e51fa3030069366e5", null ], + [ "replace_var_nc_char_2d", "structmodule__ncio_1_1ncio.html#a2ccd1e207892931d4b66f4c5464f44c6", null ], + [ "replace_var_nc_char_3d", "structmodule__ncio_1_1ncio.html#a692b81f590f5ee5099f31adfb111997d", null ], + [ "replace_var_nc_double", "structmodule__ncio_1_1ncio.html#a3fd7a56a2be221a1598cdd9403516e9b", null ], + [ "replace_var_nc_double_1d", "structmodule__ncio_1_1ncio.html#a059d84ec702ec60e2f7d4ec4d02616bc", null ], + [ "replace_var_nc_double_2d", "structmodule__ncio_1_1ncio.html#af4e9d764b135dc6a2d9c7369ca954eb9", null ], + [ "replace_var_nc_double_3d", "structmodule__ncio_1_1ncio.html#ad02a9a644f63c2feebfc4f49293eb3d0", null ], + [ "replace_var_nc_int", "structmodule__ncio_1_1ncio.html#a31d9c2cc6e92b62aa06a159ff90f6b88", null ], + [ "replace_var_nc_int_1d", "structmodule__ncio_1_1ncio.html#ab2cdfce6f220f5aa4c6bc152a10746a6", null ], + [ "replace_var_nc_int_2d", "structmodule__ncio_1_1ncio.html#a448dfacc5abd9ff451b8d920d60b2834", null ], + [ "replace_var_nc_int_3d", "structmodule__ncio_1_1ncio.html#a2dd8aafe0da77099081cf270bc01b3e5", null ], + [ "replace_var_nc_real", "structmodule__ncio_1_1ncio.html#a521faa792d7a83702ac21ffbc7aacf1b", null ], + [ "replace_var_nc_real_1d", "structmodule__ncio_1_1ncio.html#a1bbb0a073a7e6991b5b506b3ed2b9ce3", null ], + [ "replace_var_nc_real_2d", "structmodule__ncio_1_1ncio.html#a986cc749d7749e10582a07f5580664cc", null ], + [ "replace_var_nc_real_3d", "structmodule__ncio_1_1ncio.html#a439e7cc1fe00c9c2b789a17ad35782bf", null ], + [ "debug_level", "structmodule__ncio_1_1ncio.html#a165db4f542055f0a16fe0b1bf8f02da7", null ], + [ "dimname", "structmodule__ncio_1_1ncio.html#aa93d9e0ed76f3170ad15db0bfbd9d99c", null ], + [ "ends", "structmodule__ncio_1_1ncio.html#aaddfeb4a5235e44a0058e220efd0dd01", null ], + [ "filename", "structmodule__ncio_1_1ncio.html#a904ccc2afd3226c84b2b91be9e555483", null ], + [ "ncid", "structmodule__ncio_1_1ncio.html#a4fd65e0d85fc05d062edde67e44e529c", null ], + [ "ndims", "structmodule__ncio_1_1ncio.html#a136bcb35ff9c5504d550f2c0448b2f7f", null ], + [ "status", "structmodule__ncio_1_1ncio.html#a39c6bb8934015215afb671fcd20373c7", null ], + [ "xtype", "structmodule__ncio_1_1ncio.html#a1f6a93616c5b829134581befc96dd438", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.html b/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.html new file mode 100644 index 000000000..edc859c9e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.html @@ -0,0 +1,1361 @@ + + + + + + + +fvcom_tools: module_nwp::fcst_nwp Type Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    fvcom_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_nwp::fcst_nwp Type Reference
    +
    +
    + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    procedure finish => finish_nwp
     Finish and deallocate. More...
     
    procedure get_time_ind => get_time_ind_nwp
     Get time ind. More...
     
    procedure initial => initial_nwp
     Defines vars and names. More...
     
    procedure list_initial => list_initial_nwp
     List the setup. More...
     
    procedure read_n => read_nwp
     Initialize arrays, get data. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Private Attributes

    character(len=6) datatype
     Data type. More...
     
    integer datelen
     Length of date string. More...
     
    character(len=20), allocatable dimnamedate
     String dimension name. More...
     
    character(len=20), allocatable dimnameew
     East/West dimension name. More...
     
    character(len=20), allocatable dimnamens
     North/South dimension name. More...
     
    character(len=20), allocatable dimnametime
     Time dimension name. More...
     
    integer i_hice
     Index of ice thickness. More...
     
    integer i_ice
     Index of ice var. More...
     
    integer i_icet
     Index of ice temp var. More...
     
    integer i_mask
     Is var visible (always 1). More...
     
    integer i_sfct
     Index of sst temp var. More...
     
    integer i_sfctl
     Index of sfcTl. More...
     
    integer i_sst
     Index of sst var. More...
     
    integer i_zorl
     Index of surface roughness. More...
     
    character(len=20), allocatable latname
     Latitude name. More...
     
    character(len=20), allocatable lonname
     Longitude name. More...
     
    integer numvar
     Number of variabls. More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_hice_c
     cold start ice thickness More...
     
    real(r_single), dimension(:,:), allocatable nwp_hice_w
     warm start ice thickness More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_ice_c
     cold start over water ice concentration 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_ice_w
     warm start over water ice concentration 3d array More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_icet_c
     cold start ice skin temperature 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_icet_w
     warm start ice skin temperature 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_mask_c
     cold start land/water mask 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_mask_w
     warm start land/water mask 3d array More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_sfct_c
     cold start skin temperature 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_sfct_w
     warm start skin temperature 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_sfctl_w
     warm start skin temperature 3d array More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_sst_c
     cold start sst 3d array More...
     
    real(r_single), dimension(:,:), allocatable nwp_sst_w
     warm start sst 3d array More...
     
    real(r_single), dimension(:,:,:), allocatable nwp_zorl_c
     cold start surface roughness More...
     
    real(r_single), dimension(:,:), allocatable nwp_zorl_w
     warm start surface roughness More...
     
    character(len=1), dimension(:,:), allocatable times
     Array of times in FVCOM. More...
     
    character(len=20), dimension(:), allocatable varnames
     Variable names. More...
     
    integer xlat
     Number of latitudes. More...
     
    integer xlon
     Number of longitudes. More...
     
    integer xtime
     Number of times. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 26 of file module_nwp.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ finish()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_nwp::fcst_nwp::finish ()
    +
    +private
    +
    + +

    Finish and deallocate.

    +
    Returns
    + +

    Definition at line 72 of file module_nwp.f90.

    + +
    +
    + +

    ◆ get_time_ind()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_nwp::fcst_nwp::get_time_ind ()
    +
    +private
    +
    + +

    Get time ind.

    +
    Returns
    + +

    Definition at line 71 of file module_nwp.f90.

    + +
    +
    + +

    ◆ initial()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_nwp::fcst_nwp::initial ()
    +
    +private
    +
    + +

    Defines vars and names.

    +
    Returns
    + +

    Definition at line 68 of file module_nwp.f90.

    + +
    +
    + +

    ◆ list_initial()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_nwp::fcst_nwp::list_initial ()
    +
    +private
    +
    + +

    List the setup.

    +
    Returns
    + +

    Definition at line 69 of file module_nwp.f90.

    + +
    +
    + +

    ◆ read_n()

    + +
    +
    + + + + + +
    + + + + + + + +
    procedure module_nwp::fcst_nwp::read_n ()
    +
    +private
    +
    + +

    Initialize arrays, get data.

    +
    Returns
    + +

    Definition at line 70 of file module_nwp.f90.

    + +
    +
    +

    Field Documentation

    + +

    ◆ datatype

    + +
    +
    + + + + + +
    + + + + +
    character(len=6) module_nwp::fcst_nwp::datatype
    +
    +private
    +
    + +

    Data type.

    + +

    Definition at line 27 of file module_nwp.f90.

    + +
    +
    + +

    ◆ datelen

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::datelen
    +
    +private
    +
    + +

    Length of date string.

    + +

    Definition at line 32 of file module_nwp.f90.

    + +
    +
    + +

    ◆ dimnamedate

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::dimnamedate
    +
    +private
    +
    + +

    String dimension name.

    + +

    Definition at line 47 of file module_nwp.f90.

    + +
    +
    + +

    ◆ dimnameew

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::dimnameew
    +
    +private
    +
    + +

    East/West dimension name.

    + +

    Definition at line 44 of file module_nwp.f90.

    + +
    +
    + +

    ◆ dimnamens

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::dimnamens
    +
    +private
    +
    + +

    North/South dimension name.

    + +

    Definition at line 45 of file module_nwp.f90.

    + +
    +
    + +

    ◆ dimnametime

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::dimnametime
    +
    +private
    +
    + +

    Time dimension name.

    + +

    Definition at line 46 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_hice

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_hice
    +
    +private
    +
    + +

    Index of ice thickness.

    + +

    Definition at line 40 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_ice

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_ice
    +
    +private
    +
    + +

    Index of ice var.

    + +

    Definition at line 35 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_icet

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_icet
    +
    +private
    +
    + +

    Index of ice temp var.

    + +

    Definition at line 37 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_mask

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_mask
    +
    +private
    +
    + +

    Is var visible (always 1).

    + +

    Definition at line 33 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_sfct

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_sfct
    +
    +private
    +
    + +

    Index of sst temp var.

    + +

    Definition at line 36 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_sfctl

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_sfctl
    +
    +private
    +
    + +

    Index of sfcTl.

    + +

    Definition at line 38 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_sst

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_sst
    +
    +private
    +
    + +

    Index of sst var.

    + +

    Definition at line 34 of file module_nwp.f90.

    + +
    +
    + +

    ◆ i_zorl

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::i_zorl
    +
    +private
    +
    + +

    Index of surface roughness.

    + +

    Definition at line 39 of file module_nwp.f90.

    + +
    +
    + +

    ◆ latname

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::latname
    +
    +private
    +
    + +

    Latitude name.

    + +

    Definition at line 42 of file module_nwp.f90.

    + +
    +
    + +

    ◆ lonname

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), allocatable module_nwp::fcst_nwp::lonname
    +
    +private
    +
    + +

    Longitude name.

    + +

    Definition at line 43 of file module_nwp.f90.

    + +
    +
    + +

    ◆ numvar

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::numvar
    +
    +private
    +
    + +

    Number of variabls.

    + +

    Definition at line 28 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_hice_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_hice_c
    +
    +private
    +
    + +

    cold start ice thickness

    + +

    Definition at line 56 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_hice_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_hice_w
    +
    +private
    +
    + +

    warm start ice thickness

    + +

    Definition at line 65 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_ice_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_ice_c
    +
    +private
    +
    + +

    cold start over water ice concentration 3d array

    + +

    Definition at line 52 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_ice_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_ice_w
    +
    +private
    +
    + +

    warm start over water ice concentration 3d array

    + +

    Definition at line 60 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_icet_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_icet_c
    +
    +private
    +
    + +

    cold start ice skin temperature 3d array

    + +

    Definition at line 54 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_icet_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_icet_w
    +
    +private
    +
    + +

    warm start ice skin temperature 3d array

    + +

    Definition at line 62 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_mask_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_mask_c
    +
    +private
    +
    + +

    cold start land/water mask 3d array

    + +

    Definition at line 50 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_mask_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_mask_w
    +
    +private
    +
    + +

    warm start land/water mask 3d array

    + +

    Definition at line 58 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_sfct_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_sfct_c
    +
    +private
    +
    + +

    cold start skin temperature 3d array

    + +

    Definition at line 53 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_sfct_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sfct_w
    +
    +private
    +
    + +

    warm start skin temperature 3d array

    + +

    Definition at line 61 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_sfctl_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sfctl_w
    +
    +private
    +
    + +

    warm start skin temperature 3d array

    + +

    Definition at line 63 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_sst_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_sst_c
    +
    +private
    +
    + +

    cold start sst 3d array

    + +

    Definition at line 51 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_sst_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_sst_w
    +
    +private
    +
    + +

    warm start sst 3d array

    + +

    Definition at line 59 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_zorl_c

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:,:), allocatable module_nwp::fcst_nwp::nwp_zorl_c
    +
    +private
    +
    + +

    cold start surface roughness

    + +

    Definition at line 55 of file module_nwp.f90.

    + +
    +
    + +

    ◆ nwp_zorl_w

    + +
    +
    + + + + + +
    + + + + +
    real(r_single), dimension(:,:), allocatable module_nwp::fcst_nwp::nwp_zorl_w
    +
    +private
    +
    + +

    warm start surface roughness

    + +

    Definition at line 64 of file module_nwp.f90.

    + +
    +
    + +

    ◆ times

    + +
    +
    + + + + + +
    + + + + +
    character(len=1), dimension(:,:), allocatable module_nwp::fcst_nwp::times
    +
    +private
    +
    + +

    Array of times in FVCOM.

    + +

    Definition at line 48 of file module_nwp.f90.

    + +
    +
    + +

    ◆ varnames

    + +
    +
    + + + + + +
    + + + + +
    character(len=20), dimension(:), allocatable module_nwp::fcst_nwp::varnames
    +
    +private
    +
    + +

    Variable names.

    + +

    Definition at line 41 of file module_nwp.f90.

    + +
    +
    + +

    ◆ xlat

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::xlat
    +
    +private
    +
    + +

    Number of latitudes.

    + +

    Definition at line 29 of file module_nwp.f90.

    + +
    +
    + +

    ◆ xlon

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::xlon
    +
    +private
    +
    + +

    Number of longitudes.

    + +

    Definition at line 30 of file module_nwp.f90.

    + +
    +
    + +

    ◆ xtime

    + +
    +
    + + + + + +
    + + + + +
    integer module_nwp::fcst_nwp::xtime
    +
    +private
    +
    + +

    Number of times.

    + +

    Definition at line 31 of file module_nwp.f90.

    + +
    +
    +
    The documentation for this type was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/fvcom_tools.fd/module_nwp.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.js b/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.js new file mode 100644 index 000000000..2d59c0d51 --- /dev/null +++ b/ver-1.11.0/fvcom_tools/structmodule__nwp_1_1fcst__nwp.js @@ -0,0 +1,45 @@ +var structmodule__nwp_1_1fcst__nwp = +[ + [ "finish", "structmodule__nwp_1_1fcst__nwp.html#a102b90122aaaa595a8e9121ecbfa392a", null ], + [ "get_time_ind", "structmodule__nwp_1_1fcst__nwp.html#a7612bb24ce8b8e3326ceee2593dd2739", null ], + [ "initial", "structmodule__nwp_1_1fcst__nwp.html#aa1f5e76c7e78037362680bea3111be2c", null ], + [ "list_initial", "structmodule__nwp_1_1fcst__nwp.html#ab1cf99d8a13c42432ae4bade78e6d971", null ], + [ "read_n", "structmodule__nwp_1_1fcst__nwp.html#ae01e5bb75ed1d59e452951f96ab7ebff", null ], + [ "datatype", "structmodule__nwp_1_1fcst__nwp.html#a6d86226bbeb5953ff239375dfd816535", null ], + [ "datelen", "structmodule__nwp_1_1fcst__nwp.html#a153c4320e63706941bfe539ad363af81", null ], + [ "dimnamedate", "structmodule__nwp_1_1fcst__nwp.html#acbc57e7e8b02a11a75d96ae6cce54a80", null ], + [ "dimnameew", "structmodule__nwp_1_1fcst__nwp.html#a9dff66877f96bf713a23d455ef8b6237", null ], + [ "dimnamens", "structmodule__nwp_1_1fcst__nwp.html#a07eb32dec0977c96713c01f218cba393", null ], + [ "dimnametime", "structmodule__nwp_1_1fcst__nwp.html#a0ef5e68cb1cb3c4013cd0bb88a455e29", null ], + [ "i_hice", "structmodule__nwp_1_1fcst__nwp.html#a4b93b2bb9aecf3f898281f3f8585b50a", null ], + [ "i_ice", "structmodule__nwp_1_1fcst__nwp.html#a719d8a62514e6bed6a36c5f3a615b2ca", null ], + [ "i_icet", "structmodule__nwp_1_1fcst__nwp.html#afac91cc13d13d2c921f19457e6f53992", null ], + [ "i_mask", "structmodule__nwp_1_1fcst__nwp.html#a51c783ca67885356c54c649579b08222", null ], + [ "i_sfct", "structmodule__nwp_1_1fcst__nwp.html#a26432e0d22e744abbc984963ae3297a4", null ], + [ "i_sfctl", "structmodule__nwp_1_1fcst__nwp.html#aaf57061b62536890e93ab8c3889ee302", null ], + [ "i_sst", "structmodule__nwp_1_1fcst__nwp.html#aaf80cfad537428aa33421192c0e439ed", null ], + [ "i_zorl", "structmodule__nwp_1_1fcst__nwp.html#a34d6e4dd2ddeda3f53f64cc75d22d47e", null ], + [ "latname", "structmodule__nwp_1_1fcst__nwp.html#a01c0f452c916d4658f7e9a0132b67adc", null ], + [ "lonname", "structmodule__nwp_1_1fcst__nwp.html#a9413d8b15ec180908afc1add97452780", null ], + [ "numvar", "structmodule__nwp_1_1fcst__nwp.html#a506430ac3f18b6b3699b67ac3b4781f1", null ], + [ "nwp_hice_c", "structmodule__nwp_1_1fcst__nwp.html#aa2229cde909510f4825e250c3d1c5642", null ], + [ "nwp_hice_w", "structmodule__nwp_1_1fcst__nwp.html#ad20d9302cfdb42ba8bf771d980f10cf6", null ], + [ "nwp_ice_c", "structmodule__nwp_1_1fcst__nwp.html#ac4221284ae5757dbd35de7bba7c7ed5d", null ], + [ "nwp_ice_w", "structmodule__nwp_1_1fcst__nwp.html#a7a1b01ce504fdaa2393387a7aabfe441", null ], + [ "nwp_icet_c", "structmodule__nwp_1_1fcst__nwp.html#adb555ef50f1dce5f521391845623864f", null ], + [ "nwp_icet_w", "structmodule__nwp_1_1fcst__nwp.html#a87f3901b07cc993830337f98d7229741", null ], + [ "nwp_mask_c", "structmodule__nwp_1_1fcst__nwp.html#acfebaff0d3c552390d3690d7a08ef861", null ], + [ "nwp_mask_w", "structmodule__nwp_1_1fcst__nwp.html#a0770dacee8110669ce5b945b58a277c8", null ], + [ "nwp_sfct_c", "structmodule__nwp_1_1fcst__nwp.html#a2d54be75bde48b67313828f0240f5d74", null ], + [ "nwp_sfct_w", "structmodule__nwp_1_1fcst__nwp.html#a3c071d67dbb279adce1a84b7a68a866f", null ], + [ "nwp_sfctl_w", "structmodule__nwp_1_1fcst__nwp.html#af1d3478290e0ba808b385ef32a22900d", null ], + [ "nwp_sst_c", "structmodule__nwp_1_1fcst__nwp.html#acd74ef4c93126671a16ec6ea6ab22c02", null ], + [ "nwp_sst_w", "structmodule__nwp_1_1fcst__nwp.html#abf121c9f81fd763b30a12749abcde2a3", null ], + [ "nwp_zorl_c", "structmodule__nwp_1_1fcst__nwp.html#acd797274b25fb7dc5bb862917d72feda", null ], + [ "nwp_zorl_w", "structmodule__nwp_1_1fcst__nwp.html#a1c121ba314f6896ffb9d10d491435a13", null ], + [ "times", "structmodule__nwp_1_1fcst__nwp.html#ac81311ccea36bb1eb65d9a316208463f", null ], + [ "varnames", "structmodule__nwp_1_1fcst__nwp.html#a437d0bc64a273e6bd59b10159dd05ae3", null ], + [ "xlat", "structmodule__nwp_1_1fcst__nwp.html#a8fea723cab12bbf8234ebcd76a304ef0", null ], + [ "xlon", "structmodule__nwp_1_1fcst__nwp.html#ae8b446b2907f0c7fcec5f11062913743", null ], + [ "xtime", "structmodule__nwp_1_1fcst__nwp.html#a4b47351797dff8a654b3b13ec6b48290", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/fvcom_tools/sync_off.png b/ver-1.11.0/fvcom_tools/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/sync_on.png b/ver-1.11.0/fvcom_tools/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/tab_a.png b/ver-1.11.0/fvcom_tools/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/tab_b.png b/ver-1.11.0/fvcom_tools/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/fvcom_tools/tabs.css b/ver-1.11.0/fvcom_tools/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/fvcom_tools/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/gblevents/README_8md_source.html b/ver-1.11.0/gblevents/README_8md_source.html new file mode 100644 index 000000000..39ae5fbc1 --- /dev/null +++ b/ver-1.11.0/gblevents/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/docs/README.md
    +
    +
    +
    1 The gblevents program performs pre and post processing of prepbufr events.
    2 
    3 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/gblevents/bc_s.png b/ver-1.11.0/gblevents/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/bdwn.png b/ver-1.11.0/gblevents/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..2e60fd0a3 --- /dev/null +++ b/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..7cd7b1dce --- /dev/null +++ b/ver-1.11.0/gblevents/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "gblevents.fd", "dir_dbd17571b8f1a13a49b28a78dd30db8d.html", "dir_dbd17571b8f1a13a49b28a78dd30db8d" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.html b/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.html new file mode 100644 index 000000000..d95964d1c --- /dev/null +++ b/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.html @@ -0,0 +1,112 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    gblevents.fd Directory Reference
    +
    +
    + + + + + +

    +Files

    file  gblevents.f [code]
     Pre/Post processing of of prepbufr events.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.js b/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.js new file mode 100644 index 000000000..cde98c7f2 --- /dev/null +++ b/ver-1.11.0/gblevents/dir_dbd17571b8f1a13a49b28a78dd30db8d.js @@ -0,0 +1,4 @@ +var dir_dbd17571b8f1a13a49b28a78dd30db8d = +[ + [ "gblevents.f", "gblevents_8f.html", "gblevents_8f" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/gblevents/doc.png b/ver-1.11.0/gblevents/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/doxygen.css b/ver-1.11.0/gblevents/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/gblevents/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/gblevents/doxygen.png b/ver-1.11.0/gblevents/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/dynsections.js b/ver-1.11.0/gblevents/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/gblevents/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +gblevents: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + +
      sorc
      gblevents.fd
     gblevents.fPre/Post processing of of prepbufr events
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/files_dup.js b/ver-1.11.0/gblevents/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/gblevents/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/ver-1.11.0/gblevents/folderclosed.png b/ver-1.11.0/gblevents/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/gblevents_8f.html b/ver-1.11.0/gblevents/gblevents_8f.html new file mode 100644 index 000000000..9fb27efc6 --- /dev/null +++ b/ver-1.11.0/gblevents/gblevents_8f.html @@ -0,0 +1,977 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/gblevents.f File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    gblevents.f File Reference
    +
    +
    + +

    Pre/Post processing of of prepbufr events. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine GBLEVENTS (IDATEP, IUNITF, IUNITE, IUNITP, IUNITS, SUBSET, NEWTYP)
     SUBPROGRAM: GBLEVENTS PRE/POST PROCESSING OF PREPBUFR EVENTS PRGMMR: DENNIS KEYSER ORG: EMC DATE: 2017-02-22. More...
     
    subroutine GBLEVN01 (IUNITE)
     Read observation error table. More...
     
    subroutine GBLEVN02 (IUNITP, IUNITS, NEWTYP, subset)
     Filter data. More...
     
    subroutine GBLEVN03 (SUBSET)
     GBLEVN03 - INTERPOLATE MODEL DATA (FIRST GUESS OR ANALYSIS) TO OB LOCATIONS. More...
     
    subroutine GBLEVN04
     Get observation error. More...
     
    subroutine GBLEVN06 (XOB, YOB)
     SUBROUTINE GBLEVN06 - 2D LINEAR HORIZONTAL INTERPOLATION. More...
     
    subroutine GBLEVN08 (IUNITP, SUBSET)
     SUBPROGRAM: GBLEVN08 PRGMMR: S. More...
     
    subroutine GBLEVN10 (IUNITF, IDATEP, IM, JM, IDRT)
     Do something. More...
     
    subroutine gblevn11 (imax, jmax, grid)
     North-south swap. More...
     
    subroutine gblevn11d (imax, jmax, grid)
     Does something. More...
     
    subroutine GBLEVN12 (IUNITF, IDATEP, IM, JM, IDRT)
     Does something. More...
     
    subroutine GBLEVN13 (IUNITF, IDATEP, IMX, JMX, IDRT)
     NetCDF Input. More...
     
    subroutine getlats (idrt)
     get latitudes More...
     
    function OEFG01 (P, TYP, IE, OEMIN)
     SUBPROGRAM: OEFG01 PRGMMR: D. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +real GBLEVN_MODULE::dlat
     
    +real GBLEVN_MODULE::dlon
     
    +real(kind=8), dimension(:,:), allocatable GBLEVN_MODULE::iar12z
     
    +real(kind=8), dimension(:,:), allocatable GBLEVN_MODULE::iar13p
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iar14t
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iar15u
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iar16v
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iar17q
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iarpsd
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iarpsi
     
    +real(kind=8), dimension(:,:,:), allocatable GBLEVN_MODULE::iarpsl
     
    +integer *4 GBLEVN_MODULE::idsl
     
    +integer *4 GBLEVN_MODULE::idvc
     
    +integer GBLEVN_MODULE::imax
     
    +integer GBLEVN_MODULE::jmax
     
    +integer GBLEVN_MODULE::kmax
     
    +integer GBLEVN_MODULE::kmaxs
     
    +integer *4 GBLEVN_MODULE::nvcoord
     
    +integer *4 GBLEVN_MODULE::sfcpress_id
     
    +integer *4 GBLEVN_MODULE::thermodyn_id
     
    +real(kind=4), dimension(:,:), allocatable GBLEVN_MODULE::vcoord
     
    +

    Detailed Description

    +

    Pre/Post processing of of prepbufr events.

    + +

    Definition in file gblevents.f.

    +

    Function/Subroutine Documentation

    + +

    ◆ GBLEVENTS()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVENTS ( IDATEP,
    integer*4, dimension(2) IUNITF,
     IUNITE,
     IUNITP,
     IUNITS,
    character*8 SUBSET,
     NEWTYP 
    )
    +
    + +

    SUBPROGRAM: GBLEVENTS PRE/POST PROCESSING OF PREPBUFR EVENTS PRGMMR: DENNIS KEYSER ORG: EMC DATE: 2017-02-22.

    +

    RUNS IN TWO MODES: "PREVENTS" AND "POSTEVENTS". IN THE PREVENTS MODE, PREPARES OBSERVATIONAL PREPBUFR REPORTS FOR SUBSEQUENT QUALITY CONTROL AND ANALYSIS PROGRAMS. THIS IS DONE THROUGH THE FOLLOWING: INTERPOLATION OF GLOBAL FIRST GUESS {FROM EITHER SIGIO (SIGMA OR HYBRID) OR NEMSIO INPUT} TO PREPBUFR OBSERVATION LOCATIONS WITH ENCODING OF FIRST GUESS VALUES INTO PREPBUFR REPORTS; ENCODING OF "PREVENT" AND/OR "VIRTMP" EVENTS INTO PREPBUFR REPORTS; IN CERTAIN CASES, ENCODING OF A DERIVED PMSL INTO SURFACE PREPBUFR REPORTS; AND ENCODING OF OBSERVATION ERRORS FROM THE ERROR SPECIFICATION FILE INTO PREPBUFR REPORTS. IN THE POSTEVENTS MODE, AFTER ALL QUALITY CONTROL AND ANALYSIS PROGRAMS HAVE RUN, INTERPOLATES THE GLOBAL ANALYSIS {FROM EITHER SIGIO (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT} TO PREPBUFR OBSERVATION LOCATIONS AND ENCODES THESE ANALYZED VALUES INTO PREPBUFR REPORTS. THE REMAINDER OF THIS ABSTRACT APPLIES ONLY TO THE PREVENTS MODE. THE "PREVENT" EVENT CAN CHANGE A QUALITY MARKER TO FLAG AN OBSERVATION DATUM FOR NON-USE BY SUBSEQUENT QC AND ANALYSIS PROGRAMS (FILTERING). EXAMPLES WHERE THIS SUBROUTINE WILL WRITE AN EVENT TO FLAG A DATUM INCLUDE: THE OBSERVATION ERROR FOR THAT DATUM IS READ IN AS MISSING IN THE INPUT ERROR FILE, THE DATUM ITSELF VIOLATES A GROSS OR "SANITY" CHECK, OR THE OBSERVED PRESSURE DATUM IS MORE THAN 100 MB BELOW THE GUESS SURFACE PRESSURE. THE "VIRTMP" EVENT CAN CHANGE THE SPECIFIC HUMIDITY OBSERVATION (RE-CALCULATED) AS WELL AS THE TEMPERATURE OBSERVATION (FROM SENSIBLE TO VIRTUAL TEMPERATURE, BASED ON JUST-CALCULATED SPECIFIC HUMIDITY). CURRENTLY THIS APPLIES ONLY TO SURFACE (LAND, MARINE AND MESONET) DATA TYPES, POSSIBLY TO RAOB, DROP AND MULTI-LEVEL RECCO DATA TYPES IF THE SWITCH "ADPUPA_VIRT" IS TRUE (NORMALLY, HOWEVER IT IS FALSE) [OTHER DATA TYPES WITH REPORTED SENSIBLE TEMPERATURE EITHER HAVE MISSING MOISTURE (E.G., ALL AIRCRAFT TYPES EXCEPT FOR SOME ACARS, SATELLITE WIND TYPES), FLAGGED MOISTURE (E.G., SOME ACARS) OR CALCULATE SPECIFIC HUMIDITY/VIRTUAL TEMPERATURE IN SUBSEQUENT PROGRAMS (E.G., RAOBS, DROPS AND MULTI-LEVEL RECCOS WHICH CALCULATE THESE IN PROGRAM "CQCBUFR", IN WHICH CASE THE SWITCH "ADPUPA_VIRT" HERE MUST BE FALSE!)]. FOR CASES WHERE THE SWITCH "DOBERR" IS FALSE, THE OBSERVATION ERROR FOR ALL DATA REMAINS MISSING IN THE PREPBUFR FILE. IN THIS CASE, THE INPUT ERROR FILE IS USUALLY A NULL FILE AND THE "PREVENT" EVENT TO FLAG THE DATUM IS NOT INVOKED. FOR CASES WHERE THE SWITCH "DOFCST" IS FALSE, IF THE SWITCH "SOME_FCST" IS ALSO FALSE, THEN FORECAST VALUES ARE NOT ENCODED FOR ANY MESSAGE TYPE; IF "SOME_FCST" IS TRUE THEN FORECAST VALUES ARE ENCODED, BUT ONLY FOR REPORTS IN THOSE MESSAGE TYPES FOR WHICH A GUESS VALUE IS NEEDED BY SUBSEQUENT QC PROGRAMS. IT SHOULD BE NOTED THAT THE FILTERING OF DATA ASSOCIATED WITH THE "PREVENT" EVENT PROCESSING IS NOT INVOKED IF ALL THREE ARE TRUE: DOBERR= FALSE, THE FORECAST VALUES ARE MISSING (DOFCST=FALSE & SOME_FCST=TRUE & MESSAGE TYPE IS NOT "ADPUPA", "AIRCFT", "AIRCAR", "PROFLR", OR "VADWND" – OR – DOFCST=FALSE & SOME_FCST=FALSE), AND "VIRTMP" EVENT PROCESSING IS NOT INVOKED (EITHER MESSAGE TYPE IS NOT "ADPSFC", "SFCSHP" OR "MSONET" WHEN "ADPUPA_VIRT" IS FALSE, OR MESSAGE TYPE IS NOT "ADPSFC", "SFCSHP", "MSONET" OR "ADPUPA" WHEN "ADPUPA_VIRT" IS TRUE). ALSO, IF VIRTUAL TEMPERATURE PROCESSING IS PERFORMED, ALL SURFACE REPORTS WITH MISSING PMSL WILL ENCODE A DERIVED PMSL INTO PREPBUFR IF THE SWITCH DOPMSL IS TRUE AND A VIRTUAL TEMPERATURE WAS SUCCESSFULLY CALCULATED.

    +

    PROGRAM HISTORY LOG: -1999-07-01 D. A. KEYSER – ORIGINAL AUTHOR (ADAPTED FROM PREVENTS SUBROUTINE IN PREPDATA PROGRAM, BUT NOW GENERALIZED FOR POSTEVENTS MODE) -1999-07-12 D. A. KEYSER – MODIFIED TO INTERPOLATE MODEL SPECIFIC HUMIDITY TO OBSERVATION LOCATION WHEN OBS. SPECIFIC HUMIDITY IS MISSING AS LONG AS OBS. TEMPERATURE IS NON-MISSING -1999-09-09 D. A. KEYSER – ADDED "VADWND" TO THE LIST OF MESSAGE TYPES FOR WHICH FORECAST VALUES MUST BE ENCODED, EVEN WHEN DOFCST=FALSE (NECESSARY BECAUSE THE NEW PROGRAM CQCVAD NEEDS THE BACKGROUND DATA) -1999-09-09 D. A. KEYSER – CHANGES TO MAKE CODE MORE PORTABLE; 'TFC' NOW GENERATED FOR VADWND MESSAGE TYPES EVEN THOUGH TOB IS MISSING (NEEDED BY CQCVAD PROGRAM) -1999-12-01 D. A. KEYSER – SPEC. HUMIDITY AND VIRT. TEMPERATURE ARE NOW CALCULATED WHEN SPEC. HUMIDITY QUAL. MARKER IS BAD (SUBJECT TO A SANITY CHECK), HOWEVER THE VIRT. TEMPERATURE GETS A BAD QUAL. MARKER (8) -2000-09-21 D. A. KEYSER – THE PRESSURE LEVEL ABOVE WHICH ALL SPEC. HUMIDITY QUAL. MARKERS ARE "REJECTED" (Q.M. SET TO 9) IS NOW READ IN AS A N-LIST SWITCH (QTOP_REJ), BEFORE IT WAS HARDWIRED TO 300 MB -2000-12-13 D. A. KEYSER – WILL NO LONGER PERFORM VIRTUAL TEMPERATURE PROCESSING FOR ACARS DATA SINCE MOISTURE IS FLAGGED RIGHT NOW (ACARS MOISTURE ONLY WRITTEN INTO PREPBUFR FILE FOR STATISTICAL REASONS) -2001-02-02 D. A. KEYSER – RESTORED LEGACY LOGIC TO FLAG CERTAIN SATELLITE TEMPERATURE SOUNDINGS EITHER BELOW 100 MB (TEMP. OBS) OR ON ALL LEVELS (SPEC. HUM. OBS), CONTROLLED BY NEW NAMELIST SWITCH "SATMQC" -2001-09-27 D. A. KEYSER – 'TFC' AND 'QFC' NOW GENERATED FOR REPORT TYPE 111 (SYNDAT REPORTS AT STORM CENTER) EVEN THOUGH "TOB" AND "QOB" ARE MISSING (NEEDED BY SYNDATA PROGRAM); IN PREPARATION FOR CHANGE FROM T170L42 TO T254L64 SGES, NOW MAKES COEFFICIENT ARRAYS ALLOCATABLE TO ALLOW THEM TO OBTAIN MEMORY FROM "HEAP" RATHER THAN FROM "STACK", ALSO HAVE INCREASED THE MAX NUMBER OF LEVELS IN ARRAYS FROM 42 TO 64, FINALLY ALSO NO LONGER STOPS WITH C. CODE 70 IF EVEN NUMBER OF LONGITUDES IN SIGMA GUESS (IMAX, HARDWIRED TO 384) IS .LT. SPECTRAL RESOLUTION (JCAP) * 2 -2001-10-10 D. A. KEYSER – AT PREPBUFR CENTER DATES WITH AN HOUR THAT IS NOT A MULTIPLE OF 3 (WHEN A GLOBAL SIGMA GUESS/ANAL FILE IS NOT AVAILABLE; E.G., IN RUC2A RUNS) NOW PERFORMS A LINEAR INTERPOLATION BETWEEN SPECTRAL COEFFICIENTS IN 2 SPANNING SIGMA GUESS/ANAL FILES 3-HRS APART TO CENERATE A GUESS/ANAL FILE VALID AT THE PREPBUFR CENTER TIME -2002-05-10 D. A. KEYSER – ADDED "AIRCAR" TO THE LIST OF TABLE A MESSAGE TYPES THAT WILL STILL HAVE THE BACKGROUND ENCODED WHEN DOFCST IS FALSE (BECAUSE ACARS ARE NOW Q.C.'d IN PREPOBS_ACARSQC PROGRAM) -2003-09-02 D. A. KEYSER – ADDED "MSONET" TO THE LIST OF TABLE A MESSAGE TYPES THAT WILL HAVE THE VIRTUAL TEMPERATURE CALCULATED; DOES NOT CALL UFBINT FOR OUTPUTTING DATA IF "NLEV" (4'TH ARGUMENT) IS ZERO (NOW CAN ONLY HAPPEN FOR GOESND FORECAST DATA WHEN ONLY RADIANCES ARE PRESENT) -2004-08-30 D. A. KEYSER – NOW INCLUDES THE 4 LAYER PWATERS, THESE GET AN OBS. ERROR (EACH THE SAME AS TOTAL PWATER) AND AN EVENT IS GENERATED WITH A REJECTED Q.M. FOR THE 4 LAYER PWATERS IF THE PWATER OBS. ERROR READ IN IS MISSING (THIS CHANGE ALLOWS THE ETA/ GSI TO PROCESS OBS. ERRORS IN THE PREPBUFR FILE THE SAME AS THE ETA/3DVAR DID WHEN READING THE OBS. ERRORS FROM AN EXTERNAL FILE); FOR "RASSDA" TYPES, ENCODES A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS NEW REASON CODE 3 -2004-09-10 D. T. KLEIST – ADDED CAPABILITY TO READ GUESS FIELDS FROM EITHER HYBRID OR, AS BEFORE, SIGMA GLOBAL FORECAST FILES -2005-01-03 D. A. KEYSER – FIXED ERROR READING CDAS SGES FILE WHICH STILL HAS A 207-WORD HEADER (T62) {2004-09-10 CHANGE ASSUMED ALL SGES FILES HAD A 226-WORD HEADER (T254), BUT THIS IS VALID ONLY FOR GFS SGES) -2006-05-05 R. E. TREADON – CHANGE VERTICAL INTERPOLATION TO DIRECTLY USE PRESSURE PROFILE, NOT PRESSURE PROFILE CONVERTED TO SIGMA.
    +
    + THIS CHANGE IS IN SUBROUTINE GBLEVN03. AS A RESULT OF THIS CHANGE, SUBROUTINE GBLEVN07 WAS REMOVED. -2006-07-14 D. A. KEYSER – ADDED NEW NAMELIST SWITCH "SOME_FCST" WHICH APPLIES ONLY WHEN EXISTING SWITCH "DOFCST" IS FALSE: IF DOFCST=F AND SOME_FCST=T THEN, JUST AS BEFORE WHEN DOFCST=F, A FORECAST WILL STILL BE ENCODED FOR REPORTS IN CERTAIN MESSAGE TYPES USED IN SUBSEQUENT Q.C. PROGRAMS (I.E, "ADPUPA", "AIRCFT", "AIRCAR", "PROFLR" OR "VADWND") (THE DEFAULT FOR SOME_FCST IS TRUE); HOWEVER IF DOFCST=F AND SOME_FCST=F THEN A FORECAST WILL NOT BE ENCODED INTO REPORTS IN ANY MESSAGE TYPE (THIS ALLOWS THIS PROGRAM TO ENCODE OBS ERRORS AND/OR VIRTUAL TEMPERATURE EVENTS INTO A PREPBUFR FILE WITHOUT ENCODING A FORECAST); ADDED NEW NAMELIST SWITCH "ADPUPA_VIRT" WHICH, WHEN TRUE, INCLUDES REPORTS IN MESSAGE TYPE ADPUPA (I.E., RAOBS, DROPS, MULTI-LEVEL RECCOS) IN THE "VIRTMP" PROCESSING (PROCESSING THEM WITH SAME LOGIC AS IN SUBROUTINE VTPEVN OF PROGRAM PREPOBS_CQCBUFR) {NORMALLY "ADPUPA_VIRT" IS FALSE (DEFAULT) BECAUSE SUBSEQUENT PROGRAM PREPOBS_CQCBUFR PERFORMS THIS FUNCTION} -2007-09-14 S. MOORTHI – ADDED CAPABILITY TO READ GENERALIZED SIGMA/ HYBRID FILES FROM THE GFS USING "SIGIO" UTILITY; ALSO, CLEANED UP SOME CODE; NEW ERROR CONDITION CODES 70 AND 71 ADDED -2007-09-14 D. A. KEYSER – FUNCTION OEFG01, WHICH RETURNS THE OBS ERROR FOR A REQUESTED VARIABLE INTERP. TO A DEFINED PRESSURE LEVEL FOR A DEFINED REPORT TYPE, MODIFIED TO USE EXACT LOGIC AS IN GSI (MINIMUM LIMITING VALUE FOR OBS ERROR BASED ON VARIABLE TYPE, LEVEL PRESSURE LIMITED TO MAX OF 2000 MB AND MIN OF ZERO MB, A FEW OTHER MINOR CHANGES) - THIS WILL ALLOW GSI TO READ OBS ERROR DIRECTLY OUT OF PREPBUFR FILE RATHER THAN OUT OF AN EXTERNAL FILE; FOR PW TYPES, NOW PASSES REPORTED SURFACE PRESSURE (PRSS * 0.01) INTO FUNCTION OEFG01 RATHER THAN VERTICAL COORDINATE PRESSURE (POB), SINCE LATTER IS ALWAYS MISSING FOR THESE TYPES (DOESN'T CHANGE VALUE COMING OUT OF OEFG01 SINCE IT IS CONSTANT ON ALL LEVELS ANYWAY FOR PW); IN SUBR. GBLEVN02, Q.M. 9 IS NOW ASSIGNED TO A VARIABLE ONLY IF ITS OBS ERROR IS MISSING, OR IN THE CASE OF MOISTURE IF THE LEVEL IS ABOVE PRESSURE LEVEL "QTOP_REJ" OR IF ITS TEMPERATURE OBS ERROR IS MISSING, ALL OTHER EVENT (E.G., GROSS CHECK ERRORS) ASSIGN Q.M. 8 (EVEN IF OBS ERROR IS MISSING), PRIOR TO THIS ONLY REJECTION OF PRESSURE ON LEVEL RESULTED IN Q.M. 8, ALL OTHER REJECTIONS GOT Q.M. 9 - THIS MEANS TRULY "BAD" OBS WILL NOW ALWAYS GET Q.M. 8 AND ONLY OBS FLAGGED FOR NON-USE BY ASSIMILATION (BUT STILL "GOOD") WILL NOW GET Q.M. 9 (GSI MONITORS, BUT DOES NOT USE, OBS WITH Q.M. 9, BUT IT DOES NOT EVEN CONSIDER OBS WITH Q.M. 8); CORRECTED ERROR WHICH MISTAKENLY ASSIGNED REASON CODE OF 9 INSTEAD OF 3 TO MOISTURE WITH MISSING OBS ERROR; IN SUBR. GBLEVN02, Q.M. 9 WILL NOT BE ASSIGNED TO A VARIABLE IF THAT VARIABLE ALREADY HAS A "BAD" Q.M. (I.E., > 3 BUT < 15), IN FACT THE "PREVENT" EVENT WHICH WOULD ASSIGN Q.M. 9 IS SKIPPED ENTIRELY (DO NOT WANT THE GSI TO MONITOR THE OBS WHICH REALLY ARE ARE "BAD"); IN SUBR. GBLEVN08, FOR NON- "ADPUPA" TYPES, Q.M. 9 IS NOW ASSIGNED TO CALCULATED VIRT. TEMPS IF THE MOISTURE Q.M. IS 9 OR 15 AND ORIG. TEMP NOT "BAD", THESE "VIRTMP" EVENTS RECEIVE NEW REASON CODE 4, HAD RECEIVED Q.M. 8 WITH REASON CODE 2 LIKE VIRT. TEMPS CALCULATED FROM "BAD" MOISTURE - THIS MEANS ONLY TRULY "BAD" VIRT. TEMPS WILL NOW GET Q.M. 8 AND VIRT. TEMPS FLAGGED FOR NON-USE BY ASSIMILATION (BUT STILL "GOOD") WILL NOW GET Q.M. 9 (GSI MONITORS, BUT DOES NOT USE, OBS WITH Q.M. 9, BUT IT DOES NOT EVEN CONSIDER OBS WITH Q.M. 8); IN SUBR. GBLEVN08, FOR "ADPUPA" TYPES, Q.M. 3 IS NOW ASSIGNED TO CALCULATED VIRT. TEMPS ONLY IF THE MOISTURE Q.M. IS TRULY BAD (I.E. > 3 BUT NOT 9 OR 15) (AND, AS BEFORE, ORIG. TQM IS 1 OR 2 AND POB IS BELOW 700 MB) - BEFORE, TQM SET TO 3 WHEN QQM WAS 9 OR 15 AND ALL OTHER CONDITIONS MET; FOR "SATEMP" TYPES, ENCODES A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS REASON CODE 3 (SIMILAR TO WHAT IS ALREADY DONE FOR "RASSDA" TYPES) -2010-01-29 D. A. KEYSER – ADDED NEW NAMELIST SWITCH "RECALC_Q" WHICH APPLIES ONLY WHEN EXISTING SWITCH "DOVTMP" IS FALSE: IF DOVTMP=F AND RECALC_Q=T THEN, JUST AS BEFORE WHEN DOVTMP=F, SPEC. HUMIDITY IS STILL RE-CALCULATED AND THE EVENT IS ENCODED INTO THE PREPBUFR FILE (BUT VIRTUAL TEMP. IS NOT ENCODED) (THE DEFAULT FOR RECALC_Q IS TRUE), HOWEVER IF DOVTMP=F AND RECALC_Q=F THEN SPEC. HUMIDITY IS NOT RE-CALCULATED (AND NEITHER IS VIRTUAL TEMPERATURE) (THIS ALLOWS THIS PROGRAM TO BYPASS ALL "VIRTMP" EVENT PROCESSING); ADDED NEW NAMELIST SWITCH "DOPREV" WHICH, WHEN TRUE, WRITES "PREVENT" EVENTS INTO THE PREPBUFR FILE (IT ALWAYS DID THIS BEFORE) (DEFAULT), BUT NOW ALLOWS THE PROGRAM TO BYPASS "PREVENT" EVENT PROCESSING WHEN DOPREV=F; INITIALIZED ARRAY IDATE AS ZERO IN SUBR. GBLEVN10, CORRECTED BUG WHICH EXPOSED PREVIOUSLY HIDDEN MEMORY CLOBBERING WHEN CALLING PROGRAMS WERE LINKED TO NEW BUFRLIB; RULES IN SUBROUTINE GBLEVN02 REFINED TO INCLUDE FULL SFC PRESSURE SANITY CHECK FOR ALL SFC REPORTS (MASS, 18x, & WIND, 28x), BEFORE ONLY DONE FOR SFC MASS REPORTS (18x) AND STILL NOT DONE FOR NON-SFC WIND REPORTS SINCE LOWEST LEVEL PRESSURE NOT NECESSARILY AT THE SFC), AS A RESULT 28x WINDS WILL NOW GET QM=8 IF PRESSURE FAILS SANITY CHECK (OFTEN HAPPENS IN MESONET REPORTS) (GSI WAS ALREADY NOT USING THESE WINDS SINCE PRESSURE QM SET TO 8 ALL ALONG) -2012-11-20 J. WOOLLEN INITIAL PORT TO WCOSS. ADDED CALL TO BUFRLIB ROUTINE GETBMISS TO ADAPT BMISS TO LINUX ENVIRONMENT IF NEED BE {I.E., OBTAINS BUFRLIB MISSING (BMISS) VIA CALL TO GETBMISS RATHER THAN HARDWIRING IT TO 10E10 (10E10 CAN CAUSE INTEGER OVERFLOW ON WCOSS - SEE CALLING PROGRAM FOR MORE INFO)} -2013-02-13 D. A. KEYSER – FINAL CHANGES TO RUN ON WCOSS: USE FORMATTED PRINT STATEMENTS WHERE PREVIOUSLY UNFORMATTED PRINT WAS > 80 CHARACTERS; RENAME ALL REAL(8) VARIABLES AS *_8 -2013-04-12 D. A. KEYSER – IN SUBROUTINE GBLEVN08, DON'T ALLOW CALCULATED Q TO BE < 0 WHICH CAN OCCUR ON WCOSS FOR CASES OF HORRIBLY BAD MESONET DATA -2014-03-25 S. MELCHIOR – ADDED NEW NAMELIST SWITCH "DOPMSL" WHICH, WHEN TRUE, DERIVES PMSL (MNEMONIC "PMO") FROM REPORTED STATION PRESSURE ("POB"), STATION HEIGHT/ELEVATION ("ZOB") AND THE JUST- COMPUTED VIRTUAL TEMPERATURE FOR SURFACE REPORTS IN CASES WHEN REPORTED PMSL IS MISSING (DONE IN SUBROUTINE GBLEVN08). DOVTMP MUST BE TRUE AND DOANLS MUST BE FALSE ("PREVENTS" MODE). THE DERIVED PMSL EITHER GETS A QUALITY MARK ("PMQ") OF 3 OR INHERITS THE STATION PRESSURE QUALITY MARK ("PQM"), WHICHEVER IS GREATER. THE VALUE OF THE PMSL INDICATOR (NEW MNEMONIC "PMIN") IS SET TO 1 TO DENOTE PMSL WAS DERIVED RATHER THAN OBSERVED. THE DEFAULT FOR "DOPMSL" IS FALSE (NORMALLY ONLY TRUE IN RTMA AND URMA RUNS). IT IS FORCED TO BE FALSE IN "POSTEVENTS" MODE (DOANLS=TRUE). IN SUBROUTINE GBLEVN02, SFCSHP REPORTS WITH CALM WINDS AND NON- MISSING BACKGROUND U- OR V-COMPONENT WIND .GE. 5 M/SEC ARE FLAGGED WITH Q.M. 8 (EVENT PGM "PREVENT", REASON CODE 8). -2014-05-08 JWhiting – altered print statement (2 format) in GBLEVN10 subroutine; increased field width for spectral resolution to accommodate models w/ up to 5-digit resolution (I3 to I5). -2016-06-13 FANGLIN YANG AND RUSS TREADON – HANG LEI ADDED NEMSIO TO SUBROUTINE GBLEVN10 AND REMOVED ALL SIGIO CAPABILITY. THIS UPDATE RESTORES GBLEVN10 FOR PROCESSING SIGIO INPUT, AND ADDS A NEW GBLEVN12 FOR PROCESSING NEMSIO INPUT. THE INPUT GFS FILE TYPE SIGIO VS NEMSIO IS NOW DETERMINED IN THE MAIN PROGRAM. THE CODE IS ALSO UPDATED TO REMOVE BUGS. SUBROUTINE SIGIO_MODPR IS USED TO COMPUTE LAYER AND INTERFACE PRESSURE FOR NEMSIO INPUT. -2017-02-17 D Keyser & J Whiting – In subroutine GBLEVN12, removed references to multiple input files, since only 1 nemsio formatted input is needed (no interpolation is attempted; c.f.; what is done with sigio formatted inputs); GBLEVN12 routine still retains input. Updated comments and docblock to account for new NEMSIO input. -2017-02-22 D. Keyser – Further changes to subr. GBLEVN12 to remove array and logic references to multiple input files. -2019-10-31 Hang Lei – Add GBLEVN13 to process netcdf input.

    +

    USAGE: CALL GBLEVENTS(IDATEP,IUNITF,IUNITE,IUNITP,IUNITS,SUBSET, $ NEWTYP)

    +

    INPUT ARGUMENT LIST:

    Parameters
    + + + + + + + + +
    IDATEP- CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    IUNITF- 2-WORD ARRAY: For SIGIO input:
      +
    • WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    • +
    • WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER THE DATE IN IDATEP THAT IS A MULTIPLE OF 3 For NEMSIO input:
    • +
    • WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT THE DATE IN IDATEP
    • +
    • WORD 2 - NOT USED, SHOULD BE A NULL FILE
    • +
    +
    IUNITE- UNIT NUMBER OF INPUT OBSERVATION ERROR FILE
      +
    • (USED ONLY IN PREVENTS MODE)
    • +
    +
    IUNITP- UNIT NUMBER OF OUTPUT PREPBUFR DATA SET
    IUNITS- UNIT NUMBER OF "PREVENT" EVENTS DATA FILTERING
      +
    • SUMMARY PRINT FILE
    • +
    • (USED ONLY IN PREVENTS MODE)
    • +
    +
    SUBSET- THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
      +
    • REPORT BEING PROCESSED
    • +
    +
    NEWTYP- INDICATOR IF THE BUFR MESSAGE TABLE A ENTRY HAS
      +
    • CHANGED FROM THAT OF THE PREVIOUS REPORT (=0 - NO,
    • +
    • =1 - YES)
    • +
    +
    +
    +
    +

    INPUT FILES:

      +
    • UNIT 05 - STANDARD INPUT (DATA CARDS - SEE NAMELIST DOCUMENTATION BELOW) (NOTE: IF STANDARD INPUT FILE IS NULL, THEN THIS SUBROUTINE RUNS IN POSTEVENTS MODE)
    • +
    • UNIT AA - PREPBUFR DATA SET (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN INPUT ARGUMENT LIST)
    • +
    • UNIT BB - GUESS (PREVENTS MODE) OR ANALYSIS (POSTEVENTS MODE) FILE (WHERE BB IS UNIT NUMBER DEFINED AS IUNITF(1) IN INPUT ARGUMENT LIST)
    • +
    • UNIT CC - GUESS (PREVENTS MODE) OR ANALYSIS (POSTEVENTS MODE) FILE (WHERE CC IS UNIT NUMBER DEFINED AS IUNITF(2) IN INPUT ARGUMENT LIST) NOTE: only valid for SIGIO input
    • +
    • UNIT DD - OBSERVATION ERROR FILE (WHERE DD IS UNIT NUMBER DEFINED AS IUNITE IN INPUT ARGUMENT LIST) (USED ONLY IN PREVENTS MODE)
    • +
    +

    OUTPUT FILES:

      +
    • UNIT 06 - STANDARD OUTPUT PRINT
    • +
    • UNIT AA - PREPBUFR DATA SET (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN INPUT ARGUMENT LIST)
    • +
    • UNIT DD - "PREVENT" EVENTS DATA FILTERING SUMMARY PRINT FILE (WHERE DD IS UNIT NUMBER DEFINED AS IUNITS IN INPUT ARGUMENT LIST) (USED ONLY IN PREVENTS MODE)
    • +
    +

    SUBPROGRAMS CALLED: UNIQUE: GBLEVN02 GBLEVN03 GBLEVN04 GBLEVN06 OEFG01 GBLEVN08 GBLEVN10 GBLEVN11 GBLEVN11D GBLEVN12 GBLEVN13 GETLATS MODULES: GBLEVN_MODULE SIGIO_MODULE SIGIO_R_MODULE NEMSIO_MODULE NEMSIO_OPENCLOSE NEMSIO_READ NEMSIO_WRITE LIBRARY: SIGIO - SIGIO_RROPEN SIGIO_RRHEAD SIGIO_SCLOSE SIGIO_ALDATS SIGIO_ALDATM SIGIO_RRDATS SIGIO_RRDATM SIGIO_AXDATS SIGIO_AXDATM SIGIO_MODPR SIGIO_CNVTDV SPLIB - SPTEZM SPTEZMV SPLAT W3NCO - W3MOVDAT ERREXIT BUFRLIB - UFBINT UFBQCD GETBMISS IBFMS NEMSIO - NEMSIO_OPEN NEMSIO_CLOSE NEMSIO_INIT NEMSIO_GETFILEHEAD NEMSIO_READRECV NEMSIO_FINALIZE NEMSIO_GETHEADVAR NEMSIO_READRECVw34

    +

    EXIT STATES:

      +
    • COND = 0 - SUCCESSFUL RUN
    • +
    • COND = 60 - OBSERVATION ERROR TABLE EMPTY OR DOES NOT EXIST
    • +
    • COND = 61 - VARIABLE NLTD .NE. VARIABLE NLEV
    • +
    • COND = 62 - VARIABLE NLTQ .NE. VARIABLE NLEV
    • +
    • COND = 63 - VARIABLE NLQQ .NE. VARIABLE NLEV
    • +
    • COND = 68 - DATE OF FIRST GUESS/ANALYSIS FILE(S) DOES NOT MATCH, OR AT LEAST SPAN, THE CENTER DATE FOR THE PREPBUFR FILE
    • +
    • COND = 69 - FOR SIGIO INPUT GLOBAL FILES, VARIABLE KMAX TOO BIG
        +
      • UNABLE TO TRANSFORM FIRST GUESS OR ANALYSIS FILE(S)
      • +
      +
    • +
    • COND = 70 - FOR SIGIO INPUT GLOBAL FILES, CALL TO SIGIO_RROPEN RETURNED WITH NON-ZERO R.C.
    • +
    • COND = 71 - FOR SIGIO INPUT GLOBAL FILES, CALL TO SIGIO_RRHEAD RETURNED WITH NON-ZERO R.C.
    • +
    +

    REMARKS: THIS SUBROUTINE MAY NOT WORK CORRECTLY IN THE EIGHT BYTE INTEGER W3NCO (_8) LIBRARY. PLEASE COMPILE APPLICATION CODE USING A FOUR BYTE REAL W3NCO LIBRARY (_4 OR _d).

    +

    THIS ROUTINE PROCESSES ONE REPORT AT A TIME. IT EXPECTS THAT THE CALLING PROGRAM HAS ALREADY ENCODED THE REPORT INTO THE PREPBUFR FILE VIA THE UFBINT OR UFBCPY ROUTINES. THE CALLING PROGRAM SHOULD THEN CALL THIS ROUTINE AND, UPON ITS RETURN, THE CALLING PROGRAM SHOULD CALL WRITSB TO ACTUALLY WRITE THE UPDATED SUBSET (REPORT) INTO THE BUFR MESSAGE. C ***** VARIABLES IN NAMELIST PREVDATA READ IN BY THIS SUBROUTINE ***** (NOTE: IF STANDARD INPUT FILE IS NULL, THEN THIS SUBROUTINE RUNS IN POSTEVENTS MODE - DOANLS=TRUE AND ALL OTHER VARIABLES ARE SET TO FALSE) C C

      +
    • DOPREV - WRITE "PREVENT" EVENT INTO THE PREPBUFR FILE? DOPREV = .TRUE. —> YES (DEFAULT) DOPREV = .FALSE. —> NO
    • +
    • DOVTMP, ADPUPA_VIRT & RECALC_Q: DOVTMP - WRITE VIRTUAL TEMPERATURE EVENT ("VIRTMP") INTO THE PREPBUFR FILE (I.E., RE-CALCULATE SPECIFIC HUMIDITY THEN CALCULATE VIRTUAL TEMPERATURE) FOR THE FOLLOWING TYPES OF REPORTS: ADPUPA_VIRT = .FALSE. —> SURFACE LAND, MARINE, MESONET AND RASS REPORTS? ADPUPA_VIRT = .TRUE. —> SURFACE LAND, MARINE, MESONET RASS, RAOB, DROP AND MULTI-LEVEL RECCO REPORTS? FOR ALL TYPES EXCEPT RASS, THIS WILL ATTEMPT TO CALCULATE VIRTUAL TEMPERATURE FROM SENSIBLE TEMPERATURE AND THE JUST RE-CALCULATED SPECIFIC HUMIDITY AND ENCODE IT AS A STACKED EVENT IN THE PREPBUFR FILE. FOR RASS REPORTS THIS WILL JUST ENCODE THE REPORTED TEMPERATURE AS A STACKED EVENT IN THE PREPBUFR FILE SINCE THE REPORTED TEMPERATURE IS ALREADY VIRTUAL (NO MOISTURE IS PRESENT SO Q IS NOT RE-CALCULATED FOR RASS REPORTS). DOVTMP = .TRUE. —> YES (DEFAULT) DOVTMP = .FALSE. RECALC_Q = .TRUE. —> RE-CALCULATE SPECIFIC HUMIDITY BUT DO NOT THEN CALCULATE VIRTUAL TEMPERATURE (DEFAULT) RECALC_Q = .FALSE. —> NO, DO NOT RE-CALCULATE SPECIFIC HUMIDITY AND DO NOT CALCULATE VIRTUAL TEMPERATURE {NOTE1: FOR SURFACE LAND, MARINE AND MESONET REPORTS, (AND RAOB, DROP AND MULTI-LEVEL RECCO REPORTS IF "ADPUPA_VIRT"=TRUE) DOVTMP=FALSE WILL STILL RE-CALCULATE SPECIFIC HUMIDITY AND ENCODE IT AS A STACKED EVENT IN THE PREPBUFR FILE UNLESS EITHER DOANLS IS TRUE OR RECALC_Q IS FALSE.) (NOTE2: DOES NOT APPLY TO ANY REPORT TYPES OTHER THAN THOSE MENTIONED ABOVE) (NOTE3: IF DOANLS=TRUE, THEN DOVTMP IS NOT ONLY FORCED TO BE FALSE, BUT ALSO SPECIFIC HUMIDITY IS NOT RE-CALCULATED.) (NOTE4: ADPUPA_VIRT DEFAULTS TO FALSE.) (NOTE5: IF DOVTMP=TRUE, THEN RECALC_Q IS MEANINGLESS.) (NOTE6: RECALC_Q DEFAULTS TO TRUE.)
    • +
    • DOFCST & SOME_FCST: DOFCST - ENCODE FORECAST (FIRST GUESS) VALUES, INTERPOLATED FROM EITHER A SIGIO (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT GLOBAL FILE, INTO THE PREPBUFR FILE FOR ALL MESSAGE TYPES OR AT LEAST SOME MESSAGE TYPES? DOFCST = .TRUE. —> YES, ENCODE FORECST FOR ALL MESSAGE TYPES (DEFAULT) DOFCST = .FALSE. SOME_FCST = .FALSE. —> NO, DO NOT ENCODE FORECAST FOR ANY MESSAGE TYPE (VALUES REMAIN MISSING) SOME_FCST = .TRUE. —> YES, BUT ONLY FOR MESSAGE TYPES "ADPUPA", "AIRCFT", "AIRCAR", "PROFLR" OR "VADWND" (VALUES REMAIN MISSING FOR ALL OTHER MESSAGE TYPES) (NOTE1: THE CASE DOFCST=FALSE & SOME_FCST=TRUE WRITES THE FORECAST VALUES FOR THE TYPES MENTIONED ABOVE BECAUSE THEY ARE NEEDED BY SUBSEQUENT QUALITY CONTROL PROGRAMS.) (NOTE2: THIS WAS ADDED AS A TIME SAVING FEATURE IN THE NON-GLOBAL VERSIONS SINCE ONLY THE GLOBAL REQUIRES A FIRST GUESS TO BE PRESENT FOR ALL CONVENTIONAL MESSAGE TYPES IN THE PREPBUFR FILE.) (NOTE3: IF DOANLS=TRUE, THEN DOFCST & SOME_FCST ARE FORCED TO BE FALSE, MEANING A GUESS WILL NOT BE ENCODED FOR ANY MESSAGE TYPE.) (NOTE4: IF DOFCST=TRUE, THEN SOME_FCST IS MEANINGLESS.) (NOTE5: SOME_FCST DEFAULTS TO TRUE.)
    • +
    • DOANLS - ENCODE ANALYZED VALUES, INTERPOLATED FROM EITHER A SIGIO (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT GLOBAL FILE, INTO THE PREPBUFR FILE - POSTEVENTS MODE - ? DOANLS = .TRUE. —> YES, FOR ALL MESSAGE TYPES DOANLS = .FALSE. —> NO, FOR ALL MESSAGE TYPES
        +
      • PREVENTS MODE - (DEFAULT) (NOTE: DOANLS=TRUE WILL OVERRIDE AND FORCE TO FALSE ALL OTHER SWITCHES. IN ADDITION, THE FORECAST VALUES WILL NOT BE ENCODED FOR ANY MESSAGE TYPE AND SPECIFIC HUMIDITY WILL NOT BE RE-CALCULATED.)
      • +
      +
    • +
    • DOBERR - ENCODE OBSERVATIONAL ERROR VALUES, AS READ FROM OBS. ERROR FILE, INTO THE PREPBUFR FILE? DOBERR = .TRUE. —> YES (DEFAULT) DOBERR = .FALSE. —> NO (VALUES REMAIN MISSING) (NOTE1: THIS WAS ADDED AS A TIME SAVING FEATURE IN THE RAP -AND PREVIOUS RUC- VERSION SINCE IT DOES NOT REQUIRE OBSERVATIONAL ERRORS TO BE PRESENT IN THE PREPBUFR FILE.) (NOTE2: IF DOANLS=TRUE, THEN DOBERR IS FORCED TO BE FALSE.)
    • +
    • QTOP_REJ - THE PRESSURE LEVEL (IN MB) ABOVE WHICH ALL SPECIFIC HUMIDITY QUALITY MARKERS ARE "REJECTED" (THE QUALITY MARKER IS SET TO 9 ON ALL PRESSURE LEVELS LESS THAN THIS LEVEL) (DEFAULT=300.)
    • +
    • SATMQC - PERFORM SPECIAL QUALITY CONTROL ON SATELLITE TEMPERATURE SOUNDINGS IN REPORT TYPES 160-179? SATMQC = .TRUE. —> YES SATMQC = .FALSE. —> NO (DEFAULT) (NOTE: THIS APPLIES ONLY TO THE CDAS OR HISTORICAL RE-RUNS WITH TEMPERATURE SOUNDINGS IN THESE REPORT TYPES)
    • +
    • DOPMSL - ENCODE DERIVED PMSL ("PMO") FOR ALL SURFACE REPORTS WHEN REPORTED PMSL IS MISSING - ? DOPMSL = .TRUE. —> YES DOPMSL = .FALSE. —> NO ("PMO" REMAINS MISSING)(DEFAULT) {NOTE: THIS APPLIES ONLY WHEN DOVTMP=TRUE AND DOANLS=FALSE ("PREVENTS" MODE), VIRTUAL TEMPERATURE CAN BE CALCULATED, AND STATION PRESSURE AND SURFACE HEIGHT/ELEVATION ARE BOTH PRESENT. THE DERIVED PMSL EITHER GETS A QUALITY MARK ("PMQ") OF 3 OR INHERITS THE STATION PRESSURE QUALITY MARK ("PQM") PQM, WHICHEVER IS GREATER. THE VALUE OF THE PMSL INDICATOR ("PMIN") IS SET TO 1 TO DENOTE PMSL WAS DERIVED RATHER THAN OBSERVED.}
    • +
    + +

    Definition at line 533 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN01()

    + +
    +
    + + + + + + + + +
    subroutine GBLEVN01 ( IUNITE)
    +
    + +

    Read observation error table.

    +
    Parameters
    + + +
    IUNITE- UNIT NUMBER OF INPUT OBSERVATION ERROR FILE (USED ONLY IN PREVENTS MODE)
    +
    +
    + +

    Definition at line 901 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN02()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN02 ( IUNITP,
     IUNITS,
     NEWTYP,
    character*8 subset 
    )
    +
    + +

    Filter data.

    +
    Parameters
    + + + + + +
    IUNITP- UNIT NUMBER OF OUTPUT PREPBUFR DATA SET
    IUNITS- UNIT NUMBER OF "PREVENT" EVENTS DATA FILTERING
      +
    • SUMMARY PRINT FILE
    • +
    • (USED ONLY IN PREVENTS MODE)
    • +
    +
    SUBSET- THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
      +
    • REPORT BEING PROCESSED
    • +
    +
    NEWTYP- INDICATOR IF THE BUFR MESSAGE TABLE A ENTRY HAS
      +
    • CHANGED FROM THAT OF THE PREVIOUS REPORT (=0 - NO,
    • +
    • =1 - YES)
    • +
    +
    +
    +
    + +

    Definition at line 943 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN03()

    + +
    +
    + + + + + + + + +
    subroutine GBLEVN03 (character*8 SUBSET)
    +
    + +

    GBLEVN03 - INTERPOLATE MODEL DATA (FIRST GUESS OR ANALYSIS) TO OB LOCATIONS.

    +
    Parameters
    + + +
    SUBSET- THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR REPORT BEING PROCESSED
    +
    +
    + +

    Definition at line 1661 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN04()

    + +
    +
    + + + + + + + +
    subroutine GBLEVN04 ()
    +
    + +

    Get observation error.

    + +

    Definition at line 1838 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN06()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN06 ( XOB,
     YOB 
    )
    +
    + +

    SUBROUTINE GBLEVN06 - 2D LINEAR HORIZONTAL INTERPOLATION.

    + +

    Definition at line 1891 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN08()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN08 ( IUNITP,
    character*8 SUBSET 
    )
    +
    + +

    SUBPROGRAM: GBLEVN08 PRGMMR: S.

    +

    MELCHIOR ORG: NP22 DATE: 2014-03-25

    +

    ABSTRACT: CREATE VIRTUAL TEMPERATURE EVENTS WITHIN GBLEVENTS SUBROUTINE. FOR ALL TYPES EXCEPT RASS, THIS CONSISTS OF FIRST RE- CALCULATING THE SPECIFIC HUMIDITY FROM THE REPORTED DEWPOINT TEMPERATURE AND PRESSURE, FOLLOWED BY THE CALCULATION OF VIRTUAL TEMPERATURE FROM THE JUST-CALCULATED SPECIFIC HUMIDITY AND THE REPORTED (SENSIBLE) TEMPERATURE. THE RE-CALCULATED SPECIFIC HUMIDITY IS THEN ENCODED AS A STACKED EVENT TO BE LATER WRITTEN INTO THE PREPBUFR FILE (UNDER PROGRAM "VIRTMP", REASON CODE 0). IF THE NAMELIST SWITCH DOVTMP IS TRUE, THEN THE JUST-CALCULATED VIRTUAL TEMPERATURE IS THEN ALSO ENCODED AS A STACKED EVENT TO BE LATER WRITTEN INTO THE PREPBUFR FILE (UNDER PROGRAM "VIRTMP", REASON CODE 0, 2 OR 6). FOR RASS DATA, SPECIFIC HUMIDITY IS MISSING HOWEVER IF THE NAMELIST SWITCH DOVTMP IS TRUE, A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE IS ENCODED AS A STACKED EVENT TO BE LATER WRITTEN INTO THE PREPBUFR FILE (UNDER PROGRAM "VIRTMP", REASON CODE 3). FOR SURFACE DATA WITH A MISSING PMSL, IF DOVTMP=T AND DOPMSL=T AND A VIRTUAL TEMPERATURE HAS BEEN COMPUTED, CALCULATE AN ESTIMATED PMSL AND ENCODE IT INTO PREPBUFR FILE ALONG WITH AN INDICATOR THAT IS WAS DERIVED HERE. THIS SUBROUTINE IS CURRENTLY ONLY CALLED FOR SURFACE LAND ("ADPSFC"), MARINE ("SFCSHP"), MESONET ("MSONET"), RASS ("RASSDA") OR SATELLITE TEMPERATURE RETRIEVAL ("SATEMP") DATA TYPES WHEN SWITCH "ADPUPA_VIRT" IS FALSE AND ONLY FOR SURFACE LAND ("ADPSFC"), MARINE ("SFCSHP"), MESONET ("MSONET"), RASS ("RASSDA"), SATELLITE TEMPERATURE RETRIEVAL ("SATEMP") OR RAOB/DROP/MULTI-LVL RECCO ("ADPUPA") DATA TYPES WHEN SWITCH "ADPUPA_VIRT" IS TRUE. IT IS ALSO ONLY CALLED IN THE PREVENTS MODE. THIS ROUTINE IS CALLED ONCE FOR EACH VALID REPORT IN THE PREPBUFR FILE.

    +

    PROGRAM HISTORY LOG: 1995-05-17 J. WOOLLEN (NP20) - ORIGINAL AUTHOR 1997-06-01 D.A. KEYSER - STREAMLINED, ADDED SWITCH DOVTMP 1999-12-01 D. A. KEYSER – SPEC. HUMIDITY AND VIRT. TEMPERATURE ARE NOW CALCULATED WHEN SPEC. HUMIDITY QUAL. MARKER IS BAD (SUBJECT TO A SANITY CHECK), HOWEVER THE VIRT. TEMPERATURE GETS A BAD QUAL. MARKER (8) 2004-08-30 D. A. KEYSER – FOR "RASSDA" TYPES, ENCODES A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS NEW REASON CODE 3 2006-07-14 D. A. KEYSER – PROCESSES REPORTS IN MESSAGE TYPE ADPUPA (I.E., RAOBS, DROPS, MULTI-LEVEL RECCOS) WITH SAME LOGIC AS IN SUBROUTINE VTPEVN OF PROGRAM PREPOBS_CQCBUFR WHEN NEW NAMELIST SWITCH "ADPUPA_VIRT" IS TRUE {NORMALLY "ADPUPA_VIRT" IS FALSE (DEFAULT) BECAUSE SUBSEQUENT PROGRAM PREPOBS_CQCBUFR PERFORMS THIS FUNCTION} 2007-09-14 D. A. KEYSER – FOR NON-"ADPUPA" TYPES, Q.M. 9 IS NOW ASSIGNED TO CALCULATED VIRT. TEMPS IF THE MOISTURE Q.M. IS 9 OR 15 AND ORIG. TEMP NOT "BAD", THESE "VIRTMP" EVENTS RECEIVE NEW REASON CODE 4, HAD RECEIVED Q.M. 8 WITH REASON CODE 2 LIKE VIRT. TEMPS CALCULATED FROM "BAD" MOISTURE - THIS MEANS ONLY TRULY "BAD" VIRT. TEMPS WILL NOW GET Q.M. 8 AND VIRT. TEMPS FLAGGED FOR NON-USE BY ASSIMILATION (BUT STILL "GOOD") WILL NOW GET Q.M. 9 (GSI MONITORS, BUT DOES NOT USE, OBS WITH Q.M. 9, BUT IT DOES NOT EVEN CONSIDER OBS WITH Q.M. 8); FOR "ADPUPA" TYPES, Q.M. 3 IS NOW ASSIGNED TO CALCULATED VIRT. TEMPS ONLY IF THE MOISTURE Q.M. IS TRULY BAD (I.E. > 3 BUT NOT 9 OR 15) (AND, AS BEFORE, ORIG. TQM IS 1 OR 2 AND POB IS BELOW 700 MB) - BEFORE, TQM SET TO 3 WHEN QQM WAS 9 OR 15 AND ALL OTHER CONDITIONS MET; FOR "SATEMP" TYPES, ENCODES A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS REASON CODE 3 (SIMILAR TO WHAT IS ALREADY DONE FOR "RASSDA" TYPES) 2013-04-12 D. A. KEYSER – DON'T ALLOW CALCULATED Q TO BE < 0 WHICH CAN OCCUR ON WCOSS FOR CASES OF HORRIBLY BAD MESONET DATA 2014-03-25 S. MELCHIOR – ADDED NEW NAMELIST SWITCH "DOPMSL" WHICH, WHEN TRUE, DERIVES PMSL (MNEMONIC "PMO") FROM REPORTED STATION PRESSURE ("POB"), STATION HEIGHT/ELEVATION ("ZOB") AND THE JUST- COMPUTED VIRTUAL TEMPERATURE FOR SURFACE REPORTS IN CASES WHEN REPORTED PMSL IS MISSING. DOVTMP MUST BE TRUE AND DOANLS MUST BE FALSE ("PREVENTS" MODE). THE DERIVED PMSL EITHER GETS A QUALITY MARK ("PMQ") OF 3 OR INHERITS THE STATION PRESSURE QUALITY MARK ("PQM"), WHICHEVER IS GREATER. THE VALUE OF THE PMSL INDICATOR (NEW MNEMONIC "PMIN") IS SET TO 1 TO DENOTE PMSL WAS DERIVED RATHER THAN OBSERVED. THE DEFAULT FOR "DOPMSL" IS FALSE (NORMALLY ONLY TRUE IN RTMA AND URMA RUNS). IT IS FORCED TO BE FALSE IN "POSTEVENTS" MODE (DOANLS=TRUE).

    +

    USAGE: CALL GBLEVN08(IUNITP) INPUT ARGUMENT LIST:

    Parameters
    + + + +
    IUNITP- BUFR OUTPUT FILE UNIT
    SUBSET- THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
      +
    • REPORT BEING PROCESSED
    • +
    +
    +
    +
    +

    REMARKS: WILL IMMEDIATELY RETURN TO CALLING PROGRAM IF ANY OF THE FOLLOWING CONDITIONS EXIST: THERE ARE NO LEVELS OF VALID DEWPOINT, OBS, TEMPERATURE Q.M. OR SPEC. HUMIDITY Q.M. IN THE INPUT PREPBUFR FILE FOR THE REPORT. WILL NOT ATTEMPT EITHER SPEC. HUMIDITY NOR VIRT. TEMP CALC. ON A GIVEN LEVEL IF ANY OF THE FOLLOWING CONDITIONS EXIST: REPORTED PRESSURE OBS IS MISSING, REPORTED (SENSIBLE) TEMPERATURE OBS IS MISSING, OR REPORTED DEWPOINT OBS IS MISSING.

    +

    ATTRIBUTES: LANGUAGE: FORTRAN 90 MACHINE: NCEP WCOSS

    + +

    Definition at line 2208 of file gblevents.f.

    + +
    +
    + +

    ◆ GBLEVN10()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN10 (integer, dimension(2) IUNITF,
    integer IDATEP,
    integer IM,
    integer JM,
    integer IDRT 
    )
    +
    + +

    Do something.

    +
    Parameters
    + + + + + + +
    IUNITF- 2-WORD ARRAY: For SIGIO input:
      +
    • WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    • +
    • WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER THE DATE IN IDATEP THAT IS A MULTIPLE OF 3 For NEMSIO input:
    • +
    • WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT THE DATE IN IDATEP
    • +
    • WORD 2 - NOT USED, SHOULD BE A NULL FILE
    • +
    +
    IDATEP- CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    im
    jm
    IDRTINTEGER GRID IDENTIFIER (IDRT=4 FOR GAUSSIAN GRID, IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    +
    +
    + +

    Definition at line 2480 of file gblevents.f.

    + +

    References gblevn11().

    + +
    +
    + +

    ◆ gblevn11()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gblevn11 (integer imax,
    integer jmax,
    real, dimension(imax,jmax) grid 
    )
    +
    + +

    North-south swap.

    + +

    Definition at line 2929 of file gblevents.f.

    + +

    Referenced by GBLEVN10().

    + +
    +
    + +

    ◆ gblevn11d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gblevn11d (integer imax,
    integer jmax,
    real(kind=8), dimension(imax,jmax) grid 
    )
    +
    + +

    Does something.

    + +

    Definition at line 2949 of file gblevents.f.

    + +

    Referenced by GBLEVN12(), and GBLEVN13().

    + +
    +
    + +

    ◆ GBLEVN12()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN12 (integer, dimension(2) IUNITF,
    integer IDATEP,
    integer IM,
    integer JM,
    integer IDRT 
    )
    +
    + +

    Does something.

    +
    Parameters
    + + + + + + + + + + +
    iunitf
    idatep
    im
    jm
    IUNITF- 2-WORD ARRAY: For SIGIO input:
      +
    • WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    • +
    • WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER THE DATE IN IDATEP THAT IS A MULTIPLE OF 3 For NEMSIO input:
    • +
    • WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT THE DATE IN IDATEP
    • +
    • WORD 2 - NOT USED, SHOULD BE A NULL FILE
    • +
    +
    IDATEP- CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    +
    im
    jm
    IDRTINTEGER GRID IDENTIFIER (IDRT=4 FOR GAUSSIAN GRID, IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    +
    +
    + +

    Definition at line 2999 of file gblevents.f.

    + +

    References gblevn11d(), and getlats().

    + +
    +
    + +

    ◆ GBLEVN13()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine GBLEVN13 (integer, dimension(2) IUNITF,
    integer IDATEP,
    integer IMX,
    integer JMX,
    integer IDRT 
    )
    +
    + +

    NetCDF Input.

    +
    Parameters
    + + + + + + +
    IUNITF- 2-WORD ARRAY: For SIGIO input:
      +
    • WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    • +
    • WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER THE DATE IN IDATEP THAT IS A MULTIPLE OF 3 For NEMSIO input:
    • +
    • WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT THE DATE IN IDATEP
    • +
    • WORD 2 - NOT USED, SHOULD BE A NULL FILE
    • +
    +
    IDATEP- CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    +
    IMX
    JMX
    IDRTINTEGER GRID IDENTIFIER (IDRT=4 FOR GAUSSIAN GRID, IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    +
    +
    + +

    Definition at line 3415 of file gblevents.f.

    + +

    References gblevn11d(), and getlats().

    + +
    +
    + +

    ◆ getlats()

    + +
    +
    + + + + + + + + +
    subroutine getlats ( idrt)
    +
    + +

    get latitudes

    +
    Parameters
    + + +
    IDRTINTEGER GRID IDENTIFIER (IDRT=4 FOR GAUSSIAN GRID, IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES, IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    +
    +
    + +

    Definition at line 3753 of file gblevents.f.

    + +

    Referenced by GBLEVN12(), and GBLEVN13().

    + +
    +
    + +

    ◆ OEFG01()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    function OEFG01 ( P,
     TYP,
     IE,
     OEMIN 
    )
    +
    + +

    SUBPROGRAM: OEFG01 PRGMMR: D.

    +

    A. KEYSER ORG: NP22 DATE: 2007-09-14

    +

    ABSTRACT: FUNCTION WHICH RETURNS THE OBSERVATION ERROR FOR A REQUESTED VARIABLE INTERPOLATED TO A DEFINED PRESSURE LEVEL FOR A DEFINED REPORT TYPE. IT IS OBTAINED FROM AN INPUT ARRAY CONTAINING OBSERVATION ERRORS ON FIXED PRESSURE LEVELS BY VARIABLE AND REPORT TYPE (READ EARLIER FROM THE EXTERNAL OBSERVATION ERROR TABLE)

    +

    PROGRAM HISTORY LOG: 1995-05-17 J. WOOLLEN (NP20) - ORIGINAL AUTHOR (FUNCTION OEF) 2007-09-14 D. A. KEYSER – MODIFIED TO USE EXACT LOGIC AS IN GSI (MINIMUM LIMITING VALUE FOR OBS ERROR BASED ON VARIABLE TYPE, LEVEL PRESSURE LIMITED TO MAX OF 2000 MB AND MIN OF ZERO MB, A FEW OTHER MINOR CHANGES)

    +

    USAGE: XX = OEFG01(P,TYP,IE,OEMIN) INPUT ARGUMENT LIST:

    Parameters
    + + + + + +
    P- REAL PRESSURE LEVEL (MB) TO INTERPOLATE OBS ERROR TO
    TYP- REAL PREPBUFR REPORT TYPE
    IE- VARIABLE TYPE BEING INTERPOLATED (=2 - TEMPERATURE,
      +
    • =3 - MOISTURE, =4 - WIND, =5 - SURFACE PRESSURE, =6 -
    • +
    • PRECIPITABLE WATER)
    • +
    • (USED ONLY IN PREVENTS MODE)
    • +
    +
    OEMIN- REAL MINIMUM VALUE FOR OBS ERROR (FOR VARIABLE BEING
      +
    • INTERPOLATED)
    • +
    +
    +
    +
    +
    Returns
    OEFG01 OBSERVATION ERROR
    +

    REMARKS: 'OEFG01' RETURNED IS OBSERVATION ERROR FOR VARIABLE "IE" IN REPORT TYPE "TYP", INTERPOLATED TO PRESSURE LEVEL "P".

    +

    ATTRIBUTES: LANGUAGE: FORTRAN 90 MACHINE: NCEP WCOSS

    + +

    Definition at line 2061 of file gblevents.f.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/gblevents_8f.js b/ver-1.11.0/gblevents/gblevents_8f.js new file mode 100644 index 000000000..bc3624e23 --- /dev/null +++ b/ver-1.11.0/gblevents/gblevents_8f.js @@ -0,0 +1,38 @@ +var gblevents_8f = +[ + [ "GBLEVENTS", "gblevents_8f.html#ab9637586a87e4e27a6fba1e513929ced", null ], + [ "GBLEVN01", "gblevents_8f.html#a6ead75e0a75fadf89d8256fc8cf553a5", null ], + [ "GBLEVN02", "gblevents_8f.html#a28ecb898a4cca4bda122f6f2812b57ad", null ], + [ "GBLEVN03", "gblevents_8f.html#aaa4d7b5d2f02d396a6f5c705451926df", null ], + [ "GBLEVN04", "gblevents_8f.html#aa25d5cfbbc589a7cbcc1e03f0f10f156", null ], + [ "GBLEVN06", "gblevents_8f.html#ac421896f9fbe651935ee0c8b4309ff9f", null ], + [ "GBLEVN08", "gblevents_8f.html#add8c26d28ca6ad6702e14d1853392ce0", null ], + [ "GBLEVN10", "gblevents_8f.html#a0398307066d7a225fd7431dfe9d0285e", null ], + [ "gblevn11", "gblevents_8f.html#ae0b8f5f53579f5e83c13cef4ec0bb212", null ], + [ "gblevn11d", "gblevents_8f.html#af5ad2f659c0bd19db15354af69beb292", null ], + [ "GBLEVN12", "gblevents_8f.html#a100fca2a4b67e17aefcbb6d8ba282a9a", null ], + [ "GBLEVN13", "gblevents_8f.html#aa3ec70ed9cc6962a6461ad460af45e5a", null ], + [ "getlats", "gblevents_8f.html#a27ce6dc72ff2abed258ec718a1bf9246", null ], + [ "OEFG01", "gblevents_8f.html#aac25bbce627a635caa0f25daf2abaef8", null ], + [ "dlat", "gblevents_8f.html#a97ed36b22d06bbd090de325ecafbd493", null ], + [ "dlon", "gblevents_8f.html#aa11f04adf117e5b90e38e5e13c89b089", null ], + [ "iar12z", "gblevents_8f.html#a9123a1e10632a50775583b0df356fc37", null ], + [ "iar13p", "gblevents_8f.html#ad82e2121eec12939376a0dfb23509dab", null ], + [ "iar14t", "gblevents_8f.html#afab4022db0a26c0307c9167c49b06015", null ], + [ "iar15u", "gblevents_8f.html#a0cce67ce0e4abae92e37a8a3bc487bfa", null ], + [ "iar16v", "gblevents_8f.html#a446acc89df9d6fee5523df819eeb432c", null ], + [ "iar17q", "gblevents_8f.html#ad270cb1e4ba3f69ed4a763497f8e13ab", null ], + [ "iarpsd", "gblevents_8f.html#a94fe02f37cadf67d7fb4e505baaeb09e", null ], + [ "iarpsi", "gblevents_8f.html#aab75fdf21fd599a55ffd3a93200b7d02", null ], + [ "iarpsl", "gblevents_8f.html#a2456b548eea2605f90c2c25b99b0dacb", null ], + [ "idsl", "gblevents_8f.html#af8d5a79e8cbe400d51f7441f8561fdb3", null ], + [ "idvc", "gblevents_8f.html#a623dfbb57e90383085ab95aa509484af", null ], + [ "imax", "gblevents_8f.html#ade9e01a4feb44c2edf7c72d4fc645474", null ], + [ "jmax", "gblevents_8f.html#aa66ff8f36acafdbb853f31986ccf4001", null ], + [ "kmax", "gblevents_8f.html#a78b1c864ff7e17f8cf6f231cb1771900", null ], + [ "kmaxs", "gblevents_8f.html#a55c53c4c62423c2f6b74a66429b7d912", null ], + [ "nvcoord", "gblevents_8f.html#a6ad66f62a9a42b0bfee84130d5977273", null ], + [ "sfcpress_id", "gblevents_8f.html#abca1632809f620ef954b8298de9ab135", null ], + [ "thermodyn_id", "gblevents_8f.html#a224f29065abf24e9d30ccc0ba82b6af0", null ], + [ "vcoord", "gblevents_8f.html#acb1ec12da452e61e2d41c740d216ee75", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/gblevents/gblevents_8f_source.html b/ver-1.11.0/gblevents/gblevents_8f_source.html new file mode 100644 index 000000000..b7990b13e --- /dev/null +++ b/ver-1.11.0/gblevents/gblevents_8f_source.html @@ -0,0 +1,108 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/gblevents.f Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    gblevents.f
    +
    +
    +Go to the documentation of this file.
    1 C> @file
    2 C> @brief Pre/Post processing of of prepbufr events
    3  MODULE gblevn_module
    4 
    5  IMPLICIT NONE
    6 
    7  SAVE
    8 
    9  INTEGER IMAX,JMAX,KMAX,KMAXS
    10  INTEGER*4 IDVC,IDSL,NVCOORD,SFCPRESS_ID,THERMODYN_ID
    11  REAL (KIND=8), ALLOCATABLE :: IAR14T(:,:,:), IAR15U(:,:,:),
    12  $ IAR16V(:,:,:), IAR17Q(:,:,:),
    13  $ IAR12Z(:,:), IAR13P(:,:),
    14  $ IARPSI(:,:,:), IARPSL(:,:,:),
    15  $ IARPSD(:,:,:)
    16  REAL (KIND=4), ALLOCATABLE :: VCOORD(:,:)
    17  REAL DLAT,DLON
    18 
    19  END MODULE gblevn_module
    20 
    21 C> SUBPROGRAM: GBLEVENTS PRE/POST PROCESSING OF PREPBUFR EVENTS
    22 C> PRGMMR: DENNIS KEYSER ORG: EMC DATE: 2017-02-22
    23 C>
    24 C> RUNS IN TWO MODES: "PREVENTS" AND "POSTEVENTS". IN THE
    25 C> PREVENTS MODE, PREPARES OBSERVATIONAL PREPBUFR REPORTS FOR
    26 C> SUBSEQUENT QUALITY CONTROL AND ANALYSIS PROGRAMS. THIS IS DONE
    27 C> THROUGH THE FOLLOWING: INTERPOLATION OF GLOBAL FIRST GUESS {FROM
    28 C> EITHER SIGIO (SIGMA OR HYBRID) OR NEMSIO INPUT} TO PREPBUFR
    29 C> OBSERVATION LOCATIONS WITH ENCODING OF FIRST GUESS VALUES INTO
    30 C> PREPBUFR REPORTS; ENCODING OF "PREVENT" AND/OR "VIRTMP" EVENTS INTO
    31 C> PREPBUFR REPORTS; IN CERTAIN CASES, ENCODING OF A DERIVED PMSL INTO
    32 C> SURFACE PREPBUFR REPORTS; AND ENCODING OF OBSERVATION ERRORS FROM
    33 C> THE ERROR SPECIFICATION FILE INTO PREPBUFR REPORTS. IN THE
    34 C> POSTEVENTS MODE, AFTER ALL QUALITY CONTROL AND ANALYSIS PROGRAMS
    35 C> HAVE RUN, INTERPOLATES THE GLOBAL ANALYSIS {FROM EITHER SIGIO
    36 C> (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT} TO PREPBUFR OBSERVATION
    37 C> LOCATIONS AND ENCODES THESE ANALYZED VALUES INTO PREPBUFR REPORTS.
    38 C> THE REMAINDER OF THIS ABSTRACT APPLIES ONLY TO THE PREVENTS MODE.
    39 C> THE "PREVENT" EVENT CAN CHANGE A QUALITY MARKER TO FLAG AN
    40 C> OBSERVATION DATUM FOR NON-USE BY SUBSEQUENT QC AND ANALYSIS
    41 C> PROGRAMS (FILTERING). EXAMPLES WHERE THIS SUBROUTINE WILL WRITE
    42 C> AN EVENT TO FLAG A DATUM INCLUDE: THE OBSERVATION ERROR FOR THAT
    43 C> DATUM IS READ IN AS MISSING IN THE INPUT ERROR FILE, THE DATUM
    44 C> ITSELF VIOLATES A GROSS OR "SANITY" CHECK, OR THE OBSERVED
    45 C> PRESSURE DATUM IS MORE THAN 100 MB BELOW THE GUESS SURFACE
    46 C> PRESSURE. THE "VIRTMP" EVENT CAN CHANGE THE SPECIFIC HUMIDITY
    47 C> OBSERVATION (RE-CALCULATED) AS WELL AS THE TEMPERATURE
    48 C> OBSERVATION (FROM SENSIBLE TO VIRTUAL TEMPERATURE, BASED ON
    49 C> JUST-CALCULATED SPECIFIC HUMIDITY). CURRENTLY THIS APPLIES ONLY
    50 C> TO SURFACE (LAND, MARINE AND MESONET) DATA TYPES, POSSIBLY TO
    51 C> RAOB, DROP AND MULTI-LEVEL RECCO DATA TYPES IF THE SWITCH
    52 C> "ADPUPA_VIRT" IS TRUE (NORMALLY, HOWEVER IT IS FALSE) [OTHER DATA
    53 C> TYPES WITH REPORTED SENSIBLE TEMPERATURE EITHER HAVE MISSING
    54 C> MOISTURE (E.G., ALL AIRCRAFT TYPES EXCEPT FOR SOME ACARS, SATELLITE
    55 C> WIND TYPES), FLAGGED MOISTURE (E.G., SOME ACARS) OR CALCULATE
    56 C> SPECIFIC HUMIDITY/VIRTUAL TEMPERATURE IN SUBSEQUENT PROGRAMS (E.G.,
    57 C> RAOBS, DROPS AND MULTI-LEVEL RECCOS WHICH CALCULATE THESE IN
    58 C> PROGRAM "CQCBUFR", IN WHICH CASE THE SWITCH "ADPUPA_VIRT" HERE MUST
    59 C> BE FALSE!)]. FOR CASES WHERE THE SWITCH "DOBERR" IS FALSE, THE
    60 C> OBSERVATION ERROR FOR ALL DATA REMAINS MISSING IN THE PREPBUFR
    61 C> FILE. IN THIS CASE, THE INPUT ERROR FILE IS USUALLY A NULL FILE
    62 C> AND THE "PREVENT" EVENT TO FLAG THE DATUM IS NOT INVOKED. FOR
    63 C> CASES WHERE THE SWITCH "DOFCST" IS FALSE, IF THE SWITCH "SOME_FCST"
    64 C> IS ALSO FALSE, THEN FORECAST VALUES ARE NOT ENCODED FOR ANY MESSAGE
    65 C> TYPE; IF "SOME_FCST" IS TRUE THEN FORECAST VALUES ARE ENCODED, BUT
    66 C> ONLY FOR REPORTS IN THOSE MESSAGE TYPES FOR WHICH A GUESS VALUE IS
    67 C> NEEDED BY SUBSEQUENT QC PROGRAMS. IT SHOULD BE NOTED THAT THE
    68 C> FILTERING OF DATA ASSOCIATED WITH THE "PREVENT" EVENT PROCESSING IS
    69 C> NOT INVOKED IF ALL THREE ARE TRUE: DOBERR= FALSE, THE FORECAST
    70 C> VALUES ARE MISSING (DOFCST=FALSE & SOME_FCST=TRUE & MESSAGE TYPE IS
    71 C> NOT "ADPUPA", "AIRCFT", "AIRCAR", "PROFLR", OR "VADWND" -- OR --
    72 C> DOFCST=FALSE & SOME_FCST=FALSE), AND "VIRTMP" EVENT PROCESSING IS
    73 C> NOT INVOKED (EITHER MESSAGE TYPE IS NOT "ADPSFC", "SFCSHP" OR
    74 C> "MSONET" WHEN "ADPUPA_VIRT" IS FALSE, OR MESSAGE TYPE IS NOT
    75 C> "ADPSFC", "SFCSHP", "MSONET" OR "ADPUPA" WHEN "ADPUPA_VIRT" IS
    76 C> TRUE). ALSO, IF VIRTUAL TEMPERATURE PROCESSING IS PERFORMED, ALL
    77 C> SURFACE REPORTS WITH MISSING PMSL WILL ENCODE A DERIVED PMSL INTO
    78 C> PREPBUFR IF THE SWITCH DOPMSL IS TRUE AND A VIRTUAL TEMPERATURE WAS
    79 C> SUCCESSFULLY CALCULATED.
    80 C>
    81 C> PROGRAM HISTORY LOG:
    82 C> -1999-07-01 D. A. KEYSER -- ORIGINAL AUTHOR (ADAPTED FROM PREVENTS
    83 C> SUBROUTINE IN PREPDATA PROGRAM, BUT NOW GENERALIZED FOR
    84 C> POSTEVENTS MODE)
    85 C> -1999-07-12 D. A. KEYSER -- MODIFIED TO INTERPOLATE MODEL SPECIFIC
    86 C> HUMIDITY TO OBSERVATION LOCATION WHEN OBS. SPECIFIC HUMIDITY IS
    87 C> MISSING AS LONG AS OBS. TEMPERATURE IS NON-MISSING
    88 C> -1999-09-09 D. A. KEYSER -- ADDED "VADWND" TO THE LIST OF MESSAGE
    89 C> TYPES FOR WHICH FORECAST VALUES MUST BE ENCODED, EVEN WHEN
    90 C> DOFCST=FALSE (NECESSARY BECAUSE THE NEW PROGRAM CQCVAD NEEDS THE
    91 C> BACKGROUND DATA)
    92 C> -1999-09-09 D. A. KEYSER -- CHANGES TO MAKE CODE MORE PORTABLE;
    93 C> 'TFC' NOW GENERATED FOR VADWND MESSAGE TYPES EVEN THOUGH TOB IS
    94 C> MISSING (NEEDED BY CQCVAD PROGRAM)
    95 C> -1999-12-01 D. A. KEYSER -- SPEC. HUMIDITY AND VIRT. TEMPERATURE ARE
    96 C> NOW CALCULATED WHEN SPEC. HUMIDITY QUAL. MARKER IS BAD (SUBJECT
    97 C> TO A SANITY CHECK), HOWEVER THE VIRT. TEMPERATURE GETS A BAD
    98 C> QUAL. MARKER (8)
    99 C> -2000-09-21 D. A. KEYSER -- THE PRESSURE LEVEL ABOVE WHICH ALL SPEC.
    100 C> HUMIDITY QUAL. MARKERS ARE "REJECTED" (Q.M. SET TO 9) IS NOW READ
    101 C> IN AS A N-LIST SWITCH (QTOP_REJ), BEFORE IT WAS HARDWIRED TO 300
    102 C> MB
    103 C> -2000-12-13 D. A. KEYSER -- WILL NO LONGER PERFORM VIRTUAL TEMPERATURE
    104 C> PROCESSING FOR ACARS DATA SINCE MOISTURE IS FLAGGED RIGHT NOW
    105 C> (ACARS MOISTURE ONLY WRITTEN INTO PREPBUFR FILE FOR STATISTICAL
    106 C> REASONS)
    107 C> -2001-02-02 D. A. KEYSER -- RESTORED LEGACY LOGIC TO FLAG CERTAIN
    108 C> SATELLITE TEMPERATURE SOUNDINGS EITHER BELOW 100 MB (TEMP. OBS)
    109 C> OR ON ALL LEVELS (SPEC. HUM. OBS), CONTROLLED BY NEW NAMELIST
    110 C> SWITCH "SATMQC"
    111 C> -2001-09-27 D. A. KEYSER -- 'TFC' AND 'QFC' NOW GENERATED FOR REPORT
    112 C> TYPE 111 (SYNDAT REPORTS AT STORM CENTER) EVEN THOUGH "TOB" AND
    113 C> "QOB" ARE MISSING (NEEDED BY SYNDATA PROGRAM); IN PREPARATION FOR
    114 C> CHANGE FROM T170L42 TO T254L64 SGES, NOW MAKES COEFFICIENT ARRAYS
    115 C> ALLOCATABLE TO ALLOW THEM TO OBTAIN MEMORY FROM "HEAP" RATHER
    116 C> THAN FROM "STACK", ALSO HAVE INCREASED THE MAX NUMBER OF LEVELS
    117 C> IN ARRAYS FROM 42 TO 64, FINALLY ALSO NO LONGER STOPS WITH C.
    118 C> CODE 70 IF EVEN NUMBER OF LONGITUDES IN SIGMA GUESS (IMAX,
    119 C> HARDWIRED TO 384) IS .LT. SPECTRAL RESOLUTION (JCAP) * 2
    120 C> -2001-10-10 D. A. KEYSER -- AT PREPBUFR CENTER DATES WITH AN HOUR THAT
    121 C> IS NOT A MULTIPLE OF 3 (WHEN A GLOBAL SIGMA GUESS/ANAL FILE IS
    122 C> NOT AVAILABLE; E.G., IN RUC2A RUNS) NOW PERFORMS A LINEAR
    123 C> INTERPOLATION BETWEEN SPECTRAL COEFFICIENTS IN 2 SPANNING SIGMA
    124 C> GUESS/ANAL FILES 3-HRS APART TO CENERATE A GUESS/ANAL FILE VALID
    125 C> AT THE PREPBUFR CENTER TIME
    126 C> -2002-05-10 D. A. KEYSER -- ADDED "AIRCAR" TO THE LIST OF TABLE A
    127 C> MESSAGE TYPES THAT WILL STILL HAVE THE BACKGROUND ENCODED WHEN
    128 C> DOFCST IS FALSE (BECAUSE ACARS ARE NOW Q.C.'d IN PREPOBS_ACARSQC
    129 C> PROGRAM)
    130 C> -2003-09-02 D. A. KEYSER -- ADDED "MSONET" TO THE LIST OF TABLE A
    131 C> MESSAGE TYPES THAT WILL HAVE THE VIRTUAL TEMPERATURE CALCULATED;
    132 C> DOES NOT CALL UFBINT FOR OUTPUTTING DATA IF "NLEV" (4'TH
    133 C> ARGUMENT) IS ZERO (NOW CAN ONLY HAPPEN FOR GOESND FORECAST DATA
    134 C> WHEN ONLY RADIANCES ARE PRESENT)
    135 C> -2004-08-30 D. A. KEYSER -- NOW INCLUDES THE 4 LAYER PWATERS, THESE
    136 C> GET AN OBS. ERROR (EACH THE SAME AS TOTAL PWATER) AND AN EVENT
    137 C> IS GENERATED WITH A REJECTED Q.M. FOR THE 4 LAYER PWATERS IF THE
    138 C> PWATER OBS. ERROR READ IN IS MISSING (THIS CHANGE ALLOWS THE ETA/
    139 C> GSI TO PROCESS OBS. ERRORS IN THE PREPBUFR FILE THE SAME AS THE
    140 C> ETA/3DVAR DID WHEN READING THE OBS. ERRORS FROM AN EXTERNAL
    141 C> FILE); FOR "RASSDA" TYPES, ENCODES A SIMPLE COPY OF THE REPORTED
    142 C> (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS
    143 C> NEW REASON CODE 3
    144 C> -2004-09-10 D. T. KLEIST -- ADDED CAPABILITY TO READ GUESS FIELDS FROM
    145 C> EITHER HYBRID OR, AS BEFORE, SIGMA GLOBAL FORECAST FILES
    146 C> -2005-01-03 D. A. KEYSER -- FIXED ERROR READING CDAS SGES FILE WHICH
    147 C> STILL HAS A 207-WORD HEADER (T62) {2004-09-10 CHANGE ASSUMED ALL
    148 C> SGES FILES HAD A 226-WORD HEADER (T254), BUT THIS IS VALID ONLY
    149 C> FOR GFS SGES)
    150 C> -2006-05-05 R. E. TREADON -- CHANGE VERTICAL INTERPOLATION TO DIRECTLY
    151 C> USE PRESSURE PROFILE, NOT PRESSURE PROFILE CONVERTED TO SIGMA.
    152 C> THIS CHANGE IS IN SUBROUTINE GBLEVN03. AS A RESULT OF THIS
    153 C> CHANGE, SUBROUTINE GBLEVN07 WAS REMOVED.
    154 C> -2006-07-14 D. A. KEYSER -- ADDED NEW NAMELIST SWITCH "SOME_FCST"
    155 C> WHICH APPLIES ONLY WHEN EXISTING SWITCH "DOFCST" IS FALSE: IF
    156 C> DOFCST=F AND SOME_FCST=T THEN, JUST AS BEFORE WHEN DOFCST=F, A
    157 C> FORECAST WILL STILL BE ENCODED FOR REPORTS IN CERTAIN MESSAGE
    158 C> TYPES USED IN SUBSEQUENT Q.C. PROGRAMS (I.E, "ADPUPA", "AIRCFT",
    159 C> "AIRCAR", "PROFLR" OR "VADWND") (THE DEFAULT FOR SOME_FCST IS
    160 C> TRUE); HOWEVER IF DOFCST=F AND SOME_FCST=F THEN A FORECAST WILL
    161 C> NOT BE ENCODED INTO REPORTS IN ANY MESSAGE TYPE (THIS ALLOWS
    162 C> THIS PROGRAM TO ENCODE OBS ERRORS AND/OR VIRTUAL TEMPERATURE
    163 C> EVENTS INTO A PREPBUFR FILE WITHOUT ENCODING A FORECAST); ADDED
    164 C> NEW NAMELIST SWITCH "ADPUPA_VIRT" WHICH, WHEN TRUE, INCLUDES
    165 C> REPORTS IN MESSAGE TYPE ADPUPA (I.E., RAOBS, DROPS, MULTI-LEVEL
    166 C> RECCOS) IN THE "VIRTMP" PROCESSING (PROCESSING THEM WITH SAME
    167 C> LOGIC AS IN SUBROUTINE VTPEVN OF PROGRAM PREPOBS_CQCBUFR)
    168 C> {NORMALLY "ADPUPA_VIRT" IS FALSE (DEFAULT) BECAUSE SUBSEQUENT
    169 C> PROGRAM PREPOBS_CQCBUFR PERFORMS THIS FUNCTION}
    170 C> -2007-09-14 S. MOORTHI -- ADDED CAPABILITY TO READ GENERALIZED SIGMA/
    171 C> HYBRID FILES FROM THE GFS USING "SIGIO" UTILITY; ALSO, CLEANED UP
    172 C> SOME CODE; NEW ERROR CONDITION CODES 70 AND 71 ADDED
    173 C> -2007-09-14 D. A. KEYSER -- FUNCTION OEFG01, WHICH RETURNS THE OBS
    174 C> ERROR FOR A REQUESTED VARIABLE INTERP. TO A DEFINED PRESSURE
    175 C> LEVEL FOR A DEFINED REPORT TYPE, MODIFIED TO USE EXACT LOGIC AS
    176 C> IN GSI (MINIMUM LIMITING VALUE FOR OBS ERROR BASED ON VARIABLE
    177 C> TYPE, LEVEL PRESSURE LIMITED TO MAX OF 2000 MB AND MIN OF ZERO
    178 C> MB, A FEW OTHER MINOR CHANGES) - THIS WILL ALLOW GSI TO READ OBS
    179 C> ERROR DIRECTLY OUT OF PREPBUFR FILE RATHER THAN OUT OF AN
    180 C> EXTERNAL FILE; FOR PW TYPES, NOW PASSES REPORTED SURFACE PRESSURE
    181 C> (PRSS * 0.01) INTO FUNCTION OEFG01 RATHER THAN VERTICAL
    182 C> COORDINATE PRESSURE (POB), SINCE LATTER IS ALWAYS MISSING FOR
    183 C> THESE TYPES (DOESN'T CHANGE VALUE COMING OUT OF OEFG01 SINCE IT
    184 C> IS CONSTANT ON ALL LEVELS ANYWAY FOR PW); IN SUBR. GBLEVN02, Q.M.
    185 C> 9 IS NOW ASSIGNED TO A VARIABLE ONLY IF ITS OBS ERROR IS MISSING,
    186 C> OR IN THE CASE OF MOISTURE IF THE LEVEL IS ABOVE PRESSURE LEVEL
    187 C> "QTOP_REJ" OR IF ITS TEMPERATURE OBS ERROR IS MISSING, ALL OTHER
    188 C> EVENT (E.G., GROSS CHECK ERRORS) ASSIGN Q.M. 8 (EVEN IF OBS ERROR
    189 C> IS MISSING), PRIOR TO THIS ONLY REJECTION OF PRESSURE ON LEVEL
    190 C> RESULTED IN Q.M. 8, ALL OTHER REJECTIONS GOT Q.M. 9 - THIS MEANS
    191 C> TRULY "BAD" OBS WILL NOW ALWAYS GET Q.M. 8 AND ONLY OBS FLAGGED
    192 C> FOR NON-USE BY ASSIMILATION (BUT STILL "GOOD") WILL NOW GET Q.M.
    193 C> 9 (GSI MONITORS, BUT DOES NOT USE, OBS WITH Q.M. 9, BUT IT DOES
    194 C> NOT EVEN CONSIDER OBS WITH Q.M. 8); CORRECTED ERROR WHICH
    195 C> MISTAKENLY ASSIGNED REASON CODE OF 9 INSTEAD OF 3 TO MOISTURE
    196 C> WITH MISSING OBS ERROR; IN SUBR. GBLEVN02, Q.M. 9 WILL NOT BE
    197 C> ASSIGNED TO A VARIABLE IF THAT VARIABLE ALREADY HAS A "BAD" Q.M.
    198 C> (I.E., > 3 BUT < 15), IN FACT THE "PREVENT" EVENT WHICH WOULD
    199 C> ASSIGN Q.M. 9 IS SKIPPED ENTIRELY (DO NOT WANT THE GSI TO MONITOR
    200 C> THE OBS WHICH REALLY ARE ARE "BAD"); IN SUBR. GBLEVN08, FOR NON-
    201 C> "ADPUPA" TYPES, Q.M. 9 IS NOW ASSIGNED TO CALCULATED VIRT. TEMPS
    202 C> IF THE MOISTURE Q.M. IS 9 OR 15 AND ORIG. TEMP NOT "BAD", THESE
    203 C> "VIRTMP" EVENTS RECEIVE NEW REASON CODE 4, HAD RECEIVED Q.M. 8
    204 C> WITH REASON CODE 2 LIKE VIRT. TEMPS CALCULATED FROM "BAD"
    205 C> MOISTURE - THIS MEANS ONLY TRULY "BAD" VIRT. TEMPS WILL NOW GET
    206 C> Q.M. 8 AND VIRT. TEMPS FLAGGED FOR NON-USE BY ASSIMILATION (BUT
    207 C> STILL "GOOD") WILL NOW GET Q.M. 9 (GSI MONITORS, BUT DOES NOT
    208 C> USE, OBS WITH Q.M. 9, BUT IT DOES NOT EVEN CONSIDER OBS WITH Q.M.
    209 C> 8); IN SUBR. GBLEVN08, FOR "ADPUPA" TYPES, Q.M. 3 IS NOW ASSIGNED
    210 C> TO CALCULATED VIRT. TEMPS ONLY IF THE MOISTURE Q.M. IS TRULY BAD
    211 C> (I.E. > 3 BUT NOT 9 OR 15) (AND, AS BEFORE, ORIG. TQM IS 1 OR 2
    212 C> AND POB IS BELOW 700 MB) - BEFORE, TQM SET TO 3 WHEN QQM WAS 9 OR
    213 C> 15 AND ALL OTHER CONDITIONS MET; FOR "SATEMP" TYPES, ENCODES A
    214 C> SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP"
    215 C> EVENT IF DOVTMP IS TRUE, GETS REASON CODE 3 (SIMILAR TO WHAT IS
    216 C> ALREADY DONE FOR "RASSDA" TYPES)
    217 C> -2010-01-29 D. A. KEYSER -- ADDED NEW NAMELIST SWITCH "RECALC_Q"
    218 C> WHICH APPLIES ONLY WHEN EXISTING SWITCH "DOVTMP" IS FALSE: IF
    219 C> DOVTMP=F AND RECALC_Q=T THEN, JUST AS BEFORE WHEN DOVTMP=F, SPEC.
    220 C> HUMIDITY IS STILL RE-CALCULATED AND THE EVENT IS ENCODED INTO THE
    221 C> PREPBUFR FILE (BUT VIRTUAL TEMP. IS NOT ENCODED) (THE DEFAULT FOR
    222 C> RECALC_Q IS TRUE), HOWEVER IF DOVTMP=F AND RECALC_Q=F THEN SPEC.
    223 C> HUMIDITY IS NOT RE-CALCULATED (AND NEITHER IS VIRTUAL
    224 C> TEMPERATURE) (THIS ALLOWS THIS PROGRAM TO BYPASS ALL "VIRTMP"
    225 C> EVENT PROCESSING); ADDED NEW NAMELIST SWITCH "DOPREV" WHICH,
    226 C> WHEN TRUE, WRITES "PREVENT" EVENTS INTO THE PREPBUFR FILE (IT
    227 C> ALWAYS DID THIS BEFORE) (DEFAULT), BUT NOW ALLOWS THE PROGRAM
    228 C> TO BYPASS "PREVENT" EVENT PROCESSING WHEN DOPREV=F; INITIALIZED
    229 C> ARRAY IDATE AS ZERO IN SUBR. GBLEVN10, CORRECTED BUG WHICH
    230 C> EXPOSED PREVIOUSLY HIDDEN MEMORY CLOBBERING WHEN CALLING PROGRAMS
    231 C> WERE LINKED TO NEW BUFRLIB; RULES IN SUBROUTINE GBLEVN02 REFINED
    232 C> TO INCLUDE FULL SFC PRESSURE SANITY CHECK FOR ALL SFC REPORTS
    233 C> (MASS, 18x, & WIND, 28x), BEFORE ONLY DONE FOR SFC MASS REPORTS
    234 C> (18x) AND STILL NOT DONE FOR NON-SFC WIND REPORTS SINCE LOWEST
    235 C> LEVEL PRESSURE NOT NECESSARILY AT THE SFC), AS A RESULT 28x WINDS
    236 C> WILL NOW GET QM=8 IF PRESSURE FAILS SANITY CHECK (OFTEN HAPPENS
    237 C> IN MESONET REPORTS) (GSI WAS ALREADY NOT USING THESE WINDS SINCE
    238 C> PRESSURE QM SET TO 8 ALL ALONG)
    239 C> -2012-11-20 J. WOOLLEN INITIAL PORT TO WCOSS. ADDED CALL TO BUFRLIB
    240 C> ROUTINE GETBMISS TO ADAPT BMISS TO LINUX ENVIRONMENT IF NEED BE
    241 C> {I.E., OBTAINS BUFRLIB MISSING (BMISS) VIA CALL TO GETBMISS
    242 C> RATHER THAN HARDWIRING IT TO 10E10 (10E10 CAN CAUSE INTEGER
    243 C> OVERFLOW ON WCOSS - SEE CALLING PROGRAM FOR MORE INFO)}
    244 C> -2013-02-13 D. A. KEYSER -- FINAL CHANGES TO RUN ON WCOSS: USE
    245 C> FORMATTED PRINT STATEMENTS WHERE PREVIOUSLY UNFORMATTED PRINT WAS
    246 C> > 80 CHARACTERS; RENAME ALL REAL(8) VARIABLES AS *_8
    247 C> -2013-04-12 D. A. KEYSER -- IN SUBROUTINE GBLEVN08, DON'T ALLOW
    248 C> CALCULATED Q TO BE < 0 WHICH CAN OCCUR ON WCOSS FOR CASES OF
    249 C> HORRIBLY BAD MESONET DATA
    250 C> -2014-03-25 S. MELCHIOR -- ADDED NEW NAMELIST SWITCH "DOPMSL" WHICH,
    251 C> WHEN TRUE, DERIVES PMSL (MNEMONIC "PMO") FROM REPORTED STATION
    252 C> PRESSURE ("POB"), STATION HEIGHT/ELEVATION ("ZOB") AND THE JUST-
    253 C> COMPUTED VIRTUAL TEMPERATURE FOR SURFACE REPORTS IN CASES WHEN
    254 C> REPORTED PMSL IS MISSING (DONE IN SUBROUTINE GBLEVN08). DOVTMP
    255 C> MUST BE TRUE AND DOANLS MUST BE FALSE ("PREVENTS" MODE). THE
    256 C> DERIVED PMSL EITHER GETS A QUALITY MARK ("PMQ") OF 3 OR INHERITS
    257 C> THE STATION PRESSURE QUALITY MARK ("PQM"), WHICHEVER IS GREATER.
    258 C> THE VALUE OF THE PMSL INDICATOR (NEW MNEMONIC "PMIN") IS SET TO 1
    259 C> TO DENOTE PMSL WAS DERIVED RATHER THAN OBSERVED. THE DEFAULT FOR
    260 C> "DOPMSL" IS FALSE (NORMALLY ONLY TRUE IN RTMA AND URMA RUNS). IT
    261 C> IS FORCED TO BE FALSE IN "POSTEVENTS" MODE (DOANLS=TRUE). IN
    262 C> SUBROUTINE GBLEVN02, SFCSHP REPORTS WITH CALM WINDS AND NON-
    263 C> MISSING BACKGROUND U- OR V-COMPONENT WIND .GE. 5 M/SEC ARE
    264 C> FLAGGED WITH Q.M. 8 (EVENT PGM "PREVENT", REASON CODE 8).
    265 C> -2014-05-08 JWhiting -- altered print statement (2 format) in GBLEVN10
    266 C> subroutine; increased field width for spectral resolution to
    267 C> accommodate models w/ up to 5-digit resolution (I3 to I5).
    268 C> -2016-06-13 FANGLIN YANG AND RUSS TREADON -- HANG LEI ADDED NEMSIO
    269 C> TO SUBROUTINE GBLEVN10 AND REMOVED ALL SIGIO CAPABILITY.
    270 C> THIS UPDATE RESTORES GBLEVN10 FOR PROCESSING SIGIO INPUT, AND
    271 C> ADDS A NEW GBLEVN12 FOR PROCESSING NEMSIO INPUT. THE INPUT GFS
    272 C> FILE TYPE SIGIO VS NEMSIO IS NOW DETERMINED IN THE MAIN PROGRAM.
    273 C> THE CODE IS ALSO UPDATED TO REMOVE BUGS. SUBROUTINE SIGIO_MODPR
    274 C> IS USED TO COMPUTE LAYER AND INTERFACE PRESSURE FOR NEMSIO INPUT.
    275 C> -2017-02-17 D Keyser & J Whiting -- In subroutine GBLEVN12, removed
    276 C> references to multiple input files, since only 1 nemsio formatted
    277 C> input is needed (no interpolation is attempted; c.f.; what is
    278 C> done with sigio formatted inputs); GBLEVN12 routine still retains
    279 c some structures (esp array references) left over from multi file
    280 C> input. Updated comments and docblock to account for new NEMSIO
    281 C> input.
    282 C> -2017-02-22 D. Keyser -- Further changes to subr. GBLEVN12 to remove
    283 C> array and logic references to multiple input files.
    284 C> -2019-10-31 Hang Lei -- Add GBLEVN13 to process netcdf input.
    285 C>
    286 C>
    287 C> USAGE: CALL GBLEVENTS(IDATEP,IUNITF,IUNITE,IUNITP,IUNITS,SUBSET,
    288 C> $ NEWTYP)
    289 C>
    290 C> INPUT ARGUMENT LIST:
    291 C> @param IDATEP - CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    292 C> @param IUNITF - 2-WORD ARRAY:
    293 C> For SIGIO input:
    294 C> - WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL
    295 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    296 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    297 C> THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN
    298 C> IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID
    299 C> AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT
    300 C> IS A MULTIPLE OF 3
    301 C> - WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL
    302 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    303 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    304 C> THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE
    305 C> OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER
    306 C> THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    307 C> For NEMSIO input:
    308 C> - WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE
    309 C> (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT
    310 C> THE DATE IN IDATEP
    311 C> - WORD 2 - NOT USED, SHOULD BE A NULL FILE
    312 C> @param IUNITE - UNIT NUMBER OF INPUT OBSERVATION ERROR FILE
    313 C> - (USED ONLY IN PREVENTS MODE)
    314 C> @param IUNITP - UNIT NUMBER OF OUTPUT PREPBUFR DATA SET
    315 C> @param IUNITS - UNIT NUMBER OF "PREVENT" EVENTS DATA FILTERING
    316 C> - SUMMARY PRINT FILE
    317 C> - (USED ONLY IN PREVENTS MODE)
    318 C> @param SUBSET - THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
    319 C> - REPORT BEING PROCESSED
    320 C> @param NEWTYP - INDICATOR IF THE BUFR MESSAGE TABLE A ENTRY HAS
    321 C> - CHANGED FROM THAT OF THE PREVIOUS REPORT (=0 - NO,
    322 C> - =1 - YES)
    323 C>
    324 C>
    325 C> INPUT FILES:
    326 C> - UNIT 05 - STANDARD INPUT (DATA CARDS - SEE NAMELIST
    327 C> DOCUMENTATION BELOW)
    328 C> (NOTE: IF STANDARD INPUT FILE IS NULL, THEN THIS
    329 C> SUBROUTINE RUNS IN POSTEVENTS MODE)
    330 C> - UNIT AA - PREPBUFR DATA SET
    331 C> (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN
    332 C> INPUT ARGUMENT LIST)
    333 C> - UNIT BB - GUESS (PREVENTS MODE) OR ANALYSIS (POSTEVENTS MODE)
    334 C> FILE
    335 C> (WHERE BB IS UNIT NUMBER DEFINED AS IUNITF(1) IN
    336 C> INPUT ARGUMENT LIST)
    337 C> - UNIT CC - GUESS (PREVENTS MODE) OR ANALYSIS (POSTEVENTS MODE)
    338 C> FILE
    339 C> (WHERE CC IS UNIT NUMBER DEFINED AS IUNITF(2) IN
    340 C> INPUT ARGUMENT LIST)
    341 C> NOTE: only valid for SIGIO input
    342 C> - UNIT DD - OBSERVATION ERROR FILE (WHERE DD IS UNIT NUMBER
    343 C> DEFINED AS IUNITE IN INPUT ARGUMENT LIST)
    344 C> (USED ONLY IN PREVENTS MODE)
    345 C>
    346 C> OUTPUT FILES:
    347 C> - UNIT 06 - STANDARD OUTPUT PRINT
    348 C> - UNIT AA - PREPBUFR DATA SET
    349 C> (WHERE AA IS UNIT NUMBER DEFINED AS IUNITP IN
    350 C> INPUT ARGUMENT LIST)
    351 C> - UNIT DD - "PREVENT" EVENTS DATA FILTERING SUMMARY PRINT FILE
    352 C> (WHERE DD IS UNIT NUMBER DEFINED AS IUNITS IN
    353 C> INPUT ARGUMENT LIST)
    354 C> (USED ONLY IN PREVENTS MODE)
    355 C>
    356 C> SUBPROGRAMS CALLED:
    357 C> UNIQUE: GBLEVN02 GBLEVN03 GBLEVN04 GBLEVN06 OEFG01
    358 C> GBLEVN08 GBLEVN10 GBLEVN11 GBLEVN11D GBLEVN12
    359 C> GBLEVN13
    360 C> GETLATS
    361 C> MODULES: GBLEVN_MODULE SIGIO_MODULE SIGIO_R_MODULE
    362 C> NEMSIO_MODULE NEMSIO_OPENCLOSE NEMSIO_READ
    363 C> NEMSIO_WRITE
    364 C> LIBRARY:
    365 C> SIGIO - SIGIO_RROPEN SIGIO_RRHEAD SIGIO_SCLOSE SIGIO_ALDATS
    366 C> SIGIO_ALDATM SIGIO_RRDATS SIGIO_RRDATM SIGIO_AXDATS
    367 C> SIGIO_AXDATM SIGIO_MODPR SIGIO_CNVTDV
    368 C> SPLIB - SPTEZM SPTEZMV SPLAT
    369 C> W3NCO - W3MOVDAT ERREXIT
    370 C> BUFRLIB - UFBINT UFBQCD GETBMISS IBFMS
    371 C> NEMSIO - NEMSIO_OPEN NEMSIO_CLOSE NEMSIO_INIT
    372 C> NEMSIO_GETFILEHEAD NEMSIO_READRECV NEMSIO_FINALIZE
    373 C> NEMSIO_GETHEADVAR NEMSIO_READRECVw34
    374 C>
    375 C> EXIT STATES:
    376 C> - COND = 0 - SUCCESSFUL RUN
    377 C> - COND = 60 - OBSERVATION ERROR TABLE EMPTY OR DOES NOT EXIST
    378 C> - COND = 61 - VARIABLE NLTD .NE. VARIABLE NLEV
    379 C> - COND = 62 - VARIABLE NLTQ .NE. VARIABLE NLEV
    380 C> - COND = 63 - VARIABLE NLQQ .NE. VARIABLE NLEV
    381 C> - COND = 68 - DATE OF FIRST GUESS/ANALYSIS FILE(S) DOES NOT MATCH,
    382 C> OR AT LEAST SPAN, THE CENTER DATE FOR THE PREPBUFR
    383 C> FILE
    384 C> - COND = 69 - FOR SIGIO INPUT GLOBAL FILES, VARIABLE KMAX TOO BIG
    385 C> - UNABLE TO TRANSFORM FIRST GUESS OR ANALYSIS FILE(S)
    386 C> - COND = 70 - FOR SIGIO INPUT GLOBAL FILES, CALL TO SIGIO_RROPEN
    387 C> RETURNED WITH NON-ZERO R.C.
    388 C> - COND = 71 - FOR SIGIO INPUT GLOBAL FILES, CALL TO SIGIO_RRHEAD
    389 C> RETURNED WITH NON-ZERO R.C.
    390 C>
    391 C>
    392 C> REMARKS: THIS SUBROUTINE MAY NOT WORK CORRECTLY IN THE EIGHT BYTE
    393 C> INTEGER W3NCO (_8) LIBRARY. PLEASE COMPILE APPLICATION CODE
    394 C> USING A FOUR BYTE REAL W3NCO LIBRARY (_4 OR _d).
    395 C>
    396 C> THIS ROUTINE PROCESSES ONE REPORT AT A TIME. IT EXPECTS THAT THE
    397 C> CALLING PROGRAM HAS ALREADY ENCODED THE REPORT INTO THE PREPBUFR
    398 C> FILE VIA THE UFBINT OR UFBCPY ROUTINES. THE CALLING PROGRAM
    399 C> SHOULD THEN CALL THIS ROUTINE AND, UPON ITS RETURN, THE CALLING
    400 C> PROGRAM SHOULD CALL WRITSB TO ACTUALLY WRITE THE UPDATED SUBSET
    401 C> (REPORT) INTO THE BUFR MESSAGE.
    402 C>C
    403 C> ***** VARIABLES IN NAMELIST PREVDATA READ IN BY THIS SUBROUTINE *****
    404 C> (NOTE: IF STANDARD INPUT FILE IS NULL, THEN THIS
    405 C> SUBROUTINE RUNS IN POSTEVENTS MODE - DOANLS=TRUE
    406 C> AND ALL OTHER VARIABLES ARE SET TO FALSE)
    407 C>C
    408 C>C
    409 C> - DOPREV - WRITE "PREVENT" EVENT INTO THE PREPBUFR FILE?
    410 C> DOPREV = .TRUE. ---> YES (DEFAULT)
    411 C> DOPREV = .FALSE. ---> NO
    412 C> - DOVTMP, ADPUPA_VIRT & RECALC_Q:
    413 C> DOVTMP - WRITE VIRTUAL TEMPERATURE EVENT ("VIRTMP") INTO THE
    414 C> PREPBUFR FILE (I.E., RE-CALCULATE SPECIFIC HUMIDITY
    415 C> THEN CALCULATE VIRTUAL TEMPERATURE) FOR THE FOLLOWING
    416 C> TYPES OF REPORTS:
    417 C> ADPUPA_VIRT = .FALSE. ---> SURFACE LAND, MARINE,
    418 C> MESONET AND RASS REPORTS?
    419 C> ADPUPA_VIRT = .TRUE. ---> SURFACE LAND, MARINE,
    420 C> MESONET RASS, RAOB, DROP
    421 C> AND MULTI-LEVEL RECCO
    422 C> REPORTS?
    423 C> FOR ALL TYPES EXCEPT RASS, THIS WILL ATTEMPT TO
    424 C> CALCULATE VIRTUAL TEMPERATURE FROM SENSIBLE TEMPERATURE
    425 C> AND THE JUST RE-CALCULATED SPECIFIC HUMIDITY AND ENCODE
    426 C> IT AS A STACKED EVENT IN THE PREPBUFR FILE. FOR RASS
    427 C> REPORTS THIS WILL JUST ENCODE THE REPORTED TEMPERATURE
    428 C> AS A STACKED EVENT IN THE PREPBUFR FILE SINCE THE
    429 C> REPORTED TEMPERATURE IS ALREADY VIRTUAL (NO MOISTURE IS
    430 C> PRESENT SO Q IS NOT RE-CALCULATED FOR RASS REPORTS).
    431 C> DOVTMP = .TRUE. ---> YES (DEFAULT)
    432 C> DOVTMP = .FALSE.
    433 C> RECALC_Q = .TRUE. ---> RE-CALCULATE SPECIFIC
    434 C> HUMIDITY BUT DO NOT THEN
    435 C> CALCULATE VIRTUAL
    436 C> TEMPERATURE (DEFAULT)
    437 C> RECALC_Q = .FALSE. ---> NO, DO NOT RE-CALCULATE
    438 C> SPECIFIC HUMIDITY AND DO
    439 C> NOT CALCULATE VIRTUAL
    440 C> TEMPERATURE
    441 C> {NOTE1: FOR SURFACE LAND, MARINE AND MESONET REPORTS, (AND
    442 C> RAOB, DROP AND MULTI-LEVEL RECCO REPORTS IF
    443 C> "ADPUPA_VIRT"=TRUE) DOVTMP=FALSE WILL STILL RE-CALCULATE
    444 C> SPECIFIC HUMIDITY AND ENCODE IT AS A STACKED EVENT IN
    445 C> THE PREPBUFR FILE UNLESS EITHER DOANLS IS TRUE OR
    446 C> RECALC_Q IS FALSE.)
    447 C> (NOTE2: DOES NOT APPLY TO ANY REPORT TYPES OTHER THAN THOSE
    448 C> MENTIONED ABOVE)
    449 C> (NOTE3: IF DOANLS=TRUE, THEN DOVTMP IS NOT ONLY FORCED TO BE
    450 C> FALSE, BUT ALSO SPECIFIC HUMIDITY IS NOT RE-CALCULATED.)
    451 C> (NOTE4: ADPUPA_VIRT DEFAULTS TO FALSE.)
    452 C> (NOTE5: IF DOVTMP=TRUE, THEN RECALC_Q IS MEANINGLESS.)
    453 C> (NOTE6: RECALC_Q DEFAULTS TO TRUE.)
    454 C>
    455 C> - DOFCST & SOME_FCST:
    456 C> DOFCST - ENCODE FORECAST (FIRST GUESS) VALUES, INTERPOLATED FROM
    457 C> EITHER A SIGIO (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT
    458 C> GLOBAL FILE, INTO THE PREPBUFR FILE FOR ALL MESSAGE
    459 C> TYPES OR AT LEAST SOME MESSAGE TYPES?
    460 C> DOFCST = .TRUE. ---> YES, ENCODE FORECST FOR ALL
    461 C> MESSAGE TYPES (DEFAULT)
    462 C> DOFCST = .FALSE.
    463 C> SOME_FCST = .FALSE. ---> NO, DO NOT ENCODE FORECAST
    464 C> FOR ANY MESSAGE TYPE
    465 C> (VALUES REMAIN MISSING)
    466 C> SOME_FCST = .TRUE. ---> YES, BUT ONLY FOR MESSAGE
    467 C> TYPES "ADPUPA", "AIRCFT",
    468 C> "AIRCAR", "PROFLR" OR
    469 C> "VADWND" (VALUES REMAIN
    470 C> MISSING FOR ALL OTHER
    471 C> MESSAGE TYPES)
    472 C> (NOTE1: THE CASE DOFCST=FALSE & SOME_FCST=TRUE WRITES THE
    473 C> FORECAST VALUES FOR THE TYPES MENTIONED ABOVE BECAUSE
    474 C> THEY ARE NEEDED BY SUBSEQUENT QUALITY CONTROL PROGRAMS.)
    475 C> (NOTE2: THIS WAS ADDED AS A TIME SAVING FEATURE IN THE
    476 C> NON-GLOBAL VERSIONS SINCE ONLY THE GLOBAL REQUIRES A
    477 C> FIRST GUESS TO BE PRESENT FOR ALL CONVENTIONAL MESSAGE
    478 C> TYPES IN THE PREPBUFR FILE.)
    479 C> (NOTE3: IF DOANLS=TRUE, THEN DOFCST & SOME_FCST ARE FORCED TO BE
    480 C> FALSE, MEANING A GUESS WILL NOT BE ENCODED FOR ANY
    481 C> MESSAGE TYPE.)
    482 C> (NOTE4: IF DOFCST=TRUE, THEN SOME_FCST IS MEANINGLESS.)
    483 C> (NOTE5: SOME_FCST DEFAULTS TO TRUE.)
    484 C>
    485 C> - DOANLS - ENCODE ANALYZED VALUES, INTERPOLATED FROM EITHER A SIGIO
    486 C> (SIGMA OR HYBRID) INPUT OR NEMSIO INPUT GLOBAL FILE,
    487 C> INTO THE PREPBUFR FILE -
    488 C> POSTEVENTS MODE - ?
    489 C> DOANLS = .TRUE. ---> YES, FOR ALL MESSAGE TYPES
    490 C> DOANLS = .FALSE. ---> NO, FOR ALL MESSAGE TYPES
    491 C> - PREVENTS MODE - (DEFAULT)
    492 C> (NOTE: DOANLS=TRUE WILL OVERRIDE AND FORCE TO FALSE ALL OTHER
    493 C> SWITCHES. IN ADDITION, THE FORECAST VALUES WILL NOT
    494 C> BE ENCODED FOR ANY MESSAGE TYPE AND SPECIFIC HUMIDITY
    495 C> WILL NOT BE RE-CALCULATED.)
    496 C>
    497 C> - DOBERR - ENCODE OBSERVATIONAL ERROR VALUES, AS READ FROM OBS.
    498 C> ERROR FILE, INTO THE PREPBUFR FILE?
    499 C> DOBERR = .TRUE. ---> YES (DEFAULT)
    500 C> DOBERR = .FALSE. ---> NO (VALUES REMAIN MISSING)
    501 C> (NOTE1: THIS WAS ADDED AS A TIME SAVING FEATURE IN THE
    502 C> RAP -AND PREVIOUS RUC- VERSION SINCE IT DOES NOT REQUIRE
    503 C> OBSERVATIONAL ERRORS TO BE PRESENT IN THE PREPBUFR FILE.)
    504 C> (NOTE2: IF DOANLS=TRUE, THEN DOBERR IS FORCED TO BE FALSE.)
    505 C>
    506 C> - QTOP_REJ - THE PRESSURE LEVEL (IN MB) ABOVE WHICH ALL SPECIFIC
    507 C> HUMIDITY QUALITY MARKERS ARE "REJECTED" (THE QUALITY
    508 C> MARKER IS SET TO 9 ON ALL PRESSURE LEVELS LESS THAN
    509 C> THIS LEVEL) (DEFAULT=300.)
    510 C>
    511 C> - SATMQC - PERFORM SPECIAL QUALITY CONTROL ON SATELLITE TEMPERATURE
    512 C> SOUNDINGS IN REPORT TYPES 160-179?
    513 C> SATMQC = .TRUE. ---> YES
    514 C> SATMQC = .FALSE. ---> NO (DEFAULT)
    515 C> (NOTE: THIS APPLIES ONLY TO THE CDAS OR HISTORICAL RE-RUNS
    516 C> WITH TEMPERATURE SOUNDINGS IN THESE REPORT TYPES)
    517 C>
    518 C> - DOPMSL - ENCODE DERIVED PMSL ("PMO") FOR ALL SURFACE REPORTS WHEN
    519 C> REPORTED PMSL IS MISSING - ?
    520 C> DOPMSL = .TRUE. ---> YES
    521 C> DOPMSL = .FALSE. ---> NO ("PMO" REMAINS MISSING)(DEFAULT)
    522 C> {NOTE: THIS APPLIES ONLY WHEN DOVTMP=TRUE AND DOANLS=FALSE
    523 C> ("PREVENTS" MODE), VIRTUAL TEMPERATURE CAN BE CALCULATED,
    524 C> AND STATION PRESSURE AND SURFACE HEIGHT/ELEVATION ARE
    525 C> BOTH PRESENT. THE DERIVED PMSL EITHER GETS A QUALITY
    526 C> MARK ("PMQ") OF 3 OR INHERITS THE STATION PRESSURE
    527 C> QUALITY MARK ("PQM") PQM, WHICHEVER IS GREATER. THE VALUE
    528 C> OF THE PMSL INDICATOR ("PMIN") IS SET TO 1 TO DENOTE PMSL
    529 C> WAS DERIVED RATHER THAN OBSERVED.}
    530 C>
    531  SUBROUTINE gblevents(IDATEP,IUNITF,IUNITE,IUNITP,IUNITS,SUBSET,
    532  $ NEWTYP)
    534  USE sigio_module
    535  USE sigio_r_module
    536  USE nemsio_module
    537  USE nemsio_openclose
    538  USE nemsio_read
    539  USE gblevn_module
    540  use netcdf
    541 
    542  INTEGER, PARAMETER :: IM=384, jm=im/2+1
    543  integer :: idrt = 0
    544 
    545  CHARACTER*80 HEADR,OBSTR,QMSTR,FCSTR,OESTR,ANSTR
    546  CHARACTER*8 SUBSET
    547  REAL(8) OBS_8,QMS_8,BAK_8,SID_8,HDR_8(10)
    548  REAL(8) BMISS,GETBMISS
    549  LOGICAL DOVTMP,DOFCST,SOME_FCST,DOBERR,FCST,VIRT,DOANLS,
    550  $ satmqc,adpupa_virt,recalc_q,doprev,dopmsl
    551  INTEGER*4 IRET,IRET1
    552  INTEGER*4 IUNITF(2),ncid
    553 
    554  CHARACTER*20 CFILE1
    555  TYPE(SIGIO_HEAD) :: HEAD1
    556  TYPE(NEMSIO_GFILE) :: GFILE1
    557 
    558  COMMON /gbevaa/ sid_8,obs_8(13,255),qms_8(12,255),bak_8(12,255),
    559  $ xob,yob,dhr,typ,nlev
    560  COMMON /gbevbb/ pvcd,vtcd
    561  COMMON /gbevcc/ dovtmp,dofcst,some_fcst,doberr,fcst,virt,
    562  $ qtop_rej,satmqc,adpupa_virt,recalc_q,doprev,dopmsl
    563  COMMON /gbevdd/ errs(300,33,6)
    564  COMMON /gbevff/ bmiss
    565 
    566  SAVE
    567 
    568  DATA ifirst/0/
    569 
    570  DATA headr /
    571  $ 'SID XOB YOB DHR TYP '/
    572  DATA obstr /
    573  $ 'POB QOB TOB ZOB UOB VOB PWO PW1O PW2O PW3O PW4O CAT PRSS '/
    574  DATA qmstr /
    575  $ 'PQM QQM TQM ZQM WQM PWQ PW1Q PW2Q PW3Q PW4Q NUL NUL '/
    576  DATA fcstr /
    577  $ 'PFC QFC TFC ZFC UFC VFC PWF PW1F PW2F PW3F PW4F NUL '/
    578  DATA anstr /
    579  $ 'PAN QAN TAN ZAN UAN VAN PWA PW1A PW2A PW3A PW4A NUL '/
    580  DATA oestr /
    581  $ 'POE QOE TOE ZOE WOE PWE PW1E PW2E PW3E PW4E NUL NUL '/
    582 
    583  namelist /prevdata/dovtmp,dofcst,some_fcst,doberr,doanls,
    584  $ qtop_rej,satmqc,adpupa_virt,recalc_q,doprev,dopmsl
    585 
    586 C----------------------------------------------------------------------
    587 C----------------------------------------------------------------------
    588 
    589  IF(ifirst.EQ.0) THEN
    590 
    591 C -------------------------------
    592 C FIRST TIME IN DO A FEW THINGS...
    593 C -------------------------------
    594 
    595  ifirst = 1
    596  print 700
    597  700 FORMAT(/1x,100('#')/' =====> SUBROUTINE GBLEVENTS INVOKED FOR ',
    598  $ 'THE FIRST TIME - VERSION LAST UPDATED 2017-02-22'/)
    599 
    600  bmiss = getbmiss()
    601  print *
    602  print *, 'BUFRLIB value for missing passed into GBLEVENTS ',
    603  $ 'is: ',bmiss
    604  print *
    605 
    606 C INITIALIZE NAMELIST SWITCHES TO DEFAULT VALUES
    607 C ----------------------------------------------
    608 
    609  dovtmp = .true.
    610  doprev = .true.
    611  recalc_q = .true.
    612  dofcst = .true.
    613  some_fcst = .true.
    614  doberr = .true.
    615  doanls = .false.
    616  qtop_rej = 300.
    617  satmqc = .false.
    618  adpupa_virt = .false.
    619  dopmsl = .false.
    620  READ(5,prevdata,err=101,end=102)
    621  GO TO 103
    622 C-----------------------------------------------------------------------
    623  101 CONTINUE
    624 
    625 C ERROR READING STANDARD INPUT - THIS DEFAULTS TO POSTEVENTS MODE
    626 C ---------------------------------------------------------------
    627 
    628  print 7013
    629  7013 FORMAT(/' ##> GBLEVENTS: ERROR READING STANDARD INPUT DATA CARDS',
    630  $ ' -- DEFAULTS TO "POSTEVENTS" MODE'/)
    631  doanls = .true.
    632  GO TO 103
    633 
    634 C-----------------------------------------------------------------------
    635  102 CONTINUE
    636 
    637 C STANDARD INPUT IS EMPTY - THIS DEFAULTS TO POSTEVENTS MODE
    638 C ----------------------------------------------------------
    639 
    640  print 7014
    641  7014 FORMAT(/' ##> GBLEVENTS: STANDARD INPUT DATA CARDS DO NOT ',
    642  $ 'EXIST -- DEFAULTS TO "POSTEVENTS" MODE'/)
    643  doanls = .true.
    644 
    645 C-----------------------------------------------------------------------
    646  103 CONTINUE
    647  IF(doanls) THEN
    648  dovtmp = .false.
    649  doprev = .false.
    650  dofcst = .false.
    651  some_fcst = .false.
    652  doberr = .false.
    653  adpupa_virt = .false.
    654  dopmsl = .false.
    655  ENDIF
    656  IF(dovtmp) recalc_q=.true. ! RECALC_Q must be T if DOVTMP is T
    657  WRITE (6,prevdata)
    658 
    659  fcst = dofcst
    660  virt = .false.
    661 
    662 C CHECK VALID-TIME DATE OF GUESS/ANALYSIS FILE(S) AGAINST THE CENTER
    663 C DATE FOR THE PREPBUFR FILE AND OBTAIN THE FIRST GUESS/ANALYSIS
    664 C UNLESS ALL OF DOFCST, SOME_FCST, DOANLS ARE FALSE
    665 C ------------------------------------------------------------------
    666 
    667  IF(.NOT.doanls) THEN
    668  IF(.NOT.dofcst.AND..NOT.some_fcst) THEN
    669  print 901
    670  901 FORMAT(/' --> GBLEVENTS: PREVENTS MODE - FIRST GUESS NOT READ ',
    671  $ 'IN'/)
    672  ELSE
    673  print 701
    674  701 FORMAT(/' --> GBLEVENTS: PREVENTS MODE - DATE CHECK AND ',
    675  $ 'TRANSFORM THE FIRST GUESS'/)
    676  ENDIF
    677  ELSE
    678  print 7701
    679  7701 FORMAT(/' --> GBLEVENTS: POSTEVENTS MODE - DATE CHECK AND ',
    680  $ 'TRANSFORM THE ANALYSIS'/)
    681  ENDIF
    682 
    683  IF(dofcst .OR. some_fcst .OR. doanls) THEN
    684  WRITE(cfile1,'("fort.",I2.2)') iunitf(1)
    685 
    686  iret = nf90_open(trim(cfile1),nf90_nowrite,ncid)
    687  if (iret == 0) then
    688  print *,' ===> GFS FCST/ANAL INPUT IS NETCDF'
    689  CALL gblevn13(iunitf,idatep,im,jm,idrt)
    690  else
    691  CALL sigio_rropen(iunitf(1),cfile1,iret)
    692  CALL sigio_srhead(iunitf(1),head1,iret1)
    693  IF(iret == 0 .AND. iret1 == 0) THEN
    694  print *,' ===> GLOBAL FCST/ANAL INPUT IS SIGIO'
    695  CALL sigio_sclose(iunitf(1),iret)
    696  CALL gblevn10(iunitf,idatep,im,jm,idrt)
    697  ELSE
    698  CALL nemsio_open(gfile1,trim(cfile1),'read',iret=iret)
    699  IF(iret == 0) THEN
    700  CALL nemsio_close(gfile1,iret=iret)
    701  print *,' ===> GFS FCST/ANAL INPUT IS NEMSIO'
    702  CALL gblevn12(iunitf,idatep,im,jm,idrt)
    703  ENDIF
    704  ENDIF
    705  ENDIF
    706  ENDIF
    707 
    708  print*,'after returning from GBLEVN10, GBLEVN12,',
    709  $ ' or GBLEVN13. idrt=',idrt
    710 
    711  IF(doberr) THEN
    712 
    713 C IF REQUESTED, READ ERROR FILES (ONLY POSSIBLE IN PREVENTS MODE)
    714 C ---------------------------------------------------------------
    715 
    716  print 702
    717  702 FORMAT(/' --> GBLEVENTS: READ ERROR FILES'/)
    718 
    719  CALL gblevn01(iunite)
    720 
    721  ELSE
    722 
    723  errs = 0
    724  IF(.NOT.doanls) print 3702
    725  3702 FORMAT(/' --> GBLEVENTS: OBS. ERROR NOT ENCODED IN PREPBUFR ',
    726  $ '(BY CHOICE)'/)
    727 
    728  ENDIF
    729 
    730 C OBTAIN NECESSARY PROGRAM CODES (ONLY USED IN PREVENTS MODE)
    731 C -----------------------------------------------------------
    732 
    733  CALL ufbqcd(iunitp,'PREVENT',pvcd)
    734  CALL ufbqcd(iunitp,'VIRTMP ',vtcd)
    735 
    736  print 703
    737  703 FORMAT(/1x,100('#')/)
    738 
    739 C SET-UP OUTPUT "PREVENT" EVENTS DATA FILTERING SUMMARY PRINT FILE
    740 C (ONLY USED IN PREVENTS MODE)
    741 C ----------------------------------------------------------------
    742 
    743  IF(.NOT.doanls) WRITE(iunits,1701) idatep
    744  1701 FORMAT(//130('#')//38x,'*** "PREVENT" EVENTS DATA FILTERING ',
    745  $ 'SUMMARY ***'/35x,'--> CENTER DATE FOR PREPBUFR FILE IS: ',i10,
    746  $ ' <--'//)
    747 
    748 C----------------------------------------------------------------------
    749 C----------------------------------------------------------------------
    750 
    751  ENDIF
    752 
    753  IF(.NOT.doanls) THEN
    754 
    755  IF(newtyp.EQ.1) WRITE(iunits,1702) subset
    756  1702 FORMAT(130('-')/39x,'--> SUMMARY FOR TABLE A ENTRY "',a8,'" <--'/)
    757 
    758  IF(.NOT.dofcst .AND. some_fcst) fcst = (subset.EQ.'ADPUPA '
    759  $ .OR.subset.EQ.'PROFLR '.OR.subset .EQ.'AIRCFT '.OR.subset
    760  $ .EQ.'AIRCAR '.OR.subset .EQ.'VADWND ')
    761 
    762 C Will not subject ACARS reports to virtual temp. processing until
    763 C spec. humidity is used in production
    764 
    765 ccccc VIRT = (SUBSET.EQ.'ADPSFC '.OR.SUBSET.EQ.'SFCSHP '.OR.
    766 ccccc$ SUBSET.EQ.'MSONET '.OR.SUBSET.EQ.'AIRCAR '.OR.
    767 ccccc$ SUBSET.EQ.'RASSDA '.OR.SUBSET.EQ.'SATEMP '.OR.
    768 ccccc$ (SUBSET.EQ.'ADPUPA '.AND.ADPUPA_VIRT))
    769  virt = (recalc_q.AND.(subset.EQ.'ADPSFC '.OR.
    770  $ subset.EQ.'SFCSHP '.OR.
    771  $ subset.EQ.'MSONET '.OR.
    772  $ subset.EQ.'RASSDA '.OR.
    773  $ subset.EQ.'SATEMP '.OR.
    774  $ (subset.EQ.'ADPUPA '.AND.adpupa_virt)))
    775 
    776 
    777  IF(.NOT.(fcst.OR.doberr.OR.virt.OR.doprev)) THEN
    778  IF(newtyp.EQ.1) WRITE(iunits,1703)
    779  1703 FORMAT(/' ==> DATA FILTERING NOT PERFORMED FOR THIS TABLE A ',
    780  $ 'ENTRY -- FORECAST, OBS ERROR, "VIRTMP", "PREVENT" PROCESSING ',
    781  $ 'NOT DONE'/)
    782  RETURN
    783  ENDIF
    784 
    785  ENDIF
    786 
    787 C READY TO RETRIEVE NECESSARY INFORMATION OUT OF THE NEXT REPORT WHICH
    788 C HAS BEEN "UFB" ENCODED INTO THE PREPBUFR FILE BY THE CALLING PROGRAM
    789 C (USE NEGATIVE UNIT NUMBER HERE SINCE FILE OPEN FOR OUTPUT)
    790 C (NOTE: THE CALLING PROGRAM HAS NOT YET WRIITEN THE REPORT INTO
    791 C THE PREPBUFR FILE VIA WRITSB!)
    792 C ----------------------------------------------------------------
    793 
    794  CALL ufbint(-iunitp,obs_8,13,255,nlev,obstr)
    795  CALL ufbint(-iunitp,qms_8,12,255,nlev,qmstr)
    796  CALL ufbint(-iunitp,hdr_8,10, 1,iret,headr)
    797  sid_8 = hdr_8(1)
    798  xob = hdr_8(2)
    799  yob = hdr_8(3)
    800  dhr = hdr_8(4)
    801  typ = hdr_8(5)
    802 
    803  IF(fcst.OR.doanls) THEN
    804 
    805 C PREVENTS MODE: ENCODE FIRST GUESS VALUES INTO PREPBUFR FILE
    806 C ------------------------------------------------------------
    807 
    808 C POSTEVENTS MODE: ENCODE ANALYSIS VALUES INTO REPORT AND RETURN TO
    809 C CALLING PROGRAM TO WRITE GBL-EVENTED REPORT
    810 C (SUBSET) INTO PREPBUFR FILE
    811 C -----------------------------------------------------------------
    812 
    813  CALL gblevn03(subset)
    814  IF(nlev.GT.0) THEN
    815  IF(fcst) THEN
    816  CALL ufbint(iunitp,bak_8,12,nlev,iret,fcstr)
    817  ELSE
    818  CALL ufbint(iunitp,bak_8,12,nlev,iret,anstr)
    819  RETURN
    820  ENDIF
    821  ENDIF
    822  ENDIF
    823 
    824 C --------------------------------------------------------------------
    825 C LOGIC FROM HERE ON PERTAINS ONLY TO PREVENTS MODE OF THIS SUBROUTINE
    826 C --------------------------------------------------------------------
    827 
    828 C ENCODE OBSERVATION ERRORS INTO REPORT
    829 C -------------------------------------
    830 
    831  IF(doberr) THEN
    832  IF(newtyp.EQ.1) WRITE(iunits,1710)
    833  1710 FORMAT(/' ==> OBS ERROR VALUES ARE ENCODED FOR THIS TABLE A ',
    834  $ 'ENTRY'//' ==> FILTERING VIA MISSING OBS ERROR TEST IS ',
    835  $ 'PERFORMED FOR THIS TABLE A ENTRY SINCE OBS ERROR VALUES ARE ',
    836  $ 'PROCESSED/STORED'/)
    837  CALL gblevn04
    838  IF(nlev.GT.0) CALL ufbint(iunitp,bak_8,12,nlev,iret,oestr)
    839  ELSE
    840  IF(newtyp.EQ.1) WRITE(iunits,1705)
    841  1705 FORMAT(/' ==> OBS ERROR VALUES NOT ENCODED FOR THIS TABLE A ',
    842  $ 'ENTRY'//' ==> FILTERING VIA MISSING OBS ERROR TEST NOT ',
    843  $ 'PERFORMED FOR THIS TABLE A ENTRY SINCE OBS ERROR VALUES NOT ',
    844  $ 'PROCESSED/STORED'/)
    845  ENDIF
    846 
    847 C MAKE THE GBLEVENTS EVENTS AND ENCODE INTO REPORT
    848 C ------------------------------------------------
    849 
    850  IF(.NOT.fcst) THEN
    851  IF(newtyp.EQ.1) WRITE(iunits,1704)
    852  1704 FORMAT(/' ==> FORECAST VALUES NOT ENCODED FOR THIS TABLE A ',
    853  $ 'ENTRY'//' ==> FILTERING VIA POB VS. GESS PSFC TEST NOT ',
    854  $ 'PERFORMED FOR THIS TABLE A ENTRY SINCE FORECAST VALUES NOT ',
    855  $ 'PROCESSED/STORED'/)
    856  ELSE
    857  IF(newtyp.EQ.1) WRITE(iunits,1708)
    858  1708 FORMAT(/' ==> FORECAST VALUES ARE ENCODED FOR THIS TABLE A ',
    859  $ 'ENTRY'//' ==> FILTERING VIA POB VS. GESS PSFC TEST IS ',
    860  $ 'PERFORMED FOR THIS TABLE A ENTRY SINCE FORECAST VALUES ARE ',
    861  $ 'PROCESSED/STORED'/)
    862  ENDIF
    863 
    864  IF(doprev) THEN
    865  IF(newtyp.EQ.1) WRITE(iunits,1807)
    866  1807 FORMAT(/' ==> "PREVENT" EVENT PROCESSING IS PERFORMED FOR THIS',
    867  $ ' TABLE A ENTRY'/)
    868  CALL gblevn02(iunitp,iunits,newtyp,subset)
    869  ELSE
    870  IF(newtyp.EQ.1) WRITE(iunits,1806)
    871  1806 FORMAT(/' ==> "PREVENT" EVENT PROCESSING NOT PERFORMED FOR THIS',
    872  $ ' TABLE A ENTRY'/)
    873  ENDIF
    874 
    875 C MAKE THE VIRTUAL TEMPERATURE EVENTS AND ENCODE INTO REPORT
    876 C ----------------------------------------------------------
    877 
    878  IF(.NOT.virt) THEN
    879  IF(newtyp.EQ.1) WRITE(iunits,1706)
    880  1706 FORMAT(/' ==> "VIRTMP" EVENT PROCESSING NOT PERFORMED FOR THIS ',
    881  $ 'TABLE A ENTRY'/)
    882  ELSE
    883  IF(newtyp.EQ.1) WRITE(iunits,1707)
    884  1707 FORMAT(/' ==> "VIRTMP" EVENT PROCESSING IS PERFORMED FOR THIS ',
    885  $ 'TABLE A ENTRY'/)
    886  CALL gblevn08(iunitp,subset)
    887  ENDIF
    888 
    889 C RETURN TO CALLING PROGRAM TO WRITE GBL-EVENTED REPORT (SUBSET) INTO
    890 C PREPBUFR FILE
    891 C -------------------------------------------------------------------
    892 
    893  RETURN
    894 
    895  END
    896 C***********************************************************************
    897 C***********************************************************************
    898 C> Read observation error table
    899 C> @param IUNITE - UNIT NUMBER OF INPUT OBSERVATION ERROR FILE (USED ONLY IN PREVENTS MODE)
    900  SUBROUTINE gblevn01(IUNITE) ! FORMERLY SUBROUTINE ETABLE
    902  COMMON /gbevdd/ errs(300,33,6)
    903 
    904 C READ THE OBSERVATION ERROR TABLES
    905 C ---------------------------------
    906 
    907  rewind iunite
    908 
    909  irec = 0
    910 
    911  10 CONTINUE
    912  READ(iunite,'(1X,I3)',end=100) kx
    913  irec = irec + 1
    914  DO k=1,33
    915  READ(iunite,'(1X,6E12.5)') (errs(kx,k,m),m=1,6)
    916  ENDDO
    917  GO TO 10
    918 
    919  100 CONTINUE
    920  IF(irec.LE.0) THEN
    921  print'(" ##GBLEVENTS/GBLEVN01 - OBS. ERROR TABLE EMPTY OR ",
    922  $ "DOES NOT EXIST - STOP 60")'
    923  CALL errexit(60)
    924  ENDIF
    925 
    926  RETURN
    927 
    928  END
    929 C***********************************************************************
    930 C***********************************************************************
    931 C> Filter data
    932 C> @param IUNITP - UNIT NUMBER OF OUTPUT PREPBUFR DATA SET
    933 C> @param IUNITS - UNIT NUMBER OF "PREVENT" EVENTS DATA FILTERING
    934 C> - SUMMARY PRINT FILE
    935 C> - (USED ONLY IN PREVENTS MODE)
    936 C> @param SUBSET - THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
    937 C> - REPORT BEING PROCESSED
    938 C> @param NEWTYP - INDICATOR IF THE BUFR MESSAGE TABLE A ENTRY HAS
    939 C> - CHANGED FROM THAT OF THE PREVIOUS REPORT (=0 - NO,
    940 C> - =1 - YES)
    941 C>
    942  SUBROUTINE gblevn02(IUNITP,IUNITS,NEWTYP,subset)
    943  ! FORMERLY SUBROUTINE FILTAN
    944 
    945  dimension nflgrt(100:299,12),oemin(2:6)
    946  CHARACTER*8 STNID,subset
    947  CHARACTER*40 PEVN,QEVN,TEVN,WEVN,PWVN,PW1VN,PW2VN,PW3VN,PW4VN
    948  REAL(8) PEV_8(4,255),QEV_8(4,255),TEV_8(4,255),WEV_8(5,255),
    949  $ pwv_8(4,255),pw1v_8(4,255),pw2v_8(4,255),
    950  $ pw3v_8(4,255),pw4v_8(4,255),obs_8,qms_8,bak_8,sid_8,
    951  $ ufc_8,vfc_8
    952  LOGICAL FCST,REJP_PS,REJPS,REJT,REJQ,REJW,REJPW,REJPW1,
    953  $ rejpw2,rejpw3,rejpw4,satmqc,satemp,soln60,sols60,
    954  $ moerr_p,moerr_t,adpupa_virt,doberr,dofcst,some_fcst,
    955  $ dovtmp,virt,recalc_q,doprev
    956  REAL(8) BMISS
    957 
    958  COMMON /gbevaa/ sid_8,obs_8(13,255),qms_8(12,255),bak_8(12,255),
    959  $ xob,yob,dhr,typ,nlev
    960  COMMON /gbevbb/ pvcd,vtcd
    961  COMMON /gbevcc/ dovtmp,dofcst,some_fcst,doberr,fcst,virt,
    962  $ qtop_rej,satmqc,adpupa_virt,recalc_q,doprev,dopmsl
    963  COMMON /gbevee/psg01,zsg01,tg01(500),ug01(500),vg01(500),
    964  x qg01(500),zint(500),pint(500),pintlog(500),plev(500),
    965  x plevlog(500)
    966  COMMON /gbevff/ bmiss
    967 
    968  equivalence(sid_8,stnid)
    969 
    970  DATA pevn /'POB PQM PPC PRC '/
    971  DATA qevn /'QOB QQM QPC QRC '/
    972  DATA tevn /'TOB TQM TPC TRC '/
    973  DATA wevn /'UOB VOB WQM WPC WRC '/
    974  DATA pwvn /'PWO PWQ PWP PWR '/
    975  DATA pw1vn /'PW1O PW1Q PW1P PW1R '/
    976  DATA pw2vn /'PW2O PW2Q PW2P PW2R '/
    977  DATA pw3vn /'PW3O PW3Q PW3P PW3R '/
    978  DATA pw4vn /'PW4O PW4Q PW4P PW4R '/
    979 
    980  DATA nflgrt/2400*0/
    981 
    982  DATA oemin /0.5,0.1,1.0,0.5,1.0/
    983 
    984  ni = mod((nint(typ)/10),10)
    985 
    986  IF(newtyp.EQ.1) nflgrt = 0
    987 
    988 C LOGICAL SWITCHES FOR OBSERVATION LOCATION FILTERING
    989 C ---------------------------------------------------
    990 
    991  satemp = ((typ.GE.160.AND.typ.LE.179).AND.satmqc)
    992  soln60 = ((typ.GE.160.AND.typ.LE.163).AND.yob.GE.-60.AND.satmqc)
    993  sols60 = ((typ.EQ.160.OR.typ.EQ.162.OR.typ.EQ.163).AND.yob.LT.-60
    994  $ .AND.satmqc)
    995 
    996 C CLEAR THE EVENT ARRAYS
    997 C ----------------------
    998 
    999  pev_8 = bmiss
    1000  qev_8 = bmiss
    1001  tev_8 = bmiss
    1002  wev_8 = bmiss
    1003  pwv_8 = bmiss
    1004  pw1v_8 = bmiss
    1005  pw2v_8 = bmiss
    1006  pw3v_8 = bmiss
    1007  pw4v_8 = bmiss
    1008 
    1009  maxpev = 0
    1010  maxqev = 0
    1011  maxtev = 0
    1012  maxwev = 0
    1013  maxpwv = 0
    1014  maxpw1v = 0
    1015  maxpw2v = 0
    1016  maxpw3v = 0
    1017  maxpw4v = 0
    1018 
    1019 C LOOP OVER LEVELS APPLYING UNDERGROUND FILTERING AND SPECIAL RULES
    1020 C -----------------------------------------------------------------
    1021 
    1022  IF(nlev.GT.0) THEN
    1023  DO l=1,nlev
    1024 
    1025  pob = obs_8( 1,l)
    1026  qob = obs_8( 2,l)
    1027  tob = obs_8( 3,l)
    1028  uob = obs_8( 5,l)
    1029  vob = obs_8( 6,l)
    1030  pwo = obs_8( 7,l)
    1031  pw1o = obs_8( 8,l)
    1032  pw2o = obs_8( 9,l)
    1033  pw3o = obs_8(10,l)
    1034  pw4o = obs_8(11,l)
    1035  cat = obs_8(12,l)
    1036  prss = obs_8(13,l)
    1037 
    1038  pqm = qms_8( 1,l)
    1039  qqm = qms_8( 2,l)
    1040  tqm = qms_8( 3,l)
    1041  zqm = qms_8( 4,l)
    1042  wqm = qms_8( 5,l)
    1043  pwq = qms_8( 6,l)
    1044  pw1q = qms_8( 7,l)
    1045  pw2q = qms_8( 8,l)
    1046  pw3q = qms_8( 9,l)
    1047  pw4q = qms_8(10,l)
    1048 
    1049  rejp_ps = .false.
    1050  moerr_p = .false.
    1051  moerr_t = .false.
    1052  rcd = 99999
    1053 
    1054 C -------------------------------------------------------------------
    1055 C RULES FOR PRESSURE (ON ANY LEVEL) -- ALL DATA (MASS AND WIND) ON
    1056 C LEVEL REJECTED IF:
    1057 C - PRESSURE MORE THAN 100 MB BELOW MODEL (GUESS) SURFACE PRESSURE
    1058 C (AND SWITCH FCST=TRUE) -- "PREVENT" PGM REASON CODE 1
    1059 C - PRESSURE IS ZERO OR IS NEGATIVE -- "PREVENT" PGM REASON CODE 2
    1060 C - SURFACE (MASS OR WIND) REPORT PRESSURE IS REPORTED ABOVE 450 MB
    1061 C OR BELOW 1100 MB -- "PREVENT" PGM REASON CODE 2
    1062 C REJECTION MEANS Q.M. SET TO 8
    1063 C -------------------------------------------------------------------
    1064 
    1065  IF(pob.LT.bmiss) THEN
    1066  IF(.NOT.fcst) psg01 = pob
    1067  IF(pob-psg01.GE.100. .OR. pob.LE.0. .OR.
    1068  $ ((pob.LE.450..OR.pob.GE.1100.) .AND. ni.EQ.8)) THEN
    1069  IF(pob.LE.0..OR.pob.LE.450..OR.pob.GE.1100.) THEN
    1070  IF(ni.EQ.8) THEN
    1071  WRITE(iunits,302) stnid,nint(typ),yob,xob,pob
    1072  302 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1073  $ 'E, REJECT ALL DATA ON SFC LVL - POB=',f6.1,' MB, FAILS SANITY ',
    1074  $ 'CHECK')
    1075  ELSE
    1076  WRITE(iunits,101) stnid,nint(typ),yob,xob,pob
    1077  101 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1078  $'E, REJECT ALL DATA ON LVL - POB=',f6.1,' MB, FAILS SANITY CHECK')
    1079  ENDIF
    1080  rcd = 2
    1081  ELSE
    1082  IF(ni.EQ.8) THEN
    1083  WRITE(iunits,303) stnid,nint(typ),yob,xob,pob,psg01
    1084  303 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1085  $ 'E, REJECT ALL DATA ON SFC LVL - POB=',f6.1,' MB, > 100 MB ',
    1086  $ 'BELOW GES PSFC(=',f6.1,'MB)')
    1087  ELSE
    1088  WRITE(iunits,102) stnid,nint(typ),yob,xob,pob,psg01
    1089  102 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1090  $ 'E, REJECT ALL DATA ON LVL - POB=',f6.1,' MB, > 100 MB BELOW ',
    1091  $ 'GES PSFC(=',f6.1,' MB)')
    1092  ENDIF
    1093  rcd = 1
    1094  ENDIF
    1095  rej = 8
    1096  rejp_ps = .true.
    1097  pev_8(1,l) = pob
    1098  pev_8(2,l) = rej
    1099  pev_8(3,l) = pvcd
    1100  pev_8(4,l) = rcd
    1101  maxpev = l
    1102  ENDIF
    1103  ENDIF
    1104 
    1105 C -------------------------------------------------------------------
    1106 C RULES FOR SURFACE PRESSURE -- ALL MASS DATA ON SURFACE LEVEL
    1107 C REJECTED IF:
    1108 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1109 C "PREVENT" PGM REASON CODE 3
    1110 C - PRESSURE IS MORE THAN 100 MB ABOVE OR BELOW MODEL (GUESS)
    1111 C SURFACE PRESSURE (AND SWITCH FCST=TRUE) --
    1112 C "PREVENT" PGM REASON CODE 4
    1113 C - PRESSURE IS REPORTED ABOVE 450 MB OR BELOW 1100 MB -- "PREVENT"
    1114 C PGM REASON CODE 2 (NOTE: DOES NOT APPLY TO SURFACE REPORTS,
    1115 C THESE WERE TESTED FOR THIS CRITERION IN ABOVE PRESSURE TEST)
    1116 C - PRESSURE VIOLATES RULES FOR PRESSURE ON ANY LEVEL (SEE ABOVE)
    1117 C REJECTION FOR FIRST RULE MEANS Q.M. SET TO 9 UNLESS:
    1118 C - ANY OTHER RULE CAUSES REJECTION, THEN Q.M. SET TO 8
    1119 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1120 C AS IS
    1121 C -------------------------------------------------------------------
    1122 
    1123  IF(pob.LT.bmiss .AND. cat.EQ.0) THEN
    1124  IF(.NOT.fcst) psg01 = pob
    1125  rejps = oefg01(pob,typ,5,oemin(5)).GE.bmiss .OR.
    1126  $ abs(pob-psg01).GE.100. .OR.
    1127  $ pob.LE.450. .OR.
    1128  $ pob.GE.1100.
    1129  IF(rejps.OR.rejp_ps) THEN
    1130  rej = 8
    1131  IF(.NOT.rejp_ps) THEN
    1132  IF(abs(pob-psg01).GE.100.) THEN
    1133  WRITE(iunits,104) stnid,nint(typ),yob,xob,pob,psg01
    1134  104 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1135  $ 'E, REJECT ALL DATA ON SFC LVL - POB=',f6.1,' MB, > 100 MB ',
    1136  $ 'ABOVE GES PSFC(=',f6.1,'MB)')
    1137  rcd = 4
    1138  ELSE IF(pob.LE.450..OR.pob.GE.1100.) THEN
    1139  WRITE(iunits,105) stnid,nint(typ),yob,xob,pob
    1140  105 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1141  $ 'E, REJECT ALL DATA ON SFC LVL - POB=',f6.1,' MB, FAILS SANITY ',
    1142  $ 'CHECK - this should never be printed since test now made in ',
    1143  $ 'section above ')
    1144  rcd = 2
    1145  ELSE
    1146  IF(nflgrt(nint(typ),1).EQ.0) THEN
    1147  WRITE(iunits,201) nint(typ)
    1148  201 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1149  $ 'ALL DATA ON SURFACE LEVEL DUE TO MISSING SFC-P OBS ERROR'/)
    1150  nflgrt(nint(typ),1) = 1
    1151  ENDIF
    1152 CDAK CDAK CDAK CDAK WRITE(IUNITS,103) STNID,NINT(TYP),YOB,XOB,POB
    1153 CD103 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1154 CDAK $ 'E, REJECT ALL DATA ON SFC LVL - POB=',F6.1,'MB, MISSING OBS.',
    1155 CDAK $ ' ERROR')
    1156  rcd = 3
    1157  rej = 9
    1158  ENDIF
    1159  ENDIF
    1160  rejp_ps = .true.
    1161  IF(rcd.EQ.3) moerr_p = .true.
    1162  IF(rej.EQ.9.AND.(pqm.GT.3.AND.pqm.LT.15)) THEN
    1163 CDAKCDAKCDAKCDAK WRITE(IUNITS,1401) STNID,NINT(TYP),YOB,XOB,PQM
    1164  1401 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1165  $ 'E, INPUT PQM =',f4.0,' -- DO NOT APPLY PSFC QM=9 EVENT')
    1166  ELSE
    1167  pev_8(1,l) = pob
    1168  pev_8(2,l) = rej
    1169  pev_8(3,l) = pvcd
    1170  pev_8(4,l) = rcd
    1171  maxpev = l
    1172  ENDIF
    1173  ENDIF
    1174  ENDIF
    1175 
    1176 C -------------------------------------------------------------------
    1177 C RULES FOR TEMPERATURE -- TOB AND QOB ON LEVEL REJECTED IF:
    1178 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1179 C "PREVENT" PGM REASON CODE 3
    1180 C - THIS IS SFC LEVEL AND OBSERVATION ERROR FOR SFC PRESSURE IS
    1181 C MISSING (AND SWITCH DOBERR=TRUE) -- "PREVENT" PGM REASON CODE 3
    1182 C - REPORT IS TYPE 160-163 (LAND TOVS/RTOVS/ATOVS TEMPERATURE
    1183 C SOUNDINGS, ALL PATHS), AND IS AT OR NORTH OF 60 DEGREES SOUTH
    1184 C LATITUDE, AND PRESSURE ON LEVEL IS AT OR BELOW 100 MB (AND
    1185 C SWITCH SATMQC=TRUE) -- "PREVENT" PGM REASON CODE 6
    1186 C - REPORT IS TYPE 160,162,163 (LAND TOVS/RTOVS/ATOVS TEMPERATURE
    1187 C SOUNDINGS, ALL PATHS BUT CLEAR), AND IS SOUTH OF 60 DEGREES
    1188 C SOUTH LATITUDE, AND PRESSURE ON LEVEL IS BELOW 100 MB (AND
    1189 C SWITCH SATMQC=TRUE) -- "PREVENT" PGM REASON CODE 6
    1190 C - THIS IS SFC LEVEL AND PRESSURE VIOLATES RULES FOR SFC PRESSURE
    1191 C (EXCEPT FOR MISSING OBSERVATION ERROR, ALREADY COVERED IN RULE
    1192 C 2 ABOVE) (SEE ABOVE)
    1193 C - PRESSURE ON LEVEL VIOLATES RULES FOR PRESSURE (SEE ABOVE)
    1194 C REJECTION FOR FIRST TWO RULES MEANS Q.M. SET TO 9 UNLESS:
    1195 C - ANY OTHER RULE CAUSES REJECTION, THEN Q.M. SET TO 8
    1196 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1197 C AS IS
    1198 C -------------------------------------------------------------------
    1199 
    1200  IF(tob.LT.bmiss) THEN
    1201  rejt = oefg01(pob,typ,2,oemin(2)).GE.bmiss .OR.
    1202  $ (soln60.AND.nint(pob*10.).GE.1000) .OR.
    1203  $ (sols60.AND.nint(pob*10.).GT.1000)
    1204  IF(rejt.OR.rejp_ps) THEN
    1205  rej = 8
    1206  IF(.NOT.rejp_ps) THEN
    1207  IF(soln60.AND.nint(pob*10.).GE.1000) THEN
    1208  IF(nflgrt(nint(typ),6).EQ.0) THEN
    1209  WRITE(iunits,7304) nint(typ)
    1210  7304 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1211  $'TOB/QOB AT AND BELOW 100 MB IF REPORT IS NORTH OF 60S LATITUDE'/)
    1212  nflgrt(nint(typ),6) = 1
    1213  ENDIF
    1214  rcd = 6
    1215  ELSE IF(sols60.AND.nint(pob*10.).GT.1000) THEN
    1216  IF(nflgrt(nint(typ),7).EQ.0) THEN
    1217  WRITE(iunits,7305) nint(typ)
    1218  7305 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1219  $ 'TOB/QOB BELOW 100 MB IF REPORT IS SOUTH OF 60S LATITUDE'/)
    1220  nflgrt(nint(typ),7) = 1
    1221  ENDIF
    1222  rcd = 6
    1223  ELSE
    1224  IF(nflgrt(nint(typ),2).EQ.0) THEN
    1225  IF(ni.EQ.8) THEN
    1226  WRITE(iunits,304) nint(typ)
    1227  304 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1228  $ 'TOB/QOB ON SFC LVL DUE TO MISSING OBS ERROR'/)
    1229  ELSE
    1230  WRITE(iunits,202) nint(typ)
    1231  202 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1232  $ 'TOB/QOB ON AT LEAST ONE LVL (IF AVAILABLE ON THAT LVL) DUE TO ',
    1233  $ 'MISSING OBS ERROR'/)
    1234  ENDIF
    1235  nflgrt(nint(typ),2) = 1
    1236 cdak cdak cdak cdak cdakWRITE(IUNITS,106) STNID,NINT(TYP),YOB,XOB,TOB
    1237 cd106 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1238 cdak $ 'E, REJECT TOB/QOB ON LVL - TOB=',F5.1,'C, MISSING OBS. ERROR')
    1239  ENDIF
    1240  rcd = 3
    1241  rej = 9
    1242  ENDIF
    1243  ELSE
    1244  IF(moerr_p) THEN
    1245  rcd = 3
    1246  rej = 9
    1247  ENDIF
    1248  ENDIF
    1249  IF(rcd.EQ.3) moerr_t = .true.
    1250  IF(rej.EQ.9.AND.(tqm.GT.3.AND.tqm.LT.15)) THEN
    1251 CDAKCDAKCDAKCDAK WRITE(IUNITS,1402) STNID,NINT(TYP),YOB,XOB,TQM
    1252  1402 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1253  $ 'E, INPUT TQM =',f4.0,' -- DO NOT APPLY TEMP QM=9 EVENT')
    1254  ELSE
    1255  tev_8(1,l) = tob
    1256  tev_8(2,l) = rej
    1257  tev_8(3,l) = pvcd
    1258  tev_8(4,l) = rcd
    1259  maxtev = l
    1260  ENDIF
    1261  ENDIF
    1262  ENDIF
    1263 
    1264 C -------------------------------------------------------------------
    1265 C RULES FOR SPECIFIC HUMIDITY -- QOB ON LEVEL REJECTED IF:
    1266 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1267 C "PREVENT" PGM REASON CODE 3
    1268 C - PRESSURE ON LEVEL IS ABOVE "QTOP_REJ" MB {WHERE QTOP_REJ IS
    1269 C READ IN FROM NAMELIST "PREVDATA" (SEE DOCBLOCK)} -- "PREVENT"
    1270 C PGM REASON CODE 5
    1271 C - OBSERVATION ERROR FOR TEMPERATURE ON LEVEL IS MISSING (AND
    1272 C SWITCH DOBERR=TRUE) -- "PREVENT" PGM REASON CODE 3
    1273 C - THIS IS SFC LEVEL AND OBSERVATION ERROR FOR SFC PRESSURE IS
    1274 C MISSING (AND SWITCH DOBERR=TRUE) -- "PREVENT" PGM REASON CODE 3
    1275 C - TEMPERATURE ON LEVEL IS MISSING OR IS LESS THAN -150 DEG. C --
    1276 C "PREVENT" PGM REASON CODE 2
    1277 C - SPECIFIC HUMIDITY IS ZERO OR IS NEGATIVE -- "PREVENT" PGM REASON
    1278 C CODE 2
    1279 C - REPORT IS TYPE 160-179 (SATELLITE TEMPERATURE SOUNDINGS, ALL
    1280 C TYPES, ALL PATHS, LAND AND SEA), ALL PRESSURE LEVELS (AND
    1281 C SWITCH SATMQC=TRUE) -- "PREVENT" PGM REASON CODE 7
    1282 C - TEMPERATURE ON LEVEL VIOLATES RULES FOR TEMPERATURE (EXCEPT FOR
    1283 C MISSING OBSERVATION ERROR, ALREADY COVERED IN RULE 2 ABOVE)
    1284 C (SEE ABOVE)
    1285 C - THIS IS SFC LEVEL AND PRESSURE VIOLATES RULES FOR SFC PRESSURE
    1286 C (EXCEPT FOR MISSING OBSERVATION ERROR, ALREADY COVERED IN RULE
    1287 C 4 ABOVE) (SEE ABOVE)
    1288 C - PRESSURE ON LEVEL VIOLATES RULES FOR PRESSURE (SEE ABOVE)
    1289 C REJECTION FOR FIRST FOUR RULES MEANS Q.M. SET TO 9 UNLESS:
    1290 C - ANY OTHER RULE CAUSES REJECTION, THEN Q.M. SET TO 8
    1291 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1292 C AS IS
    1293 C -------------------------------------------------------------------
    1294 
    1295  IF(qob.LT.bmiss) THEN
    1296  rejq = oefg01(pob,typ,3,oemin(3)).GE.bmiss .OR.
    1297  $ tob.GE.bmiss .OR.
    1298  $ tob.LE.-150. .OR.
    1299  $ nint(pob * 10.).LT.nint(qtop_rej * 10.) .OR.
    1300  $ qob.LE.0. .OR.
    1301  $ satemp .OR.
    1302  $ rejt
    1303  IF(rejq.OR.rejp_ps) THEN
    1304  rej = 8
    1305  IF(.NOT.rejp_ps.AND..NOT.rejt) THEN
    1306  IF(satemp) THEN
    1307  IF(nflgrt(nint(typ),8).EQ.0) THEN
    1308  WRITE(iunits,7306) nint(typ)
    1309  7306 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1310  $ 'QOB ON ALL LEVELS'/)
    1311  nflgrt(nint(typ),8) = 1
    1312  ENDIF
    1313  rcd = 7
    1314  ELSE IF(qob.LE.0..OR.tob.GE.bmiss.OR.tob.LE.-150.)THEN
    1315  WRITE(iunits,111) stnid,nint(typ),yob,xob,
    1316  $ qob/1000.,tob
    1317  111 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1318  $ 'E, REJECT QOB ON LVL - QOB=',f6.3,' G/KG, FAILS SANITY CHECK ',
    1319  $ '(TOB=',f5.1,' C)')
    1320  rcd = 2
    1321  ELSE IF(oefg01(pob,typ,3,oemin(3)).GE.bmiss) THEN
    1322  IF(nflgrt(nint(typ),3).EQ.0) THEN
    1323  IF(ni.EQ.8) THEN
    1324  WRITE(iunits,305) nint(typ)
    1325  305 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1326  $ 'QOB ON SFC LVL DUE TO MISSING OBS ERROR'/)
    1327  ELSE
    1328  WRITE(iunits,203) nint(typ)
    1329  203 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1330  $ 'QOB ON AT LEAST ONE LEVEL (IF AVAILABLE ON THAT LEVEL) DUE TO ',
    1331  $ 'MISSING OBS ERROR'/)
    1332  ENDIF
    1333  nflgrt(nint(typ),3) = 1
    1334  ENDIF
    1335  rcd = 3
    1336  rej = 9
    1337 cdak cdak cdak cdak WRITE(IUNITS,108) STNID,NINT(TYP),YOB,XOB,QOB/1000.
    1338 cd108 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1339 cdak $'E, REJECT QOB ON LVL - QOB=',F6.3,'G/KG, MISSING OBS. ERROR')
    1340  ELSE
    1341  WRITE(iunits,109) stnid,nint(typ),yob,xob,
    1342  $ qob/1000.,qtop_rej,pob
    1343  109 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1344  $ 'E, REJECT QOB ON LVL - QOB=',f6.3,' G/KG, ABOVE ',f6.1,
    1345  $ 'MB (POB=',f6.1,' MB)')
    1346  rcd = 5
    1347  rej = 9
    1348  ENDIF
    1349  ELSE
    1350  IF(moerr_p.OR.moerr_t) THEN
    1351  rcd = 3
    1352  rej = 9
    1353  ENDIF
    1354  ENDIF
    1355  IF(rej.EQ.9.AND.(qqm.GT.3.AND.qqm.LT.15)) THEN
    1356 CDAKCDAKCDAKCDAK WRITE(IUNITS,1403) STNID,NINT(TYP),YOB,XOB,QQM
    1357  1403 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1358  $ 'E, INPUT QQM =',f4.0,' -- DO NOT APPLY MSTR QM=9 EVENT')
    1359  ELSE
    1360  qev_8(1,l) = qob
    1361  qev_8(2,l) = rej
    1362  qev_8(3,l) = pvcd
    1363  qev_8(4,l) = rcd
    1364  maxqev = l
    1365  ENDIF
    1366  ENDIF
    1367  ENDIF
    1368 
    1369 C -------------------------------------------------------------------
    1370 C RULES FOR WIND -- UOB AND VOB ON LEVEL REJECTED IF:
    1371 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1372 C "PREVENT" PGM REASON CODE 3
    1373 C - THIS IS SFC LEVEL AND OBSERVATION ERROR FOR SFC PRESSURE IS
    1374 C MISSING (AND SWITCH DOBERR=TRUE) -- "PREVENT" PGM REASON CODE 3
    1375 C (Note: This can currently never happen because earlier check
    1376 C for missing obs error for sfc pressure is only done if
    1377 C "surface" level is category 0 and this is not possible
    1378 C for wind reports.)
    1379 C - THIS IS SFC LEVEL AND PRESSURE VIOLATES RULES FOR SFC PRESSURE
    1380 C (EXCEPT FOR MISSING OBSERVATION ERROR, ALREADY COVERED IN RULE
    1381 C 2 ABOVE) (SEE ABOVE)
    1382 C - This is a SFCSHP report with calm winds and non-missing
    1383 C background u- or v-component wind is .GE. 5 m/sec --
    1384 C "PREVENT" PGM REASON CODE 8, Q.M. set to 8
    1385 C - PRESSURE ON LEVEL VIOLATES RULES FOR PRESSURE (SEE ABOVE)
    1386 C REJECTION FOR FIRST TWO RULES MEANS Q.M. SET TO 9 UNLESS:
    1387 C - ANY OTHER RULE CAUSES REJECTION, THEN Q.M. SET TO 8
    1388 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1389 C AS IS
    1390 C -------------------------------------------------------------------
    1391 
    1392  IF(min(uob,vob).LT.bmiss) THEN
    1393  rejw = oefg01(pob,typ,4,oemin(4)).GE.bmiss
    1394  IF(rejw.OR.rejp_ps) THEN
    1395  rej = 8
    1396  IF(.NOT.rejp_ps) THEN
    1397  IF(nflgrt(nint(typ),4).EQ.0) THEN
    1398  IF(ni.EQ.8) THEN
    1399  WRITE(iunits,1304) nint(typ)
    1400  1304 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1401  $ 'UOB/VOB ON SFC LVL DUE TO MISSING OBS ERROR'/)
    1402  ELSE
    1403  WRITE(iunits,204) nint(typ)
    1404  204 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1405  $ 'UOB/VOB ON AT LEAST ONE LVL (IF AVAILABLE ON THAT LVL) DUE TO ',
    1406  $ 'MISSING OBS ERROR'/)
    1407  ENDIF
    1408  nflgrt(nint(typ),4) = 1
    1409  ENDIF
    1410 cdak cdak cdak WRITE(IUNITS,112) STNID,NINT(TYP),YOB,XOB
    1411 cd112 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1412 cdak $'E, REJECT UOB/VOB ON LVL - MISSING OBS. ERROR')
    1413  rcd = 3
    1414  rej = 9
    1415  ELSE
    1416  IF(moerr_p) THEN ! This currently can never be TRUE
    1417  ! since CAT is never 0 for "sfc"
    1418  ! level of wind reports
    1419  rcd = 3
    1420  rej = 9
    1421  ENDIF
    1422  ENDIF
    1423  IF(rej.EQ.9.AND.(wqm.GT.3.AND.wqm.LT.15)) THEN
    1424 CDAKCDAKCDAKCDAK WRITE(IUNITS,1404) STNID,NINT(TYP),YOB,XOB,WQM
    1425  1404 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1426  $ 'E, INPUT WQM =',f4.0,' -- DO NOT APPLY WIND QM=9 EVENT')
    1427  ELSE
    1428  wev_8(1,l) = uob
    1429  wev_8(2,l) = vob
    1430  wev_8(3,l) = rej
    1431  wev_8(4,l) = pvcd
    1432  wev_8(5,l) = rcd
    1433  maxwev = l
    1434  ENDIF
    1435  ENDIF
    1436 c Reject calm sfc marine winds if background u- or v- wind .ge. 5 m/s
    1437  if(subset.eq."SFCSHP".and.uob.eq.0..and.vob.eq.0.) then
    1438  call ufbint(-iunitp,ufc_8,1,1,iret,'UFC')
    1439  call ufbint(-iunitp,vfc_8,1,1,iret,'VFC')
    1440 cccccccc if(ibfms(ufc_8).eq.0.or.ibfms(vfc_8).eq.0) then
    1441  ! DAK: changed to only allow this test if
    1442  ! both UFC and VFC are non-missing
    1443  if(ibfms(ufc_8).eq.0.and.ibfms(vfc_8).eq.0) then
    1444  if(abs(ufc_8).ge.5..or.abs(vfc_8).ge.5.) then
    1445  if(wqm.le.3) then
    1446  write(iunits,1504) stnid,nint(typ),ufc_8,vfc_8
    1447  1504 FORMAT(/' --> ID ',a8,', (RTP ',i3,' UFC=',f5.2,' VFC=',f5.2,') ',
    1448  $ 'NEW WIND EVENT, UOB/VOB CALM (0 M/S) WHILE |UFC| AND/OR |VFC| ',
    1449  $ '>= 5 M/S, QM SET TO 8'/)
    1450  wev_8(1,1) = uob
    1451  wev_8(2,1) = vob
    1452  wev_8(3,1) = 8
    1453  wev_8(4,1) = pvcd
    1454  wev_8(5,1) = 8
    1455  maxwev = 1
    1456  end if
    1457  end if
    1458  end if
    1459  end if
    1460  ENDIF
    1461 
    1462 C -------------------------------------------------------------------
    1463 C RULES FOR TOTAL COLUMN PRECIPITABLE WATER -- PWO REJECTED IF:
    1464 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1465 C "PREVENT" PGM REASON CODE 3
    1466 C REJECTION MEANS Q.M. SET TO 9 UNLESS:
    1467 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1468 C AS IS
    1469 C -------------------------------------------------------------------
    1470 
    1471  IF(pwo.LT.bmiss) THEN
    1472  rejpw = oefg01(prss*0.01,typ,6,oemin(6)).GE.bmiss
    1473  IF(rejpw) THEN
    1474  IF(nflgrt(nint(typ),5).EQ.0) THEN
    1475  WRITE(iunits,205) nint(typ)
    1476  205 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1477  $ 'PWO DUE TO MISSING OBS ERROR'/)
    1478  nflgrt(nint(typ),5) = 1
    1479  ENDIF
    1480 cdakcdakcdak WRITE(IUNITS,113) STNID,NINT(TYP),YOB,XOB,PWO
    1481 cd113 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1482 cdak $'E, REJECT PWO ON LVL - PWO=',F5.1,'MM, MISSING OBS. ERROR')
    1483  IF(pwq.GT.3.AND.pwq.LT.15) THEN
    1484 CDAKCDAKCDAKCDAK WRITE(IUNITS,1405) STNID,NINT(TYP),YOB,XOB,PWQ
    1485  1405 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1486  $ 'E, INPUT PWQ =',f4.0,' -- DO NOT APPLY PWtO QM=9 EVENT')
    1487  ELSE
    1488  pwv_8(1,l) = pwo
    1489  pwv_8(2,l) = 9
    1490  pwv_8(3,l) = pvcd
    1491  pwv_8(4,l) = 3
    1492  maxpwv = l
    1493  ENDIF
    1494  ENDIF
    1495  ENDIF
    1496 
    1497 C -------------------------------------------------------------------
    1498 C RULES FOR LAYER 1 PRECIPITABLE WATER -- PW1O REJECTED IF:
    1499 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1500 C "PREVENT" PGM REASON CODE 3
    1501 C REJECTION MEANS Q.M. SET TO 9 UNLESS:
    1502 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1503 C AS IS
    1504 C -------------------------------------------------------------------
    1505 
    1506  IF(pw1o.LT.bmiss) THEN
    1507  rejpw1 = oefg01(prss*0.01,typ,6,oemin(6)).GE.bmiss
    1508  IF(rejpw1) THEN
    1509  IF(nflgrt(nint(typ),9).EQ.0) THEN
    1510  WRITE(iunits,206) nint(typ)
    1511  206 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1512  $ 'PW1O DUE TO MISSING OBS ERROR'/)
    1513  nflgrt(nint(typ),9) = 1
    1514  ENDIF
    1515 cdakcdakcdak WRITE(IUNITS,114) STNID,NINT(TYP),YOB,XOB,PW1O
    1516 cd114 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1517 cdak $'E, REJECT PW1O ON LVL - PW1O=',F5.1,'MM, MISSING OBS. ERROR')
    1518  IF(pw1q.GT.3.AND.pw1q.LT.15) THEN
    1519 CDAKCDAKCDAKCDAK WRITE(IUNITS,1406) STNID,NINT(TYP),YOB,XOB,PW1Q
    1520  1406 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1521  $ 'E, INPUT PW1Q =',f4.0,' -- DO NOT APPLY PW1O QM=9 EVENT')
    1522  ELSE
    1523  pw1v_8(1,l) = pw1o
    1524  pw1v_8(2,l) = 9
    1525  pw1v_8(3,l) = pvcd
    1526  pw1v_8(4,l) = 3
    1527  maxpw1v = l
    1528  ENDIF
    1529  ENDIF
    1530  ENDIF
    1531 
    1532 C -------------------------------------------------------------------
    1533 C RULES FOR LAYER 2 PRECIPITABLE WATER -- PW2O REJECTED IF:
    1534 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1535 C "PREVENT" PGM REASON CODE 3
    1536 C REJECTION MEANS Q.M. SET TO 9 UNLESS:
    1537 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1538 C AS IS
    1539 C -------------------------------------------------------------------
    1540 
    1541  IF(pw2o.LT.bmiss) THEN
    1542  rejpw2 = oefg01(prss*0.01,typ,6,oemin(6)).GE.bmiss
    1543  IF(rejpw2) THEN
    1544  IF(nflgrt(nint(typ),10).EQ.0) THEN
    1545  WRITE(iunits,207) nint(typ)
    1546  207 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1547  $ 'PW2O DUE TO MISSING OBS ERROR'/)
    1548  nflgrt(nint(typ),10) = 1
    1549  ENDIF
    1550 cdakcdakcdak WRITE(IUNITS,115) STNID,NINT(TYP),YOB,XOB,PW2O
    1551 cd115 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1552 cdak $'E, REJECT PW2O ON LVL - PW2O=',F5.1,'MM, MISSING OBS. ERROR')
    1553  IF(pw2q.GT.3.AND.pw2q.LT.15) THEN
    1554 CDAKCDAKCDAKCDAK WRITE(IUNITS,1407) STNID,NINT(TYP),YOB,XOB,PW2Q
    1555  1407 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1556  $ 'E, INPUT PW2Q =',f4.0,' -- DO NOT APPLY PW2O QM=9 EVENT')
    1557  ELSE
    1558  pw2v_8(1,l) = pw2o
    1559  pw2v_8(2,l) = 9
    1560  pw2v_8(3,l) = pvcd
    1561  pw2v_8(4,l) = 3
    1562  maxpw2v = l
    1563  ENDIF
    1564  ENDIF
    1565  ENDIF
    1566 
    1567 C -------------------------------------------------------------------
    1568 C RULES FOR LAYER 3 PRECIPITABLE WATER -- PW3O REJECTED IF:
    1569 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1570 C "PREVENT" PGM REASON CODE 3
    1571 C REJECTION MEANS Q.M. SET TO 9 UNLESS:
    1572 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1573 C AS IS
    1574 C -------------------------------------------------------------------
    1575 
    1576  IF(pw3o.LT.bmiss) THEN
    1577  rejpw3 = oefg01(prss*0.01,typ,6,oemin(6)).GE.bmiss
    1578  IF(rejpw3) THEN
    1579  IF(nflgrt(nint(typ),11).EQ.0) THEN
    1580  WRITE(iunits,208) nint(typ)
    1581  208 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1582  $ 'PW3O DUE TO MISSING OBS ERROR'/)
    1583  nflgrt(nint(typ),11) = 1
    1584  ENDIF
    1585 cdakcdakcdak WRITE(IUNITS,116) STNID,NINT(TYP),YOB,XOB,PW3O
    1586 cd116 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1587 cdak $'E, REJECT PW3O ON LVL - PW3O=',F5.1,'MM, MISSING OBS. ERROR')
    1588  IF(pw3q.GT.3.AND.pw3q.LT.15) THEN
    1589 CDAKCDAKCDAKCDAK WRITE(IUNITS,1408) STNID,NINT(TYP),YOB,XOB,PW3Q
    1590  1408 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1591  $ 'E, INPUT PW3Q =',f4.0,' -- DO NOT APPLY PW3O QM=9 EVENT')
    1592  ELSE
    1593  pw3v_8(1,l) = pw3o
    1594  pw3v_8(2,l) = 9
    1595  pw3v_8(3,l) = pvcd
    1596  pw3v_8(4,l) = 3
    1597  maxpw3v = l
    1598  ENDIF
    1599  ENDIF
    1600  ENDIF
    1601 
    1602 C -------------------------------------------------------------------
    1603 C RULES FOR LAYER 4 PRECIPITABLE WATER -- PW4O REJECTED IF:
    1604 C - OBSERVATION ERROR IS MISSING (AND SWITCH DOBERR=TRUE) --
    1605 C "PREVENT" PGM REASON CODE 3
    1606 C REJECTION MEANS Q.M. SET TO 9 UNLESS:
    1607 C - Q.M. IS ALREADY > 3 BUT NOT 15, THEN SKIP EVENT AND LEAVE Q.M.
    1608 C AS IS
    1609 C -------------------------------------------------------------------
    1610 
    1611  IF(pw4o.LT.bmiss) THEN
    1612  rejpw4 = oefg01(prss*0.01,typ,6,oemin(6)).GE.bmiss
    1613  IF(rejpw4) THEN
    1614  IF(nflgrt(nint(typ),12).EQ.0) THEN
    1615  WRITE(iunits,209) nint(typ)
    1616  209 FORMAT(/' --> FOR ALL REPORTS WITH REPORT TYPE ',i3,', REJECT ',
    1617  $ 'PW4O DUE TO MISSING OBS ERROR'/)
    1618  nflgrt(nint(typ),12) = 1
    1619  ENDIF
    1620 cdakcdakcdak WRITE(IUNITS,117) STNID,NINT(TYP),YOB,XOB,PW4O
    1621 cd117 FORMAT(' ~~> ID ',A8,' (RTP ',I3,'), LAT=',F6.2,'N, LON=',F6.2,
    1622 cdak $'E, REJECT PW4O ON LVL - PW4O=',F5.1,'MM, MISSING OBS. ERROR')
    1623  IF(pw4q.GT.3.AND.pw4q.LT.15) THEN
    1624 CDAKCDAKCDAKCDAK WRITE(IUNITS,1409) STNID,NINT(TYP),YOB,XOB,PW4Q
    1625  1409 FORMAT(' ~~> ID ',a8,' (RTP ',i3,'), LAT=',f6.2,'N, LON=',f6.2,
    1626  $ 'E, INPUT PW4Q =',f4.0,' -- DO NOT APPLY PW4O QM=9 EVENT')
    1627  ELSE
    1628  pw4v_8(1,l) = pw4o
    1629  pw4v_8(2,l) = 9
    1630  pw4v_8(3,l) = pvcd
    1631  pw4v_8(4,l) = 3
    1632  maxpw4v = l
    1633  ENDIF
    1634  ENDIF
    1635  ENDIF
    1636 
    1637  ENDDO
    1638  ENDIF
    1639 
    1640 C APPLY THE PROPER EVENTS
    1641 C -----------------------
    1642 
    1643  IF(maxpev .GT.0) CALL ufbint(iunitp,pev_8, 4,maxpev, iret,pevn)
    1644  IF(maxqev .GT.0) CALL ufbint(iunitp,qev_8, 4,maxqev, iret,qevn)
    1645  IF(maxtev .GT.0) CALL ufbint(iunitp,tev_8, 4,maxtev, iret,tevn)
    1646  IF(maxwev .GT.0) CALL ufbint(iunitp,wev_8, 5,maxwev, iret,wevn)
    1647  IF(maxpwv .GT.0) CALL ufbint(iunitp,pwv_8, 4,maxpwv, iret,pwvn)
    1648  IF(maxpw1v.GT.0) CALL ufbint(iunitp,pw1v_8,4,maxpw1v,iret,pw1vn)
    1649  IF(maxpw2v.GT.0) CALL ufbint(iunitp,pw2v_8,4,maxpw2v,iret,pw2vn)
    1650  IF(maxpw3v.GT.0) CALL ufbint(iunitp,pw3v_8,4,maxpw3v,iret,pw3vn)
    1651  IF(maxpw4v.GT.0) CALL ufbint(iunitp,pw4v_8,4,maxpw4v,iret,pw4vn)
    1652 
    1653  RETURN
    1654  END
    1655 C***********************************************************************
    1656 C***********************************************************************
    1657 C> GBLEVN03 - INTERPOLATE MODEL DATA (FIRST GUESS OR ANALYSIS) TO OB LOCATIONS
    1658 C> @param SUBSET - THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR REPORT BEING PROCESSED
    1659 C-----------------------------------------------------------------------
    1660  SUBROUTINE gblevn03(SUBSET) ! FORMERLY SUBROUTINE GETFC
    1662  USE gblevn_module
    1663 
    1664  REAL(8) OBS_8,QMS_8,BAK_8,SID_8
    1665  REAL(8) BMISS
    1666  CHARACTER*8 SUBSET
    1667 
    1668  COMMON /gbevaa/ sid_8,obs_8(13,255),qms_8(12,255),bak_8(12,255),
    1669  $ xob,yob,dhr,typ,nlev
    1670  COMMON /gbevee/psg01,zsg01,tg01(500),ug01(500),vg01(500),
    1671  x qg01(500),zint(500),pint(500),pintlog(500),plev(500),
    1672  x plevlog(500)
    1673  COMMON /gbevff/ bmiss
    1674 
    1675 
    1676  DATA tzero / 273.15 /
    1677  DATA betap / .0552 /
    1678  DATA beta / .00650 /
    1679  DATA rog / 29.261 /
    1680 
    1681 C CLEAR THE BACKGROUND EVENT ARRAY
    1682 C --------------------------------
    1683 
    1684  bak_8 = bmiss
    1685 
    1686 C GET GUESS PROFILE AT OB LOCATION
    1687 C --------------------------------
    1688  CALL gblevn06(xob,yob)
    1689 
    1690 
    1691 C INTERPOLATE GUESS PROFILES TO OB PRESSURES
    1692 C ------------------------------------------
    1693 
    1694  IF(nlev.GT.0) THEN
    1695  DO 10 l=1,nlev
    1696 
    1697  pob = obs_8( 1,l)
    1698  qob = obs_8( 2,l)
    1699  tob = obs_8( 3,l)
    1700  zob = obs_8( 4,l)
    1701  uob = obs_8( 5,l)
    1702  vob = obs_8( 6,l)
    1703  pwo = obs_8( 7,l)
    1704  pw1o = obs_8( 8,l)
    1705  pw2o = obs_8( 9,l)
    1706  pw3o = obs_8(10,l)
    1707  pw4o = obs_8(11,l)
    1708  cat = obs_8(12,l)
    1709 
    1710  IF(pob.LE.0. .OR. pob.GE.bmiss) GOTO 10
    1711 
    1712  poblog = log(pob)
    1713 
    1714  la = -999
    1715  lb = -999
    1716  do k=1,kmax-1
    1717  if (poblog<=plevlog(k) .and. poblog>plevlog(k+1)) then
    1718  la = k
    1719  lb = k+1
    1720  exit
    1721  endif
    1722  enddo
    1723  if (la > 0) then
    1724  wt = (poblog-plevlog(lb)) / (plevlog(la)-plevlog(lb))
    1725  else
    1726  la = 1
    1727  lb = la+1
    1728  wt = 0.0
    1729  endif
    1730 
    1731  li=0
    1732  do k=1,kmax-1
    1733  if (poblog<=pintlog(k) .and. poblog>pintlog(k+1)) then
    1734  li = k
    1735  exit
    1736  endif
    1737  enddo
    1738 
    1739 C SURFACE PRESSURE
    1740 C ----------------
    1741 
    1742  IF(cat.EQ.0 .AND. zob.LT.bmiss) THEN
    1743  ts = tg01(1) + (psg01-plev(1))*betap
    1744  dz = zob-zsg01
    1745  tm = ts - dz*beta*.5
    1746  pfc = psg01*exp(-dz/(tm*rog))
    1747  ELSE
    1748  pfc = bmiss
    1749  ENDIF
    1750 
    1751 C SPECIFIC HUMIDITY
    1752 C -----------------
    1753 
    1754  IF(qob.LT.bmiss.OR.tob.LT.bmiss.OR.typ.EQ.111) THEN
    1755 
    1756 C (QFC NEEDED BY SYNDATA PROGRAM BUT ONLY FOR REPORT TYPE 111)
    1757 
    1758  qob = qg01(lb) + (qg01(la)-qg01(lb))*wt
    1759  ENDIF
    1760 
    1761 C TEMPERATURE
    1762 C -----------
    1763 
    1764  IF(tob.LT.bmiss.OR.subset.EQ.'VADWND '.OR.typ.EQ.111) THEN
    1765 
    1766 C (TFC NEEDED BY CQCVAD AND SYNDATA PROGRAMS, LATTER ONLY FOR REPORT
    1767 C TYPE 111)
    1768 
    1769  IF(pob.GT.plev(1)) THEN
    1770  tob = tg01(1) + (pob-plev(1))*betap
    1771  ELSE
    1772  tob = tg01(lb) + (tg01(la)-tg01(lb))*wt
    1773  ENDIF
    1774  tob = tob - tzero
    1775  ENDIF
    1776 
    1777 C HEIGHT
    1778 C ------
    1779 
    1780  IF(zob.LT.bmiss) THEN
    1781  IF(pob.GT.plev(1)) THEN
    1782  tm = tg01(1) + (.5*(pint(1)+pob)-plev(1))*betap
    1783  zob = zint(1) - rog*tm*log(pob/pint(1))
    1784  ELSE
    1785  tm = tg01(lb) + (tg01(la)-tg01(lb))*wt
    1786  zob = zint(li) - rog*tm*log(pob/pint(li))
    1787  ENDIF
    1788  ENDIF
    1789 
    1790 C U AND V COMPONENTS
    1791 C ------------------
    1792 
    1793  IF(uob.LT.bmiss .OR. vob.LT.bmiss) THEN
    1794  uob = ug01(lb) + (ug01(la)-ug01(lb))*wt
    1795  vob = vg01(lb) + (vg01(la)-vg01(lb))*wt
    1796  ENDIF
    1797 
    1798 
    1799 C PRECIPITABLE WATER
    1800 C ------------------
    1801 
    1802  pwo = bmiss
    1803  pw1o = bmiss
    1804  pw2o = bmiss
    1805  pw3o = bmiss
    1806  pw4o = bmiss
    1807 
    1808 C RELATIVE HUMIDITY
    1809 C -----------------
    1810 
    1811  rho = bmiss
    1812 
    1813 C SCATTER THE PROPER FIRST GUESS/ANALYSIS VALUES
    1814 C ----------------------------------------------
    1815 
    1816  bak_8(1,l) = pfc
    1817  bak_8(2,l) = qob
    1818  bak_8(3,l) = tob
    1819  bak_8(4,l) = zob
    1820  bak_8(5,l) = uob
    1821  bak_8(6,l) = vob
    1822  bak_8(7,l) = pwo
    1823  bak_8(8,l) = pw1o
    1824  bak_8(9,l) = pw2o
    1825  bak_8(10,l) = pw3o
    1826  bak_8(11,l) = pw4o
    1827  bak_8(12,l) = rho
    1828 
    1829  10 ENDDO
    1830  ENDIF
    1831 
    1832  RETURN
    1833  END
    1834 C***********************************************************************
    1835 C***********************************************************************
    1836 C> Get observation error
    1837  SUBROUTINE gblevn04 ! FORMERLY SUBROUTINE GETOE
    1839  dimension oemin(2:6)
    1840  REAL(8) OBS_8,QMS_8,BAK_8,SID_8
    1841  REAL(8) BMISS
    1842 
    1843  COMMON /gbevaa/ sid_8,obs_8(13,255),qms_8(12,255),bak_8(12,255),
    1844  $ xob,yob,dhr,typ,nlev
    1845  COMMON /gbevff/ bmiss
    1846 
    1847  DATA oemin /0.5,0.1,1.0,0.5,1.0/
    1848 
    1849 C CLEAR THE EVENT ARRAY
    1850 C ---------------------
    1851 
    1852  bak_8 = bmiss
    1853 
    1854 C LOOP OVER LEVELS LOOKING UP THE OBSERVATION ERROR
    1855 C -------------------------------------------------
    1856 
    1857  IF(nlev.GT.0) THEN
    1858  DO l=1,nlev
    1859 
    1860  pob = obs_8( 1,l)
    1861  qob = obs_8( 2,l)
    1862  tob = obs_8( 3,l)
    1863  wob = max(obs_8(5,l),obs_8(6,l))
    1864  pwo = obs_8( 7,l)
    1865  pw1o = obs_8( 8,l)
    1866  pw2o = obs_8( 9,l)
    1867  pw3o = obs_8(10,l)
    1868  pw4o = obs_8(11,l)
    1869  cat = obs_8(12,l)
    1870 
    1871  IF(cat .EQ.0 ) bak_8( 1,l) = oefg01(pob,typ,5,oemin(5))
    1872  IF(qob .LT.bmiss) bak_8( 2,l) = oefg01(pob,typ,3,oemin(3))
    1873  IF(tob .LT.bmiss) bak_8( 3,l) = oefg01(pob,typ,2,oemin(2))
    1874  IF(wob .LT.bmiss) bak_8( 5,l) = oefg01(pob,typ,4,oemin(4))
    1875  IF(pwo .LT.bmiss) bak_8( 6,l) = oefg01(pob,typ,6,oemin(6))
    1876  IF(pw1o.LT.bmiss) bak_8( 7,l) = oefg01(pob,typ,6,oemin(6))
    1877  IF(pw2o.LT.bmiss) bak_8( 8,l) = oefg01(pob,typ,6,oemin(6))
    1878  IF(pw3o.LT.bmiss) bak_8( 9,l) = oefg01(pob,typ,6,oemin(6))
    1879  IF(pw4o.LT.bmiss) bak_8(10,l) = oefg01(pob,typ,6,oemin(6))
    1880 
    1881  ENDDO
    1882  ENDIF
    1883 
    1884  RETURN
    1885  END
    1886 C***********************************************************************
    1887 C***********************************************************************
    1888 C> SUBROUTINE GBLEVN06 - 2D LINEAR HORIZONTAL INTERPOLATION
    1889 C-----------------------------------------------------------------------
    1890  SUBROUTINE gblevn06(XOB,YOB) ! FORMERLY SUBROUTINE HTERP
    1892  USE gblevn_module
    1893 
    1894  COMMON /gbevee/ psi,zsi,ti(500),ui(500),vi(500),qi(500),
    1895  x zint(500),pint(500),pintlog(500),plev(500),plevlog(500)
    1896 
    1897  DATA rog / 29.261 /
    1898 
    1899 
    1900 C CALCULATE HORIZONTAL WEIGHTS AND INTERPOLATE
    1901 C --------------------------------------------
    1902 
    1903  wx = xob/dlon + 1.0
    1904  i0 = wx
    1905  i1 = mod(i0,imax) + 1
    1906  wx = wx-i0
    1907 
    1908  wy = (yob+90.)/dlat + 1.0
    1909  j0 = wy
    1910  j1 = min(j0+1,jmax)
    1911  wy = wy-j0
    1912 
    1913 C HTERP FOR SURFACE HEIGHT
    1914 C ------------------------
    1915 
    1916  p1 = iar12z(i0,j0)
    1917  p2 = iar12z(i0,j1)
    1918  p3 = iar12z(i1,j0)
    1919  p4 = iar12z(i1,j1)
    1920  p5 = p1+(p2-p1)*wy
    1921  p6 = p3+(p4-p3)*wy
    1922  zsi = p5+(p6-p5)*wx
    1923 
    1924 C HTERP FOR SURFACE PRESSURE
    1925 C --------------------------
    1926 
    1927  p1 = iar13p(i0,j0)
    1928  p2 = iar13p(i0,j1)
    1929  p3 = iar13p(i1,j0)
    1930  p4 = iar13p(i1,j1)
    1931  p5 = p1+(p2-p1)*wy
    1932  p6 = p3+(p4-p3)*wy
    1933  psi = p5+(p6-p5)*wx
    1934 
    1935 C HTERP FOR UPA T,U,V,Q
    1936 C ---------------------
    1937 
    1938  DO k=1,kmax
    1939 
    1940  p1 = iar14t(i0,j0,k)
    1941  p2 = iar14t(i0,j1,k)
    1942  p3 = iar14t(i1,j0,k)
    1943  p4 = iar14t(i1,j1,k)
    1944  p5 = p1+(p2-p1)*wy
    1945  p6 = p3+(p4-p3)*wy
    1946  ti(k) = p5+(p6-p5)*wx
    1947 
    1948  p1 = iar15u(i0,j0,k)
    1949  p2 = iar15u(i0,j1,k)
    1950  p3 = iar15u(i1,j0,k)
    1951  p4 = iar15u(i1,j1,k)
    1952  p5 = p1+(p2-p1)*wy
    1953  p6 = p3+(p4-p3)*wy
    1954  ui(k) = p5+(p6-p5)*wx
    1955 
    1956  p1 = iar16v(i0,j0,k)
    1957  p2 = iar16v(i0,j1,k)
    1958  p3 = iar16v(i1,j0,k)
    1959  p4 = iar16v(i1,j1,k)
    1960  p5 = p1+(p2-p1)*wy
    1961  p6 = p3+(p4-p3)*wy
    1962  vi(k) = p5+(p6-p5)*wx
    1963 
    1964  p1 = iar17q(i0,j0,k)
    1965  p2 = iar17q(i0,j1,k)
    1966  p3 = iar17q(i1,j0,k)
    1967  p4 = iar17q(i1,j1,k)
    1968  p5 = p1+(p2-p1)*wy
    1969  p6 = p3+(p4-p3)*wy
    1970  qi(k) = p5+(p6-p5)*wx
    1971 
    1972 C Layer Pressure
    1973 C --------------
    1974 
    1975  p1 = iarpsl(i0,j0,k)
    1976  p2 = iarpsl(i0,j1,k)
    1977  p3 = iarpsl(i1,j0,k)
    1978  p4 = iarpsl(i1,j1,k)
    1979  p5 = p1+(p2-p1)*wy
    1980  p6 = p3+(p4-p3)*wy
    1981  plev(k) = p5+(p6-p5)*wx
    1982 
    1983 C Interface Pressure
    1984 C ------------------
    1985 
    1986  p1 = iarpsi(i0,j0,k+1)
    1987  p2 = iarpsi(i0,j1,k+1)
    1988  p3 = iarpsi(i1,j0,k+1)
    1989  p4 = iarpsi(i1,j1,k+1)
    1990  p5 = p1+(p2-p1)*wy
    1991  p6 = p3+(p4-p3)*wy
    1992  pint(k+1) = p5+(p6-p5)*wx
    1993 
    1994  ENDDO
    1995 
    1996 C Compute interface heights
    1997 C -------------------------
    1998 
    1999  zint(1) = zsi
    2000  pint(1) = psi
    2001  pintlog(1) = log(pint(1))
    2002  do k=2,kmax
    2003  k0 = k-1
    2004  zint(k) = zint(k0) - rog*ti(k0)*log(pint(k)/pint(k0))
    2005  pintlog(k) = log(pint(k))
    2006  enddo
    2007  pint(kmax+1) = 0.0
    2008 
    2009 C Compute log(pressure) at layer midpoints
    2010 C ----------------------------------------
    2011 
    2012  do k=1,kmax
    2013  plevlog(k) = log(plev(k))
    2014  enddo
    2015 
    2016 ccccc print *,' pint=',pint(1:kmax)
    2017 ccccc print *,' zint=',zint(1:kmax)
    2018 
    2019  RETURN
    2020  END
    2021 
    2022 C$$$ SUBPROGRAM DOCUMENTATION BLOCK
    2023 C>
    2024 C> SUBPROGRAM: OEFG01
    2025 C> PRGMMR: D. A. KEYSER ORG: NP22 DATE: 2007-09-14
    2026 C>
    2027 C> ABSTRACT: FUNCTION WHICH RETURNS THE OBSERVATION ERROR FOR A
    2028 C> REQUESTED VARIABLE INTERPOLATED TO A DEFINED PRESSURE LEVEL FOR A
    2029 C> DEFINED REPORT TYPE. IT IS OBTAINED FROM AN INPUT ARRAY CONTAINING
    2030 C> OBSERVATION ERRORS ON FIXED PRESSURE LEVELS BY VARIABLE AND REPORT
    2031 C> TYPE (READ EARLIER FROM THE EXTERNAL OBSERVATION ERROR TABLE)
    2032 C>
    2033 C> PROGRAM HISTORY LOG:
    2034 C> 1995-05-17 J. WOOLLEN (NP20) - ORIGINAL AUTHOR (FUNCTION OEF)
    2035 C> 2007-09-14 D. A. KEYSER -- MODIFIED TO USE EXACT LOGIC AS IN GSI
    2036 C> (MINIMUM LIMITING VALUE FOR OBS ERROR BASED ON VARIABLE TYPE,
    2037 C> LEVEL PRESSURE LIMITED TO MAX OF 2000 MB AND MIN OF ZERO MB, A
    2038 C> FEW OTHER MINOR CHANGES)
    2039 C>
    2040 C> USAGE: XX = OEFG01(P,TYP,IE,OEMIN)
    2041 C> INPUT ARGUMENT LIST:
    2042 C> @param P - REAL PRESSURE LEVEL (MB) TO INTERPOLATE OBS ERROR TO
    2043 C> @param TYP - REAL PREPBUFR REPORT TYPE
    2044 C> @param IE - VARIABLE TYPE BEING INTERPOLATED (=2 - TEMPERATURE,
    2045 C> - =3 - MOISTURE, =4 - WIND, =5 - SURFACE PRESSURE, =6 -
    2046 C> - PRECIPITABLE WATER)
    2047 C> - (USED ONLY IN PREVENTS MODE)
    2048 C> @param OEMIN - REAL MINIMUM VALUE FOR OBS ERROR (FOR VARIABLE BEING
    2049 C> - INTERPOLATED)
    2050 C> @return OEFG01 OBSERVATION ERROR
    2051 C>
    2052 C> REMARKS: 'OEFG01' RETURNED IS OBSERVATION ERROR FOR VARIABLE "IE" IN
    2053 C> REPORT TYPE "TYP", INTERPOLATED TO PRESSURE LEVEL "P".
    2054 C>
    2055 C>
    2056 C> ATTRIBUTES:
    2057 C> LANGUAGE: FORTRAN 90
    2058 C> MACHINE: NCEP WCOSS
    2059 C>
    2060  FUNCTION oefg01(P,TYP,IE,OEMIN)
    2062  REAL(8) bmiss
    2063 
    2064  COMMON /gbevdd/errs(300,33,6)
    2065  COMMON /gbevff/ bmiss
    2066 
    2067  oefg01 = bmiss
    2068 
    2069 C LOOK UP ERRORS FOR PARTICULAR OB TYPES
    2070 C --------------------------------------
    2071 
    2072  kx = typ
    2073 
    2074  p = max(0.,min(p,2000.))
    2075 
    2076  IF(p.GE.errs(kx,1,1)) k1 = 1
    2077 
    2078  DO kl = 1,32
    2079  IF(p.GE.errs(kx,kl+1,1).AND.p.LE.errs(kx,kl,1)) k1 = kl
    2080  ENDDO
    2081 
    2082  IF(p.LE.errs(kx,33,1)) k1 = 5
    2083 
    2084  k2 = k1 + 1
    2085 
    2086  ediff = errs(kx,k2,1) - errs(kx,k1,1)
    2087  IF(abs(ediff).GT.0.0) THEN
    2088  del = (p - errs(kx,k1,1))/ediff
    2089  ELSE
    2090  del = bmiss
    2091  ENDIF
    2092 
    2093  del = max(0.,min(del,1.0))
    2094 
    2095  oefg01 = ((1.0 - del) * errs(kx,k1,ie)) + (del * errs(kx,k2,ie))
    2096  oefg01 = max(oefg01,oemin)
    2097 
    2098 C SET MISSING ERROR VALUE TO "BMISS"
    2099 C ----------------------------------
    2100 
    2101  IF(oefg01.GE.5e5) oefg01 = bmiss
    2102 
    2103  RETURN
    2104 
    2105  END
    2106 
    2107 C$$$ SUBPROGRAM DOCUMENTATION BLOCK
    2108 C>
    2109 C> SUBPROGRAM: GBLEVN08
    2110 C> PRGMMR: S. MELCHIOR ORG: NP22 DATE: 2014-03-25
    2111 C>
    2112 C> ABSTRACT: CREATE VIRTUAL TEMPERATURE EVENTS WITHIN GBLEVENTS
    2113 C> SUBROUTINE. FOR ALL TYPES EXCEPT RASS, THIS CONSISTS OF FIRST RE-
    2114 C> CALCULATING THE SPECIFIC HUMIDITY FROM THE REPORTED DEWPOINT
    2115 C> TEMPERATURE AND PRESSURE, FOLLOWED BY THE CALCULATION OF VIRTUAL
    2116 C> TEMPERATURE FROM THE JUST-CALCULATED SPECIFIC HUMIDITY AND THE
    2117 C> REPORTED (SENSIBLE) TEMPERATURE. THE RE-CALCULATED SPECIFIC
    2118 C> HUMIDITY IS THEN ENCODED AS A STACKED EVENT TO BE LATER WRITTEN
    2119 C> INTO THE PREPBUFR FILE (UNDER PROGRAM "VIRTMP", REASON CODE 0).
    2120 C> IF THE NAMELIST SWITCH DOVTMP IS TRUE, THEN THE JUST-CALCULATED
    2121 C> VIRTUAL TEMPERATURE IS THEN ALSO ENCODED AS A STACKED EVENT TO BE
    2122 C> LATER WRITTEN INTO THE PREPBUFR FILE (UNDER PROGRAM "VIRTMP",
    2123 C> REASON CODE 0, 2 OR 6). FOR RASS DATA, SPECIFIC HUMIDITY IS
    2124 C> MISSING HOWEVER IF THE NAMELIST SWITCH DOVTMP IS TRUE, A SIMPLE
    2125 C> COPY OF THE REPORTED (VIRTUAL) TEMPERATURE IS ENCODED AS A STACKED
    2126 C> EVENT TO BE LATER WRITTEN INTO THE PREPBUFR FILE (UNDER PROGRAM
    2127 C> "VIRTMP", REASON CODE 3). FOR SURFACE DATA WITH A MISSING PMSL, IF
    2128 C> DOVTMP=T AND DOPMSL=T AND A VIRTUAL TEMPERATURE HAS BEEN COMPUTED,
    2129 C> CALCULATE AN ESTIMATED PMSL AND ENCODE IT INTO PREPBUFR FILE ALONG
    2130 C> WITH AN INDICATOR THAT IS WAS DERIVED HERE. THIS SUBROUTINE IS
    2131 C> CURRENTLY ONLY CALLED FOR SURFACE LAND ("ADPSFC"), MARINE
    2132 C> ("SFCSHP"), MESONET ("MSONET"), RASS ("RASSDA") OR SATELLITE
    2133 C> TEMPERATURE RETRIEVAL ("SATEMP") DATA TYPES WHEN SWITCH
    2134 C> "ADPUPA_VIRT" IS FALSE AND ONLY FOR SURFACE LAND ("ADPSFC"), MARINE
    2135 C> ("SFCSHP"), MESONET ("MSONET"), RASS ("RASSDA"), SATELLITE
    2136 C> TEMPERATURE RETRIEVAL ("SATEMP") OR RAOB/DROP/MULTI-LVL RECCO
    2137 C> ("ADPUPA") DATA TYPES WHEN SWITCH "ADPUPA_VIRT" IS TRUE. IT IS
    2138 C> ALSO ONLY CALLED IN THE PREVENTS MODE. THIS ROUTINE IS CALLED ONCE
    2139 C> FOR EACH VALID REPORT IN THE PREPBUFR FILE.
    2140 C>
    2141 C> PROGRAM HISTORY LOG:
    2142 C> 1995-05-17 J. WOOLLEN (NP20) - ORIGINAL AUTHOR
    2143 C> 1997-06-01 D.A. KEYSER - STREAMLINED, ADDED SWITCH DOVTMP
    2144 C> 1999-12-01 D. A. KEYSER -- SPEC. HUMIDITY AND VIRT. TEMPERATURE ARE
    2145 C> NOW CALCULATED WHEN SPEC. HUMIDITY QUAL. MARKER IS BAD (SUBJECT
    2146 C> TO A SANITY CHECK), HOWEVER THE VIRT. TEMPERATURE GETS A BAD
    2147 C> QUAL. MARKER (8)
    2148 C> 2004-08-30 D. A. KEYSER -- FOR "RASSDA" TYPES, ENCODES A SIMPLE COPY
    2149 C> OF THE REPORTED (VIRTUAL) TEMPERATURE AS A "VIRTMP" EVENT IF
    2150 C> DOVTMP IS TRUE, GETS NEW REASON CODE 3
    2151 C> 2006-07-14 D. A. KEYSER -- PROCESSES REPORTS IN MESSAGE TYPE ADPUPA
    2152 C> (I.E., RAOBS, DROPS, MULTI-LEVEL RECCOS) WITH SAME LOGIC AS IN
    2153 C> SUBROUTINE VTPEVN OF PROGRAM PREPOBS_CQCBUFR WHEN NEW NAMELIST
    2154 C> SWITCH "ADPUPA_VIRT" IS TRUE {NORMALLY "ADPUPA_VIRT" IS FALSE
    2155 C> (DEFAULT) BECAUSE SUBSEQUENT PROGRAM PREPOBS_CQCBUFR PERFORMS
    2156 C> THIS FUNCTION}
    2157 C> 2007-09-14 D. A. KEYSER -- FOR NON-"ADPUPA" TYPES, Q.M. 9 IS NOW
    2158 C> ASSIGNED TO CALCULATED VIRT. TEMPS IF THE MOISTURE Q.M. IS 9 OR
    2159 C> 15 AND ORIG. TEMP NOT "BAD", THESE "VIRTMP" EVENTS RECEIVE NEW
    2160 C> REASON CODE 4, HAD RECEIVED Q.M. 8 WITH REASON CODE 2 LIKE VIRT.
    2161 C> TEMPS CALCULATED FROM "BAD" MOISTURE - THIS MEANS ONLY TRULY
    2162 C> "BAD" VIRT. TEMPS WILL NOW GET Q.M. 8 AND VIRT. TEMPS FLAGGED FOR
    2163 C> NON-USE BY ASSIMILATION (BUT STILL "GOOD") WILL NOW GET Q.M. 9
    2164 C> (GSI MONITORS, BUT DOES NOT USE, OBS WITH Q.M. 9, BUT IT DOES NOT
    2165 C> EVEN CONSIDER OBS WITH Q.M. 8); FOR "ADPUPA" TYPES, Q.M. 3 IS NOW
    2166 C> ASSIGNED TO CALCULATED VIRT. TEMPS ONLY IF THE MOISTURE Q.M. IS
    2167 C> TRULY BAD (I.E. > 3 BUT NOT 9 OR 15) (AND, AS BEFORE, ORIG. TQM
    2168 C> IS 1 OR 2 AND POB IS BELOW 700 MB) - BEFORE, TQM SET TO 3 WHEN
    2169 C> QQM WAS 9 OR 15 AND ALL OTHER CONDITIONS MET; FOR "SATEMP" TYPES,
    2170 C> ENCODES A SIMPLE COPY OF THE REPORTED (VIRTUAL) TEMPERATURE AS A
    2171 C> "VIRTMP" EVENT IF DOVTMP IS TRUE, GETS REASON CODE 3 (SIMILAR TO
    2172 C> WHAT IS ALREADY DONE FOR "RASSDA" TYPES)
    2173 C> 2013-04-12 D. A. KEYSER -- DON'T ALLOW CALCULATED Q TO BE < 0 WHICH
    2174 C> CAN OCCUR ON WCOSS FOR CASES OF HORRIBLY BAD MESONET DATA
    2175 C> 2014-03-25 S. MELCHIOR -- ADDED NEW NAMELIST SWITCH "DOPMSL" WHICH,
    2176 C> WHEN TRUE, DERIVES PMSL (MNEMONIC "PMO") FROM REPORTED STATION
    2177 C> PRESSURE ("POB"), STATION HEIGHT/ELEVATION ("ZOB") AND THE JUST-
    2178 C> COMPUTED VIRTUAL TEMPERATURE FOR SURFACE REPORTS IN CASES WHEN
    2179 C> REPORTED PMSL IS MISSING. DOVTMP MUST BE TRUE AND DOANLS MUST BE
    2180 C> FALSE ("PREVENTS" MODE). THE DERIVED PMSL EITHER GETS A QUALITY
    2181 C> MARK ("PMQ") OF 3 OR INHERITS THE STATION PRESSURE QUALITY MARK
    2182 C> ("PQM"), WHICHEVER IS GREATER. THE VALUE OF THE PMSL INDICATOR
    2183 C> (NEW MNEMONIC "PMIN") IS SET TO 1 TO DENOTE PMSL WAS DERIVED
    2184 C> RATHER THAN OBSERVED. THE DEFAULT FOR "DOPMSL" IS FALSE
    2185 C> (NORMALLY ONLY TRUE IN RTMA AND URMA RUNS). IT IS FORCED TO BE
    2186 C> FALSE IN "POSTEVENTS" MODE (DOANLS=TRUE).
    2187 C>
    2188 C> USAGE: CALL GBLEVN08(IUNITP)
    2189 C> INPUT ARGUMENT LIST:
    2190 C> @param IUNITP - BUFR OUTPUT FILE UNIT
    2191 C> @param SUBSET - THE BUFR MESSAGE TABLE A ENTRY FOR THE PARTICULAR
    2192 C> - REPORT BEING PROCESSED
    2193 C>
    2194 C> REMARKS: WILL IMMEDIATELY RETURN TO CALLING PROGRAM IF ANY OF THE
    2195 C> FOLLOWING CONDITIONS EXIST: THERE ARE NO LEVELS OF VALID DEWPOINT,
    2196 C> OBS, TEMPERATURE Q.M. OR SPEC. HUMIDITY Q.M. IN THE INPUT PREPBUFR
    2197 C> FILE FOR THE REPORT. WILL NOT ATTEMPT EITHER SPEC. HUMIDITY NOR
    2198 C> VIRT. TEMP CALC. ON A GIVEN LEVEL IF ANY OF THE FOLLOWING
    2199 C> CONDITIONS EXIST: REPORTED PRESSURE OBS IS MISSING, REPORTED
    2200 C> (SENSIBLE) TEMPERATURE OBS IS MISSING, OR REPORTED DEWPOINT OBS IS
    2201 C> MISSING.
    2202 C>
    2203 C> ATTRIBUTES:
    2204 C> LANGUAGE: FORTRAN 90
    2205 C> MACHINE: NCEP WCOSS
    2206 C>
    2207  SUBROUTINE gblevn08(IUNITP,SUBSET) ! FORMERLY SUBROUTINE VTPEVN
    2209  parameter(rd=287.04, g=9.81)
    2210  CHARACTER*80 EVNSTQ,EVNSTV,evnstp
    2211  CHARACTER*8 SUBSET,stnid
    2212  REAL(8) TDP_8(255),TQM_8(255),QQM_8(255),BAKQ_8(4,255),
    2213  $ bakv_8(4,255),bakp_8(3),obs_8,qms_8,bak_8,
    2214  $ sid_8,pqm_8
    2215  real(8) pmo_8,zob_8,pmsl_8
    2216  REAL(8) BMISS
    2217 
    2218  LOGICAL EVNQ,EVNV,DOVTMP,TROP,ADPUPA_VIRT,DOBERR,DOFCST,
    2219  $ some_fcst,fcst,virt,satmqc,recalc_q,doprev,
    2220  $ evnp,dopmsl,surf
    2221 
    2222  COMMON /gbevaa/ sid_8,obs_8(13,255),qms_8(12,255),bak_8(12,255),
    2223  $ xob,yob,dhr,typ,nlev
    2224  COMMON /gbevbb/ pvcd,vtcd
    2225  COMMON /gbevcc/ dovtmp,dofcst,some_fcst,doberr,fcst,virt,
    2226  $ qtop_rej,satmqc,adpupa_virt,recalc_q,doprev,dopmsl
    2227  COMMON /gbevff/ bmiss
    2228 
    2229  DATA evnstq /'QOB QQM QPC QRC'/
    2230  DATA evnstv /'TOB TQM TPC TRC'/
    2231  data evnstp /'PMO PMQ PMIN'/
    2232 
    2233  equivalence(sid_8,stnid)
    2234 
    2235 C-----------------------------------------------------------------------
    2236 C FCNS BELOW CONVERT TEMP/TD (K) & PRESS (MB) INTO SAT./ SPEC. HUM.(G/G)
    2237 C-----------------------------------------------------------------------
    2238  es(t) = 6.1078*exp((17.269*(t - 273.16))/((t - 273.16)+237.3))
    2239  qs(t,p) = (0.622*es(t))/(p-(0.378*es(t)))
    2240 C-----------------------------------------------------------------------
    2241 C FCN BELOW derives mean sea-level pressure (mb)from P (station
    2242 C pressure, mb), Tv (virtual temperature, K), and Z (station height/
    2243 C elevation, m) for surface reports
    2244 C-----------------------------------------------------------------------
    2245  pmsl_fcn(p,tv,z) = p*exp((g*z)/(rd*tv))
    2246 C-----------------------------------------------------------------------
    2247 
    2248 C CLEAR TEMPERATURE AND SPECIFIC HUMIDITY EVENTS
    2249 C ----------------------------------------------
    2250 
    2251  evnq = .false.
    2252  evnv = .false.
    2253  evnp = .false.
    2254  bakq_8 = bmiss
    2255  bakv_8 = bmiss
    2256  bakp_8 = bmiss
    2257  trop = .false.
    2258 
    2259  surf = (subset.eq.'ADPSFC'.or.subset.eq.'SFCSHP'.or.
    2260  $ subset.eq.'MSONET')
    2261 
    2262 C GET DEWPOINT TEMPERATURE AND CURRENT T,Q QUALITY MARKERS
    2263 C Also get mean sea level pressure, station pressure quality mark,
    2264 C and station height (elevation) for surface reports if dopmsl=T
    2265 C ----------------------------------------------------------------
    2266 
    2267  CALL ufbint(-iunitp,tdp_8,1,255,nltd,'TDO')
    2268  CALL ufbint(-iunitp,qqm_8,1,255,nlqq,'QQM')
    2269  CALL ufbint(-iunitp,tqm_8,1,255,nltq,'TQM')
    2270  if(surf.and.dopmsl) then
    2271  call ufbint(-iunitp,pmo_8,1,1,nlpm,'PMO')
    2272  call ufbint(-iunitp,zob_8,1,1,nlzo,'ZOB')
    2273  call ufbint(-iunitp,pqm_8,1,1,nlpq,'PQM')
    2274  endif
    2275  IF(subset.NE.'RASSDA '.AND.subset.NE.'SATEMP ') THEN
    2276  IF(nltd.EQ.0) RETURN
    2277  IF(nlqq.EQ.0) RETURN
    2278  ENDIF
    2279  IF(nltq.EQ.0) RETURN
    2280  IF(subset.NE.'RASSDA '.AND.subset.NE.'SATEMP ') THEN
    2281  IF(nltd.NE.nlev) THEN
    2282  print.NE.'(" ##GBLEVENTS/GBLEVN08 - NLTD NLEV - STOP 61")'
    2283  CALL errexit(61)
    2284  ENDIF
    2285  IF(nlqq.NE.nlev) THEN
    2286  print.NE.'(" ##GBLEVENTS/GBLEVN08 - NLQQ NLEV - STOP 63")'
    2287  CALL errexit(63)
    2288  ENDIF
    2289  ENDIF
    2290  IF(nltq.NE.nlev) THEN
    2291  print.NE.'(" ##GBLEVENTS/GBLEVN08 - NLTQ NLEV - STOP 62")'
    2292  CALL errexit(62)
    2293  ENDIF
    2294 
    2295 C COMPUTE SPECIFIC HUMIDITY AND VIRTUAL TEMPERATURE USING REPORTED DEWP
    2296 C For surface reports, also calculate PMSL if it is missing, dopmsl=T,
    2297 C and a virtual temperature has been computed
    2298 C ---------------------------------------------------------------------
    2299 
    2300  IF(nlev.GT.0) THEN
    2301  DO l=1,nlev
    2302  pob = obs_8(1,l)
    2303  tdo = tdp_8(l)
    2304  tob = obs_8(3,l)
    2305  cat = obs_8(12,l)
    2306  IF(dovtmp) THEN
    2307  IF(subset.EQ.'RASSDA '.OR.subset.EQ.'SATEMP ') THEN
    2308  IF(tob.LT.bmiss) THEN
    2309  bakv_8(1,l) = tob
    2310  bakv_8(2,l) = tqm_8(l)
    2311  bakv_8(3,l) = vtcd
    2312  bakv_8(4,l) = 3
    2313  evnv = .true.
    2314  cycle
    2315  ENDIF
    2316  ENDIF
    2317  ENDIF
    2318  IF(pob.LT.bmiss .AND. tob.LT.bmiss
    2319  $ .AND. tdo.LT.bmiss) THEN
    2320  IF(qqm_8(l).GT.3) THEN
    2321 C Don't update q or calculate Tv if bad moisture obs fails sanity check
    2322 C (also don't calc. PMSL if it is missing and dopmsl=T for sfc rpts)
    2323 cdak IF(TDO.LT.-103.15 .OR. TDO.GT.46.83 .OR. POB.LT.0.1 .OR.
    2324 cdak $ POB.GT.1100.)
    2325 cdak $ print *, '&&& bad QM fails sanity check'
    2326  IF(tdo.LT.-103.15 .OR. tdo.GT.46.83 .OR. pob.LT.0.1 .OR.
    2327  $ pob.GT.1100.) cycle
    2328  ENDIF
    2329  qob = qs(tdo+273.16,pob)
    2330 ccccc BAKQ_8(1,L) = QOB*1E6 ! dak fix 2/27/13: can't be > bmiss
    2331  ! else flting pt overflow in BUFRLIB
    2332 ccc IF(QOB*1E6.LT.BMISS) BAKQ_8(1,L) = QOB*1E6
    2333  ! dak add'l fix 4/12/13: don't allow
    2334  ! calc. q to be < 0 which can occur
    2335  ! on WCOSS for cases of horribly bad
    2336  ! mesonet data
    2337  IF(qob*1e6.LT.bmiss .AND. qob.GT.0.) bakq_8(1,l) = qob*1e6
    2338  bakq_8(2,l) = qqm_8(l) ! Moist qm same as before for
    2339  ! re-calc. q
    2340  bakq_8(3,l) = vtcd
    2341  bakq_8(4,l) = 0 ! Re-calc. q gets unique reason code 0
    2342  evnq = .true.
    2343 C If message type ADPUPA, test this level to see if at or above trop
    2344 C (trop must be above 500 mb to pass test; if no trop level found
    2345 C assume it's at 80 mb)
    2346 C Don't calculate Tv on this level if at or above trop (doesn't affect
    2347 C q calculation)
    2348  trop = (subset.EQ.'ADPUPA ' .AND.
    2349  $ ((cat.EQ.5 .AND. pob.LT.500.) .OR. pob.LT. 80. .OR. trop))
    2350  IF(dovtmp .AND. .NOT.trop) THEN
    2351  bakv_8(1,l) = (tob+273.16)*(1.+.61*qob)-273.16
    2352  bakv_8(3,l) = vtcd
    2353  IF(subset.EQ.'ADPUPA ') THEN
    2354 C Message type ADPUPA comes here
    2355  IF((qqm_8(l).LT.4.OR.qqm_8(l).EQ.9.OR.qqm_8(l).EQ.15)
    2356  $ .OR. tqm_8(l).EQ.0 .OR. tqm_8(l).GT.3
    2357  $ .OR. pob.LE.700.) THEN
    2358  bakv_8(2,l) = tqm_8(l) ! Tv qm same as for T when
    2359  ! q ok or q flagged by
    2360  ! PREPRO (but not bad)
    2361  bakv_8(4,l) = 0 ! Tv gets unique reason code 0
    2362  ELSE
    2363  bakv_8(2,l) = 3 !Tv qm susp for bad moist below
    2364  ! 700 mb
    2365  bakv_8(4,l) = 6 !Tv gets unique reason code 6
    2366  ENDIF
    2367  ELSE
    2368 C All other message types come here
    2369  IF(qqm_8(l).LT.4) THEN
    2370  bakv_8(2,l) = tqm_8(l) ! Tv qm same as for T when
    2371  ! q ok
    2372  bakv_8(4,l) = 0 ! Tv gets unique reason code 0
    2373  ELSE IF((qqm_8(l).EQ.9.OR.qqm_8(l).EQ.15).AND.
    2374  $ (tqm_8(l).LE.3.OR.tqm_8(l).GE.15.OR.
    2375  $ tqm_8(l).EQ.9)) THEN
    2376 cdak print'(" %%% process tvirt on lvl ",I0," for missing moist obs ",
    2377 cdak $ "error/high-up moist case when orig. T not ""bad"" (set TQM_8=",
    2378 cdak $ "9)")', l
    2379  bakv_8(2,l) = 9 ! Tv qm 9 for moist w/ missing obs
    2380  ! error or moist flagged by
    2381  ! PREPRO (but not bad) and T qm
    2382  ! orig not "bad"
    2383  bakv_8(4,l) = 4 ! Tv gets unique reason code 4
    2384  ELSE
    2385 cdak print'(" %%% process tvirt on lvl ",I0," for ""bad"" QQM_8 case ",
    2386 cdak $ "or missing moist obs error/high-up moist w/ ""bad"" TQM_8 case",
    2387 cdak $ " (set TQM_8=8)")', l
    2388  bakv_8(2,l) = 8 ! Tv qm 8 (bad) for "bad" moist or
    2389  ! moist w/ missing obs error or
    2390  ! moist flagged by PREPRO (but
    2391  ! not bad) and T qm orig "bad"
    2392  bakv_8(4,l) = 2 ! Tv gets unique reason code 2
    2393  ENDIF
    2394  if(surf) then
    2395 c For sfc rpts & dopmsl=T, derive Pmsl in cases when it is not reported
    2396 c DAK: Note right now this can only happen for sfc rpts where a Tv is
    2397 c set to be calculated and where it is successfully calculated.
    2398 c Eventually this may be able to be relaxed such that PMSL can be
    2399 c derived even if, e.g., no moisture were reported (in this case
    2400 c Ts would have to be used, still a decent estimate of PMSL could
    2401 c liekly be made). Might also be able to be derived if no T rpted.
    2402  if(dopmsl) then
    2403  if(ibfms(pmo_8).ne.0) then
    2404  tv = bakv_8(1,1) + 273.16
    2405  zob=zob_8
    2406  pmsl_8=pmsl_fcn(pob,tv,zob)
    2407  bakp_8(1) = pmsl_8
    2408  bakp_8(2) = max(3,int(pqm_8))! qm>=3 b/c derived
    2409  bakp_8(3) = 1. ! pmin=1 for derived value
    2410 cccccccccc write(*,4000) stnid,bakp_8(3),bakp_8(2)
    2411  4000 format('--> ID ',a8,' Pmsl missing - derived from Pstn; ',
    2412  $ 'PMIN = ',f4.1,' PMQ = ',f4.1,'')
    2413  evnp = .true.
    2414 c Diagnostics for Pmsl values that are suspiciously high
    2415  if(pmsl_8.gt.1060) then
    2416  write(*,4001) stnid,pob,bakp_8(1)
    2417  4001 format('--> ID ',a8,' Derived PMSL unrealistic; FLAG; ',
    2418  $ 'POB = ',f7.2,' PMO = ',f7.2,'')
    2419  end if
    2420  end if
    2421  end if
    2422  end if
    2423  ENDIF
    2424  evnv = .true.
    2425  ENDIF
    2426  ENDIF
    2427  ENDDO
    2428  ENDIF
    2429 
    2430 C ENCODE EVENTS INTO REPORT
    2431 C -------------------------
    2432 
    2433  IF(nlev.GT.0) THEN
    2434  IF(evnq) CALL ufbint(iunitp,bakq_8,4,nlev,iret,evnstq)
    2435  IF(evnv) CALL ufbint(iunitp,bakv_8,4,nlev,iret,evnstv)
    2436  if(nlev.eq.1.and.evnp)
    2437  $ call ufbint(iunitp,bakp_8,3,nlev,iret,evnstp)
    2438  ENDIF
    2439 
    2440  RETURN
    2441  END
    2442 C#######################
    2443 C#######################
    2444 C#######################
    2445 C#######################
    2446 C#######################
    2447 C#######################
    2448 C***********************************************************************
    2449 C***********************************************************************
    2450 C> Do something
    2451 C> @param IUNITF - 2-WORD ARRAY:
    2452 C> For SIGIO input:
    2453 C> - WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL
    2454 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    2455 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    2456 C> THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN
    2457 C> IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID
    2458 C> AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT
    2459 C> IS A MULTIPLE OF 3
    2460 C> - WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL
    2461 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    2462 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    2463 C> THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE
    2464 C> OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER
    2465 C> THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    2466 C> For NEMSIO input:
    2467 C> - WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE
    2468 C> (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT
    2469 C> THE DATE IN IDATEP
    2470 C> - WORD 2 - NOT USED, SHOULD BE A NULL FILE
    2471 C>
    2472 C> @param IDATEP - CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    2473 C> @param im
    2474 C> @param jm
    2475 C> @param IDRT INTEGER GRID IDENTIFIER
    2476 C> (IDRT=4 FOR GAUSSIAN GRID,
    2477 C> IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
    2478 C> IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    2479  SUBROUTINE gblevn10(IUNITF,IDATEP,IM,JM,IDRT) ! FORMERLY
    2480  ! SUBROUTINE GESRES
    2481  USE gblevn_module
    2482  USE sigio_module
    2483  USE sigio_r_module
    2484 
    2485  IMPLICIT NONE
    2486  INTEGER IUNITF(2), IDATEP, IM, JM, IDRT
    2487  REAL, PARAMETER :: PI180=.0174532
    2488  INTEGER*4, PARAMETER :: ONE=1, ten=10
    2489 
    2490  TYPE(SIGIO_HEAD) :: HEAD(2)
    2491  TYPE(SIGIO_DATS) :: DATS
    2492  TYPE(SIGIO_DATM) :: DATM
    2493 
    2494  INTEGER*4 IRET,IRET1,IRETS,IMJM4,KM4,IDVM,NTRAC,IUNIT4(2)
    2495 
    2496  INTEGER KFILES,IFILE,JFILE,IDATGS_COR,JCAP,JCAP1,JCAP2,JCAP1X2,
    2497  $ mdima,mdimb,mdimc,iromb,maxwv,idir,ns,i,j,k,l,ii,jj,ib,ie
    2498 
    2499  INTEGER IDATE(8,2),JDATE(8,2),KDATE(8,2),KINDX(2)
    2500 
    2501  CHARACTER*6 COORD(3)
    2502  CHARACTER*20 CFILE
    2503 
    2504  REAL FHOUR,RINC(5)
    2505 
    2506  DATA coord /'SIGMA ','HYBRID','GENHYB'/
    2507 
    2508  REAL, ALLOCATABLE :: cofs(:,:), cofv(:,:,:)
    2509  REAL, ALLOCATABLE :: cofs_f(:,:,:), cofv_f(:,:,:,:)
    2510  REAL (KIND=4),ALLOCATABLE :: grds(:,:,:), grdv(:,:,:,:),
    2511  $ wrk1(:,:), wrk2(:,:)
    2512 
    2513  imax = im
    2514  jmax = jm
    2515  imjm4 = im*jm
    2516  iunit4(:) = iunitf(:)
    2517 
    2518  IF(mod(mod(idatep,100),3).EQ.0) THEN
    2519  kfiles = 1
    2520  kindx = 0
    2521  print 331, mod(idatep,100)
    2522  331 FORMAT(/' --> GBLEVENTS: THE PREPBUFR CENTER HOUR (',i2.2,
    2523  $ ') IS A MULTIPLE OF 3 - ONLY ONE SIGIO (SIGMA OR HYBRID) ',
    2524  $ 'INPUT GLOBAL FILE IS READ,'/16x,'NO TIME INTERPOLATION OF ',
    2525  $ 'SPECTRAL COEFFICIENTS IS PERFORMED'/)
    2526  ELSE
    2527  kfiles = 2
    2528  kindx(1) = mod(mod(idatep,100),3)
    2529  kindx(2) = kindx(1) - 3
    2530  print 332, mod(idatep,100)
    2531  332 FORMAT(/' --> GBLEVENTS: THE PREPBUFR CENTER HOUR (',i2.2,
    2532  $ ') IS NOT A MULTIPLE OF 3 - TWO SPANNING SIGIO (SIGMA OR ',
    2533  $ 'HYBRID) INPUT GLOBAL FILES'/16x,'ARE READ AND THE SPECTRAL ',
    2534  $ 'COEFFICIENTS ARE INTERPOLATED TO THE PREPBUFR CENTER TIME'/)
    2535  ENDIF
    2536 
    2537 C GET VALID-TIME DATE OF SIGMA OR HYBRID FILE(S), ALSO READ HEADERS
    2538 C -----------------------------------------------------------------
    2539 
    2540  jfile = 0
    2541  rinc = 0
    2542  DO ifile=1,kfiles
    2543  jfile = ifile
    2544 
    2545  WRITE(cfile,'("fort.",I2.2)') iunitf(ifile)
    2546 
    2547  CALL sigio_rropen(iunit4(ifile),cfile,iret)
    2548  CALL sigio_rrhead(iunit4(ifile),head(ifile),iret1)
    2549  print *,' cfile_sig=',cfile,'sigio_rropen: iret=',iret,
    2550  $ 'sigio_rrhead: iret1=',iret1
    2551 
    2552  IF(iret.NE.0) GO TO 903
    2553  IF(iret1.NE.0) GO TO 904
    2554 
    2555  idate(:,ifile) = 0
    2556 
    2557  idate(1,ifile) = head(ifile)%IDATE(4)
    2558  idate(2:3,ifile) = head(ifile)%IDATE(2:3)
    2559  idate(5,ifile) = head(ifile)%IDATE(1)
    2560 
    2561  fhour = head(ifile)%FHOUR
    2562  print'(" idate=",I5,7I3.2," fhour=",F7.3)', idate(:,ifile),
    2563  $ head(ifile)%fhour
    2564 
    2565  IF(idate(1,ifile).LT.100) THEN
    2566 
    2567 C IF 2-DIGIT YEAR FOUND IN GLOBAL SIMGA FILE INITIAL DATE
    2568 C (IDATE(1,IFILE)), MUST USE "WINDOWING" TECHNIQUE TO CREATE A 4-DIGIT
    2569 C YEAR (NOTE: THE T170 IMPLEMENTATION IN JUNE 1998 WAS TO INCLUDE THE
    2570 C WRITING OF A 4-DIGIT YEAR HERE. PRIOR TO THIS, THE YEAR HERE WAS
    2571 C 2-DIGIT.)
    2572 
    2573  print'(" ##GBLEVENTS/GBLEVN10 - 2-DIGIT YEAR FOUND IN ",
    2574  $ "SIGIO (SIGMA OR HYBRID) INPUT GLOBAL FILE ",I0,
    2575  $ "; INITIAL DATE (YEAR IS: ",I0,")")', ifile,idate(1,ifile)
    2576  print'(" - USE WINDOWING TECHNIQUE TO OBTAIN 4-DIGIT",
    2577  $ " YEAR")'
    2578  IF(idate(1,ifile).GT.20) THEN
    2579  idate(1,ifile) = 1900 + idate(1,ifile)
    2580  ELSE
    2581  idate(1,ifile) = 2000 + idate(1,ifile)
    2582  ENDIF
    2583  print'(" ##GBLEVENTS/GBLEVN10 - CORRECTED 4-DIGIT YEAR IS",
    2584  $ " NOW: ",I0)', idate(1,ifile)
    2585  ENDIF
    2586 
    2587  rinc(2) = fhour
    2588  CALL w3movdat(rinc,idate(:,ifile),jdate(:,ifile))
    2589 
    2590  print 1, ifile,head(ifile)%FHOUR,
    2591  $ (idate(ii,ifile),ii=1,3),idate(5,ifile),(jdate(ii,ifile),
    2592  $ ii=1,3),jdate(5,ifile)
    2593  1 FORMAT(' --> GBLEVENTS: SIGIO (SIGMA OR HYBRID) INPUT GLOBAL ',
    2594  $ 'FILE',i2,' HERE IS A ',f5.1,' HOUR FORECAST FROM ',i5.4,
    2595  $ 3i3.2,' VALID AT ',i5.4,3i3.2)
    2596 
    2597  kdate(:,ifile) = jdate(:,ifile)
    2598 
    2599  IF(kfiles.EQ.2) THEN
    2600  rinc(2) = REAL(KINDX(IFILE))
    2601  CALL w3movdat(rinc,jdate(:,ifile),kdate(:,ifile))
    2602  ENDIF
    2603 
    2604  idatgs_cor = (kdate(1,ifile) * 1000000) + (kdate(2,ifile) *
    2605  $ 10000) + (kdate(3,ifile) * 100) + kdate(5,ifile)
    2606 
    2607 C VALID DATES MUST MATCH
    2608 C ----------------------
    2609 
    2610  IF(idatep.NE.idatgs_cor) GO TO 901
    2611 
    2612  ENDDO
    2613 
    2614 
    2615 C EXTRACT HEADER INFO
    2616 C -------------------
    2617 
    2618  jcap = head(1)%JCAP
    2619  kmax = head(1)%LEVS
    2620  km4 = kmax
    2621  idvc = head(1)%IDVC
    2622  idsl = head(1)%IDSL
    2623  idvm = head(1)%IDVM
    2624  ntrac = head(1)%NTRAC
    2625  nvcoord = head(1)%NVCOORD
    2626  ALLOCATE (vcoord(kmax+1,nvcoord))
    2627  vcoord = 0.0
    2628  vcoord = head(1)%VCOORD
    2629 
    2630  sfcpress_id = mod(head(1)%IDVM,ten)
    2631  thermodyn_id = mod(head(1)%IDVM/ten,ten)
    2632  IF(idvc == 3 .AND. thermodyn_id == 3) THEN
    2633  kmaxs = (ntrac+1)*kmax + 2
    2634  ELSE
    2635  kmaxs = 2*kmax + 2
    2636  ntrac = 1
    2637  ENDIF
    2638 
    2639  ALLOCATE (iar12z(im,jm), iar13p(im,jm))
    2640  ALLOCATE (iar14t(im,jm,kmax), iar15u(im,jm,kmax),
    2641  $ iar16v(im,jm,kmax), iar17q(im,jm,kmax),
    2642  $ iarpsl(im,jm,kmax), iarpsi(im,jm,kmax+1))
    2643 
    2644 
    2645  if(idvc.eq.0) idvc = 1 ! Reset IDVC=0 to 1 (sigma coord.)
    2646  IF(idvc < 0 .or. idvc > 3) THEN
    2647  print *, '##GBLEVENTS/GBLEVN10: INVALID VERT COORD ID (=',idvc
    2648  ENDIF
    2649 
    2650 
    2651 C DEFINE THE OTHER RESOLUTION PARAMETERS
    2652 C --------------------------------------
    2653 
    2654  jcap1 = jcap+1
    2655  jcap2 = jcap+2
    2656  jcap1x2 = jcap1*2
    2657  mdima = jcap1*jcap2
    2658  mdimb = mdima/2+jcap1
    2659  mdimc = mdimb*2
    2660  imax = 384
    2661  jmax = imax/2+1
    2662 
    2663  dlat = 180./(jmax-1)
    2664  dlon = 360./imax
    2665 
    2666  print 2, jcap,imax,jmax,kmax,kmaxs,dlat,dlon,coord(idvc)
    2667  2 FORMAT(/' --> GBLEVENTS: GLOBAL MODEL SPECS: T',i5,' ',
    2668  $ i5,' x ',i5,' GRID WITH ',i3,' LEVELS ',i3,
    2669  $' SCALARS -------> ',f5.2,' X ',f5.2,' VERT. ',
    2670  $ 'COORD: ',a)
    2671 
    2672  GO TO 902
    2673 
    2674  901 CONTINUE
    2675  print 9901, jfile,(jdate(ii,jfile),ii=1,3),jdate(5,jfile),idatep
    2676  9901 FORMAT(/' ##GBLEVENTS/GBLEVN10 - SIGMA OR HYBRID FILE',i2,' DATE',
    2677  $ ' (',i4.4,3(i2.2),'), DOES NOT MATCH -OR SPAN- PREPBUFR FILE ',
    2678  $ 'CENTER DATE (',i10,') -STOP 68'/)
    2679  CALL errexit(68)
    2680  903 CONTINUE
    2681  print 9903, jfile,iret
    2682  9903 FORMAT(/' ##GBLEVENTS/GBLEVN10 - SIGMA OR HYBRID FILE',i2,
    2683  $ ' RETURNED FROM SIGIO_RROPEN WITH R.C.',i3,' -STOP 70'/)
    2684  CALL errexit(70)
    2685  904 CONTINUE
    2686  print 9904, jfile,iret1
    2687  9904 FORMAT(/' ##GBLEVENTS/GBLEVN10 - SIGMA OR HYBRID FILE',i2,
    2688  $ ' RETURNED FROM SIGIO_RRHEAD WITH R.C.',i3,' -STOP 71'/)
    2689  CALL errexit(71)
    2690  902 CONTINUE
    2691  IF(kmax.GT.500) then
    2692  print'(" ##GBLEVENTS/GBLEVN10 - KMAX TOO BIG = ",I0,
    2693  $ " - UNABLE TO TRANSFORM GLOBAL SIGMA FILE(S) - STOP 69")',
    2694  $ kmax
    2695  CALL errexit(69)
    2696  ENDIF
    2697 
    2698 C***********************************************************************
    2699 C***********************************************************************
    2700 
    2701 C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2702 
    2703 C USAGE: CALL SPTEZM(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,WAVE,GRID,IDIR)
    2704 C INPUT ARGUMENTS:
    2705 C IROMB - INTEGER SPECTRAL DOMAIN SHAPE
    2706 C (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
    2707 C MAXWV - INTEGER SPECTRAL TRUNCATION
    2708 C IDRT - INTEGER GRID IDENTIFIER
    2709 C (IDRT=4 FOR GAUSSIAN GRID,
    2710 C IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
    2711 C IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    2712 C IMAX - INTEGER EVEN NUMBER OF LONGITUDES
    2713 C JMAX - INTEGER NUMBER OF LATITUDES
    2714 C KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM
    2715 C WAVE - REAL (2*MX,KMAX) WAVE FIELD IF IDIR>0
    2716 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2717 C GRID - REAL (IMAX,JMAX,KMAX) GRID FIELD (E->W,N->S) IF IDIR<0
    2718 C IDIR - INTEGER TRANSFORM FLAG
    2719 C (IDIR>0 FOR WAVE TO GRID, IDIR<0 FOR GRID TO WAVE)
    2720 C OUTPUT ARGUMENTS:
    2721 C WAVE - REAL (2*MX,KMAX) WAVE FIELD IF IDIR<0
    2722 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2723 C GRID - REAL (IMAX,JMAX,KMAX) GRID FIELD (E->W,N->S) IF IDIR>0
    2724 
    2725 
    2726 C USAGE: CALL SPTEZMV(IROMB,MAXWV,IDRT,IMAX,JMAX,KMAX,
    2727 C & WAVED,WAVEZ,GRIDU,GRIDV,IDIR)
    2728 C INPUT ARGUMENTS:
    2729 C WAVED - REAL (2*MX,KMAX) WAVE DIVERGENCE FIELD IF IDIR>0
    2730 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2731 C WAVEZ - REAL (2*MX,KMAX) WAVE VORTICITY FIELD IF IDIR>0
    2732 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2733 C GRIDU - REAL (IMAX,JMAX,KMAX) GRID U-WIND (E->W,N->S) IF IDIR<0
    2734 C GRIDV - REAL (IMAX,JMAX,KMAX) GRID V-WIND (E->W,N->S) IF IDIR<0
    2735 C OUTPUT ARGUMENTS:
    2736 C WAVED - REAL (2*MX,KMAX) WAVE DIVERGENCE FIELD IF IDIR<0
    2737 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2738 C WAVEZ - REAL (2*MX,KMAX) WAVE VORTICITY FIELD IF IDIR>0
    2739 C WHERE MX=(MAXWV+1)*((IROMB+1)*MAXWV+2)/2
    2740 C GRIDU - REAL (IMAX,JMAX,KMAX) GRID U-WIND (E->W,N->S) IF IDIR>0
    2741 C GRIDV - REAL (IMAX,JMAX,KMAX) GRID V-WIND (E->W,N->S) IF IDIR>0
    2742 
    2743 C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    2744 
    2745  allocate (cofs_f(mdima,kmaxs,2), cofv_f(mdima,kmax,2,2))
    2746 
    2747  iromb = 0
    2748  maxwv = jcap
    2749  if (idrt < 0 .or. idrt > 256) idrt = 0
    2750  idir = 1
    2751 
    2752  IF(kindx(1).EQ.0) THEN
    2753  kfiles = 1
    2754  ELSE
    2755  kfiles = 2
    2756  ENDIF
    2757 
    2758 C Allocate for sigio read
    2759 C -----------------------
    2760 
    2761  sfcpress_id = mod(head(1)%IDVM,ten)
    2762  thermodyn_id = mod(head(1)%IDVM/ten,ten)
    2763 
    2764  print *,'in sig sfcpress_id=',sfcpress_id,' thermodyn_id=',
    2765  $ thermodyn_id,' ntrac=',ntrac
    2766  print *,' idvc=',idvc,' idsl=',idsl,' idvm=',idvm,
    2767  $ ' nvcoord=',nvcoord
    2768 
    2769  DO ifile=1,kfiles
    2770  CALL sigio_aldats(head(ifile),dats,irets)
    2771  CALL sigio_aldatm(head(ifile),one,km4,datm,irets)
    2772  ! Read surface fields
    2773  CALL sigio_rrdats(iunit4(ifile),head(ifile),dats,irets)
    2774 
    2775  IF(irets.NE.0) THEN
    2776  print *,' irets from sigio_rrdats = ', irets
    2777  RETURN
    2778  ENDIF
    2779 
    2780  DO i=1,mdima
    2781  cofs_f(i,1,ifile) = dats%HS(i)
    2782  cofs_f(i,2,ifile) = dats%PS(i)
    2783  ENDDO
    2784 
    2785  ! Read fields on levels 1 through kmax
    2786  CALL sigio_rrdatm(iunit4(ifile),head(ifile),datm,irets)
    2787  IF(irets.NE.0) THEN
    2788  print *,' irets from sigio_rrdatm = ', irets
    2789  RETURN
    2790  ENDIF
    2791 ccccc print *,' aft sigio_rrdatm irets=',irets
    2792 
    2793  ie = kmax + 2
    2794  cofs_f(:,3:ie,ifile) = datm%T
    2795  DO i=1,ntrac
    2796  ib = ie + 1
    2797  ie = ib + kmax - 1
    2798  cofs_f(:,ib:ie,ifile) = datm%Q(:,1:kmax,i)
    2799  ENDDO
    2800  cofv_f(:,:,1,ifile) = datm%D
    2801  cofv_f(:,:,2,ifile) = datm%Z
    2802 
    2803  CALL sigio_axdats(dats,irets)
    2804  CALL sigio_axdatm(datm,irets)
    2805  ENDDO
    2806 
    2807 ccccc print *,' after sigio_axdatm'
    2808 
    2809  ALLOCATE (cofs(mdima,kmaxs), cofv(mdima,kmax,2))
    2810  ALLOCATE (grds(imax,jmax,kmaxs), grdv(imax,jmax,kmax,2))
    2811  ALLOCATE (wrk1(imax*jmax,kmax), wrk2(imax*jmax,kmax+1))
    2812 
    2813  IF(kfiles.EQ.1) THEN
    2814  DO i = 1,mdima
    2815  cofs(i,1:kmaxs) = cofs_f(i,1:kmaxs,1)
    2816  cofv(i,1:kmax,1:2) = cofv_f(i,1:kmax,1:2,1)
    2817  ENDDO
    2818 
    2819  ELSE
    2820  cofs=
    2821  $ ((abs(kindx(2))*cofs_f(:,:,1)) +(kindx(1)*cofs_f(:,:,2)))/3.
    2822  cofv=
    2823  $ ((abs(kindx(2))*cofv_f(:,:,:,1))+(kindx(1)*cofv_f(:,:,:,2)))/3.
    2824  ENDIF
    2825 
    2826  DEALLOCATE (cofs_f, cofv_f)
    2827 
    2828  CALL sptezm(iromb,maxwv,idrt,imax,jmax,kmaxs,cofs,grds,idir)
    2829  CALL sptezmv(iromb,maxwv,idrt,imax,jmax,kmax,
    2830  & cofv(1,1,1),cofv(1,1,2),grdv(1,1,1,1),grdv(1,1,1,2),idir)
    2831 
    2832  IF( sfcpress_id == 2 ) THEN ! for enthalpy version
    2833  grds(:,:,2) = 1000.0*grds(:,:,2) ! Now in Pa
    2834  ELSE
    2835  grds(:,:,2) = 1000.0*exp(grds(:,:,2)) ! Now in Pa
    2836  ENDIF
    2837 
    2838  DO ns=1, kmaxs
    2839  CALL gblevn11(imax,jmax,grds(1,1,ns))
    2840  ENDDO
    2841  DO j=1,jmax
    2842  DO i=1,imax
    2843  iar12z(i,j) = grds(i,j,1) ! Orography
    2844  iar13p(i,j) = grds(i,j,2) * 0.01 ! Surface Pressure in hPa
    2845  ENDDO
    2846  ENDDO
    2847 
    2848  IF(thermodyn_id == 3 .AND. idvc == 3) THEN
    2849  grds(:,:,3:2+kmax) = grds(:,:,3:2+kmax) / head(1)%CPI(1)
    2850  print *,' cpi(0)=',head(1)%cpi(1)
    2851  ENDIF
    2852  CALL sigio_modpr(imjm4,imjm4,km4,nvcoord,idvc,idsl,vcoord,iret,
    2853  $ grds(1,1,2),grds(1,1,3),pm=wrk1,pd=wrk2(1,2))
    2854 
    2855  DO j=1,jmax
    2856  jj = (j-1)*imax
    2857  DO i=1,imax
    2858  wrk2(i+jj,1) = grds(i,j,2) ! in Pa
    2859  ENDDO
    2860  ENDDO
    2861  DO l=1,kmax
    2862  wrk2(:,l+1) = wrk2(:,l) - wrk2(:,l+1) ! in Pa
    2863  ENDDO
    2864 
    2865 ccccc print *,' wrk1=',wrk1(1001,:)
    2866 ccccc print *,' wrk2=',wrk2(1001,:)
    2867 
    2868 ccccc CALL GBLEVN11(IMAX,JMAX,WRK2(1,KMAX+1))
    2869 ccccc DO L=1,KMAX
    2870 ccccc CALL GBLEVN11(IMAX,JMAX,WRK1(1,L))
    2871 ccccc CALL GBLEVN11(IMAX,JMAX,WRK2(1,L))
    2872 ccccc ENDDO
    2873 
    2874  IF(thermodyn_id == 3 .AND. idvc == 3) THEN
    2875  ! Convert from enthalpy to temperature
    2876  grds(:,:,3:2+kmax) = grds(:,:,3:2+kmax) * head(1)%CPI(1)
    2877  CALL sigio_cnvtdv(imjm4,imjm4,km4,idvc,idvm,ntrac,iret,
    2878  $ grds(1,1,3),grds(1,1,3+kmax),head(1)%CPI,1_4)
    2879  ! Convert back to virtual temperature
    2880  grds(:,:,3:kmax+2) = grds(:,:,3:kmax+2) *
    2881  $ (1.+(461.50/287.05-1)*grds(:,:,3+kmax:2+kmax*2))
    2882  ENDIF
    2883 
    2884  DO l=1,kmax
    2885  DO k=1,2
    2886  CALL gblevn11(imax,jmax,grdv(1,1,l,k))
    2887  ENDDO
    2888  DO j=1,jmax
    2889  jj = (j-1)*imax
    2890  DO i=1,imax
    2891  iar14t(i,j,l) = grds(i,j,2+l) ! Temp (virtual)
    2892  iar15u(i,j,l) = grdv(i,j,l,1) ! U component
    2893  iar16v(i,j,l) = grdv(i,j,l,2) ! V component
    2894  ! specific humidity
    2895  iar17q(i,j,l) = max(0.0,grds(i,j,2+kmax+l)*1.0e6)
    2896  iarpsl(i,j,l) = wrk1(i+jj,l)*0.01 ! 3D layer pres(hPa)
    2897  ENDDO
    2898  ENDDO
    2899  ENDDO
    2900  DO l=1,kmax+1
    2901  DO j=1,jmax
    2902  jj = (j-1)*imax
    2903  DO i=1,imax
    2904  iarpsi(i,j,l) = wrk2(i+jj,l)*0.01 ! 3D interface pressure
    2905  ! (hPa)
    2906  ENDDO
    2907  ENDDO
    2908  ENDDO
    2909 
    2910 
    2911 ccccc print *,' iar14t=',iar14t(1,80,:)
    2912 ccccc print *,' iar15u=',iar15u(1,80,:)
    2913 ccccc print *,' iar16v=',iar16v(1,80,:)
    2914 ccccc print *,' iarpsi=',iarpsi(1,80,:)
    2915 ccccc print *,' iarpsl=',iarpsl(1,80,:)
    2916 
    2917  DEALLOCATE (cofs, cofv)
    2918  DEALLOCATE (grds, grdv, wrk1, wrk2)
    2919 
    2920  print *,' RETURNING from GBLENV10'
    2921 
    2922  RETURN
    2923 
    2924  END
    2925 C***********************************************************************
    2926 C***********************************************************************
    2927 C> North-south swap
    2928  subroutine gblevn11(imax,jmax,grid) ! formerly subroutine n_s_swap
    2929  implicit none
    2930  integer imax, jmax
    2931  real grid(imax,jmax)
    2932  real temp (imax)
    2933  integer i, j, jj
    2934 
    2935  do j=1,jmax/2
    2936  jj = jmax-j+1
    2937  do i=1,imax
    2938  temp(i) = grid(i,j)
    2939  grid(i,j) = grid(i,jj)
    2940  grid(i,jj) = temp(i)
    2941  enddo
    2942  enddo
    2943  return
    2944  end
    2945 C***********************************************************************
    2946 C***********************************************************************
    2947 C> Does something
    2948  subroutine gblevn11d(imax,jmax,grid)
    2949  implicit none
    2950  integer imax, jmax
    2951  real(kind=8) grid(imax,jmax)
    2952  real(kind=8) temp (imax)
    2953  integer i, j, jj
    2954 
    2955  do j=1,jmax/2
    2956  jj = jmax-j+1
    2957  do i=1,imax
    2958  temp(i) = grid(i,j)
    2959  grid(i,j) = grid(i,jj)
    2960  grid(i,jj) = temp(i)
    2961  enddo
    2962  enddo
    2963  return
    2964  end
    2965 !---------------------------------------------------------
    2966 C> Does something
    2967 C> @param iunitf
    2968 C> @param idatep
    2969 C> @param im
    2970 C> @param jm
    2971 C> @param IUNITF - 2-WORD ARRAY:
    2972 C> For SIGIO input:
    2973 C> - WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL
    2974 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    2975 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    2976 C> THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN
    2977 C> IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID
    2978 C> AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT
    2979 C> IS A MULTIPLE OF 3
    2980 C> - WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL
    2981 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    2982 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    2983 C> THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE
    2984 C> OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER
    2985 C> THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    2986 C> For NEMSIO input:
    2987 C> - WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE
    2988 C> (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT
    2989 C> THE DATE IN IDATEP
    2990 C> - WORD 2 - NOT USED, SHOULD BE A NULL FILE
    2991 C> @param IDATEP - CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    2992 C> @param im
    2993 C> @param jm
    2994 C> @param IDRT INTEGER GRID IDENTIFIER
    2995 C> (IDRT=4 FOR GAUSSIAN GRID,
    2996 C> IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
    2997 C> IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    2998  SUBROUTINE gblevn12(IUNITF,IDATEP,IM,JM,IDRT)
    2999 !---------------------------------------------------------
    3000 !--INITIALLY DEVELOPED BY HANG LEI BASED ON GBLEVN10 FOR NEMSIO
    3001 !--AND SUBSEQUENTLY MODIFIED BY FANGLIN YANG AND RUSS TREADON
    3002 
    3003  USE gblevn_module
    3004  USE nemsio_module
    3005  USE nemsio_openclose
    3006  USE nemsio_read
    3007  USE nemsio_write
    3008  use sigio_module
    3009 
    3010  IMPLICIT NONE
    3011  INTEGER IUNITF(2), IDATEP, IM, JM, IDRT
    3012  REAL(KIND=8),PARAMETER:: CON_RV=4.6150e+2,con_rd=2.8705e+2,
    3013  $ fv=con_rv/con_rd-1.,oner=1.0,qmin=1.0e-10
    3014  INTEGER*4, PARAMETER :: TEN=10
    3015 
    3016  INTEGER*4 IDRTNEMS
    3017  INTEGER*4 IRET,IMJM4,KM4,IDVM,NTRAC
    3018 
    3019  INTEGER IDATGS_COR,JCAP,JCAP1,JCAP2,JCAP1X2,MDIMA,MDIMB,MDIMC,
    3020  $ iromb,maxwv,idir,i,j,k,l,ii,jj
    3021 
    3022  INTEGER(4) IDATE7(7),JCAP4,IDVC4,DIMZ4,K4,IM4,JM4,KINDREAL,KINDINT
    3023  INTEGER(4) NFHOUR,NFMINUTE,NFSECONDN,NFSECONDD,idsl4,idvm4
    3024  REAL(8) tfac
    3025  REAL(4),ALLOCATABLE :: VCOORD4(:,:,:),CPI(:)
    3026  REAL,ALLOCATABLE :: tmp(:)
    3027  TYPE(NEMSIO_GFILE) :: GFILE
    3028 
    3029  INTEGER IDATE(8),JDATE(8)
    3030  CHARACTER*20 CFILE2
    3031  REAL FHOUR,RINC(5)
    3032  REAL (KIND=4),ALLOCATABLE :: psfc(:,:), tv(:,:,:),
    3033  $ wrk1(:,:), wrk2(:,:)
    3034 
    3035  imax = im
    3036  jmax = jm
    3037  imjm4 = im*jm
    3038 
    3039 ! no time interpolation needed for nemsio input since files are
    3040 ! available every hour - original logic to perform time interpolation
    3041 ! is flawed and has been removed in this revision
    3042 ! --------------------------------------------------------------------
    3043 
    3044  print 331, mod(idatep,100)
    3045  331 format(/' --> GBLEVENTS: ONLY ONE NEMSIO INPUT GLOBAL FILE IS ',
    3046  $ 'READ SINCE FILES ARE AVAILABLE EACH HOUR (NO NEED TO ',
    3047  $ 'INTERPOLATE'/16x,'SPANNING FILES WHEN THE PREPBUFR CENTER HOUR',
    3048  $ ' (',i2.2,') IS NOT A MULTIPLE OF 3)'/)
    3049 
    3050 C GET VALID-TIME DATE OF NEMSIO INPUT FILE, ALSO READ HEADERS
    3051 C -----------------------------------------------------------
    3052  CALL nemsio_init()
    3053 
    3054  rinc = 0
    3055  idate = 0
    3056  WRITE(cfile2,'("fort.",I2.2)') iunitf(1)
    3057 
    3058  CALL nemsio_open(gfile,trim(cfile2),'read',iret=iret)
    3059  print *,' cfile_nems2=',cfile2,'nemsio open,iret=',iret
    3060 
    3061  idrtnems=idrt
    3062  CALL nemsio_getfilehead(gfile,idate=idate7,
    3063  & jcap=jcap4,dimx=im4,dimy=jm4,
    3064  & dimz=dimz4,idvc=idvc4,ntrac=ntrac,idrt=idrtnems,
    3065  & nfhour=nfhour,nfminute=nfminute,nfsecondn=nfsecondn,
    3066  & nfsecondd=nfsecondd,idsl=idsl4,idvm=idvm4,iret=iret)
    3067  jcap=jcap4
    3068  idvc=idvc4
    3069  idsl=idsl4
    3070  idvm=idvm4
    3071  imax=im4
    3072  jmax=jm4
    3073  kmax=dimz4
    3074  if(idrt==-9999) idrt=4 ! default for gaussian grid
    3075  idate(1:3)=idate7(1:3)
    3076  idate(5)=idate7(4)
    3077 
    3078  ALLOCATE(vcoord(kmax+1,3))
    3079  vcoord=0.0
    3080 
    3081  IF(nfsecondd/=0.AND. nfsecondd/=-9999) THEN
    3082  fhour=REAL(NFHOUR,8)+REAL(NFMINUTE/60.,8)+
    3083  $ REAL(NFSECONDN*1./(NFSECONDD*360.),8)
    3084  ELSE
    3085  fhour=REAL(NFHOUR,8)+REAL(NFMINUTE/60.,8)
    3086  ENDIF
    3087  print'(" idate=",I5,7I3.2," fhour=",F7.3)', idate,fhour
    3088 
    3089  ALLOCATE(vcoord4(kmax+1,3,2))
    3090  CALL nemsio_getfilehead(gfile,vcoord=vcoord4,iret=iret)
    3091  nvcoord=3
    3092  IF(maxval(vcoord4(:,3,1))==0..AND.minval(vcoord4(:,3,1))==0.) THEN
    3093  nvcoord=2
    3094  IF(maxval(vcoord4(:,2,1))==0..AND.minval(vcoord4(:,2,1))==0.)
    3095  $ nvcoord=1
    3096  ENDIF
    3097 
    3098  vcoord(1:kmax+1,1:nvcoord)=vcoord4(1:kmax+1,1:nvcoord,1)
    3099  DEALLOCATE(vcoord4)
    3100 
    3101  ALLOCATE(cpi(ntrac+1))
    3102  CALL nemsio_getheadvar(gfile,'CPI',cpi,iret=iret)
    3103 
    3104  rinc(2) = fhour
    3105  CALL w3movdat(rinc,idate,jdate)
    3106 
    3107  print 1, fhour,(idate(ii),ii=1,3),idate(5),(jdate(ii),ii=1,3),
    3108  $ jdate(5)
    3109  1 FORMAT(' --> GBLEVENTS: GLOBAL NEMSIO FILE: HERE IS A ',f5.1,
    3110  $ ' HOUR FORECAST FROM ',i5.4,3i3.2,' VALID AT ',i5.4,3i3.2)
    3111 
    3112  idatgs_cor = (jdate(1) * 1000000) + (jdate(2) * 10000) +
    3113  $ (jdate(3) * 100) + jdate(5)
    3114 
    3115 C VALID DATES MUST MATCH
    3116 C ----------------------
    3117 
    3118  IF(idatep.NE.idatgs_cor) GO TO 901
    3119 
    3120 C------------------------------------------
    3121 
    3122  sfcpress_id = mod(idvm,ten)
    3123  thermodyn_id = mod(idvm/ten,ten)
    3124 
    3125  IF(idvc == 3 .AND. thermodyn_id == 3) THEN
    3126  kmaxs = (ntrac+1)*kmax + 2
    3127  ELSE
    3128  kmaxs = 2*kmax + 2
    3129  ntrac = 1
    3130  ENDIF
    3131 
    3132  ALLOCATE (iar12z(imax,jmax), iar13p(imax,jmax))
    3133  ALLOCATE (iar14t(imax,jmax,kmax), iar15u(imax,jmax,kmax),
    3134  $ iar16v(imax,jmax,kmax), iar17q(imax,jmax,kmax),
    3135  $ iarpsl(imax,jmax,kmax), iarpsi(imax,jmax,kmax+1),
    3136  $ iarpsd(imax,jmax,kmax))
    3137 
    3138 !!! DAK: is this right???????
    3139  if(idvc.eq.0) idvc = 1 ! Reset IDVC=0 to 1 (sigma coord.)
    3140  IF(idvc < 0 .or. idvc > 3) THEN
    3141  print *, '##GBLEVENTS/GBLEVN12: INVALID VERT COORD ID (=',idvc
    3142  ENDIF
    3143 
    3144 
    3145 C DEFINE THE OTHER RESOLUTION PARAMETERS
    3146 C --------------------------------------
    3147 
    3148  jcap1 = jcap+1
    3149  jcap2 = jcap+2
    3150  jcap1x2 = jcap1*2
    3151  mdima = jcap1*jcap2
    3152  mdimb = mdima/2+jcap1
    3153  mdimc = mdimb*2
    3154 
    3155  dlat = 180./(jmax-1)
    3156  dlon = 360./imax
    3157 
    3158  print 2, jcap,imax,jmax,kmax,kmaxs,dlat,dlon,idvc
    3159 
    3160 ! DAK: is below correct??????????
    3161  2 FORMAT(/' --> GBLEVENTS: GLOBAL MODEL SPECS: T',i5,' ',
    3162  $ i5,' x ',i5,' GRID WITH ',i3,' LEVELS ',i3,
    3163  $' SCALARS -------> ',f5.2,' X ',f5.2,' VERT. ',
    3164  $ 'COORD ID IS: ',i0,' (not sure what this means!')
    3165 
    3166 C***********************************************************************
    3167 
    3168  iromb = 0
    3169  maxwv = jcap
    3170  if (idrt < 0 .or. idrt > 256) idrt = 0
    3171  idir = 1
    3172 
    3173  print *,'in nem sfcpress_id=',sfcpress_id,' thermodyn_id=',
    3174  $ thermodyn_id,' ntrac=',ntrac
    3175  print *,' idvc=',idvc,' idsl=',idsl,' idvm=',idvm,' nvcoord=',
    3176  $ nvcoord
    3177 
    3178  call w3kind(kindreal,kindint)
    3179 
    3180 ! print *,'in gblevent, get fields,imax,jmax
    3181  allocate(tmp(imax*jmax))
    3182 !
    3183 ! hgt
    3184  k4=1
    3185  if(kindreal==4) then
    3186  CALL nemsio_readrecvw34(gfile,'hgt','sfc',k4,tmp,iret=iret)
    3187  else
    3188  CALL nemsio_readrecv(gfile,'hgt','sfc',k4,tmp,iret=iret)
    3189  endif
    3190 ! print *,'in getnemsio,hgtsfc,',maxval(tmp),minval(tmp),iret
    3191  if(iret==0) THEN
    3192  iar12z(:,:)=reshape(tmp,(/imax,jmax/))
    3193  call gblevn11d(imax,jmax,iar12z)
    3194  ENDIF
    3195 
    3196 !sfc pres, input in Pa, out in hPa
    3197  if(kindreal==4) then
    3198  CALL nemsio_readrecvw34(gfile,'pres','sfc',k4,tmp,iret=iret)
    3199  else
    3200  CALL nemsio_readrecv(gfile,'pres','sfc',k4,tmp,iret=iret)
    3201  endif
    3202 ! print *,'in getnemsio,pressfc,',maxval(tmp),minval(tmp),iret
    3203  if(iret==0) THEN
    3204  iar13p(:,:)=reshape(tmp*0.01,(/imax,jmax/))
    3205  call gblevn11d(imax,jmax,iar13p)
    3206  ENDIF
    3207 !dpres
    3208 ! DO K4=1,KMAX
    3209 ! if(kindreal==4) then
    3210 ! CALL NEMSIO_READRECVw34(GFILE,'dpres','mid layer',K4,tmp,
    3211 ! $ iret=iret)
    3212 ! else
    3213 ! CALL NEMSIO_READRECV(GFILE,'dpres','mid layer',K4,tmp,
    3214 ! $ iret=iret)
    3215 ! endif
    3216 ! print *,'in getnemsio,dpres,k4=',k4,maxval(tmp),minval(tmp),
    3217 ! $ iret
    3218 ! if(iret==0) THEN
    3219 ! IARPSI(:,:,K4+1)=reshape(tmp*0.01,(/imax,jmax/))
    3220 ! ENDIF
    3221 ! ENDDO
    3222 
    3223 !pres
    3224 ! DO K4=1,KMAX
    3225 ! if(kindreal==4) then
    3226 ! CALL NEMSIO_READRECVw34(GFILE,'pres','mid layer',K4,tmp,
    3227 ! $ iret=iret)
    3228 ! else
    3229 ! CALL NEMSIO_READRECV(GFILE,'pres','mid layer',K4,tmp,
    3230 ! $ iret=iret)
    3231 ! endif
    3232 ! print *,'in getnemsio,pres,k4=',k4,maxval(tmp),minval(tmp),iret
    3233 ! if(iret==0) THEN
    3234 ! IARPSL(:,:,k4)=reshape(tmp*0.01,(/imax,jmax/))
    3235 ! ENDIF
    3236 ! ENDDO
    3237 ! tmp
    3238  DO k4=1,kmax
    3239  if(kindreal==4) then
    3240  CALL nemsio_readrecvw34(gfile,'tmp','mid layer',k4,tmp,
    3241  $ iret=iret)
    3242  else
    3243  CALL nemsio_readrecv(gfile,'tmp','mid layer',k4,tmp,
    3244  $ iret=iret)
    3245  endif
    3246 ! print *,'in getnemsio,tmp,k4=',k4,maxval(tmp),minval(tmp),iret
    3247  if(iret==0) THEN
    3248  iar14t(:,:,k4)=reshape(tmp,(/imax,jmax/))
    3249  call gblevn11d(imax,jmax,iar14t(1,1,k4))
    3250  ENDIF
    3251  ENDDO
    3252 !u
    3253  DO k4=1,kmax
    3254  if(kindreal==4) then
    3255  CALL nemsio_readrecvw34(gfile,'ugrd','mid layer',k4,tmp,
    3256  $ iret=iret)
    3257  else
    3258  CALL nemsio_readrecv(gfile,'ugrd','mid layer',k4,tmp,
    3259  $ iret=iret)
    3260  endif
    3261 ! print *,'in getnemsio,utmp,k4=',k4,maxval(tmp),minval(tmp),iret
    3262  if(iret==0) THEN
    3263  iar15u(:,:,k4)=reshape(tmp,(/imax,jmax/))
    3264  call gblevn11d(imax,jmax,iar15u(1,1,k4))
    3265  ENDIF
    3266  ENDDO
    3267 ! do k=1,kmax
    3268 ! print *,'in getnemsio,i15u,k=',k,maxval(iar15u(:,:,k)),
    3269 ! $ minval(iar15u(:,:,k)),iret
    3270 ! end do
    3271 ! print *,'in getnemsio,IAR15U.1,',maxval(IAR15U),minval(IAR15U)
    3272 
    3273 !v
    3274  DO k4=1,kmax
    3275  if(kindreal==4) then
    3276  CALL nemsio_readrecvw34(gfile,'vgrd','mid layer',k4,tmp,
    3277  $ iret=iret)
    3278  else
    3279  CALL nemsio_readrecv(gfile,'vgrd','mid layer',k4,tmp,
    3280  $ iret=iret)
    3281  endif
    3282  if(iret==0) THEN
    3283  iar16v(:,:,k4)=reshape(tmp,(/imax,jmax/))
    3284  call gblevn11d(imax,jmax,iar16v(1,1,k4))
    3285  ENDIF
    3286  ENDDO
    3287 ! print *,'in getnemsio,IAR15U.2,',maxval(IAR15U),minval(IAR15U)
    3288 !q
    3289  DO k4=1,kmax
    3290  if(kindreal==4) then
    3291  CALL nemsio_readrecvw34(gfile,'spfh','mid layer',k4,tmp,
    3292  $ iret=iret)
    3293  else
    3294  CALL nemsio_readrecv(gfile,'spfh','mid layer',k4,tmp,
    3295  $ iret=iret)
    3296  endif
    3297  if(iret==0) THEN
    3298  iar17q(:,:,k4)=max(0.0,reshape(tmp*1.0e6,(/imax,jmax/)) )
    3299  call gblevn11d(imax,jmax,iar17q(1,1,k4))
    3300  endif
    3301  ENDDO
    3302 ! print *,'in getnemsio,IAR15U.3,',maxval(IAR15U),minval(IAR15U)
    3303 
    3304 !
    3305  deallocate(tmp)
    3306  CALL nemsio_close(gfile,iret=iret)
    3307 ! print *,'end of nemsio'
    3308 !
    3309 
    3310 ! print *,'in getnemsio,IAR15U.4,',maxval(IAR15U),minval(IAR15U)
    3311 
    3312 !--compute Tv from temp
    3313  DO k=1,kmax
    3314  DO j=1,jmax
    3315  DO i=1,imax
    3316  tfac=oner+fv*max(iar17q(i,j,k)*1.0e-6,qmin)
    3317  iar14t(i,j,k)=iar14t(i,j,k)*tfac
    3318  ENDDO
    3319  ENDDO
    3320  ENDDO
    3321 
    3322 ! print *,'in getnemsio,IAR15U.5,',maxval(IAR15U),minval(IAR15U)
    3323 
    3324 !--COMPUTE PM AND PD
    3325  ALLOCATE (psfc(imax,jmax), tv(imax,jmax,kmax))
    3326  ALLOCATE (wrk1(imax*jmax,kmax), wrk2(imax*jmax,kmax+1))
    3327 
    3328  imjm4=imax*jmax
    3329  km4=kmax
    3330  psfc(:,:) = iar13p(:,:)*100.
    3331  tv(:,:,:) = iar14t(:,:,:)
    3332 
    3333  IF(thermodyn_id == 3 .AND. idvc == 3) THEN
    3334  tv(:,:,:) = tv(:,:,:) / cpi(1)
    3335  print *,' cpi(1)=',cpi(1)
    3336  ENDIF
    3337 
    3338  CALL sigio_modpr(imjm4,imjm4,km4,nvcoord,idvc,idsl,vcoord,iret,
    3339  $ psfc,tv,pm=wrk1,pd=wrk2(1,2))
    3340  DO j=1,jmax
    3341  jj = (j-1)*imax
    3342  DO i=1,imax
    3343  wrk2(i+jj,1) = psfc(i,j) ! in Pa
    3344  ENDDO
    3345  ENDDO
    3346  DO l=1,kmax
    3347  wrk2(:,l+1) = wrk2(:,l) - wrk2(:,l+1) ! in Pa
    3348  ENDDO
    3349 
    3350  DO l=1,kmax
    3351  DO j=1,jmax
    3352  jj = (j-1)*imax
    3353  DO i=1,imax
    3354  iarpsl(i,j,l) = wrk1(i+jj,l)*0.01 ! 3D layer pres(hPa)
    3355  ENDDO
    3356  ENDDO
    3357  ENDDO
    3358  DO l=1,kmax+1
    3359  DO j=1,jmax
    3360  jj = (j-1)*imax
    3361  DO i=1,imax
    3362  iarpsi(i,j,l) = wrk2(i+jj,l)*0.01 ! 3D interface pressure
    3363  ! (hPa)
    3364  ENDDO
    3365  ENDDO
    3366  ENDDO
    3367 
    3368 ! print*,'GBLEVN12 IARPSI,',maxval(IARPSI),minval(IARPSI)
    3369 ! print*,'GBLEVN12 IARPSL,',maxval(IARPSL),minval(IARPSL)
    3370 
    3371  CALL nemsio_finalize()
    3372 !
    3373  CALL getlats(idrt)
    3374 
    3375  RETURN
    3376 
    3377  901 CONTINUE
    3378  print 9901, (jdate(ii),ii=1,3),jdate(5),idatep
    3379  9901 FORMAT(/' ##GBLEVENTS/GBLEVN12 - NEMSIO INPUT GLOBAL FILE DATE',
    3380  $ ' (',i4.4,3(i2.2),'), DOES NOT MATCH PREPBUFR FILE CENTER ',
    3381  $ 'DATE (',i10,') -STOP 68'/)
    3382  CALL errexit(68)
    3383 
    3384  END
    3385 ! --------------------------------------------------------------------
    3386 C> NetCDF Input
    3387 C> @param IUNITF - 2-WORD ARRAY:
    3388 C> For SIGIO input:
    3389 C> - WORD 1 - UNIT NUMBER OF FIRST INPUT SIGIO-BASED GLOBAL
    3390 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    3391 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    3392 C> THIS FILE IS VALID AT THE DATE IN IDATEP, IF HH IN
    3393 C> IDATEP IS NOT A MULTIPLE OF 3 THEN THIS FILE IS VALID
    3394 C> AT THE CLOSEST TIME PRIOR TO THE DATE IN IDATEP THAT
    3395 C> IS A MULTIPLE OF 3
    3396 C> - WORD 2 - UNIT NUMBER OF SECOND INPUT SIGIO-BASED GLOBAL
    3397 C> (SIGMA OR HYBRID) FILE (EITHER FIRST GUESS OR
    3398 C> ANALYSIS); IF HH IN IDATEP IS A MULTIPLE OF 3 THEN
    3399 C> THIS FILE IS EMPTY, IF HH IN IDATEP IS NOT A MULTIPLE
    3400 C> OF 3 THEN THIS FILE IS VALID AT THE CLOSEST TIME AFTER
    3401 C> THE DATE IN IDATEP THAT IS A MULTIPLE OF 3
    3402 C> For NEMSIO input:
    3403 C> - WORD 1 - UNIT NUMBER OF INPUT NEMSIO-BASED GLOBAL FILE
    3404 C> (EITHER FIRST GUESS OR ANALYSIS); ALWAYS VALID AT AT
    3405 C> THE DATE IN IDATEP
    3406 C> - WORD 2 - NOT USED, SHOULD BE A NULL FILE
    3407 C> @param IDATEP - CENTER DATE FOR PREPBUFR FILE IN THE FORM YYYYMMDDHH
    3408 C> @param IMX
    3409 C> @param JMX
    3410 C> @param IDRT INTEGER GRID IDENTIFIER
    3411 C> (IDRT=4 FOR GAUSSIAN GRID,
    3412 C> IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
    3413 C> IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    3414  SUBROUTINE gblevn13(IUNITF,IDATEP,IMX,JMX,IDRT)
    3415 !---------------------------------------------------------
    3416 !--INITIALLY DEVELOPED BY HANG LEI BASED ON GBLEVN10 FOR NETCDF INPUT
    3417 
    3418  USE gblevn_module
    3419  use sigio_module
    3420  use netcdf
    3421 
    3422  IMPLICIT NONE
    3423  INTEGER IUNITF(2), IDATEP, IDRT,IMX,JMX
    3424  INTEGER yyyy,mm,dd,hh
    3425  INTEGER*4 ncid
    3426  integer*4 error, id_var, dimid, len
    3427  integer*4 im,jm,km, lm,n, k,nargs
    3428  REAL(KIND=8),PARAMETER:: CON_RV=4.6150e+2,con_rd=2.8705e+2,
    3429  $ fv=con_rv/con_rd-1.,oner=1.0,qmin=1.0e-10
    3430  INTEGER*4, PARAMETER :: TEN=10
    3431 
    3432  INTEGER*4 IRET,IMJM4,KM4,IDVM,NTRAC
    3433 
    3434  INTEGER IDATGS_COR,JCAP,JCAP1,JCAP2,JCAP1X2,MDIMA,MDIMB,MDIMC,
    3435  $ iromb,maxwv,idir,i,j,l,ii,jj
    3436 
    3437  INTEGER(4) IDATE7(7),JCAP4,IDVC4,DIMZ4,K4,IM4,JM4,KINDREAL,KINDINT
    3438  INTEGER(4) NFHOUR,NFMINUTE,NFSECONDN,NFSECONDD,idsl4,idvm4,kr
    3439  REAL(8) tfac, time
    3440  REAL(4),ALLOCATABLE :: VCOORD4(:,:,:),CPI(:),ak(:),bk(:)
    3441  REAL,ALLOCATABLE :: temp(:,:), temp3d(:,:,:)
    3442 ! CHARACTER,ALLOCATABLE :: attone(:)
    3443  character (len = 80) :: attone
    3444  INTEGER nt1, nt2
    3445  character(len=10) :: dim_nam, grid
    3446  CHARACTER*20 gfname
    3447 
    3448  INTEGER(4) IDATE(8),JDATE(8)
    3449  REAL(4) FHOUR,RINC(5)
    3450 
    3451  REAL (KIND=4),ALLOCATABLE :: psfc(:,:), tv(:,:,:),
    3452  $ wrk1(:,:), wrk2(:,:)
    3453 
    3454  imax = im
    3455  jmax = jm
    3456 
    3457 ! no time interpolation needed for netcdf input since files are
    3458 ! available every hour - original logic to perform time interpolation
    3459 ! is flawed and has been removed in this revision
    3460 ! --------------------------------------------------------------------
    3461 
    3462  print 331, mod(idatep,100)
    3463  331 format(/' --> GBLEVENTS: ONLY ONE NETCDF INPUT GLOBAL FILE IS ',
    3464  $ 'READ SINCE FILES ARE AVAILABLE EACH HOUR (NO NEED TO ',
    3465  $ 'INTERPOLATE'/16x,'SPANNING FILES WHEN THE PREPBUFR CENTER HOUR',
    3466  $ ' (',i2.2,') IS NOT A MULTIPLE OF 3)'/)
    3467 
    3468 C GET VALID-TIME DATE OF NETCDF INPUT FILE, ALSO READ HEADERS
    3469 C -----------------------------------------------------------
    3470 
    3471  WRITE(gfname,'("fort.",I2.2)') iunitf(1)
    3472 
    3473  error=nf90_open(trim(gfname),nf90_nowrite,ncid)
    3474  error=nf90_inq_dimid(ncid,"grid_xt",dimid)
    3475  error=nf90_inquire_dimension(ncid,dimid,dim_nam,im)
    3476  error=nf90_inq_dimid(ncid,"grid_yt",dimid)
    3477  error=nf90_inquire_dimension(ncid,dimid,dim_nam,jm)
    3478  error=nf90_inq_dimid(ncid,"pfull",dimid)
    3479  error=nf90_inquire_dimension(ncid,dimid,dim_nam,km)
    3480  error=nf90_inq_dimid(ncid,"phalf",dimid)
    3481  error=nf90_inquire_dimension(ncid,dimid,dim_nam,lm)
    3482  print*, "im,jm,kmi,lm:",im,jm,km,lm
    3483  print*, "IMX, JMX:", imx, jmx
    3484  IF (imx .NE. im .OR. jmx .NE. jm) print*, "Different Resolutions"
    3485  imax = im
    3486  jmax = jm
    3487  kmax = km
    3488 
    3489 ! error=nf90_inq_varid(ncid, 'pfull', id_var)
    3490 ! error=nf90_get_var(ncid, id_var, )
    3491 
    3492 
    3493 ! CALL W3MOVDAT(RINC,IDATE,JDATE)
    3494 
    3495 
    3496 
    3497 C VALID DATES MUST MATCH
    3498 C ----------------------
    3499  error=nf90_inq_varid(ncid, "time", id_var)
    3500  error=nf90_inquire_attribute(ncid, id_var, "units", len=len)
    3501 ! ALLOCATE (attone(len))
    3502  error=nf90_get_att(ncid, id_var, "units", attone)
    3503  read(attone(len-18:len-15),'(i4)') yyyy
    3504  read(attone(len-13:len-12),'(i2)') mm
    3505  read(attone(len-10:len-9),'(i2)') dd
    3506  read(attone(len-7:len-6),'(i2)') hh
    3507  IF(attone(1:5) .NE. "hours") THEN
    3508  print*, "checkout the time unit, not hourly",attone
    3509  ELSE
    3510  print*, "base time", yyyy,mm,dd,hh
    3511  ENDIF
    3512 ! DEALLOCATE (attone)
    3513  error=nf90_get_var(ncid, id_var, time)
    3514  fhour=time
    3515 
    3516  idate = 0
    3517  idate(1)=yyyy
    3518  idate(2)=mm
    3519  idate(3)=dd
    3520  idate(5)=hh
    3521 
    3522  rinc=0.0
    3523  rinc(2)=fhour
    3524 
    3525  CALL w3movdat(rinc,idate,jdate)
    3526 
    3527  print 1, fhour,(idate(ii),ii=1,3),idate(5),(jdate(ii),ii=1,3),
    3528  $ jdate(5)
    3529  1 FORMAT(' --> GBLEVENTS: GLOBAL NEMSIO FILE: HERE IS A ',f5.1,
    3530  $ ' HOUR FORECAST FROM ',i5.4,3i3.2,' VALID AT ',i5.4,3i3.2)
    3531 
    3532  idatgs_cor = (jdate(1) * 1000000) + (jdate(2) * 10000) +
    3533  $ (jdate(3) * 100) + jdate(5)
    3534 
    3535 C VALID DATES MUST MATCH
    3536 C ----------------------
    3537 
    3538  IF(idatep.NE.idatgs_cor) GO TO 901
    3539 
    3540 C------------------------------------------
    3541 
    3542  ALLOCATE (iar12z(im,jm), iar13p(im,jm))
    3543  ALLOCATE (iar14t(im,jm,km), iar15u(im,jm,km),
    3544  $ iar16v(im,jm,km), iar17q(im,jm,km),
    3545  $ iarpsl(im,jm,km), iarpsi(im,jm,km+1),
    3546  $ iarpsd(im,jm,km))
    3547 
    3548  error=nf90_get_att(ncid, nf90_global, "grid", grid)
    3549  IF (grid == "gaussian")THEN
    3550  idrt=4
    3551  ENDIF
    3552 
    3553  nvcoord=2 !for idvc=2, nvcoord=2: hybrid interface a and b
    3554  idvc=2 !(1 for sigma and 2 for hybrid)
    3555  idsl=1 !(1 for phillips or 2 for mean)
    3556  idvm=1
    3557  jcap = -9999
    3558 
    3559  sfcpress_id = mod(idvm,ten)
    3560  thermodyn_id = mod(idvm/ten,ten)
    3561 
    3562  IF(idvc == 3 .AND. thermodyn_id == 3) THEN
    3563  kmaxs = (ntrac+1)*kmax + 2
    3564  ELSE
    3565  kmaxs = 2*kmax + 2
    3566  ntrac = 1
    3567  ENDIF
    3568 
    3569 C DEFINE THE OTHER RESOLUTION PARAMETERS
    3570 C --------------------------------------
    3571 
    3572  dlat = 180./(jmax-1)
    3573  dlon = 360./imax
    3574 
    3575  print 2, jcap,imax,jmax,kmax,kmaxs,dlat,dlon,idvc
    3576 
    3577  2 FORMAT(/' --> GBLEVENTS: GLOBAL MODEL SPECS: T',i5,' ',
    3578  $ i5,' x ',i5,' GRID WITH ',i3,' LEVELS ',i3,
    3579  $' SCALARS -------> ',f5.2,' X ',f5.2,' VERT. ',
    3580  $ 'COORD ID IS: ',i0)
    3581 
    3582  print *,'in netcdf sfcpress_id=',sfcpress_id,' thermodyn_id=',
    3583  $ thermodyn_id,' ntrac=',ntrac
    3584  print *,' idvc=',idvc,' idsl=',idsl,' idvm=',idvm,' nvcoord=',
    3585  $ nvcoord
    3586 
    3587  ALLOCATE(vcoord(km+1,3))
    3588  vcoord=0.0
    3589  allocate(ak(km+1))
    3590  allocate(bk(km+1))
    3591 
    3592  error=nf90_get_att(ncid, nf90_global, "ak", ak)
    3593  error=nf90_get_att(ncid, nf90_global, "bk", bk)
    3594 
    3595  do k=1,km+1
    3596  kr=km+2-k
    3597  vcoord(k,1) = ak(kr)
    3598  vcoord(k,2) = bk(kr)
    3599  end do
    3600 
    3601  deallocate(ak,bk)
    3602 
    3603  allocate(temp(im,jm))
    3604  error=nf90_inq_varid(ncid, 'hgtsfc', id_var)
    3605  error=nf90_get_var(ncid, id_var, temp)
    3606 
    3607  iar12z(:,:)=temp(:,:)
    3608  call gblevn11d(imax,jmax,iar12z)
    3609 
    3610 
    3611  error=nf90_inq_varid(ncid, 'pressfc', id_var)
    3612  error=nf90_get_var(ncid, id_var, temp)
    3613 
    3614  iar13p(:,:)=temp(:,:)*0.01
    3615  call gblevn11d(imax,jmax,iar13p)
    3616 
    3617  deallocate(temp)
    3618 
    3619 !! write(6,111)'hgtsfc', 1,minval(iar12z),maxval(iar12z)
    3620 !! write(6,111)'pressfc',1,minval(iar13p),maxval(iar13p)
    3621 !! 111 format(a8,1x,i3,1x,2(g13.6,1x))
    3622 
    3623 
    3624  allocate(temp3d(im,jm,km))
    3625  error=nf90_inq_varid(ncid, 'tmp', id_var)
    3626  error=nf90_get_var(ncid, id_var, temp3d)
    3627  DO k4=1,km
    3628  kr=km+1-k4
    3629  iar14t(:,:,k4)=temp3d(:,:,kr)
    3630  call gblevn11d(imax,jmax,iar14t(1,1,k4))
    3631 !! write(6,111)'tmp',k4,minval(iar14t(:,:,k4)),
    3632 !! & maxval(iar14t(:,:,k4))
    3633  ENDDO
    3634 
    3635  error=nf90_inq_varid(ncid, 'ugrd', id_var)
    3636  error=nf90_get_var(ncid, id_var, temp3d)
    3637  DO k4=1,km
    3638  kr=km+1-k4
    3639  iar15u(:,:,k4)=temp3d(:,:,kr)
    3640  call gblevn11d(imax,jmax,iar15u(1,1,k4))
    3641 !! write(6,111)'ugrd',k4,minval(iar15u(:,:,k4)),
    3642 !! & maxval(iar15u(:,:,k4))
    3643  ENDDO
    3644 
    3645  error=nf90_inq_varid(ncid, 'vgrd', id_var)
    3646  error=nf90_get_var(ncid, id_var, temp3d)
    3647  DO k4=1,km
    3648  kr=km+1-k4
    3649  iar16v(:,:,k4)=temp3d(:,:,kr)
    3650  call gblevn11d(imax,jmax,iar16v(1,1,k4))
    3651 !! write(6,111)'vgrd',k4,minval(iar16v(:,:,k4)),
    3652 !! & maxval(iar16v(:,:,k4))
    3653  ENDDO
    3654 
    3655  error=nf90_inq_varid(ncid, 'spfh', id_var)
    3656  error=nf90_get_var(ncid, id_var, temp3d)
    3657  DO k4=1,km
    3658  kr=km+1-k4
    3659  iar17q(:,:,k4)=max(0.0,temp3d(:,:,kr)*1.e6)
    3660  call gblevn11d(imax,jmax,iar17q(1,1,k4))
    3661 !! write(6,111)'spfh',k4,minval(iar17q(:,:,k4)),
    3662 !! & maxval(iar17q(:,:,k4))
    3663  ENDDO
    3664 
    3665  deallocate(temp3d)
    3666 !
    3667 
    3668 
    3669 !--compute Tv from temp
    3670  DO k=1,km
    3671  DO j=1,jm
    3672  DO i=1,im
    3673  tfac=oner+fv*max(iar17q(i,j,k)*1.0e-6,qmin)
    3674  iar14t(i,j,k)=iar14t(i,j,k)*tfac
    3675  ENDDO
    3676  ENDDO
    3677  ENDDO
    3678 
    3679 ! print *,'in getnemsio,IAR15U.5,',maxval(IAR15U),minval(IAR15U)
    3680 
    3681 
    3682 
    3683 !--COMPUTE PM AND PD
    3684  ALLOCATE (psfc(im,jm), tv(im,jm,km))
    3685  ALLOCATE (wrk1(im*jm,km), wrk2(im*jm,km+1))
    3686 
    3687  imjm4=im*jm
    3688  km4=km
    3689  psfc(:,:) = iar13p(:,:)*100.
    3690  tv(:,:,:) = iar14t(:,:,:)
    3691 
    3692  IF(thermodyn_id == 3 .AND. idvc == 3) THEN
    3693  tv(:,:,:) = tv(:,:,:) / cpi(1)
    3694  print *,' cpi(1)=',cpi(1)
    3695  ENDIF
    3696 
    3697  CALL sigio_modpr(imjm4,imjm4,km4,nvcoord,idvc,idsl,vcoord,iret,
    3698  $ psfc,tv,pm=wrk1,pd=wrk2(1,2))
    3699  DO j=1,jm
    3700  jj = (j-1)*im
    3701  DO i=1,im
    3702  wrk2(i+jj,1) = psfc(i,j) ! in Pa
    3703  ENDDO
    3704  ENDDO
    3705  DO l=1,km
    3706  wrk2(:,l+1) = wrk2(:,l) - wrk2(:,l+1) ! in Pa
    3707  ENDDO
    3708 
    3709  DO l=1,km
    3710  DO j=1,jm
    3711  jj = (j-1)*im
    3712  DO i=1,im
    3713  iarpsl(i,j,l) = wrk1(i+jj,l)*0.01 ! 3D layer pres(hPa)
    3714  ENDDO
    3715  ENDDO
    3716  ENDDO
    3717  DO l=1,km+1
    3718  DO j=1,jm
    3719  jj = (j-1)*im
    3720  DO i=1,im
    3721  iarpsi(i,j,l) = wrk2(i+jj,l)*0.01 ! 3D interface pressure
    3722  ! (hPa)
    3723  ENDDO
    3724  ENDDO
    3725  ENDDO
    3726 
    3727  error=nf90_close(ncid)
    3728 ! print*,'GBLEVN13 IARPSI,',maxval(IARPSI),minval(IARPSI)
    3729 ! print*,'GBLEVN13 IARPSL,',maxval(IARPSL),minval(IARPSL)
    3730 
    3731 !
    3732  CALL getlats(idrt)
    3733 
    3734  RETURN
    3735 
    3736  901 CONTINUE
    3737  print 9901, idatep,idatgs_cor
    3738  9901 FORMAT(/' ##GBLEVENTS/GBLEVN13 - NETCDF INPUT GLOBAL FILE DATE',
    3739  $ ' (',i4.4,3(i2.2),'), DOES NOT MATCH PREPBUFR FILE CENTER ',
    3740  $ 'DATE (',i10,') -STOP 68'/)
    3741  CALL errexit(68)
    3742 
    3743  END
    3744 
    3745 !-----------------------------------------------------------------
    3746 !-----------------------------------------------------------------
    3747 C> get latitudes
    3748 C> @param IDRT INTEGER GRID IDENTIFIER
    3749 C> (IDRT=4 FOR GAUSSIAN GRID,
    3750 C> IDRT=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
    3751 C> IDRT=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
    3752  subroutine getlats(idrt)
    3754  USE gblevn_module
    3755 ! integer :: jmax
    3756 ! real,allocatable :: slat(:),wlat(:)
    3757 ! real :: rad2deg
    3758  real,allocatable :: slats(:)
    3759  real(4) slat(jmax),wlat(jmax),rad2deg
    3760 !get gaussian or regular latitude array based on idrt
    3761 
    3762 ! print *,'in getlats,idrt=',idrt
    3763  call splat(idrt,jmax,slat,wlat)
    3764  rad2deg=180./acos(-1.)
    3765  allocate(slats(jmax));
    3766  rad2deg=180./acos(-1.)
    3767  slats(:)=-asin(slat(:))*rad2deg
    3768  dlat=180./float(jmax-1)
    3769 
    3770  return
    3771  end
    subroutine getlats(idrt)
    get latitudes
    Definition: gblevents.f:3753
    +
    subroutine gblevn11d(imax, jmax, grid)
    Does something.
    Definition: gblevents.f:2949
    +
    subroutine gblevn11(imax, jmax, grid)
    North-south swap.
    Definition: gblevents.f:2929
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/gblevents_8md_source.html b/ver-1.11.0/gblevents/gblevents_8md_source.html new file mode 100644 index 000000000..530f3923e --- /dev/null +++ b/ver-1.11.0/gblevents/gblevents_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +gblevents: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/docs/gblevents.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/gblevents.fd/docs/gblevents.md
    +
    +
    +
    1 
    2 # Gblevents
    3 
    4 # Introduction
    5 
    6 The gblevents program performs pre and post processing of prepbufr events.
    7 
    8 This document is part of the <a href="../index.html">UFS_UTILS
    9 documentation</a>.
    10 
    11 The gblevents program is part of the
    12 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/gblevents/globals.html b/ver-1.11.0/gblevents/globals.html new file mode 100644 index 000000000..5a6747de3 --- /dev/null +++ b/ver-1.11.0/gblevents/globals.html @@ -0,0 +1,144 @@ + + + + + + + +gblevents: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/globals_func.html b/ver-1.11.0/gblevents/globals_func.html new file mode 100644 index 000000000..a3ab7397e --- /dev/null +++ b/ver-1.11.0/gblevents/globals_func.html @@ -0,0 +1,144 @@ + + + + + + + +gblevents: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/index.html b/ver-1.11.0/gblevents/index.html new file mode 100644 index 000000000..dacc593fc --- /dev/null +++ b/ver-1.11.0/gblevents/index.html @@ -0,0 +1,109 @@ + + + + + + + +gblevents: Gblevents + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gblevents +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Gblevents
    +
    +
    +

    +Introduction

    +

    The gblevents program performs pre and post processing of prepbufr events.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The gblevents program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/jquery.js b/ver-1.11.0/gblevents/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/gblevents/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    The gblevents program performs pre and post processing of prepbufr events.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/gblevents/menu.js b/ver-1.11.0/gblevents/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/gblevents/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/gblevents/menudata.js b/ver-1.11.0/gblevents/menudata.js new file mode 100644 index 000000000..312d00e07 --- /dev/null +++ b/ver-1.11.0/gblevents/menudata.js @@ -0,0 +1,31 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/gblevents/nav_f.png b/ver-1.11.0/gblevents/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/nav_g.png b/ver-1.11.0/gblevents/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +gblevents: Related Pages + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    gblevents +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/gblevents/resize.js b/ver-1.11.0/gblevents/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/gblevents/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/gblevents/search/all_0.html b/ver-1.11.0/gblevents/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/all_0.js b/ver-1.11.0/gblevents/search/all_0.js new file mode 100644 index 000000000..b528d07fe --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_0.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['gblevents',['GBLEVENTS',['../gblevents_8f.html#ab9637586a87e4e27a6fba1e513929ced',1,'gblevents.f']]], + ['gblevents_2ef',['gblevents.f',['../gblevents_8f.html',1,'']]], + ['gblevn01',['GBLEVN01',['../gblevents_8f.html#a6ead75e0a75fadf89d8256fc8cf553a5',1,'gblevents.f']]], + ['gblevn02',['GBLEVN02',['../gblevents_8f.html#a28ecb898a4cca4bda122f6f2812b57ad',1,'gblevents.f']]], + ['gblevn03',['GBLEVN03',['../gblevents_8f.html#aaa4d7b5d2f02d396a6f5c705451926df',1,'gblevents.f']]], + ['gblevn04',['GBLEVN04',['../gblevents_8f.html#aa25d5cfbbc589a7cbcc1e03f0f10f156',1,'gblevents.f']]], + ['gblevn06',['GBLEVN06',['../gblevents_8f.html#ac421896f9fbe651935ee0c8b4309ff9f',1,'gblevents.f']]], + ['gblevn08',['GBLEVN08',['../gblevents_8f.html#add8c26d28ca6ad6702e14d1853392ce0',1,'gblevents.f']]], + ['gblevn10',['GBLEVN10',['../gblevents_8f.html#a0398307066d7a225fd7431dfe9d0285e',1,'gblevents.f']]], + ['gblevn11',['gblevn11',['../gblevents_8f.html#ae0b8f5f53579f5e83c13cef4ec0bb212',1,'gblevents.f']]], + ['gblevn11d',['gblevn11d',['../gblevents_8f.html#af5ad2f659c0bd19db15354af69beb292',1,'gblevents.f']]], + ['gblevn12',['GBLEVN12',['../gblevents_8f.html#a100fca2a4b67e17aefcbb6d8ba282a9a',1,'gblevents.f']]], + ['gblevn13',['GBLEVN13',['../gblevents_8f.html#aa3ec70ed9cc6962a6461ad460af45e5a',1,'gblevents.f']]], + ['getlats',['getlats',['../gblevents_8f.html#a27ce6dc72ff2abed258ec718a1bf9246',1,'gblevents.f']]], + ['gblevents',['Gblevents',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/gblevents/search/all_1.html b/ver-1.11.0/gblevents/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/all_1.js b/ver-1.11.0/gblevents/search/all_1.js new file mode 100644 index 000000000..78a96d808 --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['oefg01',['OEFG01',['../gblevents_8f.html#aac25bbce627a635caa0f25daf2abaef8',1,'gblevents.f']]] +]; diff --git a/ver-1.11.0/gblevents/search/all_2.html b/ver-1.11.0/gblevents/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/all_2.js b/ver-1.11.0/gblevents/search/all_2.js new file mode 100644 index 000000000..4e21a0775 --- /dev/null +++ b/ver-1.11.0/gblevents/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_gblevents_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/gblevents/search/close.png b/ver-1.11.0/gblevents/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/search/files_0.html b/ver-1.11.0/gblevents/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/gblevents/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/files_0.js b/ver-1.11.0/gblevents/search/files_0.js new file mode 100644 index 000000000..cbc888a5a --- /dev/null +++ b/ver-1.11.0/gblevents/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gblevents_2ef',['gblevents.f',['../gblevents_8f.html',1,'']]] +]; diff --git a/ver-1.11.0/gblevents/search/functions_0.html b/ver-1.11.0/gblevents/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/gblevents/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/functions_0.js b/ver-1.11.0/gblevents/search/functions_0.js new file mode 100644 index 000000000..35a689140 --- /dev/null +++ b/ver-1.11.0/gblevents/search/functions_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['gblevents',['GBLEVENTS',['../gblevents_8f.html#ab9637586a87e4e27a6fba1e513929ced',1,'gblevents.f']]], + ['gblevn01',['GBLEVN01',['../gblevents_8f.html#a6ead75e0a75fadf89d8256fc8cf553a5',1,'gblevents.f']]], + ['gblevn02',['GBLEVN02',['../gblevents_8f.html#a28ecb898a4cca4bda122f6f2812b57ad',1,'gblevents.f']]], + ['gblevn03',['GBLEVN03',['../gblevents_8f.html#aaa4d7b5d2f02d396a6f5c705451926df',1,'gblevents.f']]], + ['gblevn04',['GBLEVN04',['../gblevents_8f.html#aa25d5cfbbc589a7cbcc1e03f0f10f156',1,'gblevents.f']]], + ['gblevn06',['GBLEVN06',['../gblevents_8f.html#ac421896f9fbe651935ee0c8b4309ff9f',1,'gblevents.f']]], + ['gblevn08',['GBLEVN08',['../gblevents_8f.html#add8c26d28ca6ad6702e14d1853392ce0',1,'gblevents.f']]], + ['gblevn10',['GBLEVN10',['../gblevents_8f.html#a0398307066d7a225fd7431dfe9d0285e',1,'gblevents.f']]], + ['gblevn11',['gblevn11',['../gblevents_8f.html#ae0b8f5f53579f5e83c13cef4ec0bb212',1,'gblevents.f']]], + ['gblevn11d',['gblevn11d',['../gblevents_8f.html#af5ad2f659c0bd19db15354af69beb292',1,'gblevents.f']]], + ['gblevn12',['GBLEVN12',['../gblevents_8f.html#a100fca2a4b67e17aefcbb6d8ba282a9a',1,'gblevents.f']]], + ['gblevn13',['GBLEVN13',['../gblevents_8f.html#aa3ec70ed9cc6962a6461ad460af45e5a',1,'gblevents.f']]], + ['getlats',['getlats',['../gblevents_8f.html#a27ce6dc72ff2abed258ec718a1bf9246',1,'gblevents.f']]] +]; diff --git a/ver-1.11.0/gblevents/search/functions_1.html b/ver-1.11.0/gblevents/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/gblevents/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/functions_1.js b/ver-1.11.0/gblevents/search/functions_1.js new file mode 100644 index 000000000..78a96d808 --- /dev/null +++ b/ver-1.11.0/gblevents/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['oefg01',['OEFG01',['../gblevents_8f.html#aac25bbce627a635caa0f25daf2abaef8',1,'gblevents.f']]] +]; diff --git a/ver-1.11.0/gblevents/search/mag_sel.png b/ver-1.11.0/gblevents/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/search/nomatches.html b/ver-1.11.0/gblevents/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/gblevents/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/gblevents/search/pages_0.html b/ver-1.11.0/gblevents/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/gblevents/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/pages_0.js b/ver-1.11.0/gblevents/search/pages_0.js new file mode 100644 index 000000000..efa404e9a --- /dev/null +++ b/ver-1.11.0/gblevents/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gblevents',['Gblevents',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/gblevents/search/pages_1.html b/ver-1.11.0/gblevents/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/gblevents/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/gblevents/search/pages_1.js b/ver-1.11.0/gblevents/search/pages_1.js new file mode 100644 index 000000000..4e21a0775 --- /dev/null +++ b/ver-1.11.0/gblevents/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_gblevents_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/gblevents/search/search.css b/ver-1.11.0/gblevents/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/gblevents/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/gblevents/search/search.js b/ver-1.11.0/gblevents/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/gblevents/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/search/search_r.png b/ver-1.11.0/gblevents/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/sync_off.png b/ver-1.11.0/gblevents/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/sync_on.png b/ver-1.11.0/gblevents/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/tab_a.png b/ver-1.11.0/gblevents/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/tab_b.png b/ver-1.11.0/gblevents/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/gblevents/tabs.css b/ver-1.11.0/gblevents/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/gblevents/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/README_8md_source.html b/ver-1.11.0/global_cycle/README_8md_source.html new file mode 100644 index 000000000..bfa56e6da --- /dev/null +++ b/ver-1.11.0/global_cycle/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/docs/README.md
    +
    +
    +
    1 This program updates the GFS surface conditions using
    2 external snow and sea ice analyses. It updates monthly climatological
    3 fields such as plant greenness fraction and albedo.
    4 
    5 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/annotated.html b/ver-1.11.0/global_cycle/annotated.html new file mode 100644 index 000000000..d685d9f69 --- /dev/null +++ b/ver-1.11.0/global_cycle/annotated.html @@ -0,0 +1,110 @@ + + + + + + + +global_cycle: Data Types List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types List
    +
    +
    +
    Here are the data types with brief descriptions:
    +
    [detail level 12]
    + + +
     NREAD_WRITE_DATAThis module contains routines that read and write data
     CNSST_DATA
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/annotated_dup.js b/ver-1.11.0/global_cycle/annotated_dup.js new file mode 100644 index 000000000..87c28711a --- /dev/null +++ b/ver-1.11.0/global_cycle/annotated_dup.js @@ -0,0 +1,4 @@ +var annotated_dup = +[ + [ "READ_WRITE_DATA", "namespaceREAD__WRITE__DATA.html", "namespaceREAD__WRITE__DATA" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/bc_s.png b/ver-1.11.0/global_cycle/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/bdwn.png b/ver-1.11.0/global_cycle/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +global_cycle: Data Types + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types
    +
    +
    + + + + + + +
      n  
    +
    NSST_DATA (READ_WRITE_DATA)   
    + +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/closed.png b/ver-1.11.0/global_cycle/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/cycle_8f90.html b/ver-1.11.0/global_cycle/cycle_8f90.html new file mode 100644 index 000000000..7593110a8 --- /dev/null +++ b/ver-1.11.0/global_cycle/cycle_8f90.html @@ -0,0 +1,1552 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/cycle.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cycle.f90 File Reference
    +
    +
    + +

    Update surface and NSST fields. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine ADJUST_NSST (RLA, RLO, SLMSK_TILE, SLMSK_FG_TILE, SKINT_TILE, SICET_TILE, sice_tile, SOILT_TILE, NSST, LENSFC, LSOIL, IDIM, JDIM, ZSEA1, ZSEA2, MON, DAY, DELTSFC, tf_clm_tile, tf_trd_tile, sal_clm_tile)
     Read in gsi file with the updated reference temperature increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and perform required nsst adjustments and qc. More...
     
    subroutine CLIMO_TREND (LATITUDE, MON, DAY, DELTSFC, DTREF)
     If the tile point is an isolated water point that has no corresponding gsi water point, then tref is updated using the rtg sst climo trend. More...
     
    subroutine DTZM_POINT (XT, XZ, DT_COOL, ZC, Z1, Z2, DTZM)
     Compute the vertical mean of the NSST t-profile. More...
     
    subroutine get_sal_clm (xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, sal_clm)
     Get salinity climatology at the valid time on the target grid. More...
     
    subroutine get_sal_clm_ta (sal_clm_ta, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)
     Get climatological salinity at the analysis time. More...
     
    subroutine get_tf_clm (xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, tf_clm, tf_trd)
     Get the sst climatology at the valid time and on the target grid. More...
     
    subroutine get_tf_clm_ta (tf_clm_ta, tf_clm_trend, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)
     Get the reference temperature/sst climatology and its trend at analysis time. More...
     
    subroutine get_tim_wei (iy, im, id, ih, mon1, mon2, wei1, wei2)
     For a given date, determine the bounding months and the linear time interpolation weights. More...
     
    subroutine intp_tile (tf_lalo, dlats_lalo, dlons_lalo, jdim_lalo, idim_lalo, tf_tile, xlats_tile, xlons_tile, jdim_tile, idim_tile)
     Interpolate lon/lat grid data to the fv3 native grid (tf_lalo => tf_tile). More...
     
    subroutine nsst_water_reset (nsst, ij, tf_thaw)
     If the first guess was sea ice, but the analysis is open water, reset all nsst variables. More...
     
    program SFC_DRV
     Stand alone surface/NSST cycle driver for the cubed-sphere grid. More...
     
    subroutine SFCDRV (LUGB, IDIM, JDIM, LENSFC, LSOIL, DELTSFC, IY, IM, ID, IH, FH, IALB, USE_UFO, DO_NSST, DO_SFCCYCLE, DO_LNDINC, ZSEA1, ZSEA2, ISOT, IVEGSRC, MYRANK)
     Driver routine for updating the surface fields. More...
     
    subroutine tf_thaw_set (tf_ij, mask_ij, itile, jtile, tice, tclm, tf_thaw, nx, ny, nset_thaw_s, nset_thaw_i, nset_thaw_c)
     Set the background reference temperature (tf) for points where the ice has just melted. More...
     
    real function tfreez (salinity)
     Compute the freezing point of water as a function of salinity. More...
     
    +

    Detailed Description

    +

    Update surface and NSST fields.

    +
    Author
    Mark Iredell NCEP/EMC
    + +

    Definition in file cycle.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ ADJUST_NSST()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine ADJUST_NSST (real, dimension(lensfc), intent(inout) RLA,
    real, dimension(lensfc), intent(inout) RLO,
    real, dimension(lensfc), intent(in) SLMSK_TILE,
    real, dimension(lensfc), intent(in) SLMSK_FG_TILE,
    real, dimension(lensfc), intent(inout) SKINT_TILE,
    real, dimension(lensfc), intent(inout) SICET_TILE,
    real, dimension(lensfc), intent(inout) sice_tile,
    real, dimension(lensfc,lsoil), intent(inout) SOILT_TILE,
    type(nsst_data) NSST,
    integer, intent(in) LENSFC,
    integer, intent(in) LSOIL,
    integer, intent(in) IDIM,
    integer, intent(in) JDIM,
    real, intent(in) ZSEA1,
    real, intent(in) ZSEA2,
    integer, intent(in) MON,
    integer, intent(in) DAY,
    real, intent(in) DELTSFC,
    real, dimension(lensfc), intent(in) tf_clm_tile,
    real, dimension(lensfc), intent(in) tf_trd_tile,
    real, dimension(lensfc), intent(in) sal_clm_tile 
    )
    +
    + +

    Read in gsi file with the updated reference temperature increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and perform required nsst adjustments and qc.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + +
    [in,out]RLALatitude on the cubed-sphere tile
    [in,out]RLOLongitude on the cubed-sphere tile
    [in]SLMSK_TILELand-sea mask on the cubed-sphere tile
    [in]SLMSK_FG_TILEFirst guess land-sea mask on the cubed-sphere tile
    [in,out]SKINT_TILESkin temperature on the cubed-sphere tile
    [in,out]SICET_TILEIce temperature on the cubed-sphere tile
    [in,out]sice_tileIce concentration on the cubed-sphere tile
    [in,out]SOILT_TILESoil temperature on the cubed-sphere tile
    [in]NSSTData structure holding nsst fields
    [in]LENSFCNumber of points on a tile
    [in]LSOILNumber of soil layers
    [in]IDIM'I' dimension of a tile
    [in]JDIM'J' dimension of a tile
    [in]ZSEA1When running nsst model, this is the lower bound of depth of sea temperature. In whole mm.
    [in]ZSEA2When running nsst model, this is the upper bound of depth of sea temperature. In whole mm.
    [in]MONMonth
    [in]DAYDay
    [in]DELTSFCCycling frequency in hours
    [in]tf_clm_tileClimatological reference temperature on the cubed-sphere tile.
    [in]tf_trd_tileClimatolocial reference temperature trend on the cubed-sphere tile.
    [in]sal_clm_tileClimatological salinity on the cubed-sphere tile.
    +
    +
    +
    Author
    Xu Li, George Gayno
    + +

    Definition at line 806 of file cycle.f90.

    + +

    References nsst_water_reset(), and tf_thaw_set().

    + +
    +
    + +

    ◆ CLIMO_TREND()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine CLIMO_TREND (real, intent(in) LATITUDE,
    integer, intent(in) MON,
    integer, intent(in) DAY,
    real, intent(in) DELTSFC,
    real, intent(out) DTREF 
    )
    +
    + +

    If the tile point is an isolated water point that has no corresponding gsi water point, then tref is updated using the rtg sst climo trend.

    +

    This monthly trend is sorted by latitude band.

    +
    Parameters
    + + + + + + +
    [in]LATITUDELatitude of tile point
    [in]MONMonth
    [in]DAYDay
    [in]DELTSFCCycling frequency in hours
    [out]DTREFMonthly trend of reference temperature
    +
    +
    +
    Author
    Xu Li, George Gayno
    + +

    Definition at line 1212 of file cycle.f90.

    + +
    +
    + +

    ◆ DTZM_POINT()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine DTZM_POINT (real, intent(in) XT,
    real, intent(in) XZ,
    real, intent(in) DT_COOL,
    real, intent(in) ZC,
    real, intent(in) Z1,
    real, intent(in) Z2,
    real, intent(out) DTZM 
    )
    +
    + +

    Compute the vertical mean of the NSST t-profile.

    +
    Parameters
    + + + + + + + + +
    [in]xtHeat content in the diurnal thermocline layer.
    [in]xzThickness of the diurnal thermocline layer.
    [in]dt_coolSkin-layer cooling amount.
    [in]zcThickness of skin-layer.
    [in]z1Lower bound of depth of sea temperature.
    [in]z2Upper bound of depth of sea temperature.
    [out]dtzmMean of the NSST t-profile from z1 to z2.
    +
    +
    +
    Author
    Xu Li
    +
    Date
    2015
    + +

    Definition at line 1365 of file cycle.f90.

    + +
    +
    + +

    ◆ get_sal_clm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_sal_clm (real, dimension(nx*ny), intent(in) xlats_ij,
    real, dimension(nx*ny), intent(in) xlons_ij,
    integer, intent(in) ny,
    integer, intent(in) nx,
    integer, intent(in) iy,
    integer, intent(in) im,
    integer, intent(in) id,
    integer, intent(in) ih,
    real, dimension(nx,ny), intent(out) sal_clm 
    )
    +
    + +

    Get salinity climatology at the valid time on the target grid.

    +
    Parameters
    + + + + + + + + + + +
    [in]xlats_ijLatitudes of target grid
    [in]xlons_ijLongitudes of target grid
    [in]ny'j' dimension of target grid
    [in]nx'i' dimension of target grid
    [in]iyYear
    [in]imMonth
    [in]idDay
    [in]ihHour
    [out]sal_clmSalinity climatology on the target grid at the valid time
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 1691 of file cycle.f90.

    + +

    References get_sal_clm_ta(), get_tim_wei(), and intp_tile().

    + +

    Referenced by SFCDRV().

    + +
    +
    + +

    ◆ get_sal_clm_ta()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_sal_clm_ta (real, dimension(nlon,nlat), intent(out) sal_clm_ta,
    real, dimension(nlat), intent(out) xlats,
    real, dimension(nlon), intent(out) xlons,
    integer, intent(in) nlat,
    integer, intent(in) nlon,
    integer, intent(in) mon1,
    integer, intent(in) mon2,
    real, intent(in) wei1,
    real, intent(in) wei2 
    )
    +
    + +

    Get climatological salinity at the analysis time.

    +
    Parameters
    + + + + + + + + + + +
    [in]nlat'j' dimension of climatological data
    [in]nlon'i' dimension of climatological data
    [in]mon1First bounding month
    [in]mon2Second bounding month
    [in]wei1Weight of first bounding month
    [in]wei2Weight of second bounding month
    [out]sal_clm_taClimatological salinity at the analysis time
    [out]xlatsLatitudes on the climatological grid
    [out]xlonsLongitudes on the climatological grid
    +
    +
    +
    Author
    Xu Li
    +
    Date
    March 2019
    + +

    Definition at line 1751 of file cycle.f90.

    + +

    Referenced by get_sal_clm().

    + +
    +
    + +

    ◆ get_tf_clm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_tf_clm (real, dimension(nx*ny), intent(in) xlats_ij,
    real, dimension(nx*ny), intent(in) xlons_ij,
    integer, intent(in) ny,
    integer, intent(in) nx,
    integer, intent(in) iy,
    integer, intent(in) im,
    integer, intent(in) id,
    integer, intent(in) ih,
    real, dimension(nx,ny), intent(out) tf_clm,
    real, dimension(nx,ny), intent(out) tf_trd 
    )
    +
    + +

    Get the sst climatology at the valid time and on the target grid.

    +
    Parameters
    + + + + + + + + + + + +
    [in]xlats_ijlatitude of target grid
    [in]xlons_ijlongitude of target grid
    [in]ny'j' dimension of target grid
    [in]nx'i' dimension of target grid
    [in]iyYear
    [in]imMonth
    [in]idDay
    [in]ihHour
    [out]tf_clmsst climatology at the valid time and on the target grid
    [out]tf_trd6-hourly sst climatology tendency at the valid time and on the target grid.
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 1574 of file cycle.f90.

    + +

    References get_tf_clm_ta(), get_tim_wei(), and intp_tile().

    + +

    Referenced by SFCDRV().

    + +
    +
    + +

    ◆ get_tf_clm_ta()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_tf_clm_ta (real, dimension(nlon,nlat), intent(out) tf_clm_ta,
    real, dimension(nlon,nlat), intent(out) tf_clm_trend,
    real, dimension(nlat), intent(out) xlats,
    real, dimension(nlon), intent(out) xlons,
    integer, intent(in) nlat,
    integer, intent(in) nlon,
    integer, intent(in) mon1,
    integer, intent(in) mon2,
    real, intent(in) wei1,
    real, intent(in) wei2 
    )
    +
    + +

    Get the reference temperature/sst climatology and its trend at analysis time.

    +

    The data is time interpolated between two bounding months.

    +
    Parameters
    + + + + + + + + + + + +
    [out]tf_clm_taClimatological tf/sst at analysis time
    [out]tf_clm_trendClimatological tf/sst trend at analysis time
    [out]xlatsLatitudes on the climatological data grid
    [out]xlonsLongitudes on the climatological data grid
    [in]nlat'j' dimension on the climatological grid
    [in]nlon'i' dimension on the climatological grid
    [in]mon1First bounding month
    [in]mon2Second bounding month
    [in]wei1Weighting of first bounding month
    [in]wei2Weighting of second bounding month
    +
    +
    +
    Author
    Xu Li
    +
    Date
    March 2019
    + +

    Definition at line 1643 of file cycle.f90.

    + +

    Referenced by get_tf_clm().

    + +
    +
    + +

    ◆ get_tim_wei()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_tim_wei (integer, intent(in) iy,
    integer, intent(in) im,
    integer, intent(in) id,
    integer, intent(in) ih,
    integer, intent(out) mon1,
    integer, intent(out) mon2,
    real, intent(out) wei1,
    real, intent(out) wei2 
    )
    +
    + +

    For a given date, determine the bounding months and the linear time interpolation weights.

    +
    Parameters
    + + + + + + + + + +
    [in]iyThe year
    [in]imThe month
    [in]idThe day
    [in]ihThe hour
    [out]mon1First bounding month
    [out]mon2Second bounding month
    [out]wei1Weighting of first bounding month
    [out]wei2Weighting of second bounding month
    +
    +
    +
    Author
    Xu Li
    +
    Date
    March 2019
    + +

    Definition at line 1886 of file cycle.f90.

    + +

    Referenced by get_sal_clm(), and get_tf_clm().

    + +
    +
    + +

    ◆ intp_tile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine intp_tile (real, dimension(idim_lalo,jdim_lalo), intent(in) tf_lalo,
    real, dimension(jdim_lalo), intent(in) dlats_lalo,
    real, dimension(idim_lalo), intent(in) dlons_lalo,
    integer, intent(in) jdim_lalo,
    integer, intent(in) idim_lalo,
    real, dimension(jdim_tile*idim_tile), intent(out) tf_tile,
    real, dimension(jdim_tile*idim_tile), intent(in) xlats_tile,
    real, dimension(jdim_tile*idim_tile), intent(in) xlons_tile,
    integer, intent(in) jdim_tile,
    integer, intent(in) idim_tile 
    )
    +
    + +

    Interpolate lon/lat grid data to the fv3 native grid (tf_lalo => tf_tile).

    +

    Does not account for a mask.

    +
    Parameters
    + + + + + + + + + + + +
    [in]tf_lalo(idim_lalo,idim_lalo) field on the lat/lon regular grid.
    [in]dlats_lalo(jdim_lalo) latitudes along y direction of lat/lon regular grid points.
    [in]dlons_lalo(idim_lalo) longitudes along x direction of lat/lon regular grid points.
    [in]jdim_lalonumber of y dimension of tf_lalo.
    [in]idim_lalonumber of x dimension of tf_lalo.
    [in]xlats_tile(jdim_tile*idim_tile) latitudes of all tile grid points.
    [in]xlons_tile(jdim_tile*idim_tile) longitudes of all tile grid points.
    [in]jdim_tilenumber of y dimension of tf_tile.
    [in]idim_tilenumber of x dimension of tf_tile.
    [out]tf_tile(jdim_tile*idim_tile) field on the cubed sphere grid.
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 1797 of file cycle.f90.

    + +

    Referenced by get_sal_clm(), and get_tf_clm().

    + +
    +
    + +

    ◆ nsst_water_reset()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine nsst_water_reset (type(nsst_data), intent(inout) nsst,
    integer, intent(in) ij,
    real, intent(in) tf_thaw 
    )
    +
    + +

    If the first guess was sea ice, but the analysis is open water, reset all nsst variables.

    +
    Parameters
    + + + + +
    [in,out]nsstData structure that holds the nsst fields
    [in]ijIndex of point to be updated
    [in]tf_thawReference temperature for former ice points
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 1528 of file cycle.f90.

    + +

    Referenced by ADJUST_NSST().

    + +
    +
    + +

    ◆ SFC_DRV()

    + +
    +
    + + + + + + + +
    program SFC_DRV ()
    +
    + +

    Stand alone surface/NSST cycle driver for the cubed-sphere grid.

    +

    Each cubed-sphere tile runs independently on its own mpi task. The surface update component runs with threads. The NSST update component in not threaded.

    +

    There are three main options (which can be called in combination):

      +
    1. Update the surface fields with sfccylce (do_sfccycle = .true.)
    2. +
    3. Update the land states with increments read in from file (do_lndinc = .true.) Designed to work with either: 2a. A land increment file created by the GSI on the Gaussian grid. The increments are interpolated here to the model grid, using the same method as for the NST increments. This is currently implemented for applying soil temperature increments calculated from the EnKF assimilation of T2m (but this is not a requirement - any GSI-generated soil temperature increment file can be applied here). 2b. A land increment file created by JEDI, on the native model grid (cube sphere tiles). This is currently implemented for snow depth updates for the Noah model.
    4. +
    5. Update the NSST field, several options:
    6. +
    +

    3a. Update the NSST TREF field using GSI increments on the Gaussian grid. All other NSST fields are cycled. Invoke this option by setting namelist variable DONST=.true. and NST_FILE to the name of the GSI increment file.

    +

    3b. Run with NSST, but postpone the TREF update. Here all NSST fields are cycled. But the NSST IFD field is used to flag points that flipped from ice to open water. To invoke this option, set DONST=.true. and NST_FILE="NULL".

    +

    INPUT FILES:

      +
    • fngrid.$NNN The cubed-sphere grid file (contains grid point latitude and longitdue).
    • +
    • fnorog.$NNN The cubed-sphere orography file (contains land mask and orography).
    • +
    • fnbgsi.$NNN The cubed-sphere input sfc/nsst restart file.
    • +
    • $NST_FILE Gaussian GSI file which contains NSST TREF increments
    • +
    • $LND_SOI_FILE Gaussian GSI file which contains soil state increments
    • +
    • xainc.$NNN The cubed-sphere increment file (contains increments calculated by JEDI on the native model grid).
    • +
    +

    OUTPUT FILES:

      +
    • fnbgso.$NNN The updated sfc/nsst restart file.
    • +
    +

    NOTE: $NNN corresponds to (mpi rank + 1)

    +

    NAMELIST VARIABLE DEFINITIONS:

    +
      +
    • IDIM,JDIM i/j dimension of a cubed-sphere tile.
    • +
    • LUGB Unit number used in the sfccycle subprogram to read input datasets.
    • +
    • LSOIL Number of soil layers.
    • +
    • IY,IM,ID,IH Year, month, day, and hour of initial state.
    • +
    • FH Forecast hour
    • +
    • DELTSFC Cycling frequency in hours.
    • +
    • IALB Use modis albedo when '1'. Use brigleb when '0'.
    • +
    • USE_UFO Adjust sst and soil substrate temperature for differences between the filtered and unfiltered terrain. -DONST Process NSST records. -DO_SFCCYCLE Call sfccycle routine to update surface fields -DO_LNDINC Read in land increment files, and add increments to relevant states. -DO_SOI_INC Do land increments to soil states. -DO_SNO_INC Do land increments to snow states.
    • +
    • ISOT Use statsgo soil type when '1'. Use zobler when '0'.
    • +
    • IVEGSRC Use igbp veg type when '1'. Use sib when '2'.
    • +
    • ZSEA1/2_MM When running with NSST model, this is the lower/ upper bound of depth of sea temperature. In whole mm.
    • +
    • MAX_TASKS Normally, program should be run with a number of mpi tasks equal to the number of cubed-sphere tiles being processed. However, the current parallel scripts may over-specify the number of tasks. Set this variable to not process any ranks > (max_tasks-1). -NST_FILE path/name of the gaussian GSI file which contains NSST TREF increments. -LND_SOI_FILE path/name of the gaussian GSI file which contains soil state increments.
    • +
    +

    -2005-02-03: Iredell for global_analysis -2014-11-30: xuli add nst_anl -2015-05-26: Hang Lei Added NEMSIO read/write function in the code -2017-08-08: Gayno Modify to work on cubed-sphere grid. Added processing of NSST and TREF update. Added mpi directives. -2020-02-17: Clara Draper Added soil state increments capability.

    +
    Author
    Mark Iredell NOAA/EMC
    +
    Returns
    0 for success, error code otherwise.
    + +

    Definition at line 101 of file cycle.f90.

    + +

    References num_parthds().

    + +
    +
    + +

    ◆ SFCDRV()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine SFCDRV (integer, intent(in) LUGB,
    integer, intent(in) IDIM,
    integer, intent(in) JDIM,
    integer, intent(in) LENSFC,
    integer, intent(in) LSOIL,
    real, intent(in) DELTSFC,
    integer, intent(in) IY,
    integer, intent(in) IM,
    integer, intent(in) ID,
    integer, intent(in) IH,
    real, intent(in) FH,
    integer, intent(in) IALB,
    logical, intent(in) USE_UFO,
    logical, intent(in) DO_NSST,
    logical, intent(in) DO_SFCCYCLE,
    logical, intent(in) DO_LNDINC,
    real, intent(in) ZSEA1,
    real, intent(in) ZSEA2,
    integer, intent(in) ISOT,
    integer, intent(in) IVEGSRC,
    integer, intent(in) MYRANK 
    )
    +
    + +

    Driver routine for updating the surface fields.

    +

    This program runs in two different modes:

    +
      +
    1. Analysis mode (FH=0.)

      +

      This program merges climatology, analysis and forecast guess to create new surface fields. If analysis file is given, the program uses it if date of the analysis matches with IY,IM,ID,IH (see Note below).

      +
    2. +
    3. Forecast mode (FH.GT.0.)

      +

      This program interpolates climatology to the date corresponding to the forecast hour. If surface analysis file is given, for the corresponding dates, the program will use it. This is forcing-by-observation experiment.

      +
    4. +
    +

    If the date of the analysis does not match given IY,IM,ID,IH, (and FH), the program searches an old analysis by going back 6 hours, then 12 hours, then one day upto NREPMX days (parameter statement in the SUBROTINE FIXRD. Now defined as 15). This allows the user to provide non-daily analysis to be used. If matching field is not found, the forecast guess will be used.

    +

    Variable naming convention for this program:

    +
      +
    • OROG .. Orography
    • +
    • ALB .. Snow-free albedo
    • +
    • SWE .. Snow water equivalent
    • +
    • ZOR .. Surface roughness length
    • +
    • VET .. Vegetation type
    • +
    • TSF .. Surface skin temperature. Sea surface temp. over ocean.
    • +
    • TG3 .. Deep soil temperature (at 500cm)
    • +
    • STC .. Soil temperature (LSOIL layrs)
    • +
    • SMC .. Total soil moisture (LSOIL layrs)
    • +
    • AIS .. Sea ice mask (0 or 1)
    • +
    • CNP .. Canopy water content
    • +
    • CV .. Convective cloud cover
    • +
    • CVB .. Convective cloud base
    • +
    • CVT .. Convective cloud top
    • +
    • SLI .. LAND/SEA/SEA-ICE mask. (1/0/2 respectively)
    • +
    • VEG .. Vegetation cover
    • +
    • SOT .. Soil type
    • +
    • SIH .. Sea ice thickness
    • +
    • SIC .. Sea ice concentration
    • +
    • SND .. Snow depth
    • +
    • SLC .. Liquid soil moisture (LSOIL layers)
    • +
    • VMN .. Vegetation cover minimum
    • +
    • VMX .. Vegetation cover maximum
    • +
    • SLP .. Slope type
    • +
    • ABS .. Maximum snow albedo
    • +
    • T2M .. 2m Temperature
    • +
    • Q2M .. 2m Specific Humidity
    • +
    • TICE .. Ice Temperature
    • +
    • OROG_UF .. Orography unfiltered
    • +
    +

    Most fields have a blending coefficient. This controls the blending of the forecast (first guess) and interpolated climatology or analyzed fields. When it is equal to 1.0, the pure forecast is used. When the coefficient is equal to 0, the pure climatology or analysis is used. The default values are set as follows:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variables Land Sea -------—
    Surface temperature Forecast Analysis
    Albedo Analysis Analysis
    Sea-ice Analysis Analysis
    Snow Analysis Forecast (over sea ice)
    Roughness Analysis Forecast
    Plant resistance Analysis Analysis
    Soil moisture Weighted average Analysis
    Soil temperature Forecast Analysis
    Canopy waver content Forecast Forecast
    Convective cloud cover Forecast Forecast
    Convective cloud bottm Forecast Forecast
    Convective cloud top Forecast Forecast
    Vegetation greenness Analysis Analysis
    Vegetation type Analysis Analysis
    Soil type Analysis Analysis
    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + +
    [in]LUGBFortran unit number uses in sfccycle subprogram to read input datasets.
    [in]IDIM'i' dimension of the cubed-sphere tile
    [in]JDIM'j' dimension of the cubed-sphere tile
    [in]LENSFCTotal numberof points for the cubed-sphere tile
    [in]LSOILNumber of soil layers
    [in]DELTSFCCycling frequency in hours
    [in]IYYear of initial state
    [in]IMMonth of initial state
    [in]IDDay of initial state
    [in]IHHour of initial state
    [in]FHForecast hour
    [in]IALBUse modis albedo when '1'. Use brigleb when '0'.
    [in]USE_UFOWhen true, adjust SST and soil temperature for differences between the filtered and unfiltered terrain.
    [in]DO_NSSTWhen true, process NSST records.
    [in]DO_SFCCYCLECall sfccycle routine to update surface fields
    [in]DO_LNDINCRead in land increment files, and add increments to requested states.
    [in]ZSEA1When running NSST model, this is the lower bound of depth of sea temperature. In whole mm.
    [in]ZSEA2When running NSST model, this is the upper bound of depth of sea temperature. In whole mm.
    [in]ISOTUse STATSGO soil type when '1'. Use Zobler when '0'.
    [in]IVEGSRCUse IGBP vegetation type when '1'. Use SIB when '2'.
    [in]MYRANKMPI rank number
    +
    +
    +
    Author
    Mark Iredell, George Gayno
    + +

    Definition at line 301 of file cycle.f90.

    + +

    References get_sal_clm(), and get_tf_clm().

    + +
    +
    + +

    ◆ tf_thaw_set()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine tf_thaw_set (real, dimension(nx*ny), intent(in) tf_ij,
    integer, dimension(nx*ny), intent(in) mask_ij,
    integer, intent(in) itile,
    integer, intent(in) jtile,
    real, intent(in) tice,
    real, intent(in) tclm,
    real, intent(out) tf_thaw,
    integer, intent(in) nx,
    integer, intent(in) ny,
    integer, intent(inout) nset_thaw_s,
    integer, intent(inout) nset_thaw_i,
    integer, intent(inout) nset_thaw_c 
    )
    +
    + +

    Set the background reference temperature (tf) for points where the ice has just melted.

    +
    Parameters
    + + + + + + + + + + + + + +
    [in]tf_ijFoundation temperature background on FV3 native grids.
    [in]mask_ijMask of the tile (FV3 native grids).
    [in]itileLocation index in the 'i' direction.
    [in]jtileLocation index in the 'j' direction.
    [in]ticeWater temperature (calulated with a salinity formula).
    [in]tclmSST climatology valid at the analysis time.
    [out]tf_thawFoundation temperature of thawed points.
    [in,out]nx'i' dimension of tf_ij
    [in,out]ny'j' dimension of tf_ij
    [in,out]nset_thaw_sNumber of foundation temperature points filled via a search.
    [in,out]nset_thaw_iNumber of ice points filled with a calculated tice.
    [in,out]nset_thaw_cNumber of points filled with a weighted average of tice and tclm.
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 1438 of file cycle.f90.

    + +

    Referenced by ADJUST_NSST().

    + +
    +
    + +

    ◆ tfreez()

    + +
    +
    + + + + + + + + +
    real function tfreez (real salinity)
    +
    + +

    Compute the freezing point of water as a function of salinity.

    +

    Constants taken from Gill, 1982.

    +
    Date
    21 September 1994.
    +
    Author
    Robert Grumbine
    +
    Parameters
    + + +
    [in]salinityThe salinity.
    +
    +
    +
    Returns
    tfreez The freezing point of water.
    + +

    Definition at line 1953 of file cycle.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/cycle_8f90.js b/ver-1.11.0/global_cycle/cycle_8f90.js new file mode 100644 index 000000000..bf63d9993 --- /dev/null +++ b/ver-1.11.0/global_cycle/cycle_8f90.js @@ -0,0 +1,17 @@ +var cycle_8f90 = +[ + [ "ADJUST_NSST", "cycle_8f90.html#a3bcd703b740c4c43e45df8ce88224e2c", null ], + [ "CLIMO_TREND", "cycle_8f90.html#adb312a7db72e061a8eaaff76684a724f", null ], + [ "DTZM_POINT", "cycle_8f90.html#ad8d01c13656e78126c451632e5951940", null ], + [ "get_sal_clm", "cycle_8f90.html#aaa5ccf0addd191b13a3bdfb9558a005b", null ], + [ "get_sal_clm_ta", "cycle_8f90.html#a6cb5a7888d49b29e0b30e5ca206f7294", null ], + [ "get_tf_clm", "cycle_8f90.html#ad6a9017387ab47706fdac2c2c0593f0a", null ], + [ "get_tf_clm_ta", "cycle_8f90.html#a7dd48dac426c3c605ce62a2d868a72c3", null ], + [ "get_tim_wei", "cycle_8f90.html#a250f9e210a13e3bd9b669f904a279d83", null ], + [ "intp_tile", "cycle_8f90.html#ab37a1ed396c350a20fed5c59a05dbb59", null ], + [ "nsst_water_reset", "cycle_8f90.html#af8c1e8a1a1b952babdabb8122a4e2fda", null ], + [ "SFC_DRV", "cycle_8f90.html#ab7330f0a35c0940f420a5106c42b9fca", null ], + [ "SFCDRV", "cycle_8f90.html#af53223ab45c7afa36e3d1c5016070e0b", null ], + [ "tf_thaw_set", "cycle_8f90.html#ade32d73a7d3d2ee2e9813674aea1f797", null ], + [ "tfreez", "cycle_8f90.html#a8609bf25108d7ef0c230efe2a92d2517", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/cycle_8f90_source.html b/ver-1.11.0/global_cycle/cycle_8f90_source.html new file mode 100644 index 000000000..ab2b50ba7 --- /dev/null +++ b/ver-1.11.0/global_cycle/cycle_8f90_source.html @@ -0,0 +1,116 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/cycle.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    cycle.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    101  PROGRAM sfc_drv
    102 
    103  use mpi
    104 
    105  IMPLICIT NONE
    106 !
    107  CHARACTER(LEN=3) :: donst
    108  INTEGER :: idim, jdim, lsoil, lugb, iy, im, id, ih, ialb
    109  INTEGER :: isot, ivegsrc, lensfc, zsea1_mm, zsea2_mm, ierr
    110  INTEGER :: nprocs, myrank, num_threads, num_parthds, max_tasks
    111  REAL :: fh, deltsfc, zsea1, zsea2
    112  LOGICAL :: use_ufo, do_nsst, do_lndinc, do_sfccycle
    113 !
    114  NAMELIST/namcyc/ idim,jdim,lsoil,lugb,iy,im,id,ih,fh,&
    115  deltsfc,ialb,use_ufo,donst, &
    116  do_sfccycle,isot,ivegsrc,zsea1_mm, &
    117  zsea2_mm, max_tasks, do_lndinc
    118 !
    119  DATA idim,jdim,lsoil/96,96,4/
    120  DATA iy,im,id,ih,fh/1997,8,2,0,0./
    121  DATA lugb/51/, deltsfc/0.0/, ialb/1/, max_tasks/99999/
    122  DATA isot/1/, ivegsrc/2/, zsea1_mm/0/, zsea2_mm/0/
    123 !
    124  CALL mpi_init(ierr)
    125  CALL mpi_comm_size(mpi_comm_world, nprocs, ierr)
    126  CALL mpi_comm_rank(mpi_comm_world, myrank, ierr)
    127 
    128  if (myrank==0) call w3tagb('GLOBAL_CYCLE',2018,0179,0055,'NP20')
    129 
    130  num_threads = num_parthds()
    131 
    132  print*
    133  print*,"STARTING CYCLE PROGRAM ON RANK ", myrank
    134  print*,"RUNNING WITH ", nprocs, "TASKS"
    135  print*,"AND WITH ", num_threads, " THREADS."
    136 
    137  use_ufo = .false.
    138  donst = "NO"
    139  do_lndinc = .false.
    140  do_sfccycle = .true.
    141 
    142  print*
    143  print*,"READ NAMCYC NAMELIST."
    144 
    145  CALL baopenr(36, "fort.36", ierr)
    146  READ(36, nml=namcyc)
    147  !IF (MYRANK==0) WRITE(6,NAMCYC)
    148 
    149  IF (max_tasks < 99999 .AND. myrank > (max_tasks - 1)) THEN
    150  print*,"USER SPECIFIED MAX NUMBER OF TASKS: ", max_tasks
    151  print*,"WILL NOT RUN CYCLE PROGRAM ON RANK: ", myrank
    152  GOTO 333
    153  ENDIF
    154 
    155  lensfc = idim*jdim ! TOTAL NUMBER OF POINTS FOR THE CUBED-SPHERE TILE
    156 
    157  zsea1 = float(zsea1_mm) / 1000.0 ! CONVERT FROM MM TO METERS
    158  zsea2 = float(zsea2_mm) / 1000.0
    159 
    160  IF (donst == "YES") THEN
    161  do_nsst=.true.
    162  ELSE
    163  do_nsst=.false.
    164  ENDIF
    165 
    166  print*
    167  IF (myrank==0) print*,"LUGB,IDIM,JDIM,ISOT,IVEGSRC,LSOIL,DELTSFC,IY,IM,ID,IH,FH: ", &
    168  lugb,idim,jdim,isot,ivegsrc,lsoil,deltsfc,iy,im,id,ih,fh
    169 
    170  CALL sfcdrv(lugb,idim,jdim,lensfc,lsoil,deltsfc, &
    171  iy,im,id,ih,fh,ialb, &
    172  use_ufo,do_nsst,do_sfccycle,do_lndinc, &
    173  zsea1,zsea2,isot,ivegsrc,myrank)
    174 
    175  print*
    176  print*,'CYCLE PROGRAM COMPLETED NORMALLY ON RANK: ', myrank
    177 
    178  333 CONTINUE
    179 
    180  CALL mpi_barrier(mpi_comm_world, ierr)
    181 
    182  if (myrank==0) call w3tage('GLOBAL_CYCLE')
    183 
    184  CALL mpi_finalize(ierr)
    185 
    186  stop
    187 
    188  END PROGRAM sfc_drv
    189 
    297  SUBROUTINE sfcdrv(LUGB, IDIM,JDIM,LENSFC,LSOIL,DELTSFC, &
    298  IY,IM,ID,IH,FH,IALB, &
    299  USE_UFO,DO_NSST,DO_SFCCYCLE,DO_LNDINC,&
    300  ZSEA1,ZSEA2,ISOT,IVEGSRC,MYRANK)
    301 !
    302  USE read_write_data
    303  use machine
    304  USE mpi
    305  USE land_increments, ONLY: add_increment_soil, &
    306  add_increment_snow, &
    307  calculate_landinc_mask, &
    308  apply_land_da_adjustments_soil, &
    309  apply_land_da_adjustments_snd, &
    310  lsm_noah, lsm_noahmp
    311 
    312  IMPLICIT NONE
    313 
    314  INTEGER, INTENT(IN) :: IDIM, JDIM, LENSFC, LSOIL, IALB
    315  INTEGER, INTENT(IN) :: LUGB, IY, IM, ID, IH
    316  INTEGER, INTENT(IN) :: ISOT, IVEGSRC, MYRANK
    317 
    318  LOGICAL, INTENT(IN) :: USE_UFO, DO_NSST,DO_SFCCYCLE
    319  LOGICAL, INTENT(IN) :: DO_LNDINC
    320 
    321  REAL, INTENT(IN) :: FH, DELTSFC, ZSEA1, ZSEA2
    322 
    323  INTEGER, PARAMETER :: NLUNIT=35
    324  INTEGER, PARAMETER :: SZ_NML=1
    325 
    326  CHARACTER(LEN=5) :: TILE_NUM
    327  CHARACTER(LEN=500) :: NST_FILE
    328  CHARACTER(LEN=500) :: LND_SOI_FILE
    329  CHARACTER(LEN=4) :: INPUT_NML_FILE(SZ_NML)
    330 
    331  INTEGER :: I, IERR
    332  INTEGER :: I_INDEX(LENSFC), J_INDEX(LENSFC)
    333  INTEGER :: IDUM(IDIM,JDIM)
    334  integer :: num_parthds, num_threads
    335 
    336  LOGICAL :: IS_NOAHMP
    337  INTEGER :: LSM
    338 
    339  real(kind=kind_io8) :: min_ice(lensfc)
    340 
    341  REAL :: SLMASK(LENSFC), OROG(LENSFC)
    342  REAL :: SIHFCS(LENSFC), SICFCS(LENSFC)
    343  REAL :: SITFCS(LENSFC), TSFFCS(LENSFC)
    344  REAL :: SWEFCS(LENSFC), ZORFCS(LENSFC)
    345  REAL :: ALBFCS(LENSFC,4), TG3FCS(LENSFC)
    346  REAL :: CNPFCS(LENSFC), SMCFCS(LENSFC,LSOIL)
    347  REAL :: STCFCS(LENSFC,LSOIL), SLIFCS(LENSFC)
    348  REAL :: AISFCS(LENSFC), F10M(LENSFC)
    349  REAL :: VEGFCS(LENSFC), VETFCS(LENSFC)
    350  REAL :: SOTFCS(LENSFC), ALFFCS(LENSFC,2)
    351  REAL :: CVFCS(LENSFC), CVTFCS(LENSFC)
    352  REAL :: CVBFCS(LENSFC), TPRCP(LENSFC)
    353  REAL :: SRFLAG(LENSFC), SNDFCS(LENSFC)
    354  REAL :: SLCFCS(LENSFC,LSOIL), VMXFCS(LENSFC)
    355  REAL :: VMNFCS(LENSFC), T2M(LENSFC)
    356  REAL :: Q2M(LENSFC), SLPFCS(LENSFC)
    357  REAL :: ABSFCS(LENSFC), OROG_UF(LENSFC)
    358  REAL :: USTAR(LENSFC)
    359  REAL :: FMM(LENSFC), FHH(LENSFC)
    360  REAL :: RLA(LENSFC), RLO(LENSFC)
    361  REAL(KIND=4) :: ZSOIL(LSOIL)
    362  REAL :: SIG1T(LENSFC)
    365  REAL, ALLOCATABLE :: STC_BCK(:,:), SMC_BCK(:,:), SLC_BCK(:,:)
    366  REAL, ALLOCATABLE :: SLIFCS_FG(:)
    367  INTEGER, ALLOCATABLE :: LANDINC_MASK_FG(:), LANDINC_MASK(:)
    368  REAL, ALLOCATABLE :: SND_BCK(:), SND_INC(:), SWE_BCK(:)
    369  REAL(KIND=KIND_IO8), ALLOCATABLE :: SLMASKL(:), SLMASKW(:)
    370 
    371  TYPE(NSST_DATA) :: NSST
    372  real, dimension(idim,jdim) :: tf_clm,tf_trd,sal_clm
    373  real, dimension(lensfc) :: tf_clm_tile,tf_trd_tile,sal_clm_tile
    374  INTEGER :: veg_type_landice
    375  INTEGER, DIMENSION(LENSFC) :: STC_UPDATED, SLC_UPDATED
    376 
    377  LOGICAL :: FILE_EXISTS, DO_SOI_INC, DO_SNO_INC
    378 
    379 !--------------------------------------------------------------------------------
    380 ! NST_FILE is the path/name of the gaussian GSI file which contains NSST
    381 ! increments.
    382 !--------------------------------------------------------------------------------
    383 
    384  NAMELIST/namsfcd/ nst_file, lnd_soi_file, do_sno_inc
    385 
    386  DATA nst_file/'NULL'/
    387  DATA lnd_soi_file/'NULL'/
    388 
    389  do_sno_inc = .false.
    390  do_soi_inc = .false.
    391 
    392 
    393  sig1t = 0.0 ! Not a dead start!
    394 
    395  input_nml_file = "NULL"
    396 
    397  CALL baopenr(37, "fort.37", ierr)
    398  READ (37, nml=namsfcd)
    399 
    400  print*
    401  print*,'IN ROUTINE SFCDRV,IDIM=',idim,'JDIM=',jdim,'FH=',fh
    402 
    403 !--------------------------------------------------------------------------------
    404 ! READ THE OROGRAPHY AND GRID POINT LAT/LONS FOR THE CUBED-SPHERE TILE.
    405 !--------------------------------------------------------------------------------
    406 
    407  CALL read_lat_lon_orog(rla,rlo,orog,orog_uf,tile_num,idim,jdim,lensfc)
    408 
    409  DO i = 1, idim
    410  idum(i,:) = i
    411  ENDDO
    412 
    413  i_index = reshape(idum, (/lensfc/))
    414 
    415  DO i = 1, jdim
    416  idum(:,i) = i
    417  ENDDO
    418 
    419  j_index = reshape(idum, (/lensfc/) )
    420 
    421  IF (do_nsst) THEN
    422  print*
    423  print*,"WILL PROCESS NSST RECORDS."
    424  ALLOCATE(nsst%C_0(lensfc))
    425  ALLOCATE(nsst%C_D(lensfc))
    426  ALLOCATE(nsst%D_CONV(lensfc))
    427  ALLOCATE(nsst%DT_COOL(lensfc))
    428  ALLOCATE(nsst%IFD(lensfc))
    429  ALLOCATE(nsst%QRAIN(lensfc))
    430  ALLOCATE(nsst%TREF(lensfc))
    431  ALLOCATE(nsst%TFINC(lensfc))
    432  ALLOCATE(nsst%W_0(lensfc))
    433  ALLOCATE(nsst%W_D(lensfc))
    434  ALLOCATE(nsst%XS(lensfc))
    435  ALLOCATE(nsst%XT(lensfc))
    436  ALLOCATE(nsst%XTTS(lensfc))
    437  ALLOCATE(nsst%XU(lensfc))
    438  ALLOCATE(nsst%XV(lensfc))
    439  ALLOCATE(nsst%XZ(lensfc))
    440  ALLOCATE(nsst%XZTS(lensfc))
    441  ALLOCATE(nsst%Z_C(lensfc))
    442  ALLOCATE(nsst%ZM(lensfc))
    443  ALLOCATE(slifcs_fg(lensfc))
    444  ENDIF
    445 
    446 IF (do_lndinc) THEN
    447  ! identify variables to be updates, and allocate arrays.
    448  IF (trim(lnd_soi_file) .NE. "NULL") THEN
    449  do_soi_inc = .true.
    450  print*
    451  print*," APPLYING SOIL INCREMENTS FROM THE GSI"
    452  ALLOCATE(stc_bck(lensfc, lsoil), smc_bck(lensfc, lsoil), slc_bck(lensfc,lsoil))
    453  ALLOCATE(landinc_mask_fg(lensfc))
    454  ENDIF
    455  ! FOR NOW, CODE SO CAN DO BOTH, BUT MIGHT NEED TO THINK ABOUT THIS SOME MORE.
    456  IF (do_sno_inc) THEN
    457  ! ideally, would check here that sfcsub snow DA update is not also requested
    458  ! but latter is controlled by fnsol, which is read in within that routine.
    459  ! should be done at script level.
    460  print*
    461  print*," APPLYING SNOW INCREMENTS FROM JEDI"
    462  ALLOCATE(snd_bck(lensfc), snd_inc(lensfc), swe_bck(lensfc))
    463  ENDIF
    464  ! set-up land mask info
    465  ALLOCATE(landinc_mask(lensfc))
    466  if (ivegsrc == 2) then ! sib
    467  veg_type_landice=13
    468  else
    469  veg_type_landice=15
    470  endif
    471 ENDIF
    472 
    473 !--------------------------------------------------------------------------------
    474 ! READ THE INPUT SURFACE DATA ON THE CUBED-SPHERE TILE.
    475 !--------------------------------------------------------------------------------
    476 
    477  CALL read_data(lsoil,lensfc,do_nsst,.false.,is_noahmp=is_noahmp, &
    478  tsffcs=tsffcs,smcfcs=smcfcs, &
    479  swefcs=swefcs,stcfcs=stcfcs,tg3fcs=tg3fcs,zorfcs=zorfcs, &
    480  cvfcs=cvfcs, cvbfcs=cvbfcs,cvtfcs=cvtfcs,albfcs=albfcs, &
    481  vegfcs=vegfcs,slifcs=slifcs,cnpfcs=cnpfcs,f10m=f10m , &
    482  vetfcs=vetfcs,sotfcs=sotfcs,alffcs=alffcs,ustar=ustar , &
    483  fmm=fmm ,fhh=fhh ,sihfcs=sihfcs,sicfcs=sicfcs, &
    484  sitfcs=sitfcs,tprcp=tprcp ,srflag=srflag,sndfcs=sndfcs, &
    485  vmnfcs=vmnfcs,vmxfcs=vmxfcs,slcfcs=slcfcs,slpfcs=slpfcs, &
    486  absfcs=absfcs,t2m=t2m ,q2m=q2m ,slmask=slmask, &
    487  zsoil=zsoil, nsst=nsst)
    488 
    489  IF (is_noahmp) THEN
    490  lsm=lsm_noahmp
    491  ELSE
    492  lsm=lsm_noah
    493  ENDIF
    494 
    495  IF (use_ufo) THEN
    496  print*
    497  print*,'USE UNFILTERED OROGRAPHY.'
    498  ELSE
    499  orog_uf = 0.0
    500  ENDIF
    501 
    502  DO i=1,lensfc
    503  aisfcs(i) = 0.
    504  IF(nint(slifcs(i)).EQ.2) aisfcs(i) = 1.
    505  ENDDO
    506 
    507  IF (do_nsst) THEN
    508  IF (.NOT. do_sfccycle ) THEN
    509  print*
    510  print*,"FIRST GUESS MASK ADJUSTED BY IFD RECORD"
    511  slifcs_fg = slifcs
    512  WHERE(nint(nsst%IFD) == 3) slifcs_fg = 2.0
    513  ELSE
    514  print*
    515  print*,"SAVE FIRST GUESS MASK"
    516  slifcs_fg = slifcs
    517  ENDIF
    518  ENDIF
    519 
    520  ! CALCULATE MASK FOR LAND INCREMENTS
    521  IF (do_lndinc) &
    522  CALL calculate_landinc_mask(smcfcs(:,1),swefcs, vetfcs, &
    523  lensfc,veg_type_landice, landinc_mask)
    524 
    525 !--------------------------------------------------------------------------------
    526 ! UPDATE SURFACE FIELDS.
    527 !
    528 ! FIRST, SET WATER AND LAND MASKS - SLMASKW/SLMASKL. FOR UNCOUPLED
    529 ! (NON-FRACTIONAL) MODE, THESE ARE IDENTICAL TO THE CURRENT
    530 ! MASK - '0' WATER; '1' LAND.
    531 !--------------------------------------------------------------------------------
    532 
    533  IF (do_sfccycle) THEN
    534  ALLOCATE(slmaskl(lensfc), slmaskw(lensfc))
    535 ! for running uncoupled (non-fractional grid)
    536  DO i=1,lensfc
    537  IF(nint(slmask(i)) == 1) THEN
    538  slmaskl(i) = 1.0_kind_io8
    539  slmaskw(i) = 1.0_kind_io8
    540  ELSE
    541  slmaskl(i) = 0.0_kind_io8
    542  slmaskw(i) = 0.0_kind_io8
    543  ENDIF
    544  if(nint(slmask(i)) == 0) then
    545  min_ice(i) = 0.15_kind_io8
    546  else
    547  min_ice(i) = 0.0_kind_io8
    548  endif
    549  ENDDO
    550  num_threads = num_parthds()
    551  print*
    552  print*,"CALL SFCCYCLE TO UPDATE SURFACE FIELDS."
    553  CALL sfccycle(lugb,lensfc,lsoil,sig1t,deltsfc, &
    554  iy,im,id,ih,fh,rla,rlo, &
    555  slmaskl,slmaskw, orog, orog_uf, use_ufo, do_nsst, &
    556  sihfcs,sicfcs,sitfcs,sndfcs,slcfcs, &
    557  vmnfcs,vmxfcs,slpfcs,absfcs, &
    558  tsffcs,swefcs,zorfcs,albfcs,tg3fcs, &
    559  cnpfcs,smcfcs,stcfcs,slifcs,aisfcs, &
    560  vegfcs,vetfcs,sotfcs,alffcs, &
    561  cvfcs,cvbfcs,cvtfcs,myrank,num_threads, nlunit, &
    562  sz_nml, input_nml_file, &
    563  min_ice, &
    564  ialb,isot,ivegsrc,tile_num,i_index,j_index)
    565  DEALLOCATE(slmaskl, slmaskw)
    566  ENDIF
    567 
    568 !--------------------------------------------------------------------------------
    569 ! IF RUNNING WITH NSST, READ IN GSI FILE WITH THE UPDATED INCREMENTS (ON THE
    570 ! GAUSSIAN GRID), INTERPOLATE INCREMENTS TO THE CUBED-SPHERE TILE, AND PERFORM
    571 ! REQUIRED ADJUSTMENTS AND QC.
    572 !--------------------------------------------------------------------------------
    573 
    574  IF (do_nsst) THEN
    575  IF (nst_file == "NULL") THEN
    576  print*
    577  print*,"NO GSI FILE. ADJUST IFD FOR FORMER ICE POINTS."
    578  DO i = 1, lensfc
    579  IF (nint(slifcs_fg(i)) == 2 .AND. nint(slifcs(i)) == 0) THEN
    580  nsst%IFD(i) = 3.0
    581  ENDIF
    582  ENDDO
    583  nsst%TFINC = 0.0
    584  ELSE
    585  print*
    586  print*,"ADJUST TREF FROM GSI INCREMENT"
    587 !
    588 ! Get tf climatology at the time
    589 !
    590  call get_tf_clm(rla,rlo,jdim,idim,iy,im,id,ih,tf_clm,tf_trd)
    591  tf_clm_tile(:) = reshape(tf_clm, (/lensfc/) )
    592  tf_trd_tile(:) = reshape(tf_trd, (/lensfc/) )
    593 !
    594 ! Get salinity climatology at the time
    595 !
    596  call get_sal_clm(rla,rlo,jdim,idim,iy,im,id,ih,sal_clm)
    597  sal_clm_tile(:) = reshape(sal_clm, (/lensfc/) )
    598 !
    599 ! read tf analysis increment generated by GSI
    600 !
    601  CALL read_gsi_data(nst_file, 'NST')
    602 !
    603 ! update foundation & surface temperature for NSST
    604 !
    605  CALL adjust_nsst(rla,rlo,slifcs,slifcs_fg,tsffcs,sitfcs,sicfcs,stcfcs, &
    606  nsst,lensfc,lsoil,idim,jdim,zsea1,zsea2,im,id,deltsfc, &
    607  tf_clm_tile,tf_trd_tile,sal_clm_tile)
    608  ENDIF
    609  ENDIF
    610 
    611 !--------------------------------------------------------------------------------
    612 ! READ IN AND APPLY LAND INCREMENTS FROM THE GSI
    613 !--------------------------------------------------------------------------------
    614 
    615  IF (do_lndinc) THEN
    616 
    617  ! SNOW INCREMENTS
    618  ! do snow first, as temperature updates will use snow analaysis
    619  IF (do_sno_inc) THEN
    620  ! updates are made to snow depth only over land (and not-land ice).
    621  ! SWE is then updated from the snow depth analysis, using the model
    622  ! forecast density
    623 
    624  !--------------------------------------------------------------------------------
    625  ! read increments in
    626  !--------------------------------------------------------------------------------
    627 
    628  ! Only coded for DA on native model grid (would always be the case for cycling DA)
    629  CALL read_data(lsoil,lensfc,.false.,.true.,sndfcs=snd_inc)
    630 
    631  !--------------------------------------------------------------------------------
    632  ! add increments to state vars
    633  !--------------------------------------------------------------------------------
    634 
    635  ! store background states
    636  snd_bck = sndfcs
    637  swe_bck = swefcs
    638 
    639  CALL add_increment_snow(snd_inc,landinc_mask,lensfc,sndfcs)
    640 
    641  !--------------------------------------------------------------------------------
    642  ! make any necessary adjustments to dependent variables
    643  !--------------------------------------------------------------------------------
    644 
    645  CALL apply_land_da_adjustments_snd(lsm, lensfc, landinc_mask, swe_bck, snd_bck, &
    646  sndfcs, swefcs)
    647 
    648  ENDIF
    649 
    650  ! SOIL INCREMENTS
    651  IF (do_soi_inc) THEN
    652 
    653  !--------------------------------------------------------------------------------
    654  ! re-calculate soilsnow mask if snow has been updated.
    655  !--------------------------------------------------------------------------------
    656 
    657  landinc_mask_fg = landinc_mask
    658 
    659  IF (do_sfccycle .OR. do_sno_inc) THEN
    660  CALL calculate_landinc_mask(smcfcs(:,1),swefcs, vetfcs, lensfc, &
    661  veg_type_landice, landinc_mask )
    662  ENDIF
    663 
    664  !--------------------------------------------------------------------------------
    665  ! read increments in
    666  !--------------------------------------------------------------------------------
    667 
    668  INQUIRE(file=trim(lnd_soi_file), exist=file_exists)
    669  IF (.not. file_exists) then
    670  print *, 'FATAL ERROR: land increment update requested, but file does not exist: ', &
    671  trim(lnd_soi_file)
    672  call mpi_abort(mpi_comm_world, 10, ierr)
    673  ENDIF
    674 
    675  CALL read_gsi_data(lnd_soi_file, 'LND', lsoil=lsoil)
    676 
    677  !--------------------------------------------------------------------------------
    678  ! add increments to state vars
    679  !--------------------------------------------------------------------------------
    680  ! when applying increments, will often need to adjust other land states in response
    681  ! to the changes made. Need to store bacground, apply the increments, then make
    682  ! secondart adjustments. When updating more than one state, be careful about the
    683  ! order if increments and secondary adjustments.
    684 
    685  ! store background states
    686  stc_bck = stcfcs
    687  smc_bck = smcfcs
    688  slc_bck = slcfcs
    689 
    690  ! below updates [STC/SMC/STC]FCS to hold the analysis
    691  CALL add_increment_soil(rla,rlo,stcfcs,smcfcs,slcfcs,stc_updated, slc_updated, &
    692  landinc_mask,landinc_mask_fg,lensfc,lsoil,idim,jdim,lsm,myrank)
    693 
    694  !--------------------------------------------------------------------------------
    695  ! make any necessary adjustments to dependent variables
    696  !--------------------------------------------------------------------------------
    697 
    698 
    699  CALL apply_land_da_adjustments_soil(lsm, isot, ivegsrc,lensfc, lsoil, &
    700  sotfcs, landinc_mask_fg, stc_bck, stcfcs, smcfcs, slcfcs, stc_updated, &
    701  slc_updated,zsoil)
    702 
    703  ENDIF ! soil increments
    704 
    705 !--------------------------------------------------------------------------------
    706 ! clean up
    707 !--------------------------------------------------------------------------------
    708 
    709  ! to do - save and write out STC_INC? (soil temperature increments)
    710  IF(ALLOCATED(landinc_mask_fg)) DEALLOCATE(landinc_mask_fg)
    711  IF(ALLOCATED(landinc_mask)) DEALLOCATE(landinc_mask)
    712  IF(ALLOCATED(stc_bck)) DEALLOCATE(stc_bck)
    713  IF(ALLOCATED(smc_bck)) DEALLOCATE(smc_bck)
    714  IF(ALLOCATED(slc_bck)) DEALLOCATE(slc_bck)
    715  IF(ALLOCATED(snd_bck)) DEALLOCATE(snd_bck)
    716  IF(ALLOCATED(swe_bck)) DEALLOCATE(swe_bck)
    717  IF(ALLOCATED(snd_inc)) DEALLOCATE(snd_inc)
    718 
    719  ENDIF
    720 !--------------------------------------------------------------------------------
    721 ! WRITE OUT UPDATED SURFACE DATA ON THE CUBED-SPHERE TILE.
    722 !--------------------------------------------------------------------------------
    723 
    724  IF (lsm==lsm_noahmp) THEN
    725 
    726  CALL write_data(lensfc,idim,jdim,lsoil,do_nsst,nsst,vegfcs=vegfcs, &
    727  slcfcs=slcfcs,smcfcs=smcfcs,stcfcs=stcfcs)
    728 
    729  ELSEIF (lsm==lsm_noah) THEN
    730 
    731  CALL write_data(lensfc,idim,jdim,lsoil, &
    732  do_nsst,nsst,slifcs=slifcs,tsffcs=tsffcs,vegfcs=vegfcs, &
    733  swefcs=swefcs,tg3fcs=tg3fcs,zorfcs=zorfcs, &
    734  albfcs=albfcs,alffcs=alffcs,cnpfcs=cnpfcs, &
    735  f10m=f10m,t2m=t2m,q2m=q2m,vetfcs=vetfcs, &
    736  sotfcs=sotfcs,ustar=ustar,fmm=fmm,fhh=fhh, &
    737  sicfcs=sicfcs,sihfcs=sihfcs,sitfcs=sitfcs,tprcp=tprcp, &
    738  srflag=srflag,swdfcs=sndfcs,vmnfcs=vmnfcs, &
    739  vmxfcs=vmxfcs,slpfcs=slpfcs,absfcs=absfcs, &
    740  slcfcs=slcfcs,smcfcs=smcfcs,stcfcs=stcfcs)
    741 
    742  ENDIF
    743 
    744  IF (do_nsst) THEN
    745  DEALLOCATE(nsst%C_0)
    746  DEALLOCATE(nsst%C_D)
    747  DEALLOCATE(nsst%D_CONV)
    748  DEALLOCATE(nsst%DT_COOL)
    749  DEALLOCATE(nsst%IFD)
    750  DEALLOCATE(nsst%QRAIN)
    751  DEALLOCATE(nsst%TREF)
    752  DEALLOCATE(nsst%TFINC)
    753  DEALLOCATE(nsst%W_0)
    754  DEALLOCATE(nsst%W_D)
    755  DEALLOCATE(nsst%XS)
    756  DEALLOCATE(nsst%XT)
    757  DEALLOCATE(nsst%XTTS)
    758  DEALLOCATE(nsst%XU)
    759  DEALLOCATE(nsst%XV)
    760  DEALLOCATE(nsst%XZ)
    761  DEALLOCATE(nsst%XZTS)
    762  DEALLOCATE(nsst%Z_C)
    763  DEALLOCATE(nsst%ZM)
    764  DEALLOCATE(slifcs_fg)
    765  ENDIF
    766 
    767  RETURN
    768 
    769  END SUBROUTINE sfcdrv
    770 
    802  SUBROUTINE adjust_nsst(RLA,RLO,SLMSK_TILE,SLMSK_FG_TILE,SKINT_TILE,&
    803  SICET_TILE,sice_tile,SOILT_TILE,NSST,LENSFC,LSOIL, &
    804  IDIM,JDIM,ZSEA1,ZSEA2,MON,DAY,DELTSFC, &
    805  tf_clm_tile,tf_trd_tile,sal_clm_tile)
    807  USE utils
    808  USE gdswzd_mod
    809  USE read_write_data, ONLY : idim_gaus, jdim_gaus, &
    810  slmsk_gaus, dtref_gaus, &
    811  nsst_data
    812 
    813  USE mpi
    814 
    815  IMPLICIT NONE
    816 
    817  INTEGER, INTENT(IN) :: LENSFC, LSOIL, IDIM, JDIM, MON, DAY
    818 
    819  REAL, INTENT(IN) :: SLMSK_TILE(LENSFC), SLMSK_FG_TILE(LENSFC)
    820  real, intent(in) :: tf_clm_tile(lensfc),tf_trd_tile(lensfc),sal_clm_tile(lensfc)
    821  REAL, INTENT(IN) :: ZSEA1, ZSEA2, DELTSFC
    822  REAL, INTENT(INOUT) :: RLA(LENSFC), RLO(LENSFC), SKINT_TILE(LENSFC)
    823  REAL, INTENT(INOUT) :: SICET_TILE(LENSFC),sice_tile(lensfc),SOILT_TILE(LENSFC,LSOIL)
    824 
    825  TYPE(NSST_DATA) :: NSST
    826 
    827  REAL, PARAMETER :: TMAX=313.0,tzero=273.16
    828 
    829  INTEGER :: IOPT, NRET, KGDS_GAUS(200)
    830  INTEGER :: IGAUS, JGAUS, IJ, II, JJ, III, JJJ, KRAD
    831  INTEGER :: ISTART, IEND, JSTART, JEND
    832  INTEGER :: MASK_TILE, MASK_FG_TILE
    833  INTEGER :: ITILE, JTILE
    834  INTEGER :: MAX_SEARCH, J, IERR
    835  INTEGER :: IGAUSP1, JGAUSP1
    836  integer :: nintp,nsearched,nice,nland
    837  integer :: nfill,nfill_tice,nfill_clm
    838  integer :: nset_thaw,nset_thaw_s,nset_thaw_i,nset_thaw_c
    839 
    840  INTEGER, ALLOCATABLE :: ID1(:,:), ID2(:,:), JDC(:,:)
    841 
    842  LOGICAL :: IS_ICE
    843 
    844  real :: tfreez
    845  REAL :: TREF_SAVE,WSUM,tf_ice,tf_thaw
    846  REAL :: FILL, DTZM, GAUS_RES_KM, DTREF
    847  REAL, ALLOCATABLE :: XPTS(:), YPTS(:), LATS(:), LONS(:)
    848  REAL, ALLOCATABLE :: DUM2D(:,:), LATS_RAD(:), LONS_RAD(:)
    849  REAL, ALLOCATABLE :: AGRID(:,:,:), S2C(:,:,:)
    850 
    851  kgds_gaus = 0
    852  kgds_gaus(1) = 4 ! OCT 6 - TYPE OF GRID (GAUSSIAN)
    853  kgds_gaus(2) = idim_gaus ! OCT 7-8 - # PTS ON LATITUDE CIRCLE
    854  kgds_gaus(3) = jdim_gaus
    855  kgds_gaus(4) = 90000 ! OCT 11-13 - LAT OF ORIGIN
    856  kgds_gaus(5) = 0 ! OCT 14-16 - LON OF ORIGIN
    857  kgds_gaus(6) = 128 ! OCT 17 - RESOLUTION FLAG
    858  kgds_gaus(7) = -90000 ! OCT 18-20 - LAT OF EXTREME POINT
    859  kgds_gaus(8) = nint(-360000./float(idim_gaus)) ! OCT 21-23 - LON OF EXTREME POINT
    860  kgds_gaus(9) = nint((360.0 / float(idim_gaus))*1000.0)
    861  ! OCT 24-25 - LONGITUDE DIRECTION INCR.
    862  kgds_gaus(10) = jdim_gaus/2 ! OCT 26-27 - NUMBER OF CIRCLES POLE TO EQUATOR
    863  kgds_gaus(12) = 255 ! OCT 29 - RESERVED
    864  kgds_gaus(20) = 255 ! OCT 5 - NOT USED, SET TO 255
    865 
    866  print*
    867  print*,'ADJUST NSST USING GSI INCREMENTS ON GAUSSIAN GRID'
    868 
    869 !----------------------------------------------------------------------
    870 ! CALL GDSWZD TO COMPUTE THE LAT/LON OF EACH GSI GAUSSIAN GRID POINT.
    871 !----------------------------------------------------------------------
    872 
    873  iopt = 0
    874  fill = -9999.
    875  ALLOCATE(xpts(idim_gaus*jdim_gaus))
    876  ALLOCATE(ypts(idim_gaus*jdim_gaus))
    877  ALLOCATE(lats(idim_gaus*jdim_gaus))
    878  ALLOCATE(lons(idim_gaus*jdim_gaus))
    879  xpts = fill
    880  ypts = fill
    881  lats = fill
    882  lons = fill
    883 
    884  CALL gdswzd(kgds_gaus,iopt,(idim_gaus*jdim_gaus),fill,xpts,ypts,lons,lats,nret)
    885 
    886  IF (nret /= (idim_gaus*jdim_gaus)) THEN
    887  print*,'FATAL ERROR: PROBLEM IN GDSWZD. STOP.'
    888  CALL mpi_abort(mpi_comm_world, 12, ierr)
    889  ENDIF
    890 
    891  DEALLOCATE (xpts, ypts)
    892 
    893  ALLOCATE(dum2d(idim_gaus,jdim_gaus))
    894  dum2d = reshape(lats, (/idim_gaus,jdim_gaus/) )
    895  DEALLOCATE(lats)
    896 
    897  ALLOCATE(lats_rad(jdim_gaus))
    898  DO j = 1, jdim_gaus
    899  lats_rad(j) = dum2d(1,jdim_gaus-j+1) * 3.1415926 / 180.0
    900  ENDDO
    901 
    902  dum2d = reshape(lons, (/idim_gaus,jdim_gaus/) )
    903  DEALLOCATE(lons)
    904  ALLOCATE(lons_rad(idim_gaus))
    905  lons_rad = dum2d(:,1) * 3.1415926 / 180.0
    906 
    907  DEALLOCATE(dum2d)
    908 
    909  ALLOCATE(agrid(idim,jdim,2))
    910  agrid(:,:,1) = reshape(rlo, (/idim,jdim/) )
    911  agrid(:,:,2) = reshape(rla, (/idim,jdim/) )
    912  agrid = agrid * 3.1415926 / 180.0
    913 
    914  ALLOCATE(id1(idim,jdim))
    915  ALLOCATE(id2(idim,jdim))
    916  ALLOCATE(jdc(idim,jdim))
    917  ALLOCATE(s2c(idim,jdim,4))
    918 
    919 !----------------------------------------------------------------------
    920 ! COMPUTE BILINEAR WEIGHTS FOR EACH MODEL POINT FROM THE NEAREST
    921 ! FOUR GSI/GAUSSIAN POINTS. DOES NOT ACCOUNT FOR MASK. THAT
    922 ! HAPPENS LATER.
    923 !----------------------------------------------------------------------
    924 
    925  CALL remap_coef( 1, idim, 1, jdim, idim_gaus, jdim_gaus, &
    926  lons_rad, lats_rad, id1, id2, jdc, s2c, agrid )
    927 
    928  DEALLOCATE(lons_rad, lats_rad, agrid)
    929 
    930 !----------------------------------------------------------------------
    931 ! THE MAXIMUM DISTANCE TO SEARCH IS 500 KM. HOW MANY GAUSSIAN
    932 ! GRID LENGTHS IS THAT?
    933 !----------------------------------------------------------------------
    934 
    935  gaus_res_km = 360.0 / idim_gaus * 111.0
    936  max_search = ceiling(500.0/gaus_res_km)
    937 
    938  print*
    939  print*,'MAXIMUM SEARCH IS ',max_search, ' GAUSSIAN POINTS.'
    940  print*
    941 
    942 !
    943 ! Initialize variables for counts statitics to be zeros
    944 !
    945  nintp = 0
    946  nset_thaw = 0
    947  nset_thaw_s = 0
    948  nset_thaw_i = 0
    949  nset_thaw_c = 0
    950  nsearched = 0
    951  nfill = 0
    952  nfill_tice = 0
    953  nfill_clm = 0
    954  nice = 0
    955  nland = 0
    956 !----------------------------------------------------------------------
    957 ! TREF INCREMENT WILL BE OUTPUT. INITIALIZE TO ZERO.
    958 !----------------------------------------------------------------------
    959 
    960  nsst%TFINC = 0.0
    961 
    962  ij_loop : DO ij = 1, lensfc
    963 
    964  mask_tile = nint(slmsk_tile(ij))
    965  mask_fg_tile = nint(slmsk_fg_tile(ij))
    966 
    967 !
    968 ! when sea ice exists, get salinity dependent water temperature
    969 !
    970  tf_ice = tfreez(sal_clm_tile(ij)) + tzero
    971 !----------------------------------------------------------------------
    972 ! SKIP LAND POINTS. NSST NOT APPLIED AT LAND.
    973 !----------------------------------------------------------------------
    974 
    975  IF (mask_tile == 1) THEN
    976  nland = nland + 1
    977  cycle ij_loop
    978  ENDIF
    979 
    980 !
    981 ! these are ice points. set tref to tf_ice and update tmpsfc.
    982 !
    983  if (mask_tile == 2) then
    984  nsst%tref(ij)=tf_ice ! water part tmp set
    985  skint_tile(ij)=(1.0-sice_tile(ij))*nsst%tref(ij)+sice_tile(ij)*sicet_tile(ij)
    986  nice = nice + 1
    987  cycle ij_loop
    988  endif
    989 
    990 !
    991 ! Get i,j index on array of (idim,jdim) from known ij
    992 !
    993  jtile = (ij-1) / idim + 1
    994  itile = mod(ij,idim)
    995  IF (itile==0) itile = idim
    996 
    997 !----------------------------------------------------------------------
    998 ! IF THE MODEL POINT WAS ICE COVERED, BUT IS NOW OPEN WATER, SET
    999 ! TREF TO searched adjascent open water onea, if failed the search, set to
    1000 ! weighted average of tf_ice and tf_clm. For NSST vars, set xz TO '30' AND ALL OTHER FIELDS TO ZERO.
    1001 !----------------------------------------------------------------------
    1002 
    1003  IF (mask_fg_tile == 2 .AND. mask_tile == 0) THEN
    1004 !
    1005 ! set background for the thaw (just melted water) situation
    1006 !
    1007  call tf_thaw_set(nsst%tref,nint(slmsk_fg_tile),itile,jtile,tf_ice,tf_clm_tile(ij),tf_thaw,idim,jdim, &
    1008  nset_thaw_s,nset_thaw_i,nset_thaw_c)
    1009  call nsst_water_reset(nsst,ij,tf_thaw)
    1010  nset_thaw = nset_thaw + 1
    1011  ENDIF
    1012 
    1013 !----------------------------------------------------------------------
    1014 ! THESE ARE POINTS THAT ARE OPEN WATER AND WERE OPEN WATER PRIOR
    1015 ! TO ANY ICE UPDATE BY SFCCYCLE. UPDATE TREF AND SKIN TEMP.
    1016 ! AT OPEN WATER POINTS, THE SEA ICE TEMPERATURE (SICET_TILE) AND
    1017 ! SOIL COLUMN TEMPERATURE (SOILT_TILE) ARE SET TO THE SKIN TEMP.
    1018 ! IT IS SIMPLY A FILLER VALUE. THESE FIELDS ARE NOT USED AT
    1019 ! OPEN WATER POINTS.
    1020 !----------------------------------------------------------------------
    1021 !----------------------------------------------------------------------
    1022 ! SEE IF ANY OF THE NEAREST GSI POINTS MASK AREA OPEN WATER.
    1023 ! IF SO, APPLY NSST INCREMENT USING BILINEAR INTERPOLATION.
    1024 !----------------------------------------------------------------------
    1025 
    1026  igaus = id1(itile,jtile)
    1027  jgaus = jdc(itile,jtile)
    1028  igausp1 = id2(itile,jtile)
    1029  jgausp1 = jdc(itile,jtile)+1
    1030 
    1031  IF (slmsk_gaus(igaus,jgaus) == 0 .OR. &
    1032  slmsk_gaus(igausp1,jgaus) == 0 .OR. &
    1033  slmsk_gaus(igausp1,jgausp1) == 0 .OR. &
    1034  slmsk_gaus(igaus,jgausp1) == 0) THEN
    1035 
    1036  dtref = 0.0
    1037  wsum = 0.0
    1038 
    1039  IF (slmsk_gaus(igaus,jgaus) == 0) THEN
    1040  dtref = dtref + (s2c(itile,jtile,1) * dtref_gaus(igaus,jgaus))
    1041  wsum = wsum + s2c(itile,jtile,1)
    1042  ENDIF
    1043 
    1044  IF (slmsk_gaus(igausp1,jgaus) == 0) THEN
    1045  dtref = dtref + (s2c(itile,jtile,2) * dtref_gaus(igausp1,jgaus))
    1046  wsum = wsum + s2c(itile,jtile,2)
    1047  ENDIF
    1048 
    1049  IF (slmsk_gaus(igausp1,jgausp1) == 0) THEN
    1050  dtref = dtref + (s2c(itile,jtile,3) * dtref_gaus(igausp1,jgausp1))
    1051  wsum = wsum + s2c(itile,jtile,3)
    1052  ENDIF
    1053 
    1054  IF (slmsk_gaus(igaus,jgausp1) == 0) THEN
    1055  dtref = dtref + (s2c(itile,jtile,4) * dtref_gaus(igaus,jgausp1))
    1056  wsum = wsum + s2c(itile,jtile,4)
    1057  ENDIF
    1058 
    1059  nintp = nintp + 1
    1060  dtref = dtref / wsum
    1061 
    1062  tref_save = nsst%TREF(ij)
    1063  nsst%TREF(ij) = nsst%TREF(ij) + dtref
    1064  nsst%TREF(ij) = max(nsst%TREF(ij), tf_ice)
    1065  nsst%TREF(ij) = min(nsst%TREF(ij), tmax)
    1066  nsst%TFINC(ij) = nsst%TREF(ij) - tref_save
    1067 
    1068  CALL dtzm_point(nsst%XT(ij),nsst%XZ(ij),nsst%DT_COOL(ij), &
    1069  nsst%Z_C(ij),zsea1,zsea2,dtzm)
    1070 
    1071  skint_tile(ij) = nsst%TREF(ij) + dtzm
    1072  skint_tile(ij) = max(skint_tile(ij), tf_ice)
    1073  skint_tile(ij) = min(skint_tile(ij), tmax)
    1074 
    1075  sicet_tile(ij) = skint_tile(ij)
    1076  soilt_tile(ij,:) = skint_tile(ij)
    1077 
    1078 !----------------------------------------------------------------------
    1079 ! NO NEARBY GSI/GAUSSIAN OPEN WATER POINTS. PERFORM A SPIRAL SEARCH TO
    1080 ! FIND NEAREST NON-LAND POINT ON GSI/GAUSSIAN GRID.
    1081 !----------------------------------------------------------------------
    1082 
    1083  ELSE
    1084 
    1085  is_ice = .false.
    1086 
    1087  DO krad = 1, max_search
    1088 
    1089  istart = igaus - krad
    1090  iend = igaus + krad
    1091  jstart = jgaus - krad
    1092  jend = jgaus + krad
    1093 
    1094  DO jj = jstart, jend
    1095  DO ii = istart, iend
    1096 
    1097  IF((jj == jstart) .OR. (jj == jend) .OR. &
    1098  (ii == istart) .OR. (ii == iend)) THEN
    1099 
    1100  IF ((jj >= 1) .AND. (jj <= jdim_gaus)) THEN
    1101 
    1102  jjj = jj
    1103  IF (ii <= 0) THEN
    1104  iii = idim_gaus + ii
    1105  ELSE IF (ii >= (idim_gaus+1)) THEN
    1106  iii = ii - idim_gaus
    1107  ELSE
    1108  iii = ii
    1109  END IF
    1110 
    1111 !----------------------------------------------------------------------
    1112 ! SEE IF NEARBY POINTS ARE SEA ICE. IF THEY ARE, AND THE SEARCH FOR
    1113 ! A GAUSSIAN GRID OPEN WATER POINT FAILS, THEN TREF WILL BE SET TO
    1114 ! FREEZING BELOW.
    1115 !----------------------------------------------------------------------
    1116 
    1117  IF (krad <= 2 .AND. slmsk_gaus(iii,jjj) == 2) is_ice = .true.
    1118 
    1119  IF (slmsk_gaus(iii,jjj) == 0) THEN
    1120 
    1121 ! PRINT*,'MISMATCH AT TILE POINT ',ITILE,JTILE
    1122 ! PRINT*,'UPDATE TREF USING GSI INCREMENT AT ',III,JJJ,DTREF_GAUS(III,JJJ)
    1123  nsearched = nsearched + 1
    1124 
    1125  tref_save = nsst%TREF(ij)
    1126  nsst%TREF(ij ) = nsst%TREF(ij) + dtref_gaus(iii,jjj)
    1127  nsst%TREF(ij) = max(nsst%TREF(ij), tf_ice)
    1128  nsst%TREF(ij) = min(nsst%TREF(ij), tmax)
    1129  nsst%TFINC(ij) = nsst%TREF(ij) - tref_save
    1130 
    1131  CALL dtzm_point(nsst%XT(ij),nsst%XZ(ij),nsst%DT_COOL(ij), &
    1132  nsst%Z_C(ij),zsea1,zsea2,dtzm)
    1133 
    1134  skint_tile(ij) = nsst%TREF(ij) + dtzm
    1135  skint_tile(ij) = max(skint_tile(ij), tf_ice)
    1136  skint_tile(ij) = min(skint_tile(ij), tmax)
    1137 
    1138  sicet_tile(ij) = skint_tile(ij)
    1139  soilt_tile(ij,:) = skint_tile(ij)
    1140  cycle ij_loop
    1141 
    1142  ENDIF ! GSI/Gaussian mask is open water
    1143 
    1144  ENDIF
    1145 
    1146  ENDIF
    1147 
    1148  ENDDO
    1149  ENDDO
    1150 
    1151  ENDDO ! KRAD LOOP
    1152 
    1153 !----------------------------------------------------------------------
    1154 ! THE SEARCH FAILED. IF THERE IS NEARBY ICE, SET TREF TO FREEZING.
    1155 ! ELSE UPDATE TREF BASED ON THE ANNUAL SST CYCLE.
    1156 !----------------------------------------------------------------------
    1157 
    1158 ! PRINT*,'WARNING !!!!!! SEARCH FAILED AT TILE POINT ',ITILE,JTILE
    1159 
    1160  nfill = nfill + 1
    1161  IF (is_ice) THEN
    1162  nsst%TREF(ij) = tf_ice
    1163 ! PRINT*,"NEARBY ICE. SET TREF TO FREEZING"
    1164  nfill_tice = nfill_tice + 1
    1165  ELSE
    1166  tref_save = nsst%TREF(ij)
    1167  nsst%TREF(ij) = nsst%TREF(ij) + tf_trd_tile(ij)
    1168  nsst%TREF(ij) = max(nsst%TREF(ij), tf_ice)
    1169  nsst%TREF(ij) = min(nsst%TREF(ij), tmax)
    1170  nsst%TFINC(ij) = nsst%TREF(ij) - tref_save
    1171 ! PRINT*,'UPDATE TREF FROM SST CLIMO ',DTREF
    1172  nfill_clm = nfill_clm + 1
    1173  ENDIF
    1174 
    1175  CALL dtzm_point(nsst%XT(ij),nsst%XZ(ij),nsst%DT_COOL(ij), &
    1176  nsst%Z_C(ij),zsea1,zsea2,dtzm)
    1177 
    1178  skint_tile(ij) = nsst%TREF(ij) + dtzm
    1179  skint_tile(ij) = max(skint_tile(ij), tf_ice)
    1180  skint_tile(ij) = min(skint_tile(ij), tmax)
    1181 
    1182  sicet_tile(ij) = skint_tile(ij)
    1183  soilt_tile(ij,:) = skint_tile(ij)
    1184 
    1185  ENDIF ! NEARBY GAUSSIAN POINTS ARE OPEN WATER?
    1186 
    1187  ENDDO ij_loop
    1188 
    1189  write(*,'(a)') 'statistics of grids number processed for tile : '
    1190  write(*,'(a,I8)') ' nintp = ',nintp
    1191  write(*,'(a,4I8)') 'nset_thaw,nset_thaw_s,nset_thaw_i,nset_thaw_c =',nset_thaw,nset_thaw_s,nset_thaw_i,nset_thaw_c
    1192  write(*,'(a,I8)') ' nsearched = ',nsearched
    1193  write(*,'(a,3I6)') ' nfill,nfill_tice,nfill_clm = ',nfill,nfill_tice,nfill_clm
    1194  write(*,'(a,I8)') ' nice = ',nice
    1195  write(*,'(a,I8)') ' nland = ',nland
    1196 
    1197  DEALLOCATE(id1, id2, jdc, s2c)
    1198 
    1199  END SUBROUTINE adjust_nsst
    1200 
    1211  SUBROUTINE climo_trend(LATITUDE, MON, DAY, DELTSFC, DTREF)
    1212  IMPLICIT NONE
    1213 
    1214  INTEGER, INTENT(IN) :: MON, DAY
    1215 
    1216  REAL, INTENT(IN) :: LATITUDE, DELTSFC
    1217  REAL, INTENT(OUT) :: DTREF
    1218 
    1219  INTEGER :: NUM_DAYS(12), MON2, MON1
    1220 
    1221  REAL, TARGET :: SST_80_90(12)
    1222  REAL, TARGET :: SST_70_80(12)
    1223  REAL, TARGET :: SST_60_70(12)
    1224  REAL, TARGET :: SST_50_60(12)
    1225  REAL, TARGET :: SST_40_50(12)
    1226  REAL, TARGET :: SST_30_40(12)
    1227  REAL, TARGET :: SST_20_30(12)
    1228  REAL, TARGET :: SST_10_20(12)
    1229  REAL, TARGET :: SST_00_10(12)
    1230  REAL, TARGET :: SST_M10_00(12)
    1231  REAL, TARGET :: SST_M20_M10(12)
    1232  REAL, TARGET :: SST_M30_M20(12)
    1233  REAL, TARGET :: SST_M40_M30(12)
    1234  REAL, TARGET :: SST_M50_M40(12)
    1235  REAL, TARGET :: SST_M60_M50(12)
    1236  REAL, TARGET :: SST_M70_M60(12)
    1237  REAL, TARGET :: SST_M80_M70(12)
    1238  REAL, TARGET :: SST_M90_M80(12)
    1239 
    1240  REAL, POINTER :: SST(:)
    1241 
    1242  DATA num_days /31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31/
    1243 
    1244  DATA sst_80_90 /271.466, 271.458, 271.448, 271.445, 271.519, 271.636, &
    1245  272.023, 272.066, 272.001, 271.698, 271.510, 271.472/
    1246 
    1247  DATA sst_70_80 /272.149, 272.103, 272.095, 272.126, 272.360, 272.988, &
    1248  274.061, 274.868, 274.415, 273.201, 272.468, 272.268/
    1249 
    1250  DATA sst_60_70 /274.240, 274.019, 273.988, 274.185, 275.104, 276.875, &
    1251  279.005, 280.172, 279.396, 277.586, 275.818, 274.803/
    1252 
    1253  DATA sst_50_60 /277.277, 276.935, 277.021, 277.531, 279.100, 281.357, &
    1254  283.735, 285.171, 284.399, 282.328, 279.918, 278.199/
    1255 
    1256  DATA sst_40_50 /281.321, 280.721, 280.850, 281.820, 283.958, 286.588, &
    1257  289.195, 290.873, 290.014, 287.652, 284.898, 282.735/
    1258 
    1259  DATA sst_30_40 /289.189, 288.519, 288.687, 289.648, 291.547, 293.904, &
    1260  296.110, 297.319, 296.816, 295.225, 292.908, 290.743/
    1261 
    1262  DATA sst_20_30 /294.807, 294.348, 294.710, 295.714, 297.224, 298.703, &
    1263  299.682, 300.127, 300.099, 299.455, 297.953, 296.177/
    1264 
    1265  DATA sst_10_20 /298.878, 298.720, 299.033, 299.707, 300.431, 300.709, &
    1266  300.814, 300.976, 301.174, 301.145, 300.587, 299.694/
    1267 
    1268  DATA sst_00_10 /300.415, 300.548, 300.939, 301.365, 301.505, 301.141, &
    1269  300.779, 300.660, 300.818, 300.994, 300.941, 300.675/
    1270 
    1271  DATA sst_m10_00 /300.226, 300.558, 300.914, 301.047, 300.645, 299.870, &
    1272  299.114, 298.751, 298.875, 299.294, 299.721, 299.989/
    1273 
    1274  DATA sst_m20_m10 /299.547, 299.985, 300.056, 299.676, 298.841, 297.788, &
    1275  296.893, 296.491, 296.687, 297.355, 298.220, 298.964/
    1276 
    1277  DATA sst_m30_m20 /297.524, 298.073, 297.897, 297.088, 295.846, 294.520, &
    1278  293.525, 293.087, 293.217, 293.951, 295.047, 296.363/
    1279 
    1280  DATA sst_m40_m30 /293.054, 293.765, 293.468, 292.447, 291.128, 289.781, &
    1281  288.773, 288.239, 288.203, 288.794, 289.947, 291.553/
    1282 
    1283  DATA sst_m50_m40 /285.052, 285.599, 285.426, 284.681, 283.761, 282.826, &
    1284  282.138, 281.730, 281.659, 281.965, 282.768, 283.961/
    1285 
    1286  DATA sst_m60_m50 /277.818, 278.174, 277.991, 277.455, 276.824, 276.229, &
    1287  275.817, 275.585, 275.560, 275.687, 276.142, 276.968/
    1288 
    1289  DATA sst_m70_m60 /273.436, 273.793, 273.451, 272.813, 272.349, 272.048, &
    1290  271.901, 271.838, 271.845, 271.889, 272.080, 272.607/
    1291 
    1292  DATA sst_m80_m70 /271.579, 271.578, 271.471, 271.407, 271.392, 271.391, &
    1293  271.390, 271.391, 271.394, 271.401, 271.422, 271.486/
    1294 
    1295  DATA sst_m90_m80 /271.350, 271.350, 271.350, 271.350, 271.350, 271.350, &
    1296  271.350, 271.350, 271.350, 271.350, 271.350, 271.350/
    1297 
    1298  NULLIFY(sst)
    1299  IF (latitude > 80.0) THEN
    1300  sst => sst_80_90
    1301  ELSEIF (latitude > 70.0) THEN
    1302  sst => sst_70_80
    1303  ELSEIF (latitude > 60.0) THEN
    1304  sst => sst_60_70
    1305  ELSEIF (latitude > 50.0) THEN
    1306  sst => sst_50_60
    1307  ELSEIF (latitude > 40.0) THEN
    1308  sst => sst_40_50
    1309  ELSEIF (latitude > 30.0) THEN
    1310  sst => sst_30_40
    1311  ELSEIF (latitude > 20.0) THEN
    1312  sst => sst_20_30
    1313  ELSEIF (latitude > 10.0) THEN
    1314  sst => sst_10_20
    1315  ELSEIF (latitude > 0.0) THEN
    1316  sst => sst_00_10
    1317  ELSEIF (latitude > -10.0) THEN
    1318  sst => sst_m10_00
    1319  ELSEIF (latitude > -20.0) THEN
    1320  sst => sst_m20_m10
    1321  ELSEIF (latitude > -30.0) THEN
    1322  sst => sst_m30_m20
    1323  ELSEIF (latitude > -40.0) THEN
    1324  sst => sst_m40_m30
    1325  ELSEIF (latitude > -50.0) THEN
    1326  sst => sst_m50_m40
    1327  ELSEIF (latitude > -60.0) THEN
    1328  sst => sst_m60_m50
    1329  ELSEIF (latitude > -70.0) THEN
    1330  sst => sst_m70_m60
    1331  ELSEIF (latitude > -80.0) THEN
    1332  sst => sst_m80_m70
    1333  ELSE
    1334  sst => sst_m90_m80
    1335  END IF
    1336 
    1337  IF (day >= 15) THEN
    1338  mon2 = mon+1
    1339  IF(mon2 == 13) mon2 = 1
    1340  mon1 = mon
    1341  dtref = (sst(mon2) - sst(mon1)) / num_days(mon1)
    1342  ELSE
    1343  mon1 = mon - 1
    1344  IF (mon1 == 0) mon1=12
    1345  mon2 = mon
    1346  dtref = (sst(mon2) - sst(mon1)) / num_days(mon1)
    1347  ENDIF
    1348 
    1349  dtref = dtref * (deltsfc / 24.0)
    1350 
    1351  END SUBROUTINE climo_trend
    1352 
    1364  SUBROUTINE dtzm_point(XT,XZ,DT_COOL,ZC,Z1,Z2,DTZM)
    1365  implicit none
    1366 
    1367  real, intent(in) :: xt,xz,dt_cool,zc,z1,z2
    1368  real, intent(out) :: dtzm
    1369 
    1370  real, parameter :: zero = 0.0
    1371  real, parameter :: one = 1.0
    1372  real, parameter :: half = 0.5
    1373  real :: dt_warm,dtw,dtc
    1374 !
    1375 ! get the mean warming in the range of z=z1 to z=z2
    1376 !
    1377  dtw = zero
    1378  if ( xt > zero ) then
    1379  dt_warm = (xt+xt)/xz ! Tw(0)
    1380  if ( z1 < z2) then
    1381  if ( z2 < xz ) then
    1382  dtw = dt_warm*(one-(z1+z2)/(xz+xz))
    1383  elseif ( z1 < xz .and. z2 >= xz ) then
    1384  dtw = half*(one-z1/xz)*dt_warm*(xz-z1)/(z2-z1)
    1385  endif
    1386  elseif ( z1 == z2 ) then
    1387  if ( z1 < xz ) then
    1388  dtw = dt_warm*(one-z1/xz)
    1389  endif
    1390  endif
    1391  endif
    1392 !
    1393 ! get the mean cooling in the range of z=z1 to z=z2
    1394 !
    1395  dtc = zero
    1396  if ( zc > zero ) then
    1397  if ( z1 < z2) then
    1398  if ( z2 < zc ) then
    1399  dtc = dt_cool*(one-(z1+z2)/(zc+zc))
    1400  elseif ( z1 < zc .and. z2 >= zc ) then
    1401  dtc = half*(one-z1/zc)*dt_cool*(zc-z1)/(z2-z1)
    1402  endif
    1403  elseif ( z1 == z2 ) then
    1404  if ( z1 < zc ) then
    1405  dtc = dt_cool*(one-z1/zc)
    1406  endif
    1407  endif
    1408  endif
    1409 
    1410 !
    1411 ! get the mean T departure from Tf in the range of z=z1 to z=z2
    1412 !
    1413  dtzm = dtw - dtc
    1414 
    1415  END SUBROUTINE dtzm_point
    1416 
    1436  subroutine tf_thaw_set(tf_ij,mask_ij,itile,jtile,tice,tclm,tf_thaw,nx,ny, &
    1437  nset_thaw_s,nset_thaw_i,nset_thaw_c)
    1439  real, dimension(nx*ny), intent(in) :: tf_ij
    1440  integer, dimension(nx*ny), intent(in) :: mask_ij
    1441  real, intent(in) :: tice,tclm
    1442  integer, intent(in) :: itile,jtile,nx,ny
    1443  real, intent(out) :: tf_thaw
    1444  integer, intent(inout) :: nset_thaw_s,nset_thaw_i,nset_thaw_c
    1445 ! Local
    1446  real, parameter :: bmiss = -999.0
    1447  real, dimension(nx,ny) :: tf
    1448  integer, dimension(nx,ny) :: mask
    1449  integer :: krad,max_search,istart,iend,jstart,jend
    1450  integer :: ii,jj,iii,jjj
    1451  logical :: is_ice
    1452 
    1453  max_search = 2
    1454 
    1455  mask(:,:) = reshape(mask_ij,(/nx,ny/) )
    1456  tf(:,:) = reshape(tf_ij,(/nx,ny/) )
    1457 
    1458  tf_thaw = bmiss
    1459 
    1460  do krad = 1, max_search
    1461 
    1462  istart = itile - krad
    1463  iend = itile + krad
    1464  jstart = jtile - krad
    1465  jend = jtile + krad
    1466 
    1467  do jj = jstart, jend
    1468  do ii = istart, iend
    1469 
    1470 
    1471  if ((jj == jstart) .or. (jj == jend) .or. &
    1472  (ii == istart) .or. (ii == iend)) then
    1473 
    1474  if ((jj >= 1) .and. (jj <= ny)) then
    1475  jjj = jj
    1476  if (ii <= 0) then
    1477  iii = nx + ii
    1478  else if (ii >= (nx+1)) then
    1479  iii = ii - nx
    1480  else
    1481  iii = ii
    1482  endif
    1483 
    1484 !----------------------------------------------------------------------
    1485 ! SEE IF NEARBY POINTS ARE SEA ICE. IF THEY ARE, AND THE SEARCH FOR
    1486 ! A GAUSSIAN GRID OPEN WATER POINT FAILS, THEN TREF WILL BE SET TO
    1487 ! FREEZING BELOW.
    1488 !----------------------------------------------------------------------
    1489  if (krad <= 2 .and. mask(iii,jjj) == 2) is_ice = .true.
    1490 
    1491  if (mask(iii,jjj) == 0) then
    1492  tf_thaw = tf(iii,jjj)
    1493  nset_thaw_s = nset_thaw_s + 1
    1494  write(*,'(a,I4,2F9.3)') 'nset_thaw_s,tf(iii,jjj),tclm : ',nset_thaw_s,tf(iii,jjj),tclm
    1495  go to 100
    1496  endif ! tile mask is open water
    1497 
    1498  endif
    1499  endif
    1500  enddo
    1501  enddo
    1502  enddo ! krad loop
    1503 
    1504  100 continue
    1505 
    1506  if ( tf_thaw == bmiss ) then
    1507  if (is_ice) then
    1508  tf_thaw = tice
    1509  nset_thaw_i = nset_thaw_i + 1
    1510  write(*,'(a,I4,F9.3)') 'nset_thaw_i,tf_ice : ',nset_thaw_i,tice
    1511  else
    1512  tf_thaw = 0.8*tice+0.2*tclm
    1513  nset_thaw_c = nset_thaw_c + 1
    1514  write(*,'(a,I4,2F9.3)') 'nset_thaw_c,tf_ice,tclm : ',nset_thaw_c,tice,tclm
    1515  endif
    1516  endif
    1517 
    1518  end subroutine tf_thaw_set
    1519 
    1527  subroutine nsst_water_reset(nsst,ij,tf_thaw)
    1528  use read_write_data, only : nsst_data
    1529  implicit none
    1530 
    1531  integer, intent(in) :: ij
    1532 
    1533  real, intent(in) :: tf_thaw
    1534 
    1535  type(nsst_data), intent(inout) :: nsst
    1536 
    1537  nsst%c_0(ij) = 0.0
    1538  nsst%c_d(ij) = 0.0
    1539  nsst%d_conv(ij) = 0.0
    1540  nsst%dt_cool(ij) = 0.0
    1541  nsst%ifd(ij) = 0.0
    1542  nsst%qrain(ij) = 0.0
    1543  nsst%tref(ij) = tf_thaw
    1544  nsst%w_0(ij) = 0.0
    1545  nsst%w_d(ij) = 0.0
    1546  nsst%xs(ij) = 0.0
    1547  nsst%xt(ij) = 0.0
    1548  nsst%xtts(ij) = 0.0
    1549  nsst%xu(ij) = 0.0
    1550  nsst%xv(ij) = 0.0
    1551  nsst%xz(ij) = 30.0
    1552  nsst%xzts(ij) = 0.0
    1553  nsst%z_c(ij) = 0.0
    1554  nsst%zm(ij) = 0.0
    1555 
    1556  end subroutine nsst_water_reset
    1557 
    1573 subroutine get_tf_clm(xlats_ij,xlons_ij,ny,nx,iy,im,id,ih,tf_clm,tf_trd)
    1574  use read_write_data, only : get_tf_clm_dim
    1575 
    1576  implicit none
    1577 
    1578  real, dimension(nx*ny), intent(in) :: xlats_ij
    1579  real, dimension(nx*ny), intent(in) :: xlons_ij
    1580  real, dimension(nx,ny), intent(out) :: tf_clm
    1581  real, dimension(nx,ny), intent(out) :: tf_trd
    1582  integer, intent(in) :: iy,im,id,ih,nx,ny
    1583 ! local declare
    1584  real, allocatable, dimension(:,:) :: tf_clm0 ! sst climatology at the valid time (nxc,nyc)
    1585  real, allocatable, dimension(:,:) :: tf_trd0 ! 6-hourly sst climatology tendency valid at atime (nxc,nyc)
    1586  real, allocatable, dimension(:) :: cxlats ! latitudes of sst climatology
    1587  real, allocatable, dimension(:) :: cxlons ! longitudes of sst climatology
    1588 
    1589  real, dimension(nx*ny) :: tf_clm_ij ! sst climatology at target grids (nx*ny)
    1590  real, dimension(nx*ny) :: tf_trd_ij ! 6-hourly sst climatology tendency
    1591  real :: wei1,wei2
    1592  integer :: nxc,nyc,mon1,mon2,i,j
    1593  character (len=6), parameter :: fin_tf_clm='sstclm' ! sst climatology file name
    1594 !
    1595 ! get which two months used and their weights from atime
    1596 !
    1597  call get_tim_wei(iy,im,id,ih,mon1,mon2,wei1,wei2)
    1598 !
    1599 ! get the dimensions of the sst climatology & allocate the related arrays
    1600 !
    1601  call get_tf_clm_dim(fin_tf_clm,nyc,nxc)
    1602  allocate( tf_clm0(nxc,nyc),tf_trd0(nxc,nyc),cxlats(nyc),cxlons(nxc) )
    1603 !
    1604 ! get tf_clm at the analysis time from monthly climatology & cxlats, cxlons
    1605 !
    1606  call get_tf_clm_ta(tf_clm0,tf_trd0,cxlats,cxlons,nyc,nxc,mon1,mon2,wei1,wei2)
    1607 !
    1608 ! get tf_clm (nx by ny lat/lon) valid at atime
    1609 !
    1610  if ( nx == nxc .and. ny == nyc ) then
    1611  tf_clm(:,:) = tf_clm0(:,:)
    1612  tf_trd(:,:) = tf_trd0(:,:)
    1613 ! write(*,'(a,2f9.3)') 'same dimensions, tf_clm, min : ',minval(tf_clm),maxval(tf_clm)
    1614  else
    1615 ! write(*,'(a,4i8)') 'different dimensions,nx,ny,nxc,nyc : ',nx,ny,nxc,nyc
    1616  call intp_tile(tf_clm0, cxlats, cxlons, nyc, nxc, &
    1617  tf_clm_ij,xlats_ij,xlons_ij,ny, nx)
    1618  call intp_tile(tf_trd0, cxlats, cxlons, nyc, nxc, &
    1619  tf_trd_ij,xlats_ij,xlons_ij,ny, nx)
    1620 ! write(*,'(a,2f9.3)') 'tf_clm0, min, max : ',minval(tf_clm0),maxval(tf_clm0)
    1621 
    1622  tf_clm(:,:) = reshape(tf_clm_ij, (/nx,ny/) )
    1623  tf_trd(:,:) = reshape(tf_trd_ij, (/nx,ny/) )
    1624  endif
    1625 
    1626 end subroutine get_tf_clm
    1627 
    1642 subroutine get_tf_clm_ta(tf_clm_ta,tf_clm_trend,xlats,xlons,nlat,nlon,mon1,mon2,wei1,wei2)
    1643  use read_write_data, only : read_tf_clim_grb
    1644  implicit none
    1645 
    1646 ! input
    1647  integer, intent(in) :: nlat,nlon,mon1,mon2
    1648  real, intent(in) :: wei1,wei2
    1649 ! output
    1650  real, dimension(nlon,nlat), intent(out) :: tf_clm_ta,tf_clm_trend
    1651  real, dimension(nlat), intent(out) :: xlats
    1652  real, dimension(nlon), intent(out) :: xlons
    1653 
    1654 !input/output data file names
    1655  character (len=6), parameter :: fin_tf_clm='sstclm'
    1656 
    1657 ! local declare
    1658  real, dimension(nlon,nlat) :: tf_clm1,tf_clm2
    1659 
    1660 !
    1661 ! read in rtg sst climatology without bitmap (surface mask) for mon1 and mon2
    1662 !
    1663  call read_tf_clim_grb(trim(fin_tf_clm),tf_clm1,xlats,xlons,nlat,nlon,mon1)
    1664  call read_tf_clim_grb(trim(fin_tf_clm),tf_clm2,xlats,xlons,nlat,nlon,mon2)
    1665 !
    1666 ! tf_clim at the analysis time
    1667 !
    1668  tf_clm_ta(:,:) = wei1*tf_clm1(:,:)+wei2*tf_clm2(:,:)
    1669 !
    1670 ! tf_clim trend at the analysis time (month to month)
    1671 !
    1672  tf_clm_trend(:,:) = (tf_clm2(:,:)-tf_clm1(:,:))/120.0
    1673 
    1674  write(*,'(a,2f9.3)') 'tf_clm_ta, min, max : ',minval(tf_clm_ta),maxval(tf_clm_ta)
    1675  write(*,'(a,2f9.3)') 'tf_clm_trend, min, max : ',minval(tf_clm_trend),maxval(tf_clm_trend)
    1676  end subroutine get_tf_clm_ta
    1677 
    1690 subroutine get_sal_clm(xlats_ij,xlons_ij,ny,nx,iy,im,id,ih,sal_clm)
    1691  use read_write_data, only : get_dim_nc
    1692  implicit none
    1693 
    1694  real, dimension(nx*ny), intent(in) :: xlats_ij !
    1695  real, dimension(nx*ny), intent(in) :: xlons_ij !
    1696  real, dimension(nx,ny), intent(out) :: sal_clm !
    1697  integer, intent(in) :: iy,im,id,ih,nx,ny
    1698 ! local declare
    1699  real, allocatable, dimension(:,:) :: sal_clm0 ! salinity climatology at the valid time
    1700  real, allocatable, dimension(:) :: cxlats ! latitudes of sst climatology
    1701  real, allocatable, dimension(:) :: cxlons ! longitudes of sst climatology
    1702 
    1703  real, dimension(nx*ny) :: sal_clm_ij ! salinity climatology at target grids (nx*ny)
    1704  real :: wei1,wei2
    1705  integer :: nxc,nyc,mon1,mon2,i,j
    1706  character (len=6), parameter :: fin_sal_clm='salclm' ! salinity climatology file name
    1707 !
    1708 ! get which two months used and their weights from atime
    1709 !
    1710  call get_tim_wei(iy,im,id,ih,mon1,mon2,wei1,wei2)
    1711 !
    1712 ! get the dimensions of the sst climatology & allocate the related arrays
    1713 !
    1714  call get_dim_nc(fin_sal_clm,nyc,nxc)
    1715  allocate( sal_clm0(nxc,nyc),cxlats(nyc),cxlons(nxc) )
    1716 !
    1717 ! get sal_clm at the analysis time from monthly climatology & cxlats, cxlons
    1718 !
    1719  call get_sal_clm_ta(sal_clm0,cxlats,cxlons,nyc,nxc,mon1,mon2,wei1,wei2)
    1720 !
    1721 ! get sal_clm (nx by ny lat/lon) valid at atime
    1722 !
    1723  if ( nx == nxc .and. ny == nyc ) then
    1724  sal_clm(:,:) = sal_clm0(:,:)
    1725 ! write(*,'(a,2f9.3)') 'same dimensions, sal_clm, min : ',minval(sal_clm),maxval(sal_clm)
    1726  else
    1727 ! write(*,'(a,4i8)') 'different dimensions,nx,ny,nxc,nyc : ',nx,ny,nxc,nyc
    1728  call intp_tile(sal_clm0, cxlats, cxlons, nyc, nxc, &
    1729  sal_clm_ij,xlats_ij,xlons_ij,ny, nx)
    1730 ! write(*,'(a,2f9.3)') 'sal_clm0, min, max : ',minval(sal_clm0),maxval(sal_clm0)
    1731 ! write(*,'(a,2f9.3)') 'done with intp_tile for sal_clm, min, max : ',minval(sal_clm_ij),maxval(sal_clm_ij)
    1732 
    1733  sal_clm(:,:) = reshape(sal_clm_ij, (/nx,ny/) )
    1734  endif
    1735 
    1736 end subroutine get_sal_clm
    1737 
    1750 subroutine get_sal_clm_ta(sal_clm_ta,xlats,xlons,nlat,nlon,mon1,mon2,wei1,wei2)
    1752  use read_write_data, only : read_salclm_gfs_nc
    1753  implicit none
    1754 
    1755 ! input
    1756  integer, intent(in) :: nlat,nlon,mon1,mon2
    1757  real, intent(in) :: wei1,wei2
    1758 ! output
    1759  real, dimension(nlon,nlat), intent(out) :: sal_clm_ta
    1760  real, dimension(nlat), intent(out) :: xlats
    1761  real, dimension(nlon), intent(out) :: xlons
    1762 
    1763 !input/output data file names
    1764  character (len=6), parameter :: fin_sal_clm='salclm'
    1765 
    1766 ! local declare
    1767  real, dimension(nlon,nlat) :: sal_clm1,sal_clm2
    1768 
    1769 !
    1770 ! read in rtg sst climatology without bitmap (surface mask) for mon1 and mon2
    1771 !
    1772  call read_salclm_gfs_nc(trim(fin_sal_clm),sal_clm1,xlats,xlons,nlat,nlon,mon1)
    1773  call read_salclm_gfs_nc(trim(fin_sal_clm),sal_clm2,xlats,xlons,nlat,nlon,mon2)
    1774 !
    1775 ! sal_clim at the analysis time
    1776 !
    1777  sal_clm_ta(:,:) = wei1*sal_clm1(:,:)+wei2*sal_clm2(:,:)
    1778  write(*,'(a,2f9.3)') 'sal_clm_ta, min, max : ',minval(sal_clm_ta),maxval(sal_clm_ta)
    1779  end subroutine get_sal_clm_ta
    1780 
    1795 subroutine intp_tile(tf_lalo,dlats_lalo,dlons_lalo,jdim_lalo,idim_lalo, &
    1796  tf_tile,xlats_tile,xlons_tile,jdim_tile,idim_tile)
    1798  use utils
    1799 
    1800  implicit none
    1801 
    1802 ! input/output
    1803  real, dimension(idim_lalo,jdim_lalo), intent(in) :: tf_lalo
    1804  real, dimension(jdim_lalo), intent(in) :: dlats_lalo
    1805  real, dimension(idim_lalo), intent(in) :: dlons_lalo
    1806  real, dimension(jdim_tile*idim_tile), intent(in) :: xlats_tile
    1807  real, dimension(jdim_tile*idim_tile), intent(in) :: xlons_tile
    1808  integer, intent(in) :: jdim_lalo,idim_lalo,jdim_tile,idim_tile
    1809  real, dimension(jdim_tile*idim_tile), intent(out) :: tf_tile
    1810 
    1811 ! local
    1812  real, parameter :: deg2rad=3.1415926/180.0
    1813  real, dimension(jdim_lalo) :: xlats_lalo
    1814  real, dimension(idim_lalo) :: xlons_lalo
    1815  real :: tf,wsum,res_km
    1816  integer :: itile,jtile
    1817  integer :: ii,jj,ij,iii,jjj
    1818  integer :: ilalo,jlalo,ilalop1,jlalop1
    1819  integer :: istart,iend,jstart,jend,krad
    1820 
    1821  integer, allocatable, dimension(:,:) :: id1,id2,jdc
    1822  real, allocatable, dimension(:,:,:) :: agrid,s2c
    1823 
    1824  print*
    1825  print*,'interpolate from lat/lon grids to any one grid with known lat/lon'
    1826 
    1827  xlats_lalo = dlats_lalo*deg2rad
    1828  xlons_lalo = dlons_lalo*deg2rad
    1829 
    1830  allocate(agrid(idim_tile,jdim_tile,2))
    1831  agrid(:,:,1) = reshape(xlons_tile, (/idim_tile,jdim_tile/) )
    1832  agrid(:,:,2) = reshape(xlats_tile, (/idim_tile,jdim_tile/) )
    1833  agrid = agrid*deg2rad
    1834 
    1835  allocate(id1(idim_tile,jdim_tile))
    1836  allocate(id2(idim_tile,jdim_tile))
    1837  allocate(jdc(idim_tile,jdim_tile))
    1838  allocate(s2c(idim_tile,jdim_tile,4))
    1839 
    1840 !----------------------------------------------------------------------
    1841 ! compute bilinear weights for each model point from the nearest
    1842 ! four lalo points. does not account for mask. that
    1843 ! happens later.
    1844 !----------------------------------------------------------------------
    1845 
    1846  call remap_coef( 1, idim_tile, 1, jdim_tile, idim_lalo, jdim_lalo, &
    1847  xlons_lalo, xlats_lalo, id1, id2, jdc, s2c, agrid )
    1848 
    1849  do ij = 1, jdim_tile*idim_tile
    1850 
    1851  jtile = (ij-1)/idim_tile + 1
    1852  itile = mod(ij,idim_tile)
    1853  if (itile==0) itile = idim_tile
    1854 
    1855  ilalo = id1(itile,jtile)
    1856  ilalop1 = id2(itile,jtile)
    1857  jlalo = jdc(itile,jtile)
    1858  jlalop1 = jdc(itile,jtile) + 1
    1859 
    1860  wsum = s2c(itile,jtile,1) + s2c(itile,jtile,2) + &
    1861  s2c(itile,jtile,3) + s2c(itile,jtile,4)
    1862 
    1863  tf_tile(ij) = ( s2c(itile,jtile,1)*tf_lalo(ilalo,jlalo) + &
    1864  s2c(itile,jtile,2)*tf_lalo(ilalop1,jlalo) + &
    1865  s2c(itile,jtile,3)*tf_lalo(ilalop1,jlalop1) + &
    1866  s2c(itile,jtile,4)*tf_lalo(ilalo,jlalop1) )/wsum
    1867  enddo
    1868 
    1869  deallocate(id1, id2, jdc, s2c)
    1870 
    1871 end subroutine intp_tile
    1872 
    1885 subroutine get_tim_wei(iy,im,id,ih,mon1,mon2,wei1,wei2)
    1886  implicit none
    1887 
    1888 ! input
    1889  integer, intent(in) :: iy,im,id,ih
    1890 ! output
    1891  integer, intent(out) :: mon1,mon2
    1892  real, intent(out) :: wei1,wei2
    1893 
    1894 ! local declare
    1895  real :: rjday
    1896  integer :: mon,monend,monm,monp,jdow,jdoy,jday
    1897  integer :: jda(8)
    1898 !
    1899 !dayhf : julian day of the middle of each month
    1900 !
    1901  real, dimension(13) :: dayhf
    1902  data dayhf/15.5,45.0,74.5,105.0,135.5,166.0,196.5,227.5,258.0,288.5,319.0,349.5,380.5/
    1903 
    1904 ! 15, 44, 73.5, 104, 134.5, 165, 195.5, 226.5, 257, 287.5, 318.5, 349 ! from
    1905 ! woa05
    1906 
    1907  jda=0
    1908  jda(1)=iy
    1909  jda(2)=im
    1910  jda(3)=id
    1911  jda(5)=ih
    1912  jdow = 0
    1913  jdoy = 0
    1914  jday = 0
    1915  call w3doxdat(jda,jdow,jdoy,jday)
    1916  rjday=jdoy+jda(5)/24.
    1917  if(rjday.lt.dayhf(1)) rjday=rjday+365.
    1918 
    1919  monend = 12
    1920  do mon = 1, monend
    1921  monm = mon
    1922  monp = mon + 1
    1923  if( rjday >= dayhf(monm) .and. rjday < dayhf(monp) ) then
    1924  mon1 = monm
    1925  mon2 = monp
    1926  go to 10
    1927  endif
    1928  enddo
    1929 
    1930  print *,'FATAL ERROR in get_tim_wei, wrong rjday',rjday
    1931  call abort
    1932  10 continue
    1933 
    1934  wei1 = (dayhf(mon2)-rjday)/(dayhf(mon2)-dayhf(mon1))
    1935  wei2 = (rjday-dayhf(mon1))/(dayhf(mon2)-dayhf(mon1))
    1936 
    1937  if( mon2 == 13 ) mon2=1
    1938 
    1939  write(*,'(a,2i4,3f9.3)') 'mon1,mon2,rjday,wei1,wei2=',mon1,mon2,rjday,wei1,wei2
    1940 
    1941  end subroutine get_tim_wei
    1942 
    1952  real function tfreez(salinity)
    1954  implicit none
    1955 
    1956  REAL salinity,sal
    1957  REAL a1, a2, a3
    1958  parameter(a1 = -0.0575)
    1959  parameter(a2 = 1.710523e-3)
    1960  parameter(a3 = -2.154996e-4)
    1961 
    1962  IF (salinity .LT. 0.) THEN
    1963  sal = 0.
    1964  ELSE
    1965  sal = salinity
    1966  ENDIF
    1967  tfreez = sal*(a1+a2*sqrt(sal)+a3*sal)
    1968 
    1969  return
    1970  end
    integer function num_parthds()
    Return the number of omp threads.
    Definition: num_parthds.f90:10
    +
    subroutine get_tf_clm(xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, tf_clm, tf_trd)
    Get the sst climatology at the valid time and on the target grid.
    Definition: cycle.f90:1574
    +
    subroutine get_tf_clm_ta(tf_clm_ta, tf_clm_trend, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)
    Get the reference temperature/sst climatology and its trend at analysis time.
    Definition: cycle.f90:1643
    +
    subroutine get_sal_clm_ta(sal_clm_ta, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)
    Get climatological salinity at the analysis time.
    Definition: cycle.f90:1751
    +
    subroutine tf_thaw_set(tf_ij, mask_ij, itile, jtile, tice, tclm, tf_thaw, nx, ny, nset_thaw_s, nset_thaw_i, nset_thaw_c)
    Set the background reference temperature (tf) for points where the ice has just melted.
    Definition: cycle.f90:1438
    +
    subroutine intp_tile(tf_lalo, dlats_lalo, dlons_lalo, jdim_lalo, idim_lalo, tf_tile, xlats_tile, xlons_tile, jdim_tile, idim_tile)
    Interpolate lon/lat grid data to the fv3 native grid (tf_lalo => tf_tile).
    Definition: cycle.f90:1797
    +
    Module containing utility routines.
    Definition: utils.F90:7
    +
    real function tfreez(salinity)
    Compute the freezing point of water as a function of salinity.
    Definition: cycle.f90:1953
    +
    subroutine get_tim_wei(iy, im, id, ih, mon1, mon2, wei1, wei2)
    For a given date, determine the bounding months and the linear time interpolation weights...
    Definition: cycle.f90:1886
    +
    subroutine get_sal_clm(xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, sal_clm)
    Get salinity climatology at the valid time on the target grid.
    Definition: cycle.f90:1691
    +
    subroutine nsst_water_reset(nsst, ij, tf_thaw)
    If the first guess was sea ice, but the analysis is open water, reset all nsst variables.
    Definition: cycle.f90:1528
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.html b/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.html new file mode 100644 index 000000000..c3bc3a6c1 --- /dev/null +++ b/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.html @@ -0,0 +1,127 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    global_cycle.fd Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  cycle.f90 [code]
     Update surface and NSST fields.
     
    file  land_increments.f90 [code]
     Routines for applyng land DA increments.
     
    file  machine.f90 [code]
     Holds machine dependent constants for global_cycle.
     
    file  num_parthds.f90 [code]
     Return number of threads.
     
    file  read_write_data.f90 [code]
     Contains utility routines that read and write data.
     
    file  utils.F90 [code]
     Utility routines.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.js b/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.js new file mode 100644 index 000000000..aca5e6a52 --- /dev/null +++ b/ver-1.11.0/global_cycle/dir_2639f2b978b79eb67637490d5ddd2bd6.js @@ -0,0 +1,9 @@ +var dir_2639f2b978b79eb67637490d5ddd2bd6 = +[ + [ "cycle.f90", "cycle_8f90.html", "cycle_8f90" ], + [ "land_increments.f90", "land__increments_8f90.html", "land__increments_8f90" ], + [ "machine.f90", "machine_8f90.html", "machine_8f90" ], + [ "num_parthds.f90", "num__parthds_8f90.html", "num__parthds_8f90" ], + [ "read_write_data.f90", "read__write__data_8f90.html", "read__write__data_8f90" ], + [ "utils.F90", "utils_8F90.html", "utils_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..b78b1d93e --- /dev/null +++ b/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..c4249f32c --- /dev/null +++ b/ver-1.11.0/global_cycle/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "global_cycle.fd", "dir_2639f2b978b79eb67637490d5ddd2bd6.html", "dir_2639f2b978b79eb67637490d5ddd2bd6" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/doc.png b/ver-1.11.0/global_cycle/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/doxygen.css b/ver-1.11.0/global_cycle/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/global_cycle/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/global_cycle/doxygen.png b/ver-1.11.0/global_cycle/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/dynsections.js b/ver-1.11.0/global_cycle/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/global_cycle/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +global_cycle: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + +
      sorc
      global_cycle.fd
     cycle.f90Update surface and NSST fields
     land_increments.f90Routines for applyng land DA increments
     machine.f90Holds machine dependent constants for global_cycle
     num_parthds.f90Return number of threads
     read_write_data.f90Contains utility routines that read and write data
     utils.F90Utility routines
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/files_dup.js b/ver-1.11.0/global_cycle/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/global_cycle/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/ver-1.11.0/global_cycle/folderclosed.png b/ver-1.11.0/global_cycle/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/global__cycle_8md_source.html b/ver-1.11.0/global_cycle/global__cycle_8md_source.html new file mode 100644 index 000000000..5a246637f --- /dev/null +++ b/ver-1.11.0/global_cycle/global__cycle_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/docs/global_cycle.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/docs/global_cycle.md
    +
    +
    +
    1 
    2 # global_cycle
    3 
    4 # Introduction
    5 
    6 The program cycle.f90 updates the GFS surface conditions using
    7 external snow and sea ice analyses. It updates monthly climatological
    8 fields such as plant greenness fraction and albedo. It runs as part of
    9 the GFS and GDAS cycles.
    10 
    11 This document is part of the <a href="../index.html">UFS_UTILS
    12 documentation</a>.
    13 
    14 The global_cycle program is part of the
    15 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/globals.html b/ver-1.11.0/global_cycle/globals.html new file mode 100644 index 000000000..1281324b6 --- /dev/null +++ b/ver-1.11.0/global_cycle/globals.html @@ -0,0 +1,147 @@ + + + + + + + +global_cycle: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/globals_func.html b/ver-1.11.0/global_cycle/globals_func.html new file mode 100644 index 000000000..459ddc236 --- /dev/null +++ b/ver-1.11.0/global_cycle/globals_func.html @@ -0,0 +1,147 @@ + + + + + + + +global_cycle: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/index.html b/ver-1.11.0/global_cycle/index.html new file mode 100644 index 000000000..44893aa3d --- /dev/null +++ b/ver-1.11.0/global_cycle/index.html @@ -0,0 +1,109 @@ + + + + + + + +global_cycle: global_cycle + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    global_cycle
    +
    +
    +

    +Introduction

    +

    The program cycle.f90 updates the GFS surface conditions using external snow and sea ice analyses. It updates monthly climatological fields such as plant greenness fraction and albedo. It runs as part of the GFS and GDAS cycles.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The global_cycle program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/jquery.js b/ver-1.11.0/global_cycle/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/global_cycle/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    land_increments.f90 File Reference
    +
    +
    + +

    Routines for applyng land DA increments. +More...

    + +

    Go to the source code of this file.

    +
    + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public land_increments::add_increment_snow (snd_inc, mask, lensfc, snd)
     Add snow depth increment to model snow depth state, and limit output to be non-negative. More...
     
    subroutine, public land_increments::add_increment_soil (rla, rlo, stc_state, smc_state, slc_state, stc_updated, slc_updated, soilsnow_tile, soilsnow_fg_tile, lensfc, lsoil, idim, jdim, lsm, myrank)
     Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and add to the soil states. More...
     
    subroutine, public land_increments::apply_land_da_adjustments_snd (lsm, lensfc, mask, swe_bck, snd_bck, snd_anl, swe_adj)
     Make adjustments to dependent variables after applying land increments. More...
     
    subroutine, public land_increments::apply_land_da_adjustments_soil (lsm, isot, ivegsrc, lensfc, lsoil, rsoiltype, mask, stc_bck, stc_adj, smc_adj, slc_adj, stc_updated, slc_updated, zsoil)
     Make adjustments to dependent variables after applying land increments. More...
     
    subroutine, public land_increments::calculate_landinc_mask (smc, swe, vtype, lensfc, veg_type_landice, mask)
     Calculate soil mask for land on model grid. More...
     
    + + + + + + + + + + + + + +

    +Variables

    integer, parameter, public land_increments::lsm_noah =1
     flag for NOAH land surface model More...
     
    integer, parameter, public land_increments::lsm_noahmp =2
     flag for NOAHMP land surface model copied from GFS_typedefs.F90 More...
     
    integer, parameter land_increments::lsoil_incr =3
     number of layers to add incrments to More...
     
    real, parameter land_increments::tfreez =273.16
     con_t0c in physcons More...
     
    +

    Detailed Description

    +

    Routines for applyng land DA increments.

    +
    Author
    Clara Draper ESRL/PSL
    + +

    Definition in file land_increments.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ add_increment_snow()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public land_increments::add_increment_snow (real, dimension(lensfc), intent(in) snd_inc,
    integer, dimension(lensfc), intent(in) mask,
    integer, intent(in) lensfc,
    real, dimension(lensfc), intent(inout) snd 
    )
    +
    + +

    Add snow depth increment to model snow depth state, and limit output to be non-negative.

    +

    JEDI increments are calculated globally, so must be screened to land-only locations here.

    +
    Parameters
    + + + + + +
    [in]lensfcNumber of land points on this tile
    [in]snd_incSoil depth increments
    [in]maskLand mask for increments
    [in,out]sndSoil depth background (in), and analysis (out)
    +
    +
    +
    Author
    Clara Draper.
    +
    Date
    August 2021
    + +

    Definition at line 379 of file land_increments.f90.

    + +
    +
    + +

    ◆ add_increment_soil()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public land_increments::add_increment_soil (real, dimension(lensfc), intent(inout) rla,
    real, dimension(lensfc), intent(inout) rlo,
    real, dimension(lensfc, lsoil), intent(inout) stc_state,
    real, dimension(lensfc, lsoil), intent(inout) smc_state,
    real, dimension(lensfc, lsoil), intent(inout) slc_state,
    integer, dimension(lensfc), intent(out) stc_updated,
    integer, dimension(lensfc), intent(out) slc_updated,
    integer, dimension(lensfc), intent(in) soilsnow_tile,
    integer, dimension(lensfc), intent(in) soilsnow_fg_tile,
    integer, intent(in) lensfc,
    integer, intent(in) lsoil,
    integer, intent(in) idim,
    integer, intent(in) jdim,
    integer, intent(in) lsm,
    integer, intent(in) myrank 
    )
    +
    + +

    Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and add to the soil states.

    +

    Adapted from adjust_nsst. Currently only coded for soil temperature. Soil moisture will need the model soil moisture paramaters for regridding.

    +

    Does not make a temperature update if snow differ between fg and anal (allow correction of snow to address temperature error first), or if snow is present (will eventually updating of snow temperature in this case)

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in,out]RLALatitude on the cubed-sphere tile
    [in,out]RLOLongitude on the cubed-sphere tile
    [in,out]STC_STATESoil temperature state vector
    [in,out]SMC_STATESoil moisture (liquid plus solid) state vector
    [in,out]SLC_STATELiquid soil moisture state vector
    [out]stc_updatedInteger to record whether STC in each grid cell was updated
    [out]slc_updatedInteger to record whether SMC in each grid cell was updated
    [in]SOILSNOW_TILELand mask for increments on the cubed-sphere tile
    [in]SOILSNOW_FG_TILEFirst guess land mask for increments on the cubed-sphere tile
    [in]LENSFCNumber of land points on a tile
    [in]LSOILNumber of soil layers
    [in]IDIM'I' dimension of a tile
    [in]JDIM'J' dimension of a tile
    [in]lsmInteger flag indicating which land model is used (1-Noah, 2-Noah-MP)
    [in]MYRANKMPI rank number
    +
    +
    +
    Author
    Clara Draper.
    +
    Date
    March 2021
    + +

    Definition at line 57 of file land_increments.f90.

    + +
    +
    + +

    ◆ apply_land_da_adjustments_snd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public land_increments::apply_land_da_adjustments_snd (integer, intent(in) lsm,
    integer, intent(in) lensfc,
    integer, dimension(lensfc), intent(in) mask,
    real, dimension(lensfc), intent(in) swe_bck,
    real, dimension(lensfc), intent(in) snd_bck,
    real, dimension(lensfc), intent(in) snd_anl,
    real, dimension(lensfc), intent(inout) swe_adj 
    )
    +
    + +

    Make adjustments to dependent variables after applying land increments.

    +

    These adjustments are model-dependent, and are currently only coded for Noah LSM. Here: adjust SWE to be consistent with updated SND, using snow density from the forecast.

    Parameters
    + + + + + + + + +
    [in]lsmInteger code for the LSM
    [in]lensfcNumber of land points for this tile
    [in]maskLand mask for increments
    [in]swe_bckBackground SWE
    [in]snd_bckBackground snow depth
    [in]snd_anlAnalysis snow depth
    [in,out]swe_adjSWE to be adjusted
    +
    +
    +
    Author
    Clara Draper
    +
    Date
    August 2021
    + +

    Definition at line 627 of file land_increments.f90.

    + +
    +
    + +

    ◆ apply_land_da_adjustments_soil()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public land_increments::apply_land_da_adjustments_soil (integer, intent(in) lsm,
    integer, intent(in) isot,
    integer, intent(in) ivegsrc,
    integer, intent(in) lensfc,
    integer, intent(in) lsoil,
    real, dimension(lensfc), intent(in) rsoiltype,
    integer, dimension(lensfc), intent(in) mask,
    real, dimension(lensfc, lsoil), intent(in) stc_bck,
    real, dimension(lensfc, lsoil), intent(inout) stc_adj,
    real, dimension(lensfc,lsoil), intent(inout) smc_adj,
    real, dimension(lensfc,lsoil), intent(inout) slc_adj,
    integer, dimension(lensfc), intent(in) stc_updated,
    integer, dimension(lensfc), intent(in) slc_updated,
    real(kind=4), dimension(lsoil), intent(in) zsoil 
    )
    +
    + +

    Make adjustments to dependent variables after applying land increments.

    +

    These adjustments are model-dependent, and are currently only coded if full for Noah LSM. For Noah LSM, copy relevent code blocks from model code (same as has been done in sfc_sub). For Noah-MP, have inserted place-holders to simply reset the model
    + variables back to the analysis if adjustments are needed. Later, will replace this with appropriate adjustmenets (in summary, for now we do not make STC updates if soils are frozen, and are also not applying the appropriate max. values for SMC). Here: adjust (frozen) soil moisture to be consistent with changes in soil temperature from DA

    Parameters
    + + + + + + + + + + + + + + + +
    [in]lsmInteger code for the LSM
    [in]isotInteger code for the soil type data set
    [in]ivegsrcInteger code for the vegetation type data set
    [in]lensfcNumber of land points for this tile
    [in]lsoilNumber of soil layers
    [in]rsoiltypeArray of input soil types
    [in]maskMask indicating surface type
    [in]stc_bckBackground soil temperature states
    [in]stc_adjAnalysis soil temperature states
    [in,out]smc_adjAnalysis soil moisture states
    [in,out]slc_adjAnalysis liquid soil moisture states
    [in]stc_updatedInteger to record whether STC in each grid cell was updated
    [in]slc_updatedInteger to record whether SLC in each grid cell was updated
    [in]zsoilDepth of bottom of each soil layer
    +
    +
    +
    Author
    Clara Draper
    +
    Date
    April 2021
    + +

    Definition at line 468 of file land_increments.f90.

    + +
    +
    + +

    ◆ calculate_landinc_mask()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public land_increments::calculate_landinc_mask (real, dimension(lensfc), intent(in) smc,
    real, dimension(lensfc), intent(in) swe,
    real, dimension(lensfc), intent(in) vtype,
    integer, intent(in) lensfc,
    integer, intent(in) veg_type_landice,
    integer, dimension(lensfc), intent(out) mask 
    )
    +
    + +

    Calculate soil mask for land on model grid.

    +

    Output is 1 - soil, 2 - snow-covered, 0 - land ice, -1 not land.

    +
    Parameters
    + + + + + + + +
    [in]lensfcNumber of land points for this tile
    [in]veg_type_landiceValue of vegetion class that indicates land-ice
    [in]smcModel soil moisture.
    [in]sweModel snow water equivalent
    [in]vtypeModel vegetation type
    [out]maskLand mask for increments
    +
    +
    +
    Author
    Clara Draper
    +
    Date
    March 2021
    + +

    Definition at line 409 of file land_increments.f90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ lsm_noah

    + +
    +
    + + + + +
    integer, parameter, public land_increments::lsm_noah =1
    +
    + +

    flag for NOAH land surface model

    + +

    Definition at line 16 of file land_increments.f90.

    + +
    +
    + +

    ◆ lsm_noahmp

    + +
    +
    + + + + +
    integer, parameter, public land_increments::lsm_noahmp =2
    +
    + +

    flag for NOAHMP land surface model copied from GFS_typedefs.F90

    + +

    Definition at line 17 of file land_increments.f90.

    + +
    +
    + +

    ◆ lsoil_incr

    + +
    +
    + + + + + +
    + + + + +
    integer, parameter land_increments::lsoil_incr =3
    +
    +private
    +
    + +

    number of layers to add incrments to

    + +

    Definition at line 21 of file land_increments.f90.

    + +
    +
    + +

    ◆ tfreez

    + +
    +
    + + + + + +
    + + + + +
    real, parameter land_increments::tfreez =273.16
    +
    +private
    +
    + +

    con_t0c in physcons

    + +

    Definition at line 23 of file land_increments.f90.

    + +
    +
    + + + + + + diff --git a/ver-1.11.0/global_cycle/land__increments_8f90.js b/ver-1.11.0/global_cycle/land__increments_8f90.js new file mode 100644 index 000000000..418230ee7 --- /dev/null +++ b/ver-1.11.0/global_cycle/land__increments_8f90.js @@ -0,0 +1,12 @@ +var land__increments_8f90 = +[ + [ "add_increment_snow", "land__increments_8f90.html#ae260c4c211018b060db3dfb15fdf74d6", null ], + [ "add_increment_soil", "land__increments_8f90.html#a425ded6741ffff2a673035ac541c8c89", null ], + [ "apply_land_da_adjustments_snd", "land__increments_8f90.html#a46cacafd29fb14ec2945614634e35478", null ], + [ "apply_land_da_adjustments_soil", "land__increments_8f90.html#a0eb9fa735a3dd4b7757eec092da0317e", null ], + [ "calculate_landinc_mask", "land__increments_8f90.html#af965fc620e3a6d871e762d0adc67f386", null ], + [ "lsm_noah", "land__increments_8f90.html#ad0e0ffe4348e56494575f7f004452868", null ], + [ "lsm_noahmp", "land__increments_8f90.html#a3f83b45e15f8b52c19a9fb3ea1835009", null ], + [ "lsoil_incr", "land__increments_8f90.html#a45e8f8152a7d38fc49808987a86e8cd1", null ], + [ "tfreez", "land__increments_8f90.html#a942fd8279c4a90e040fa084be0f92d1f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/land__increments_8f90_source.html b/ver-1.11.0/global_cycle/land__increments_8f90_source.html new file mode 100644 index 000000000..f697903e6 --- /dev/null +++ b/ver-1.11.0/global_cycle/land__increments_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/land_increments.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    land_increments.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    5 module land_increments
    6 
    7  private
    8 
    9  public add_increment_soil
    10  public add_increment_snow
    11  public calculate_landinc_mask
    12  public apply_land_da_adjustments_soil
    13  public apply_land_da_adjustments_snd
    14  public lsm_noah, lsm_noahmp
    15 
    16  integer, parameter :: lsm_noah=1
    17  integer, parameter :: lsm_noahmp=2
    19 
    20  ! control state for soil analysis:
    21  integer, parameter :: lsoil_incr=3
    22 
    23  real, parameter :: tfreez=273.16
    24 contains
    25 
    54 
    55 subroutine add_increment_soil(rla,rlo,stc_state,smc_state,slc_state,stc_updated, slc_updated, &
    56  soilsnow_tile,soilsnow_fg_tile,lensfc,lsoil,idim,jdim,lsm, myrank)
    57 
    58  use utils
    59  use gdswzd_mod
    60  use read_write_data, only : idim_gaus, jdim_gaus, &
    61  stc_inc_gaus, soilsnow_gaus, slc_inc_gaus
    62  use mpi
    63 
    64  implicit none
    65 
    66  integer, intent(in) :: lensfc, lsoil, idim, jdim, myrank, lsm
    67 
    68  integer, intent(in) :: soilsnow_tile(lensfc), soilsnow_fg_tile(lensfc)
    69  real, intent(inout) :: rla(lensfc), rlo(lensfc)
    70  real, intent(inout) :: stc_state(lensfc, lsoil)
    71  real, intent(inout) :: slc_state(lensfc, lsoil)
    72  real, intent(inout) :: smc_state(lensfc, lsoil)
    73  integer, intent(out) :: stc_updated(lensfc), slc_updated(lensfc)
    74 
    75  integer :: iopt, nret, kgds_gaus(200)
    76  integer :: igaus, jgaus, ij
    77  integer :: mask_tile, mask_fg_tile
    78  integer :: itile, jtile
    79  integer :: j, ierr
    80  integer :: igausp1, jgausp1
    81  logical :: upd_slc, upd_stc
    82  real :: fill
    83 
    84  integer, allocatable :: id1(:,:), id2(:,:), jdc(:,:)
    85 
    86  real :: wsum
    87  real :: stc_inc(lsoil)
    88  real :: slc_inc(lsoil)
    89  real, allocatable :: xpts(:), ypts(:), lats(:), lons(:)
    90  real, allocatable :: dum2d(:,:), lats_rad(:), lons_rad(:)
    91  real, allocatable :: agrid(:,:,:), s2c(:,:,:)
    92 
    93  integer :: k, nother, nsnowupd, nnosoilnear
    94  integer :: nstcupd, nslcupd, nfrozen, nfrozen_upd
    95  logical :: gaus_has_soil, soil_freeze, soil_ice
    96 
    97  stc_updated=0
    98  slc_updated=0
    99  ! this produces the same lat/lon as can be read in from the file
    100 
    101  kgds_gaus = 0
    102  kgds_gaus(1) = 4 ! oct 6 - type of grid (gaussian)
    103  kgds_gaus(2) = idim_gaus ! oct 7-8 - # pts on latitude circle
    104  kgds_gaus(3) = jdim_gaus
    105  kgds_gaus(4) = 90000 ! oct 11-13 - lat of origin
    106  kgds_gaus(5) = 0 ! oct 14-16 - lon of origin
    107  kgds_gaus(6) = 128 ! oct 17 - resolution flag
    108  kgds_gaus(7) = -90000 ! oct 18-20 - lat of extreme point
    109  kgds_gaus(8) = nint(-360000./float(idim_gaus)) ! oct 21-23 - lon of extreme point
    110  kgds_gaus(9) = nint((360.0 / float(idim_gaus))*1000.0)
    111  ! oct 24-25 - longitude direction incr.
    112  kgds_gaus(10) = jdim_gaus/2 ! oct 26-27 - number of circles pole to equator
    113  kgds_gaus(12) = 255 ! oct 29 - reserved
    114  kgds_gaus(20) = 255 ! oct 5 - not used, set to 255
    115 
    116 
    117  if (lsm==lsm_noah) then
    118  upd_stc=.true.
    119  upd_slc=.false. ! not coded
    120  elseif (lsm==lsm_noahmp) then
    121  upd_stc=.true.
    122  upd_slc=.true.
    123  endif
    124 
    125  print*
    126  print*,'adjust soil using gsi increments on gaussian grid'
    127  print*,'updating soil temps', upd_stc
    128  print*,'updating soil moisture', upd_slc
    129  print*,'adjusting first ', lsoil_incr, ' surface layers only'
    130 
    131  !----------------------------------------------------------------------
    132  ! call gdswzd to compute the lat/lon of each gsi gaussian grid point.
    133  !----------------------------------------------------------------------
    134 
    135  iopt = 0
    136  fill = -9999.
    137  allocate(xpts(idim_gaus*jdim_gaus))
    138  allocate(ypts(idim_gaus*jdim_gaus))
    139  allocate(lats(idim_gaus*jdim_gaus))
    140  allocate(lons(idim_gaus*jdim_gaus))
    141  xpts = fill
    142  ypts = fill
    143  lats = fill
    144  lons = fill
    145 
    146  call gdswzd(kgds_gaus,iopt,(idim_gaus*jdim_gaus),fill,xpts,ypts,lons,lats,nret)
    147 
    148  if (nret /= (idim_gaus*jdim_gaus)) then
    149  print*,'fatal error: problem in gdswzd. stop.'
    150  call mpi_abort(mpi_comm_world, 12, ierr)
    151  endif
    152 
    153  deallocate (xpts, ypts)
    154 
    155  allocate(dum2d(idim_gaus,jdim_gaus))
    156  dum2d = reshape(lats, (/idim_gaus,jdim_gaus/) )
    157  deallocate(lats)
    158 
    159  allocate(lats_rad(jdim_gaus))
    160 
    161  do j = 1, jdim_gaus
    162  lats_rad(j) = dum2d(1,jdim_gaus-j+1) * 3.1415926 / 180.0
    163  enddo
    164 
    165  dum2d = reshape(lons, (/idim_gaus,jdim_gaus/) )
    166  deallocate(lons)
    167  allocate(lons_rad(idim_gaus))
    168  lons_rad = dum2d(:,1) * 3.1415926 / 180.0
    169 
    170  deallocate(dum2d)
    171 
    172  allocate(agrid(idim,jdim,2))
    173  agrid(:,:,1) = reshape(rlo, (/idim,jdim/) )
    174  agrid(:,:,2) = reshape(rla, (/idim,jdim/) )
    175  agrid = agrid * 3.1415926 / 180.0
    176 
    177  allocate(id1(idim,jdim))
    178  allocate(id2(idim,jdim))
    179  allocate(jdc(idim,jdim))
    180  allocate(s2c(idim,jdim,4))
    181 
    182  !----------------------------------------------------------------------
    183  ! compute bilinear weights for each model point from the nearest
    184  ! four gsi/gaussian points. does not account for mask. that
    185  ! happens later.
    186  !----------------------------------------------------------------------
    187 
    188  call remap_coef( 1, idim, 1, jdim, idim_gaus, jdim_gaus, &
    189  lons_rad, lats_rad, id1, id2, jdc, s2c, agrid )
    190 
    191  deallocate(lons_rad, lats_rad, agrid)
    192  !
    193  ! initialize variables for counts statitics to be zeros
    194  !
    195 
    196  !
    197  nother = 0 ! grid cells not land
    198  nsnowupd = 0 ! grid cells with snow (temperature not yet updated)
    199  nnosoilnear = 0 ! grid cells where model has soil, but 4 closest gaus grids don't
    200  ! (no update made here)
    201  nslcupd = 0 ! grid cells that are updated
    202  nstcupd = 0 ! grid cells that are updated
    203  nfrozen = 0 ! not update as frozen soil
    204  nfrozen_upd = 0 ! not update as frozen soil
    205 
    206 
    207  ij_loop : do ij = 1, lensfc
    208 
    209  mask_tile = soilsnow_tile(ij)
    210  mask_fg_tile = soilsnow_fg_tile(ij)
    211 
    212  !----------------------------------------------------------------------
    213  ! mask: 1 - soil, 2 - snow, 0 - land-ice, -1 - not land
    214  !----------------------------------------------------------------------
    215 
    216  if (mask_tile <= 0) then ! skip if neither soil nor snow
    217  nother = nother + 1
    218  cycle ij_loop
    219  endif
    220 
    221 
    222  ! get i,j index on array of (idim,jdim) from known ij
    223 
    224  jtile = (ij-1) / idim + 1
    225  itile = mod(ij,idim)
    226  if (itile==0) itile = idim
    227 
    228  !----------------------------------------------------------------------
    229  ! if snow is present before or after snow update, skip soil analysis
    230  !----------------------------------------------------------------------
    231 
    232  if (mask_fg_tile == 2 .or. mask_tile == 2) then
    233  nsnowupd = nsnowupd + 1
    234  cycle ij_loop
    235  endif
    236 
    237  !----------------------------------------------------------------------
    238  ! do update to soil temperature grid cells, using bilinear interp
    239  !----------------------------------------------------------------------
    240 
    241  if (mask_tile == 1) then
    242  ! these are the four nearest grid cells on the gaus grid
    243  igaus = id1(itile,jtile)
    244  jgaus = jdc(itile,jtile)
    245  igausp1 = id2(itile,jtile)
    246  jgausp1 = jdc(itile,jtile)+1
    247 
    248  ! make sure gaus grid has soil nearby
    249  gaus_has_soil = .false.
    250  if (soilsnow_gaus(igaus,jgaus) == 1 .or. &
    251  soilsnow_gaus(igausp1,jgaus) == 1 .or. &
    252  soilsnow_gaus(igausp1,jgausp1) == 1 .or. &
    253  soilsnow_gaus(igaus,jgausp1) == 1) gaus_has_soil = .true.
    254 
    255  if (.not. gaus_has_soil) then
    256  nnosoilnear = nnosoilnear + 1
    257  cycle ij_loop
    258  endif
    259 
    260  stc_inc = 0.0
    261  slc_inc = 0.0
    262  wsum = 0.0
    263 
    264  if (soilsnow_gaus(igaus,jgaus) == 1) then
    265  do k = 1, lsoil_incr
    266  if (upd_stc) &
    267  stc_inc(k) = stc_inc(k) + (s2c(itile,jtile,1) * stc_inc_gaus(k,igaus,jgaus))
    268  if (upd_slc) &
    269  slc_inc(k) = slc_inc(k) + (s2c(itile,jtile,1) * slc_inc_gaus(k,igaus,jgaus))
    270  enddo
    271  wsum = wsum + s2c(itile,jtile,1)
    272  endif
    273 
    274  if (soilsnow_gaus(igausp1,jgaus) == 1) then
    275  do k = 1, lsoil_incr
    276  if (upd_stc) &
    277  stc_inc(k) = stc_inc(k) + (s2c(itile,jtile,2) * stc_inc_gaus(k,igausp1,jgaus))
    278  if (upd_slc) &
    279  slc_inc(k) = slc_inc(k) + (s2c(itile,jtile,2) * slc_inc_gaus(k,igausp1,jgaus))
    280  enddo
    281  wsum = wsum + s2c(itile,jtile,2)
    282  endif
    283 
    284  if (soilsnow_gaus(igausp1,jgausp1) == 1) then
    285  do k = 1, lsoil_incr
    286  if (upd_stc) &
    287  stc_inc(k) = stc_inc(k) + (s2c(itile,jtile,3) * stc_inc_gaus(k,igausp1,jgausp1))
    288  if (upd_slc) &
    289  slc_inc(k) = slc_inc(k) + (s2c(itile,jtile,3) * slc_inc_gaus(k,igausp1,jgausp1))
    290  enddo
    291  wsum = wsum + s2c(itile,jtile,3)
    292  endif
    293 
    294  if (soilsnow_gaus(igaus,jgausp1) == 1) then
    295  do k = 1, lsoil_incr
    296  if (upd_stc) &
    297  stc_inc(k) = stc_inc(k) + (s2c(itile,jtile,4) * stc_inc_gaus(k,igaus,jgausp1))
    298  if (upd_slc) &
    299  slc_inc(k) = slc_inc(k) + (s2c(itile,jtile,4) * slc_inc_gaus(k,igaus,jgausp1))
    300  enddo
    301  wsum = wsum + s2c(itile,jtile,4)
    302  endif
    303 
    304  ! normalize increments
    305  do k = 1, lsoil_incr
    306  stc_inc(k) = stc_inc(k) / wsum
    307  slc_inc(k) = slc_inc(k) / wsum
    308  enddo
    309  !----------------------------------------------------------------------
    310  ! add the interpolated increment to the background
    311  !----------------------------------------------------------------------
    312 
    313  soil_freeze=.false.
    314  soil_ice=.false.
    315  do k = 1, lsoil_incr
    316 
    317  if ( stc_state(ij,k) < tfreez) soil_freeze=.true.
    318  if ( smc_state(ij,k) - slc_state(ij,k) > 0.001 ) soil_ice=.true.
    319 
    320  if (upd_stc) then
    321  stc_state(ij,k) = stc_state(ij,k) + stc_inc(k)
    322  if (k==1) then
    323  stc_updated(ij) = 1
    324  nstcupd = nstcupd + 1
    325  endif
    326  endif
    327 
    328  if ( (stc_state(ij,k) < tfreez) .and. (.not. soil_freeze) .and. (k==1) ) &
    329  nfrozen_upd = nfrozen_upd + 1
    330 
    331  ! do not do updates if this layer or any above is frozen
    332  if ( (.not. soil_freeze ) .and. (.not. soil_ice ) ) then
    333  if (upd_slc) then
    334  if (k==1) then
    335  nslcupd = nslcupd + 1
    336  slc_updated(ij) = 1
    337  endif
    338  ! apply zero limit here (higher, model-specific limits are later)
    339  slc_state(ij,k) = max(slc_state(ij,k) + slc_inc(k), 0.0)
    340  smc_state(ij,k) = max(smc_state(ij,k) + slc_inc(k), 0.0)
    341  endif
    342  else
    343  if (k==1) nfrozen = nfrozen+1
    344  endif
    345 
    346  enddo
    347 
    348  endif ! if soil/snow point
    349 
    350  enddo ij_loop
    351 
    352  write(*,'(a,i2)') 'statistics of grids number processed for rank : ', myrank
    353  write(*,'(a,i8)') ' soil grid total', lensfc
    354  write(*,'(a,i8)') ' soil grid cells slc updated = ',nslcupd
    355  write(*,'(a,i8)') ' soil grid cells stc updated = ',nstcupd
    356  write(*,'(a,i8)') ' soil grid cells not updated, frozen = ',nfrozen
    357  write(*,'(a,i8)') ' soil grid cells update, became frozen = ',nfrozen_upd
    358  write(*,'(a,i8)') ' (not updated) soil grid cells, no soil nearby on gsi grid = ',nnosoilnear
    359  write(*,'(a,i8)') ' (not updated yet) snow grid cells = ', nsnowupd
    360  write(*,'(a,i8)') ' grid cells, without soil or snow = ', nother
    361 
    362  deallocate(id1, id2, jdc, s2c)
    363 
    364 end subroutine add_increment_soil
    365 
    377 
    378 subroutine add_increment_snow(snd_inc,mask,lensfc,snd)
    380  implicit none
    381 
    382  integer, intent(in) :: lensfc
    383  real, intent(in) :: snd_inc(lensfc)
    384  integer, intent(in) :: mask(lensfc)
    385  real, intent(inout) :: snd(lensfc)
    386 
    387  integer :: i
    388 
    389 
    390  do i =1, lensfc
    391  if (mask(i) > 0) then ! if land
    392  snd(i) = max( snd(i) + snd_inc(i), 0.)
    393  endif
    394  enddo
    395 
    396 end subroutine add_increment_snow
    397 
    408 subroutine calculate_landinc_mask(smc,swe,vtype,lensfc,veg_type_landice,mask)
    409 
    410  implicit none
    411 
    412  integer, intent(in) :: lensfc, veg_type_landice
    413  real, intent(in) :: smc(lensfc), swe(lensfc)
    414  real, intent(in) :: vtype(lensfc)
    415  integer, intent(out) :: mask(lensfc)
    416 
    417  integer :: i
    418 
    419  mask = -1 ! not land
    420 
    421  ! land (but not land-ice)
    422  do i=1,lensfc
    423  if (smc(i) .LT. 0.99) then
    424  if (swe(i) .GT. 0.001) then ! snow covered land
    425  mask(i) = 2
    426  else ! non-snow covered land
    427  mask(i) = 1
    428  endif
    429  end if ! else should work here too
    430  if ( nint(vtype(i)) == veg_type_landice ) then ! land-ice
    431  mask(i) = 0
    432  endif
    433  end do
    434 
    435 end subroutine calculate_landinc_mask
    436 
    464 
    465 subroutine apply_land_da_adjustments_soil(lsm, isot, ivegsrc,lensfc, &
    466  lsoil, rsoiltype, mask, stc_bck, stc_adj, smc_adj, slc_adj, &
    467  stc_updated, slc_updated, zsoil)
    469  use mpi
    470  use set_soilveg_snippet_mod, only: set_soilveg
    471  use sflx_snippet, only: frh2o
    472 
    473  implicit none
    474 
    475  integer, intent(in) :: lsm, lensfc, lsoil, isot, ivegsrc
    476  real, intent(in) :: rsoiltype(lensfc) ! soil types, as real
    477  integer, intent(in) :: mask(lensfc)
    478  real, intent(in) :: stc_bck(lensfc, lsoil)
    479  integer, intent(in) :: stc_updated(lensfc), slc_updated(lensfc)
    480  real, intent(inout) :: smc_adj(lensfc,lsoil), slc_adj(lensfc,lsoil)
    481  real, intent(inout) :: stc_adj(lensfc, lsoil)
    482  real(kind=4), intent(in) :: zsoil(lsoil)
    483 
    484 
    485  logical :: frzn_bck, frzn_anl
    486  logical :: soil_freeze, soil_ice
    487 
    488  integer :: i, l, n_freeze, n_thaw, ierr, n_revert
    489  integer :: myrank, soiltype, iret, n_stc, n_slc
    490  logical :: upd_slc, upd_stc
    491 
    492  real :: slc_new
    493 
    494  real, parameter :: tfreez=273.16
    495  real, dimension(30) :: maxsmc, bb, satpsi
    496  real, dimension(4) :: dz ! layer thickness
    497 
    498  call mpi_comm_rank(mpi_comm_world, myrank, ierr)
    499 
    500  if (lsm==lsm_noah) then
    501  upd_stc=.true.
    502  upd_slc=.false.
    503  elseif (lsm==lsm_noahmp) then
    504  upd_stc=.true.
    505  upd_slc=.true.
    506  endif
    507 
    508  select case (lsm )
    509  case(lsm_noah)
    510  ! initialise soil properties
    511  call set_soilveg(isot, ivegsrc, maxsmc, bb, satpsi, iret)
    512  if (iret < 0) then
    513  print *, 'FATAL ERROR: problem in set_soilveg'
    514  call mpi_abort(mpi_comm_world, 10, ierr)
    515  endif
    516 
    517  print *, 'Adjusting noah model smc after stc DA update'
    518 
    519  n_freeze = 0
    520  n_thaw = 0
    521 
    522  do i=1,lensfc
    523  if (mask(i) > 0) then ! if soil location
    524  do l = 1, lsoil
    525  frzn_bck = (stc_bck(i,l) .LT. tfreez )
    526  frzn_anl = (stc_adj(i,l) .LT. tfreez )
    527 
    528  if (frzn_bck .eqv. frzn_anl) then
    529  cycle
    530  elseif (frzn_bck .and. .not. frzn_anl) then
    531  n_thaw = n_thaw + 1
    532  else
    533  n_freeze = n_freeze + 1
    534  endif
    535 
    536  ! make adjustment (same routine for both)
    537  soiltype = nint(rsoiltype(i))
    538  ! bb and maxsmc are in the namelist_soilveg, need soiltype index
    539  call frh2o(stc_adj(i,l), smc_adj(i,l),slc_adj(i,l), maxsmc(soiltype), &
    540  bb(soiltype), satpsi(soiltype),slc_new)
    541 
    542  slc_adj(i,l) = max( min( slc_new, smc_adj(i,l)), 0.0 )
    543  enddo
    544  endif
    545  enddo
    546  print *, 'adjusted: ', n_thaw,' thawed,', n_freeze, ' frozen'
    547 
    548  case (lsm_noahmp)
    549 
    550  if (upd_stc) then
    551 
    552  print *, 'Reverting frozen noah-mp model stc back to background'
    553  n_revert=0
    554  n_stc = 0
    555  n_slc = 0
    556 
    557  do i=1,lensfc
    558  if (stc_updated(i) == 1 ) then
    559  n_stc = n_stc+1
    560  ! remove soil temperature increments if frozen
    561  soil_freeze=.false.
    562  soil_ice=.false.
    563  do l = 1, lsoil_incr
    564  if ( min(stc_bck(i,l),stc_adj(i,l)) < tfreez) soil_freeze=.true.
    565  if ( smc_adj(i,l) - slc_adj(i,l) > 0.001 ) soil_ice=.true.
    566  if ( soil_freeze .or. soil_ice ) then
    567  ! for now, revert update. Later, adjust SMC/SLC for update.
    568  if (l==1) n_revert = n_revert+1
    569  stc_adj(i,l)=stc_bck(i,l)
    570  endif
    571  enddo
    572  endif
    573  enddo
    574 
    575  endif
    576  if (upd_slc) then
    577 
    578  dz(1) = -zsoil(1)
    579  do l = 2,lsoil
    580  dz(l) = -zsoil(l) + zsoil(l-1)
    581  enddo
    582  print *, 'Applying soil moisture mins '
    583 
    584  do i=1,lensfc
    585  if (slc_updated(i) == 1 ) then
    586  n_slc = n_slc+1
    587  ! apply SM bounds (later: add upper SMC limit)
    588  do l = 1, lsoil_incr
    589  ! noah-mp minimum is 1 mm per layer (in SMC)
    590  ! no need to maintain frozen amount, would be v. small.
    591  slc_adj(i,l) = max( 0.001/dz(l), slc_adj(i,l) )
    592  smc_adj(i,l) = max( 0.001/dz(l), smc_adj(i,l) )
    593  enddo
    594  endif
    595  enddo
    596  endif
    597 
    598  case default
    599  print *, 'FATAL ERROR: unrecognised LSM,', lsm
    600  call mpi_abort(mpi_comm_world, 10, ierr)
    601  end select
    602 
    603  write(*,'(a,i2)') 'statistics of grids number processed for rank : ', myrank
    604  write(*,'(a,i8)') ' soil grid total', lensfc
    605  write(*,'(a,i8)') ' soil grid cells with slc update', n_slc
    606  write(*,'(a,i8)') ' soil grid cells with stc update', n_stc
    607  write(*,'(a,i8)') ' soil grid cells reverted', n_revert
    608 
    609 end subroutine apply_land_da_adjustments_soil
    610 
    616 
    625 
    626 subroutine apply_land_da_adjustments_snd(lsm, lensfc, mask, swe_bck, snd_bck, snd_anl, swe_adj)
    628  use mpi
    629  use bulk_snow_module, only: calc_density
    630 
    631  implicit none
    632 
    633  integer, intent(in) :: lsm, lensfc
    634  integer, intent(in) :: mask(lensfc)
    635  real, intent(in) :: swe_bck(lensfc), snd_bck(lensfc)
    636  real, intent(in) :: snd_anl(lensfc)
    637  real, intent(inout) :: swe_adj(lensfc)
    638 
    639  integer :: ierr, myrank, i
    640 
    641  real :: density(lensfc)
    642 
    643  call mpi_comm_rank(mpi_comm_world, myrank, ierr)
    644 
    645  if (lsm .NE. lsm_noah) then
    646  print *, 'FATAL ERROR: apply_land_da_adjustments not coded for models other than noah', lsm
    647  call mpi_abort(mpi_comm_world, 10, ierr)
    648  endif
    649 
    650  ! calculate snow density from forecasts
    651  call calc_density(lensfc, mask, swe_bck, snd_bck, myrank, density)
    652 
    653  do i =1, lensfc
    654  if ( mask(i)>0 ) then
    655  swe_adj(i) = snd_anl(i)*density(i)
    656  endif
    657  enddo
    658 
    659 
    660 end subroutine apply_land_da_adjustments_snd
    661 
    662 end module land_increments
    Module containing utility routines.
    Definition: utils.F90:7
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/machine_8f90.html b/ver-1.11.0/global_cycle/machine_8f90.html new file mode 100644 index 000000000..27a29a43a --- /dev/null +++ b/ver-1.11.0/global_cycle/machine_8f90.html @@ -0,0 +1,140 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/machine.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    machine.f90 File Reference
    +
    +
    + +

    Holds machine dependent constants for global_cycle. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  MACHINE
     Holds machine dependent constants for global_cycle.
     
    + + + + + + + + + + + + + +

    +Variables

    integer, parameter MACHINE::kind_dbl_prec = 8
     Kind type for 8-byte float point variables. More...
     
    integer, parameter MACHINE::kind_io4 = kind_sngl_prec
     Kind type for 4-byte float point variables. More...
     
    integer, parameter MACHINE::kind_io8 = kind_dbl_prec
     Kind type for 8-byte float point variables. More...
     
    integer, parameter MACHINE::kind_sngl_prec = 4
     Kind type for 4-byte float point variables. More...
     
    +

    Detailed Description

    +

    Holds machine dependent constants for global_cycle.

    +
    Author
    Mark Iredell NOAA/EMC
    + +

    Definition in file machine.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/machine_8f90.js b/ver-1.11.0/global_cycle/machine_8f90.js new file mode 100644 index 000000000..03d2d35c1 --- /dev/null +++ b/ver-1.11.0/global_cycle/machine_8f90.js @@ -0,0 +1,7 @@ +var machine_8f90 = +[ + [ "kind_dbl_prec", "machine_8f90.html#ac48e08cc5549d22cefd4f2623fd947aa", null ], + [ "kind_io4", "machine_8f90.html#aa632fb8829a3193ea14e28c1d7e51b2f", null ], + [ "kind_io8", "machine_8f90.html#a2fc44b0610f436f7748aee153af944dc", null ], + [ "kind_sngl_prec", "machine_8f90.html#aaf4ad38d4a8bcd4de16b9247fc69310b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/machine_8f90_source.html b/ver-1.11.0/global_cycle/machine_8f90_source.html new file mode 100644 index 000000000..d57849516 --- /dev/null +++ b/ver-1.11.0/global_cycle/machine_8f90_source.html @@ -0,0 +1,105 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/machine.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    machine.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7 MODULE machine
    8 
    9  IMPLICIT NONE
    10  SAVE
    11  integer, parameter :: kind_sngl_prec = 4
    13  integer, parameter :: kind_io4 = kind_sngl_prec
    15  integer, parameter :: kind_dbl_prec = 8
    17  integer, parameter :: kind_io8 = kind_dbl_prec
    19  END MODULE machine
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/man/man3/ADJUST_NSST.3 b/ver-1.11.0/global_cycle/man/man3/ADJUST_NSST.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/ADJUST_NSST.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/CLIMO_TREND.3 b/ver-1.11.0/global_cycle/man/man3/CLIMO_TREND.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/CLIMO_TREND.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/DTZM_POINT.3 b/ver-1.11.0/global_cycle/man/man3/DTZM_POINT.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/DTZM_POINT.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/MACHINE.3 b/ver-1.11.0/global_cycle/man/man3/MACHINE.3 new file mode 100644 index 000000000..d553cbd2b --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/MACHINE.3 @@ -0,0 +1,70 @@ +.TH "MACHINE" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +MACHINE \- Holds machine dependent constants for global_cycle\&. + +.SH SYNOPSIS +.br +.PP +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer, parameter \fBkind_dbl_prec\fP = 8" +.br +.RI "Kind type for 8-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBkind_io4\fP = \fBkind_sngl_prec\fP" +.br +.RI "Kind type for 4-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBkind_io8\fP = \fBkind_dbl_prec\fP" +.br +.RI "Kind type for 8-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBkind_sngl_prec\fP = 4" +.br +.RI "Kind type for 4-byte float point variables\&. " +.in -1c +.SH "Detailed Description" +.PP +Holds machine dependent constants for global_cycle\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NOAA/EMC +.RE +.PP + +.SH "Variable Documentation" +.PP +.SS "integer, parameter MACHINE::kind_dbl_prec = 8" + +.PP +Kind type for 8-byte float point variables\&. +.PP +Definition at line 15 of file machine\&.f90\&. +.SS "integer, parameter MACHINE::kind_io4 = \fBkind_sngl_prec\fP" + +.PP +Kind type for 4-byte float point variables\&. +.PP +Definition at line 13 of file machine\&.f90\&. +.SS "integer, parameter MACHINE::kind_io8 = \fBkind_dbl_prec\fP" + +.PP +Kind type for 8-byte float point variables\&. +.PP +Definition at line 17 of file machine\&.f90\&. +.SS "integer, parameter MACHINE::kind_sngl_prec = 4" + +.PP +Kind type for 4-byte float point variables\&. +.PP +Definition at line 11 of file machine\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/NETCDF_ERR.3 b/ver-1.11.0/global_cycle/man/man3/NETCDF_ERR.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/NETCDF_ERR.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/READ_DATA.3 b/ver-1.11.0/global_cycle/man/man3/READ_DATA.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/READ_DATA.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/READ_GSI_DATA.3 b/ver-1.11.0/global_cycle/man/man3/READ_GSI_DATA.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/READ_GSI_DATA.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/READ_LAT_LON_OROG.3 b/ver-1.11.0/global_cycle/man/man3/READ_LAT_LON_OROG.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/READ_LAT_LON_OROG.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/READ_WRITE_DATA.3 b/ver-1.11.0/global_cycle/man/man3/READ_WRITE_DATA.3 new file mode 100644 index 000000000..ee9383264 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/READ_WRITE_DATA.3 @@ -0,0 +1,646 @@ +.TH "READ_WRITE_DATA" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +READ_WRITE_DATA \- This module contains routines that read and write data\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBNSST_DATA\fP" +.br +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine, public \fBget_dim_nc\fP (filename, nlat, nlon)" +.br +.RI "Get the i/j dimensions of the data from a NetCDF file\&. " +.ti -1c +.RI "subroutine, public \fBget_tf_clm_dim\fP (file_sst, mlat_sst, mlon_sst)" +.br +.RI "Get the i/j dimensions of RTG SST climatology file\&. " +.ti -1c +.RI "subroutine \fBnc_check\fP (status)" +.br +.RI "Check the NetCDF status code\&. " +.ti -1c +.RI "subroutine \fBNETCDF_ERR\fP (ERR, STRING)" +.br +.RI "If a NetCDF call returns an error, print out a user-supplied message and the NetCDF library message\&. " +.ti -1c +.RI "subroutine, public \fBREAD_DATA\fP (LSOIL, LENSFC, DO_NSST, 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, SLPFCS, ABSFCS, T2M, Q2M, SLMASK, ZSOIL, NSST)" +.br +.RI "Read the first guess surface records and nsst records (if selected) for a single cubed-sphere tile\&. " +.ti -1c +.RI "subroutine, public \fBREAD_GSI_DATA\fP (GSI_FILE, FILE_TYPE, LSOIL)" +.br +.RI "Read increment file from the GSI containing either the foundation temperature increments and mask, or the soil increments\&. " +.ti -1c +.RI "subroutine, public \fBREAD_LAT_LON_OROG\fP (RLA, RLO, OROG, OROG_UF, TILE_NUM, IDIM, JDIM, IJDIM)" +.br +.RI "Read latitude and longitude for the cubed-sphere tile from the 'grid' file\&. " +.ti -1c +.RI "subroutine, public \fBread_salclm_gfs_nc\fP (filename, sal, xlats, xlons, nlat, nlon, itime)" +.br +.RI "Read the woa05 salinity monthly climatology file\&. " +.ti -1c +.RI "subroutine, public \fBread_tf_clim_grb\fP (file_sst, sst, rlats_sst, rlons_sst, mlat_sst, mlon_sst, mon)" +.br +.RI "Read a GRIB1 sst climatological analysis file\&. " +.ti -1c +.RI "subroutine \fBremove_checksum\fP (ncid, id_var)" +.br +.RI "Remove the checksum attribute from a netcdf record\&. " +.ti -1c +.RI "subroutine, public \fBwrite_data\fP (lensfc, idim, jdim, lsoil, do_nsst, 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)" +.br +.RI "Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf)\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "real, dimension(:,:), allocatable, public \fBdtref_gaus\fP" +.br +.RI "GSI foundation temperature increment on the gaussian grid\&. " +.ti -1c +.RI "integer, public \fBidim_gaus\fP" +.br +.RI "'i' dimension of GSI gaussian grid\&. " +.ti -1c +.RI "integer, public \fBjdim_gaus\fP" +.br +.RI "'j' dimension of GSI gaussian grid\&. " +.ti -1c +.RI "real, dimension(:,:,:), allocatable, public \fBslc_inc_gaus\fP" +.br +.RI "GSI soil moisture increments on the gaussian grid\&. " +.ti -1c +.RI "integer, dimension(:,:), allocatable, public \fBslmsk_gaus\fP" +.br +.RI "GSI land mask on the gaussian grid\&. " +.ti -1c +.RI "integer, dimension(:,:), allocatable, public \fBsoilsnow_gaus\fP" +.br +.RI "GSI soil / snow mask for land on the gaussian grid\&. " +.ti -1c +.RI "real, dimension(:,:,:), allocatable, public \fBstc_inc_gaus\fP" +.br +.RI "GSI soil temperature increments on the gaussian grid\&. " +.in -1c +.SH "Detailed Description" +.PP +This module contains routines that read and write data\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Xu Li, Hang Lei, George Gayno NOAA/EMC +.RE +.PP + +.SH "Data Type Documentation" +.PP +.SH "type READ_WRITE_DATA::NSST_DATA" +.PP +Definition at line 16 of file read_write_data\&.f90\&. +.PP +\fBData Fields:\fP +.RS 4 +real, dimension(:), allocatable \fIc_0\fP +.br +.PP +real, dimension(:), allocatable \fIc_d\fP +.br +.PP +real, dimension(:), allocatable \fId_conv\fP +.br +.PP +real, dimension(:), allocatable \fIdt_cool\fP +.br +.PP +real, dimension(:), allocatable \fIifd\fP +.br +.PP +real, dimension(:), allocatable \fIqrain\fP +.br +.PP +real, dimension(:), allocatable \fItfinc\fP +.br +.PP +real, dimension(:), allocatable \fItref\fP +.br +.PP +real, dimension(:), allocatable \fIw_0\fP +.br +.PP +real, dimension(:), allocatable \fIw_d\fP +.br +.PP +real, dimension(:), allocatable \fIxs\fP +.br +.PP +real, dimension(:), allocatable \fIxt\fP +.br +.PP +real, dimension(:), allocatable \fIxtts\fP +.br +.PP +real, dimension(:), allocatable \fIxu\fP +.br +.PP +real, dimension(:), allocatable \fIxv\fP +.br +.PP +real, dimension(:), allocatable \fIxz\fP +.br +.PP +real, dimension(:), allocatable \fIxzts\fP +.br +.PP +real, dimension(:), allocatable \fIz_c\fP +.br +.PP +real, dimension(:), allocatable \fIzm\fP +.br +.PP +.RE +.PP +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine, public READ_WRITE_DATA::get_dim_nc (character (len=*), intent(in) filename, integer, intent(out) nlat, integer, intent(out) nlon)" + +.PP +Get the i/j dimensions of the data from a NetCDF file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIfilename\fP Name of the file to be read\&. +.br +\fInlat\fP 'j' dimension of the data in the file\&. +.br +\fInlon\fP 'i' dimension of the data in the file\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li NOAA/EMC +.RE +.PP + +.PP +Definition at line 1820 of file read_write_data\&.f90\&. +.SS "subroutine, public READ_WRITE_DATA::get_tf_clm_dim (character(*), intent(in) file_sst, integer, intent(out) mlat_sst, integer, intent(out) mlon_sst)" + +.PP +Get the i/j dimensions of RTG SST climatology file\&. The file is GRIB1\&. +.PP +\fBParameters:\fP +.RS 4 +\fIfile_sst\fP File name of the sst file\&. +.br +\fImlat_sst\fP The 'j' dimension of the data\&. +.br +\fImlon_sst\fP The 'i' dimension of the data\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li NOAA/EMC +.RE +.PP +\fBDate:\fP +.RS 4 +2019-03-13 +.RE +.PP + +.PP +Definition at line 1685 of file read_write_data\&.f90\&. +.SS "subroutine READ_WRITE_DATA::nc_check (integer, intent(in) status)" + +.PP +Check the NetCDF status code\&. If there is an error, print the library error message and stop processing\&. +.PP +\fBParameters:\fP +.RS 4 +\fIstatus\fP NetCDF status code\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li NOAA/EMC +.RE +.PP + +.PP +Definition at line 1857 of file read_write_data\&.f90\&. +.SS "subroutine READ_WRITE_DATA::NETCDF_ERR (integer, intent(in) ERR, character(len=*), intent(in) STRING)" + +.PP +If a NetCDF call returns an error, print out a user-supplied message and the NetCDF library message\&. Then stop processing\&. +.PP +\fBParameters:\fP +.RS 4 +\fIERR\fP NetCDF error code\&. +.br +\fISTRING\fP User-defined error message\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition at line 814 of file read_write_data\&.f90\&. +.SS "subroutine, public READ_WRITE_DATA::READ_DATA (integer, intent(in) LSOIL, integer, intent(in) LENSFC, logical, intent(in) DO_NSST, 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), 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)" + +.PP +Read the first guess surface records and nsst records (if selected) for a single cubed-sphere tile\&. +.PP +\fBParameters:\fP +.RS 4 +\fILSOIL\fP Number of soil layers\&. +.br +\fILENSFC\fP Total number of points on a tile\&. +.br +\fIDO_NSST\fP When true, nsst fields are read\&. +.br +\fIINC_FILE\fP When true, read from an increment file\&. False reads from a restart file\&. +.br +\fIIS_NOAHMP\fP When true, process for the Noah-MP LSM\&. +.br +\fITSFFCS\fP Skin Temperature\&. +.br +\fISMCFCS\fP Total volumetric soil moisture\&. +.br +\fISWEFCS\fP Snow water equivalent\&. +.br +\fISTCFCS\fP Soil temperature\&. +.br +\fITG3FCS\fP Soil substrate temperature\&. +.br +\fIZORFCS\fP Roughness length\&. +.br +\fICVFCS\fP Cloud cover\&. +.br +\fICVBFCS\fP Cloud base\&. +.br +\fICVTFCS\fP Cloud top\&. +.br +\fIALBFCS\fP Snow-free albedo\&. +.br +\fISLIFCS\fP Land-sea mask including ice flag\&. +.br +\fIVEGFCS\fP Vegetation greenness\&. +.br +\fICNPFCS\fP Plant canopy moisture content\&. +.br +\fIF10M\fP log((z0+10)/z0)\&. See model routine sfc_diff\&.f for details\&. +.br +\fIVETFCS\fP Vegetation type\&. +.br +\fISOTFCS\fP Soil type\&. +.br +\fIALFFCS\fP Fractional coverage for strong/weak zenith angle dependent albedo\&. +.br +\fIUSTAR\fP Friction velocity\&. +.br +\fIFMM\fP log((z0+z1)/z0)\&. See model routine sfc_diff\&.f for details\&. +.br +\fIFHH\fP log((ztmax+z1)/ztmax)\&. See model routine sfc_diff\&.f for details\&. +.br +\fISIHFCS\fP Sea ice depth\&. +.br +\fISICFCS\fP Sea ice concentration\&. +.br +\fISITFCS\fP Sea ice temperature\&. +.br +\fITPRCP\fP Precipitation\&. +.br +\fISRFLAG\fP Snow/rain flag\&. +.br +\fISNDFCS\fP Snow depth\&. +.br +\fIVMNFCS\fP Minimum vegetation greenness\&. +.br +\fIVMXFCS\fP Maximum vegetation greenness\&. +.br +\fISLCFCS\fP Liquid portion of volumetric soil moisture\&. +.br +\fISLPFCS\fP Slope type\&. +.br +\fIABSFCS\fP Maximum snow albedo\&. +.br +\fIT2M\fP Two-meter air temperature\&. +.br +\fIQ2M\fP Two-meter specific humidity\&. +.br +\fISLMASK\fP Land-sea mask without ice flag\&. +.br +\fIZSOIL\fP Soil layer thickness\&. +.br +\fINSST\fP Data structure containing nsst fields\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition at line 1030 of file read_write_data\&.f90\&. +.SS "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)" + +.PP +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\&. +.PP +\fBParameters:\fP +.RS 4 +\fIGSI_FILE\fP Path/name of the GSI file to be read\&. +.br +\fIFILE_TYPE\fP file-type to be read in, 'NST' or 'LND'\&. +.br +\fILSOIL\fP Number of model soil levels\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition at line 847 of file read_write_data\&.f90\&. +.SS "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)" + +.PP +Read latitude and longitude for the cubed-sphere tile from the 'grid' file\&. Read the filtered and unfiltered orography from the 'orography' file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIIDIM\fP 'i' dimension of cubed-sphere tile\&. +.br +\fIJDIM\fP 'j' dimension of cubed-sphere tile\&. +.br +\fIIJDIM\fP Total number of points on the cubed-sphere tile\&. +.br +\fIRLA\fP Latitude on the cubed-sphere tile\&. +.br +\fIRLO\fP Longitude on the cubed-sphere tile\&. +.br +\fIOROG\fP Filtered orography\&. +.br +\fIOROG_UF\fP Unfiltered orography\&. +.br +\fITILE_NUM\fP Cubed-sphere tile number +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition at line 681 of file read_write_data\&.f90\&. +.SS "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)" + +.PP +Read the woa05 salinity monthly climatology file\&. The file is NetCDF\&. +.PP +\fBParameters:\fP +.RS 4 +\fIfilename\fP The name of the climatology file\&. +.br +\fInlat\fP The 'j' dimension of the data in the file\&. +.br +\fInlon\fP The 'i' dimension of the data in the file\&. +.br +\fIitime\fP The monthly record to read\&. +.br +\fIxlats\fP The latitude of the data points\&. +.br +\fIxlons\fP The longitude of the data points\&. +.br +\fIsal\fP The salinity\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li NOAA/EMC +.RE +.PP + +.PP +Definition at line 1744 of file read_write_data\&.f90\&. +.SS "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)" + +.PP +Read a GRIB1 sst climatological analysis file\&. Read the sst analysis and save it as an expanded and transposed array\&. +.PP +\fBNote:\fP +.RS 4 +The data is stored from north to south, but this routine flips the poles\&. +.RE +.PP +\fBParameters:\fP +.RS 4 +\fIfile_sst\fP File name of the sst file\&. +.br +\fImlat_sst\fP 'j' dimension of the sst data\&. +.br +\fImlon_sst\fP 'i' dimension of the sst data\&. +.br +\fImon\fP The month of the year\&. +.br +\fIsst\fP The sst analysis data\&. +.br +\fIrlats_sst\fP The latitudes of the sst data points\&. +.br +\fIrlons_sst\fP The longitudes of the sst data points\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li NOAA/EMC +.RE +.PP +\fBDate:\fP +.RS 4 +2019-03-13 +.RE +.PP + +.PP +Definition at line 1543 of file read_write_data\&.f90\&. +.SS "subroutine READ_WRITE_DATA::remove_checksum (integer, intent(in) ncid, integer, intent(in) id_var)" + +.PP +Remove the checksum attribute from a netcdf record\&. +.PP +\fBParameters:\fP +.RS 4 +\fIncid\fP netcdf file id +.br +\fIid_var\fP netcdf variable id\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NCEP/EMC +.RE +.PP + +.PP +Definition at line 642 of file read_write_data\&.f90\&. +.SS "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, 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)" + +.PP +Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf)\&. +.PP +\fBNote:\fP +.RS 4 +The model restart files contain an additional snow field - snow cover (snocvr)\&. That field is required for bit identical reproducability\&. If that record does not exist, the model will compute it as an initialization step\&. Because this program does not contain the snow cover algorithm, it will let the model compute it\&. +.RE +.PP +\fBParameters:\fP +.RS 4 +\fIidim\fP 'i' dimension of a tile\&. +.br +\fIjdim\fP 'j' dimension of a tile\&. +.br +\fIlensfc\fP Total number of points on a tile\&. +.br +\fIlsoil\fP Number of soil layers\&. +.br +\fIdo_nsst\fP When true, nsst fields were processed\&. +.br +\fInsst\fP Data structure containing nsst fields\&. +.br +\fIslifcs\fP Land-sea mask\&. +.br +\fItsffcs\fP Skin temperature\&. +.br +\fIvegfcs\fP Vegetation greenness\&. +.br +\fIswefcs\fP Snow water equivalent +.br +\fItg3fcs\fP Soil substrate temperature\&. +.br +\fIzorfcs\fP Roughness length\&. +.br +\fIalbfcs\fP Snow-free albedo\&. +.br +\fIalffcs\fP Fractional coverage for strong/weak zenith angle dependent albedo\&. +.br +\fIcnpfcs\fP Plant canopy moisture content\&. +.br +\fIf10m\fP log((z0+10)/z0)\&. See model routine sfc_diff\&.f for details\&. +.br +\fIt2m\fP Two-meter air temperature\&. +.br +\fIq2m\fP Two-meter specific humidity\&. +.br +\fIvetfcs\fP Vegetation type\&. +.br +\fIsotfcs\fP Soil type\&. +.br +\fIustar\fP Friction velocity\&. +.br +\fIfmm\fP log((z0+z1)/z0)\&. See model routine sfc_diff\&.f for details\&. +.br +\fIfhh\fP log(ztmax+z1)/ztmax)\&. See model routine sfc_diff\&.f for details\&. +.br +\fIsicfcs\fP Sea ice concentraton\&. +.br +\fIsihfcs\fP Sea ice depth\&. +.br +\fIsitfcs\fP Sea ice temperature\&. +.br +\fItprcp\fP Precipitation\&. +.br +\fIsrflag\fP Snow/rain flag\&. +.br +\fIswdfcs\fP Physical snow depth\&. +.br +\fIvmnfcs\fP Minimum vegetation greenness\&. +.br +\fIvmxfcs\fP Maximum vegetation greenness\&. +.br +\fIslpfcs\fP Slope type\&. +.br +\fIabsfcs\fP Maximum snow albedo\&. +.br +\fIslcfcs\fP Liquid portion of volumetric soil moisture\&. +.br +\fIsmcfcs\fP Total volumetric soil moisture\&. +.br +\fIstcfcs\fP Soil temperature\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition at line 128 of file read_write_data\&.f90\&. +.SH "Variable Documentation" +.PP +.SS "real, dimension(:,:), allocatable, public READ_WRITE_DATA::dtref_gaus" + +.PP +GSI foundation temperature increment on the gaussian grid\&. +.PP +Definition at line 49 of file read_write_data\&.f90\&. +.SS "integer, public READ_WRITE_DATA::idim_gaus" + +.PP +'i' dimension of GSI gaussian grid\&. +.PP +Definition at line 38 of file read_write_data\&.f90\&. +.SS "integer, public READ_WRITE_DATA::jdim_gaus" + +.PP +'j' dimension of GSI gaussian grid\&. +.PP +Definition at line 40 of file read_write_data\&.f90\&. +.SS "real, dimension(:,:,:), allocatable, public READ_WRITE_DATA::slc_inc_gaus" + +.PP +GSI soil moisture increments on the gaussian grid\&. +.PP +Definition at line 55 of file read_write_data\&.f90\&. +.SS "integer, dimension(:,:), allocatable, public READ_WRITE_DATA::slmsk_gaus" + +.PP +GSI land mask on the gaussian grid\&. +.PP +Definition at line 42 of file read_write_data\&.f90\&. +.SS "integer, dimension(:,:), allocatable, public READ_WRITE_DATA::soilsnow_gaus" + +.PP +GSI soil / snow mask for land on the gaussian grid\&. 1 - soil, 2 - snow, 0 - not land +.PP +Definition at line 45 of file read_write_data\&.f90\&. +.SS "real, dimension(:,:,:), allocatable, public READ_WRITE_DATA::stc_inc_gaus" + +.PP +GSI soil temperature increments on the gaussian grid\&. +.PP +Definition at line 52 of file read_write_data\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/REMAP_COEF.3 b/ver-1.11.0/global_cycle/man/man3/REMAP_COEF.3 new file mode 100644 index 000000000..4e93827b3 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/REMAP_COEF.3 @@ -0,0 +1 @@ +.so man3/utils.3 diff --git a/ver-1.11.0/global_cycle/man/man3/SFCDRV.3 b/ver-1.11.0/global_cycle/man/man3/SFCDRV.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/SFCDRV.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/SFC_DRV.3 b/ver-1.11.0/global_cycle/man/man3/SFC_DRV.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/SFC_DRV.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/add_increment_snow.3 b/ver-1.11.0/global_cycle/man/man3/add_increment_snow.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/add_increment_snow.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/add_increment_soil.3 b/ver-1.11.0/global_cycle/man/man3/add_increment_soil.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/add_increment_soil.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_snd.3 b/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_snd.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_snd.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_soil.3 b/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_soil.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/apply_land_da_adjustments_soil.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/c_0.3 b/ver-1.11.0/global_cycle/man/man3/c_0.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/c_0.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/c_d.3 b/ver-1.11.0/global_cycle/man/man3/c_d.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/c_d.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/calculate_landinc_mask.3 b/ver-1.11.0/global_cycle/man/man3/calculate_landinc_mask.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/calculate_landinc_mask.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/cycle.f90.3 b/ver-1.11.0/global_cycle/man/man3/cycle.f90.3 new file mode 100644 index 000000000..c719acf22 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/cycle.f90.3 @@ -0,0 +1,765 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/cycle.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/cycle.f90 \- Update surface and NSST fields\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBADJUST_NSST\fP (RLA, RLO, SLMSK_TILE, SLMSK_FG_TILE, SKINT_TILE, SICET_TILE, sice_tile, SOILT_TILE, NSST, LENSFC, LSOIL, IDIM, JDIM, ZSEA1, ZSEA2, MON, DAY, DELTSFC, tf_clm_tile, tf_trd_tile, sal_clm_tile)" +.br +.RI "Read in gsi file with the updated reference temperature increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and perform required nsst adjustments and qc\&. " +.ti -1c +.RI "subroutine \fBCLIMO_TREND\fP (LATITUDE, MON, DAY, DELTSFC, DTREF)" +.br +.RI "If the tile point is an isolated water point that has no corresponding gsi water point, then tref is updated using the rtg sst climo trend\&. " +.ti -1c +.RI "subroutine \fBDTZM_POINT\fP (XT, XZ, DT_COOL, ZC, Z1, Z2, DTZM)" +.br +.RI "Compute the vertical mean of the NSST t-profile\&. " +.ti -1c +.RI "subroutine \fBget_sal_clm\fP (xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, sal_clm)" +.br +.RI "Get salinity climatology at the valid time on the target grid\&. " +.ti -1c +.RI "subroutine \fBget_sal_clm_ta\fP (sal_clm_ta, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)" +.br +.RI "Get climatological salinity at the analysis time\&. " +.ti -1c +.RI "subroutine \fBget_tf_clm\fP (xlats_ij, xlons_ij, ny, nx, iy, im, id, ih, tf_clm, tf_trd)" +.br +.RI "Get the sst climatology at the valid time and on the target grid\&. " +.ti -1c +.RI "subroutine \fBget_tf_clm_ta\fP (tf_clm_ta, tf_clm_trend, xlats, xlons, nlat, nlon, mon1, mon2, wei1, wei2)" +.br +.RI "Get the reference temperature/sst climatology and its trend at analysis time\&. " +.ti -1c +.RI "subroutine \fBget_tim_wei\fP (iy, im, id, ih, mon1, mon2, wei1, wei2)" +.br +.RI "For a given date, determine the bounding months and the linear time interpolation weights\&. " +.ti -1c +.RI "subroutine \fBintp_tile\fP (tf_lalo, dlats_lalo, dlons_lalo, jdim_lalo, idim_lalo, tf_tile, xlats_tile, xlons_tile, jdim_tile, idim_tile)" +.br +.RI "Interpolate lon/lat grid data to the fv3 native grid (tf_lalo => tf_tile)\&. " +.ti -1c +.RI "subroutine \fBnsst_water_reset\fP (nsst, ij, tf_thaw)" +.br +.RI "If the first guess was sea ice, but the analysis is open water, reset all nsst variables\&. " +.ti -1c +.RI "program \fBSFC_DRV\fP" +.br +.RI "Stand alone surface/NSST cycle driver for the cubed-sphere grid\&. " +.ti -1c +.RI "subroutine \fBSFCDRV\fP (LUGB, IDIM, JDIM, LENSFC, LSOIL, DELTSFC, IY, IM, ID, IH, FH, IALB, USE_UFO, DO_NSST, DO_SFCCYCLE, DO_LNDINC, ZSEA1, ZSEA2, ISOT, IVEGSRC, MYRANK)" +.br +.RI "Driver routine for updating the surface fields\&. " +.ti -1c +.RI "subroutine \fBtf_thaw_set\fP (tf_ij, mask_ij, itile, jtile, tice, tclm, tf_thaw, nx, ny, nset_thaw_s, nset_thaw_i, nset_thaw_c)" +.br +.RI "Set the background reference temperature (tf) for points where the ice has just melted\&. " +.ti -1c +.RI "real function \fBtfreez\fP (salinity)" +.br +.RI "Compute the freezing point of water as a function of salinity\&. " +.in -1c +.SH "Detailed Description" +.PP +Update surface and NSST fields\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NCEP/EMC +.RE +.PP + +.PP +Definition in file \fBcycle\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine ADJUST_NSST (real, dimension(lensfc), intent(inout) RLA, real, dimension(lensfc), intent(inout) RLO, real, dimension(lensfc), intent(in) SLMSK_TILE, real, dimension(lensfc), intent(in) SLMSK_FG_TILE, real, dimension(lensfc), intent(inout) SKINT_TILE, real, dimension(lensfc), intent(inout) SICET_TILE, real, dimension(lensfc), intent(inout) sice_tile, real, dimension(lensfc,lsoil), intent(inout) SOILT_TILE, type(nsst_data) NSST, integer, intent(in) LENSFC, integer, intent(in) LSOIL, integer, intent(in) IDIM, integer, intent(in) JDIM, real, intent(in) ZSEA1, real, intent(in) ZSEA2, integer, intent(in) MON, integer, intent(in) DAY, real, intent(in) DELTSFC, real, dimension(lensfc), intent(in) tf_clm_tile, real, dimension(lensfc), intent(in) tf_trd_tile, real, dimension(lensfc), intent(in) sal_clm_tile)" + +.PP +Read in gsi file with the updated reference temperature increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and perform required nsst adjustments and qc\&. +.PP +\fBParameters:\fP +.RS 4 +\fIRLA\fP Latitude on the cubed-sphere tile +.br +\fIRLO\fP Longitude on the cubed-sphere tile +.br +\fISLMSK_TILE\fP Land-sea mask on the cubed-sphere tile +.br +\fISLMSK_FG_TILE\fP First guess land-sea mask on the cubed-sphere tile +.br +\fISKINT_TILE\fP Skin temperature on the cubed-sphere tile +.br +\fISICET_TILE\fP Ice temperature on the cubed-sphere tile +.br +\fIsice_tile\fP Ice concentration on the cubed-sphere tile +.br +\fISOILT_TILE\fP Soil temperature on the cubed-sphere tile +.br +\fINSST\fP Data structure holding nsst fields +.br +\fILENSFC\fP Number of points on a tile +.br +\fILSOIL\fP Number of soil layers +.br +\fIIDIM\fP 'I' dimension of a tile +.br +\fIJDIM\fP 'J' dimension of a tile +.br +\fIZSEA1\fP When running nsst model, this is the lower bound of depth of sea temperature\&. In whole mm\&. +.br +\fIZSEA2\fP When running nsst model, this is the upper bound of depth of sea temperature\&. In whole mm\&. +.br +\fIMON\fP Month +.br +\fIDAY\fP Day +.br +\fIDELTSFC\fP Cycling frequency in hours +.br +\fItf_clm_tile\fP Climatological reference temperature on the cubed-sphere tile\&. +.br +\fItf_trd_tile\fP Climatolocial reference temperature trend on the cubed-sphere tile\&. +.br +\fIsal_clm_tile\fP Climatological salinity on the cubed-sphere tile\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li, George Gayno +.RE +.PP + +.PP +Definition at line 806 of file cycle\&.f90\&. +.PP +References nsst_water_reset(), and tf_thaw_set()\&. +.SS "subroutine CLIMO_TREND (real, intent(in) LATITUDE, integer, intent(in) MON, integer, intent(in) DAY, real, intent(in) DELTSFC, real, intent(out) DTREF)" + +.PP +If the tile point is an isolated water point that has no corresponding gsi water point, then tref is updated using the rtg sst climo trend\&. This monthly trend is sorted by latitude band\&. +.PP +\fBParameters:\fP +.RS 4 +\fILATITUDE\fP Latitude of tile point +.br +\fIMON\fP Month +.br +\fIDAY\fP Day +.br +\fIDELTSFC\fP Cycling frequency in hours +.br +\fIDTREF\fP Monthly trend of reference temperature +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li, George Gayno +.RE +.PP + +.PP +Definition at line 1212 of file cycle\&.f90\&. +.SS "subroutine DTZM_POINT (real, intent(in) XT, real, intent(in) XZ, real, intent(in) DT_COOL, real, intent(in) ZC, real, intent(in) Z1, real, intent(in) Z2, real, intent(out) DTZM)" + +.PP +Compute the vertical mean of the NSST t-profile\&. +.PP +\fBParameters:\fP +.RS 4 +\fIxt\fP Heat content in the diurnal thermocline layer\&. +.br +\fIxz\fP Thickness of the diurnal thermocline layer\&. +.br +\fIdt_cool\fP Skin-layer cooling amount\&. +.br +\fIzc\fP Thickness of skin-layer\&. +.br +\fIz1\fP Lower bound of depth of sea temperature\&. +.br +\fIz2\fP Upper bound of depth of sea temperature\&. +.br +\fIdtzm\fP Mean of the NSST t-profile from z1 to z2\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP +\fBDate:\fP +.RS 4 +2015 +.RE +.PP + +.PP +Definition at line 1365 of file cycle\&.f90\&. +.SS "subroutine get_sal_clm (real, dimension(nx*ny), intent(in) xlats_ij, real, dimension(nx*ny), intent(in) xlons_ij, integer, intent(in) ny, integer, intent(in) nx, integer, intent(in) iy, integer, intent(in) im, integer, intent(in) id, integer, intent(in) ih, real, dimension(nx,ny), intent(out) sal_clm)" + +.PP +Get salinity climatology at the valid time on the target grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIxlats_ij\fP Latitudes of target grid +.br +\fIxlons_ij\fP Longitudes of target grid +.br +\fIny\fP 'j' dimension of target grid +.br +\fInx\fP 'i' dimension of target grid +.br +\fIiy\fP Year +.br +\fIim\fP Month +.br +\fIid\fP Day +.br +\fIih\fP Hour +.br +\fIsal_clm\fP Salinity climatology on the target grid at the valid time +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 1691 of file cycle\&.f90\&. +.PP +References get_sal_clm_ta(), get_tim_wei(), and intp_tile()\&. +.PP +Referenced by SFCDRV()\&. +.SS "subroutine get_sal_clm_ta (real, dimension(nlon,nlat), intent(out) sal_clm_ta, real, dimension(nlat), intent(out) xlats, real, dimension(nlon), intent(out) xlons, integer, intent(in) nlat, integer, intent(in) nlon, integer, intent(in) mon1, integer, intent(in) mon2, real, intent(in) wei1, real, intent(in) wei2)" + +.PP +Get climatological salinity at the analysis time\&. +.PP +\fBParameters:\fP +.RS 4 +\fInlat\fP 'j' dimension of climatological data +.br +\fInlon\fP 'i' dimension of climatological data +.br +\fImon1\fP First bounding month +.br +\fImon2\fP Second bounding month +.br +\fIwei1\fP Weight of first bounding month +.br +\fIwei2\fP Weight of second bounding month +.br +\fIsal_clm_ta\fP Climatological salinity at the analysis time +.br +\fIxlats\fP Latitudes on the climatological grid +.br +\fIxlons\fP Longitudes on the climatological grid +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP +\fBDate:\fP +.RS 4 +March 2019 +.RE +.PP + +.PP +Definition at line 1751 of file cycle\&.f90\&. +.PP +Referenced by get_sal_clm()\&. +.SS "subroutine get_tf_clm (real, dimension(nx*ny), intent(in) xlats_ij, real, dimension(nx*ny), intent(in) xlons_ij, integer, intent(in) ny, integer, intent(in) nx, integer, intent(in) iy, integer, intent(in) im, integer, intent(in) id, integer, intent(in) ih, real, dimension(nx,ny), intent(out) tf_clm, real, dimension(nx,ny), intent(out) tf_trd)" + +.PP +Get the sst climatology at the valid time and on the target grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIxlats_ij\fP latitude of target grid +.br +\fIxlons_ij\fP longitude of target grid +.br +\fIny\fP 'j' dimension of target grid +.br +\fInx\fP 'i' dimension of target grid +.br +\fIiy\fP Year +.br +\fIim\fP Month +.br +\fIid\fP Day +.br +\fIih\fP Hour +.br +\fItf_clm\fP sst climatology at the valid time and on the target grid +.br +\fItf_trd\fP 6-hourly sst climatology tendency at the valid time and on the target grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 1574 of file cycle\&.f90\&. +.PP +References get_tf_clm_ta(), get_tim_wei(), and intp_tile()\&. +.PP +Referenced by SFCDRV()\&. +.SS "subroutine get_tf_clm_ta (real, dimension(nlon,nlat), intent(out) tf_clm_ta, real, dimension(nlon,nlat), intent(out) tf_clm_trend, real, dimension(nlat), intent(out) xlats, real, dimension(nlon), intent(out) xlons, integer, intent(in) nlat, integer, intent(in) nlon, integer, intent(in) mon1, integer, intent(in) mon2, real, intent(in) wei1, real, intent(in) wei2)" + +.PP +Get the reference temperature/sst climatology and its trend at analysis time\&. The data is time interpolated between two bounding months\&. +.PP +\fBParameters:\fP +.RS 4 +\fItf_clm_ta\fP Climatological tf/sst at analysis time +.br +\fItf_clm_trend\fP Climatological tf/sst trend at analysis time +.br +\fIxlats\fP Latitudes on the climatological data grid +.br +\fIxlons\fP Longitudes on the climatological data grid +.br +\fInlat\fP 'j' dimension on the climatological grid +.br +\fInlon\fP 'i' dimension on the climatological grid +.br +\fImon1\fP First bounding month +.br +\fImon2\fP Second bounding month +.br +\fIwei1\fP Weighting of first bounding month +.br +\fIwei2\fP Weighting of second bounding month +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP +\fBDate:\fP +.RS 4 +March 2019 +.RE +.PP + +.PP +Definition at line 1643 of file cycle\&.f90\&. +.PP +Referenced by get_tf_clm()\&. +.SS "subroutine get_tim_wei (integer, intent(in) iy, integer, intent(in) im, integer, intent(in) id, integer, intent(in) ih, integer, intent(out) mon1, integer, intent(out) mon2, real, intent(out) wei1, real, intent(out) wei2)" + +.PP +For a given date, determine the bounding months and the linear time interpolation weights\&. +.PP +\fBParameters:\fP +.RS 4 +\fIiy\fP The year +.br +\fIim\fP The month +.br +\fIid\fP The day +.br +\fIih\fP The hour +.br +\fImon1\fP First bounding month +.br +\fImon2\fP Second bounding month +.br +\fIwei1\fP Weighting of first bounding month +.br +\fIwei2\fP Weighting of second bounding month +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP +\fBDate:\fP +.RS 4 +March 2019 +.RE +.PP + +.PP +Definition at line 1886 of file cycle\&.f90\&. +.PP +Referenced by get_sal_clm(), and get_tf_clm()\&. +.SS "subroutine intp_tile (real, dimension(idim_lalo,jdim_lalo), intent(in) tf_lalo, real, dimension(jdim_lalo), intent(in) dlats_lalo, real, dimension(idim_lalo), intent(in) dlons_lalo, integer, intent(in) jdim_lalo, integer, intent(in) idim_lalo, real, dimension(jdim_tile*idim_tile), intent(out) tf_tile, real, dimension(jdim_tile*idim_tile), intent(in) xlats_tile, real, dimension(jdim_tile*idim_tile), intent(in) xlons_tile, integer, intent(in) jdim_tile, integer, intent(in) idim_tile)" + +.PP +Interpolate lon/lat grid data to the fv3 native grid (tf_lalo => tf_tile)\&. Does not account for a mask\&. +.PP +\fBParameters:\fP +.RS 4 +\fItf_lalo\fP (idim_lalo,idim_lalo) field on the lat/lon regular grid\&. +.br +\fIdlats_lalo\fP (jdim_lalo) latitudes along y direction of lat/lon regular grid points\&. +.br +\fIdlons_lalo\fP (idim_lalo) longitudes along x direction of lat/lon regular grid points\&. +.br +\fIjdim_lalo\fP number of y dimension of tf_lalo\&. +.br +\fIidim_lalo\fP number of x dimension of tf_lalo\&. +.br +\fIxlats_tile\fP (jdim_tile*idim_tile) latitudes of all tile grid points\&. +.br +\fIxlons_tile\fP (jdim_tile*idim_tile) longitudes of all tile grid points\&. +.br +\fIjdim_tile\fP number of y dimension of tf_tile\&. +.br +\fIidim_tile\fP number of x dimension of tf_tile\&. +.br +\fItf_tile\fP (jdim_tile*idim_tile) field on the cubed sphere grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 1797 of file cycle\&.f90\&. +.PP +Referenced by get_sal_clm(), and get_tf_clm()\&. +.SS "subroutine nsst_water_reset (type(nsst_data), intent(inout) nsst, integer, intent(in) ij, real, intent(in) tf_thaw)" + +.PP +If the first guess was sea ice, but the analysis is open water, reset all nsst variables\&. +.PP +\fBParameters:\fP +.RS 4 +\fInsst\fP Data structure that holds the nsst fields +.br +\fIij\fP Index of point to be updated +.br +\fItf_thaw\fP Reference temperature for former ice points +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 1528 of file cycle\&.f90\&. +.PP +Referenced by ADJUST_NSST()\&. +.SS "program SFC_DRV ()" + +.PP +Stand alone surface/NSST cycle driver for the cubed-sphere grid\&. Each cubed-sphere tile runs independently on its own mpi task\&. The surface update component runs with threads\&. The NSST update component in not threaded\&. +.PP +There are three main options (which can be called in combination): +.IP "1." 4 +Update the surface fields with sfccylce (do_sfccycle = \&.true\&.) +.IP "2." 4 +Update the land states with increments read in from file (do_lndinc = \&.true\&.) Designed to work with either: 2a\&. A land increment file created by the GSI on the Gaussian grid\&. The increments are interpolated here to the model grid, using the same method as for the NST increments\&. This is currently implemented for applying soil temperature increments calculated from the EnKF assimilation of T2m (but this is not a requirement - any GSI-generated soil temperature increment file can be applied here)\&. 2b\&. A land increment file created by JEDI, on the native model grid (cube sphere tiles)\&. This is currently implemented for snow depth updates for the Noah model\&. +.IP "3." 4 +Update the NSST field, several options: +.PP +.PP +3a\&. Update the NSST TREF field using GSI increments on the Gaussian grid\&. All other NSST fields are cycled\&. Invoke this option by setting namelist variable DONST=\&.true\&. and NST_FILE to the name of the GSI increment file\&. +.PP +3b\&. Run with NSST, but postpone the TREF update\&. Here all NSST fields are cycled\&. But the NSST IFD field is used to flag points that flipped from ice to open water\&. To invoke this option, set DONST=\&.true\&. and NST_FILE='NULL'\&. +.PP +INPUT FILES: +.IP "\(bu" 2 +fngrid\&.$NNN The cubed-sphere grid file (contains grid point latitude and longitdue)\&. +.IP "\(bu" 2 +fnorog\&.$NNN The cubed-sphere orography file (contains land mask and orography)\&. +.IP "\(bu" 2 +fnbgsi\&.$NNN The cubed-sphere input sfc/nsst restart file\&. +.IP "\(bu" 2 +$NST_FILE Gaussian GSI file which contains NSST TREF increments +.IP "\(bu" 2 +$LND_SOI_FILE Gaussian GSI file which contains soil state increments +.IP "\(bu" 2 +xainc\&.$NNN The cubed-sphere increment file (contains increments calculated by JEDI on the native model grid)\&. +.PP +.PP +OUTPUT FILES: +.IP "\(bu" 2 +fnbgso\&.$NNN The updated sfc/nsst restart file\&. +.PP +.PP +NOTE: $NNN corresponds to (mpi rank + 1) +.PP +NAMELIST VARIABLE DEFINITIONS: +.PP +.IP "\(bu" 2 +IDIM,JDIM i/j dimension of a cubed-sphere tile\&. +.IP "\(bu" 2 +LUGB Unit number used in the sfccycle subprogram to read input datasets\&. +.IP "\(bu" 2 +LSOIL Number of soil layers\&. +.IP "\(bu" 2 +IY,IM,ID,IH Year, month, day, and hour of initial state\&. +.IP "\(bu" 2 +FH Forecast hour +.IP "\(bu" 2 +DELTSFC Cycling frequency in hours\&. +.IP "\(bu" 2 +IALB Use modis albedo when '1'\&. Use brigleb when '0'\&. +.IP "\(bu" 2 +USE_UFO Adjust sst and soil substrate temperature for differences between the filtered and unfiltered terrain\&. -DONST Process NSST records\&. -DO_SFCCYCLE Call sfccycle routine to update surface fields -DO_LNDINC Read in land increment files, and add increments to relevant states\&. -DO_SOI_INC Do land increments to soil states\&. -DO_SNO_INC Do land increments to snow states\&. +.IP "\(bu" 2 +ISOT Use statsgo soil type when '1'\&. Use zobler when '0'\&. +.IP "\(bu" 2 +IVEGSRC Use igbp veg type when '1'\&. Use sib when '2'\&. +.IP "\(bu" 2 +ZSEA1/2_MM When running with NSST model, this is the lower/ upper bound of depth of sea temperature\&. In whole mm\&. +.IP "\(bu" 2 +MAX_TASKS Normally, program should be run with a number of mpi tasks equal to the number of cubed-sphere tiles being processed\&. However, the current parallel scripts may over-specify the number of tasks\&. Set this variable to not process any ranks > (max_tasks-1)\&. -NST_FILE path/name of the gaussian GSI file which contains NSST TREF increments\&. -LND_SOI_FILE path/name of the gaussian GSI file which contains soil state increments\&. +.PP +.PP +-2005-02-03: Iredell for global_analysis -2014-11-30: xuli add nst_anl -2015-05-26: Hang Lei Added NEMSIO read/write function in the code -2017-08-08: Gayno Modify to work on cubed-sphere grid\&. Added processing of NSST and TREF update\&. Added mpi directives\&. -2020-02-17: Clara Draper Added soil state increments capability\&. +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NOAA/EMC +.RE +.PP +\fBReturns:\fP +.RS 4 +0 for success, error code otherwise\&. +.RE +.PP + +.PP +Definition at line 101 of file cycle\&.f90\&. +.PP +References num_parthds()\&. +.SS "subroutine SFCDRV (integer, intent(in) LUGB, integer, intent(in) IDIM, integer, intent(in) JDIM, integer, intent(in) LENSFC, integer, intent(in) LSOIL, real, intent(in) DELTSFC, integer, intent(in) IY, integer, intent(in) IM, integer, intent(in) ID, integer, intent(in) IH, real, intent(in) FH, integer, intent(in) IALB, logical, intent(in) USE_UFO, logical, intent(in) DO_NSST, logical, intent(in) DO_SFCCYCLE, logical, intent(in) DO_LNDINC, real, intent(in) ZSEA1, real, intent(in) ZSEA2, integer, intent(in) ISOT, integer, intent(in) IVEGSRC, integer, intent(in) MYRANK)" + +.PP +Driver routine for updating the surface fields\&. This program runs in two different modes: +.PP +.IP "1." 4 +Analysis mode (FH=0\&.) +.PP +This program merges climatology, analysis and forecast guess to create new surface fields\&. If analysis file is given, the program uses it if date of the analysis matches with IY,IM,ID,IH (see Note below)\&. +.IP "2." 4 +Forecast mode (FH\&.GT\&.0\&.) +.PP +This program interpolates climatology to the date corresponding to the forecast hour\&. If surface analysis file is given, for the corresponding dates, the program will use it\&. This is forcing-by-observation experiment\&. +.PP +.PP +If the date of the analysis does not match given IY,IM,ID,IH, (and FH), the program searches an old analysis by going back 6 hours, then 12 hours, then one day upto NREPMX days (parameter statement in the SUBROTINE FIXRD\&. Now defined as 15)\&. This allows the user to provide non-daily analysis to be used\&. If matching field is not found, the forecast guess will be used\&. +.PP +Variable naming convention for this program: +.PP +.IP "\(bu" 2 +OROG \&.\&. Orography +.IP "\(bu" 2 +ALB \&.\&. Snow-free albedo +.IP "\(bu" 2 +SWE \&.\&. Snow water equivalent +.IP "\(bu" 2 +ZOR \&.\&. Surface roughness length +.IP "\(bu" 2 +VET \&.\&. Vegetation type +.IP "\(bu" 2 +TSF \&.\&. Surface skin temperature\&. Sea surface temp\&. over ocean\&. +.IP "\(bu" 2 +TG3 \&.\&. Deep soil temperature (at 500cm) +.IP "\(bu" 2 +STC \&.\&. Soil temperature (LSOIL layrs) +.IP "\(bu" 2 +SMC \&.\&. Total soil moisture (LSOIL layrs) +.IP "\(bu" 2 +AIS \&.\&. Sea ice mask (0 or 1) +.IP "\(bu" 2 +CNP \&.\&. Canopy water content +.IP "\(bu" 2 +CV \&.\&. Convective cloud cover +.IP "\(bu" 2 +CVB \&.\&. Convective cloud base +.IP "\(bu" 2 +CVT \&.\&. Convective cloud top +.IP "\(bu" 2 +SLI \&.\&. LAND/SEA/SEA-ICE mask\&. (1/0/2 respectively) +.IP "\(bu" 2 +VEG \&.\&. Vegetation cover +.IP "\(bu" 2 +SOT \&.\&. Soil type +.IP "\(bu" 2 +SIH \&.\&. Sea ice thickness +.IP "\(bu" 2 +SIC \&.\&. Sea ice concentration +.IP "\(bu" 2 +SND \&.\&. Snow depth +.IP "\(bu" 2 +SLC \&.\&. Liquid soil moisture (LSOIL layers) +.IP "\(bu" 2 +VMN \&.\&. Vegetation cover minimum +.IP "\(bu" 2 +VMX \&.\&. Vegetation cover maximum +.IP "\(bu" 2 +SLP \&.\&. Slope type +.IP "\(bu" 2 +ABS \&.\&. Maximum snow albedo +.IP "\(bu" 2 +T2M \&.\&. 2m Temperature +.IP "\(bu" 2 +Q2M \&.\&. 2m Specific Humidity +.IP "\(bu" 2 +TICE \&.\&. Ice Temperature +.IP "\(bu" 2 +OROG_UF \&.\&. Orography unfiltered +.PP +.PP +Most fields have a blending coefficient\&. This controls the blending of the forecast (first guess) and interpolated climatology or analyzed fields\&. When it is equal to 1\&.0, the pure forecast is used\&. When the coefficient is equal to 0, the pure climatology or analysis is used\&. The default values are set as follows: +.PP +Variables Land Sea ---------- Surface temperature Forecast Analysis Albedo Analysis Analysis Sea-ice Analysis Analysis Snow Analysis Forecast (over sea ice) Roughness Analysis Forecast Plant resistance Analysis Analysis Soil moisture Weighted average Analysis Soil temperature Forecast Analysis Canopy waver content Forecast Forecast Convective cloud cover Forecast Forecast Convective cloud bottm Forecast Forecast Convective cloud top Forecast Forecast Vegetation greenness Analysis Analysis Vegetation type Analysis Analysis Soil type Analysis Analysis +.PP +\fBParameters:\fP +.RS 4 +\fILUGB\fP Fortran unit number uses in sfccycle subprogram to read input datasets\&. +.br +\fIIDIM\fP 'i' dimension of the cubed-sphere tile +.br +\fIJDIM\fP 'j' dimension of the cubed-sphere tile +.br +\fILENSFC\fP Total numberof points for the cubed-sphere tile +.br +\fILSOIL\fP Number of soil layers +.br +\fIDELTSFC\fP Cycling frequency in hours +.br +\fIIY\fP Year of initial state +.br +\fIIM\fP Month of initial state +.br +\fIID\fP Day of initial state +.br +\fIIH\fP Hour of initial state +.br +\fIFH\fP Forecast hour +.br +\fIIALB\fP Use modis albedo when '1'\&. Use brigleb when '0'\&. +.br +\fIUSE_UFO\fP When true, adjust SST and soil temperature for differences between the filtered and unfiltered terrain\&. +.br +\fIDO_NSST\fP When true, process NSST records\&. +.br +\fIDO_SFCCYCLE\fP Call sfccycle routine to update surface fields +.br +\fIDO_LNDINC\fP Read in land increment files, and add increments to requested states\&. +.br +\fIZSEA1\fP When running NSST model, this is the lower bound of depth of sea temperature\&. In whole mm\&. +.br +\fIZSEA2\fP When running NSST model, this is the upper bound of depth of sea temperature\&. In whole mm\&. +.br +\fIISOT\fP Use STATSGO soil type when '1'\&. Use Zobler when '0'\&. +.br +\fIIVEGSRC\fP Use IGBP vegetation type when '1'\&. Use SIB when '2'\&. +.br +\fIMYRANK\fP MPI rank number +.RE +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell, George Gayno +.RE +.PP + +.PP +Definition at line 301 of file cycle\&.f90\&. +.PP +References get_sal_clm(), and get_tf_clm()\&. +.SS "subroutine tf_thaw_set (real, dimension(nx*ny), intent(in) tf_ij, integer, dimension(nx*ny), intent(in) mask_ij, integer, intent(in) itile, integer, intent(in) jtile, real, intent(in) tice, real, intent(in) tclm, real, intent(out) tf_thaw, integer, intent(in) nx, integer, intent(in) ny, integer, intent(inout) nset_thaw_s, integer, intent(inout) nset_thaw_i, integer, intent(inout) nset_thaw_c)" + +.PP +Set the background reference temperature (tf) for points where the ice has just melted\&. +.PP +\fBParameters:\fP +.RS 4 +\fItf_ij\fP Foundation temperature background on FV3 native grids\&. +.br +\fImask_ij\fP Mask of the tile (FV3 native grids)\&. +.br +\fIitile\fP Location index in the 'i' direction\&. +.br +\fIjtile\fP Location index in the 'j' direction\&. +.br +\fItice\fP Water temperature (calulated with a salinity formula)\&. +.br +\fItclm\fP SST climatology valid at the analysis time\&. +.br +\fItf_thaw\fP Foundation temperature of thawed points\&. +.br +\fInx\fP 'i' dimension of tf_ij +.br +\fIny\fP 'j' dimension of tf_ij +.br +\fInset_thaw_s\fP Number of foundation temperature points filled via a search\&. +.br +\fInset_thaw_i\fP Number of ice points filled with a calculated tice\&. +.br +\fInset_thaw_c\fP Number of points filled with a weighted average of tice and tclm\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 1438 of file cycle\&.f90\&. +.PP +Referenced by ADJUST_NSST()\&. +.SS "real function tfreez (real salinity)" + +.PP +Compute the freezing point of water as a function of salinity\&. Constants taken from Gill, 1982\&. +.PP +\fBDate:\fP +.RS 4 +21 September 1994\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Robert Grumbine +.RE +.PP +\fBParameters:\fP +.RS 4 +\fIsalinity\fP The salinity\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +tfreez The freezing point of water\&. +.RE +.PP + +.PP +Definition at line 1953 of file cycle\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/d_conv.3 b/ver-1.11.0/global_cycle/man/man3/d_conv.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/d_conv.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/dt_cool.3 b/ver-1.11.0/global_cycle/man/man3/dt_cool.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/dt_cool.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/dtref_gaus.3 b/ver-1.11.0/global_cycle/man/man3/dtref_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/dtref_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_dim_nc.3 b/ver-1.11.0/global_cycle/man/man3/get_dim_nc.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_dim_nc.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_sal_clm.3 b/ver-1.11.0/global_cycle/man/man3/get_sal_clm.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_sal_clm.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_sal_clm_ta.3 b/ver-1.11.0/global_cycle/man/man3/get_sal_clm_ta.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_sal_clm_ta.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_tf_clm.3 b/ver-1.11.0/global_cycle/man/man3/get_tf_clm.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_tf_clm.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_tf_clm_dim.3 b/ver-1.11.0/global_cycle/man/man3/get_tf_clm_dim.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_tf_clm_dim.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_tf_clm_ta.3 b/ver-1.11.0/global_cycle/man/man3/get_tf_clm_ta.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_tf_clm_ta.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/get_tim_wei.3 b/ver-1.11.0/global_cycle/man/man3/get_tim_wei.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/get_tim_wei.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/idim_gaus.3 b/ver-1.11.0/global_cycle/man/man3/idim_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/idim_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/ifd.3 b/ver-1.11.0/global_cycle/man/man3/ifd.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/ifd.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/intp_tile.3 b/ver-1.11.0/global_cycle/man/man3/intp_tile.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/intp_tile.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/jdim_gaus.3 b/ver-1.11.0/global_cycle/man/man3/jdim_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/jdim_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/kind_dbl_prec.3 b/ver-1.11.0/global_cycle/man/man3/kind_dbl_prec.3 new file mode 100644 index 000000000..d0363d387 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/kind_dbl_prec.3 @@ -0,0 +1 @@ +.so man3/MACHINE.3 diff --git a/ver-1.11.0/global_cycle/man/man3/kind_io4.3 b/ver-1.11.0/global_cycle/man/man3/kind_io4.3 new file mode 100644 index 000000000..d0363d387 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/kind_io4.3 @@ -0,0 +1 @@ +.so man3/MACHINE.3 diff --git a/ver-1.11.0/global_cycle/man/man3/kind_io8.3 b/ver-1.11.0/global_cycle/man/man3/kind_io8.3 new file mode 100644 index 000000000..d0363d387 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/kind_io8.3 @@ -0,0 +1 @@ +.so man3/MACHINE.3 diff --git a/ver-1.11.0/global_cycle/man/man3/kind_sngl_prec.3 b/ver-1.11.0/global_cycle/man/man3/kind_sngl_prec.3 new file mode 100644 index 000000000..d0363d387 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/kind_sngl_prec.3 @@ -0,0 +1 @@ +.so man3/MACHINE.3 diff --git a/ver-1.11.0/global_cycle/man/man3/land_increments.f90.3 b/ver-1.11.0/global_cycle/man/man3/land_increments.f90.3 new file mode 100644 index 000000000..d027e1fb4 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/land_increments.f90.3 @@ -0,0 +1,299 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/land_increments.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/land_increments.f90 \- Routines for applyng land DA increments\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine, public \fBland_increments::add_increment_snow\fP (snd_inc, mask, lensfc, snd)" +.br +.RI "Add snow depth increment to model snow depth state, and limit output to be non-negative\&. " +.ti -1c +.RI "subroutine, public \fBland_increments::add_increment_soil\fP (rla, rlo, stc_state, smc_state, slc_state, stc_updated, slc_updated, soilsnow_tile, soilsnow_fg_tile, lensfc, lsoil, idim, jdim, lsm, myrank)" +.br +.RI "Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and add to the soil states\&. " +.ti -1c +.RI "subroutine, public \fBland_increments::apply_land_da_adjustments_snd\fP (lsm, lensfc, mask, swe_bck, snd_bck, snd_anl, swe_adj)" +.br +.RI "Make adjustments to dependent variables after applying land increments\&. " +.ti -1c +.RI "subroutine, public \fBland_increments::apply_land_da_adjustments_soil\fP (lsm, isot, ivegsrc, lensfc, lsoil, rsoiltype, mask, stc_bck, stc_adj, smc_adj, slc_adj, stc_updated, slc_updated, zsoil)" +.br +.RI "Make adjustments to dependent variables after applying land increments\&. " +.ti -1c +.RI "subroutine, public \fBland_increments::calculate_landinc_mask\fP (smc, swe, vtype, lensfc, veg_type_landice, mask)" +.br +.RI "Calculate soil mask for land on model grid\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer, parameter, public \fBland_increments::lsm_noah\fP =1" +.br +.RI "flag for NOAH land surface model " +.ti -1c +.RI "integer, parameter, public \fBland_increments::lsm_noahmp\fP =2" +.br +.RI "flag for NOAHMP land surface model copied from GFS_typedefs\&.F90 " +.ti -1c +.RI "integer, parameter \fBland_increments::lsoil_incr\fP =3" +.br +.RI "number of layers to add incrments to " +.ti -1c +.RI "real, parameter \fBland_increments::tfreez\fP =273\&.16" +.br +.RI "con_t0c in physcons " +.in -1c +.SH "Detailed Description" +.PP +Routines for applyng land DA increments\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper ESRL/PSL +.RE +.PP + +.PP +Definition in file \fBland_increments\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine, public land_increments::add_increment_snow (real, dimension(lensfc), intent(in) snd_inc, integer, dimension(lensfc), intent(in) mask, integer, intent(in) lensfc, real, dimension(lensfc), intent(inout) snd)" + +.PP +Add snow depth increment to model snow depth state, and limit output to be non-negative\&. JEDI increments are calculated globally, so must be screened to land-only locations here\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlensfc\fP Number of land points on this tile +.br +\fIsnd_inc\fP Soil depth increments +.br +\fImask\fP Land mask for increments +.br +\fIsnd\fP Soil depth background (in), and analysis (out) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper\&. +.RE +.PP +\fBDate:\fP +.RS 4 +August 2021 +.RE +.PP + +.PP +Definition at line 379 of file land_increments\&.f90\&. +.SS "subroutine, public land_increments::add_increment_soil (real, dimension(lensfc), intent(inout) rla, real, dimension(lensfc), intent(inout) rlo, real, dimension(lensfc, lsoil), intent(inout) stc_state, real, dimension(lensfc, lsoil), intent(inout) smc_state, real, dimension(lensfc, lsoil), intent(inout) slc_state, integer, dimension(lensfc), intent(out) stc_updated, integer, dimension(lensfc), intent(out) slc_updated, integer, dimension(lensfc), intent(in) soilsnow_tile, integer, dimension(lensfc), intent(in) soilsnow_fg_tile, integer, intent(in) lensfc, integer, intent(in) lsoil, integer, intent(in) idim, integer, intent(in) jdim, integer, intent(in) lsm, integer, intent(in) myrank)" + +.PP +Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile, and add to the soil states\&. Adapted from adjust_nsst\&. Currently only coded for soil temperature\&. Soil moisture will need the model soil moisture paramaters for regridding\&. +.PP +Does not make a temperature update if snow differ between fg and anal (allow correction of snow to address temperature error first), or if snow is present (will eventually updating of snow temperature in this case) +.PP +\fBParameters:\fP +.RS 4 +\fIRLA\fP Latitude on the cubed-sphere tile +.br +\fIRLO\fP Longitude on the cubed-sphere tile +.br +\fISTC_STATE\fP Soil temperature state vector +.br +\fISMC_STATE\fP Soil moisture (liquid plus solid) state vector +.br +\fISLC_STATE\fP Liquid soil moisture state vector +.br +\fIstc_updated\fP Integer to record whether STC in each grid cell was updated +.br +\fIslc_updated\fP Integer to record whether SMC in each grid cell was updated +.br +\fISOILSNOW_TILE\fP Land mask for increments on the cubed-sphere tile +.br +\fISOILSNOW_FG_TILE\fP First guess land mask for increments on the cubed-sphere tile +.br +\fILENSFC\fP Number of land points on a tile +.br +\fILSOIL\fP Number of soil layers +.br +\fIIDIM\fP 'I' dimension of a tile +.br +\fIJDIM\fP 'J' dimension of a tile +.br +\fIlsm\fP Integer flag indicating which land model is used (1-Noah, 2-Noah-MP) +.br +\fIMYRANK\fP MPI rank number +.RE +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper\&. +.RE +.PP +\fBDate:\fP +.RS 4 +March 2021 +.RE +.PP + +.PP +Definition at line 57 of file land_increments\&.f90\&. +.SS "subroutine, public land_increments::apply_land_da_adjustments_snd (integer, intent(in) lsm, integer, intent(in) lensfc, integer, dimension(lensfc), intent(in) mask, real, dimension(lensfc), intent(in) swe_bck, real, dimension(lensfc), intent(in) snd_bck, real, dimension(lensfc), intent(in) snd_anl, real, dimension(lensfc), intent(inout) swe_adj)" + +.PP +Make adjustments to dependent variables after applying land increments\&. These adjustments are model-dependent, and are currently only coded for Noah LSM\&. Here: adjust SWE to be consistent with updated SND, using snow density from the forecast\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlsm\fP Integer code for the LSM +.br +\fIlensfc\fP Number of land points for this tile +.br +\fImask\fP Land mask for increments +.br +\fIswe_bck\fP Background SWE +.br +\fIsnd_bck\fP Background snow depth +.br +\fIsnd_anl\fP Analysis snow depth +.br +\fIswe_adj\fP SWE to be adjusted +.RE +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper +.RE +.PP +\fBDate:\fP +.RS 4 +August 2021 +.RE +.PP + +.PP +Definition at line 627 of file land_increments\&.f90\&. +.SS "subroutine, public land_increments::apply_land_da_adjustments_soil (integer, intent(in) lsm, integer, intent(in) isot, integer, intent(in) ivegsrc, integer, intent(in) lensfc, integer, intent(in) lsoil, real, dimension(lensfc), intent(in) rsoiltype, integer, dimension(lensfc), intent(in) mask, real, dimension(lensfc, lsoil), intent(in) stc_bck, real, dimension(lensfc, lsoil), intent(inout) stc_adj, real, dimension(lensfc,lsoil), intent(inout) smc_adj, real, dimension(lensfc,lsoil), intent(inout) slc_adj, integer, dimension(lensfc), intent(in) stc_updated, integer, dimension(lensfc), intent(in) slc_updated, real(kind=4), dimension(lsoil), intent(in) zsoil)" + +.PP +Make adjustments to dependent variables after applying land increments\&. These adjustments are model-dependent, and are currently only coded if full for Noah LSM\&. For Noah LSM, copy relevent code blocks from model code (same as has been done in sfc_sub)\&. For Noah-MP, have inserted place-holders to simply reset the model +.br + variables back to the analysis if adjustments are needed\&. Later, will replace this with appropriate adjustmenets (in summary, for now we do not make STC updates if soils are frozen, and are also not applying the appropriate max\&. values for SMC)\&. Here: adjust (frozen) soil moisture to be consistent with changes in soil temperature from DA +.PP +\fBParameters:\fP +.RS 4 +\fIlsm\fP Integer code for the LSM +.br +\fIisot\fP Integer code for the soil type data set +.br +\fIivegsrc\fP Integer code for the vegetation type data set +.br +\fIlensfc\fP Number of land points for this tile +.br +\fIlsoil\fP Number of soil layers +.br +\fIrsoiltype\fP Array of input soil types +.br +\fImask\fP Mask indicating surface type +.br +\fIstc_bck\fP Background soil temperature states +.br +\fIstc_adj\fP Analysis soil temperature states +.br +\fIsmc_adj\fP Analysis soil moisture states +.br +\fIslc_adj\fP Analysis liquid soil moisture states +.br +\fIstc_updated\fP Integer to record whether STC in each grid cell was updated +.br +\fIslc_updated\fP Integer to record whether SLC in each grid cell was updated +.br +\fIzsoil\fP Depth of bottom of each soil layer +.RE +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper +.RE +.PP +\fBDate:\fP +.RS 4 +April 2021 +.RE +.PP + +.PP +Definition at line 468 of file land_increments\&.f90\&. +.SS "subroutine, public land_increments::calculate_landinc_mask (real, dimension(lensfc), intent(in) smc, real, dimension(lensfc), intent(in) swe, real, dimension(lensfc), intent(in) vtype, integer, intent(in) lensfc, integer, intent(in) veg_type_landice, integer, dimension(lensfc), intent(out) mask)" + +.PP +Calculate soil mask for land on model grid\&. Output is 1 - soil, 2 - snow-covered, 0 - land ice, -1 not land\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlensfc\fP Number of land points for this tile +.br +\fIveg_type_landice\fP Value of vegetion class that indicates land-ice +.br +\fIsmc\fP Model soil moisture\&. +.br +\fIswe\fP Model snow water equivalent +.br +\fIvtype\fP Model vegetation type +.br +\fImask\fP Land mask for increments +.RE +.PP +\fBAuthor:\fP +.RS 4 +Clara Draper +.RE +.PP +\fBDate:\fP +.RS 4 +March 2021 +.RE +.PP + +.PP +Definition at line 409 of file land_increments\&.f90\&. +.SH "Variable Documentation" +.PP +.SS "integer, parameter, public land_increments::lsm_noah =1" + +.PP +flag for NOAH land surface model +.PP +Definition at line 16 of file land_increments\&.f90\&. +.SS "integer, parameter, public land_increments::lsm_noahmp =2" + +.PP +flag for NOAHMP land surface model copied from GFS_typedefs\&.F90 +.PP +Definition at line 17 of file land_increments\&.f90\&. +.SS "integer, parameter land_increments::lsoil_incr =3\fC [private]\fP" + +.PP +number of layers to add incrments to +.PP +Definition at line 21 of file land_increments\&.f90\&. +.SS "real, parameter land_increments::tfreez =273\&.16\fC [private]\fP" + +.PP +con_t0c in physcons +.PP +Definition at line 23 of file land_increments\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/lsm_noah.3 b/ver-1.11.0/global_cycle/man/man3/lsm_noah.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/lsm_noah.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/lsm_noahmp.3 b/ver-1.11.0/global_cycle/man/man3/lsm_noahmp.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/lsm_noahmp.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/lsoil_incr.3 b/ver-1.11.0/global_cycle/man/man3/lsoil_incr.3 new file mode 100644 index 000000000..4af6ef99a --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/lsoil_incr.3 @@ -0,0 +1 @@ +.so man3/land_increments.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/machine.f90.3 b/ver-1.11.0/global_cycle/man/man3/machine.f90.3 new file mode 100644 index 000000000..5092b13b5 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/machine.f90.3 @@ -0,0 +1,54 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/machine.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/machine.f90 \- Holds machine dependent constants for global_cycle\&. + +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fBMACHINE\fP" +.br +.RI "Holds machine dependent constants for global_cycle\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer, parameter \fBMACHINE::kind_dbl_prec\fP = 8" +.br +.RI "Kind type for 8-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBMACHINE::kind_io4\fP = kind_sngl_prec" +.br +.RI "Kind type for 4-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBMACHINE::kind_io8\fP = kind_dbl_prec" +.br +.RI "Kind type for 8-byte float point variables\&. " +.ti -1c +.RI "integer, parameter \fBMACHINE::kind_sngl_prec\fP = 4" +.br +.RI "Kind type for 4-byte float point variables\&. " +.in -1c +.SH "Detailed Description" +.PP +Holds machine dependent constants for global_cycle\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NOAA/EMC +.RE +.PP + +.PP +Definition in file \fBmachine\&.f90\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README.3 b/ver-1.11.0/global_cycle/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README.3 new file mode 100644 index 000000000..51ed6c6aa --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README.3 @@ -0,0 +1,8 @@ +.TH "md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_global_cycle.fd_docs_README \- README +This program updates the GFS surface conditions using external snow and sea ice analyses\&. It updates monthly climatological fields such as plant greenness fraction and albedo\&. +.PP +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/ver-1.11.0/global_cycle/man/man3/nc_check.3 b/ver-1.11.0/global_cycle/man/man3/nc_check.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/nc_check.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/nsst_water_reset.3 b/ver-1.11.0/global_cycle/man/man3/nsst_water_reset.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/nsst_water_reset.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/num_parthds.3 b/ver-1.11.0/global_cycle/man/man3/num_parthds.3 new file mode 100644 index 000000000..50c09445c --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/num_parthds.3 @@ -0,0 +1 @@ +.so man3/num_parthds.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/num_parthds.f90.3 b/ver-1.11.0/global_cycle/man/man3/num_parthds.f90.3 new file mode 100644 index 000000000..78ab1b72c --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/num_parthds.f90.3 @@ -0,0 +1,56 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/num_parthds.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/num_parthds.f90 \- Return number of threads\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "integer function \fBnum_parthds\fP ()" +.br +.RI "Return the number of omp threads\&. " +.in -1c +.SH "Detailed Description" +.PP +Return number of threads\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NCEP/EMC +.RE +.PP + +.PP +Definition in file \fBnum_parthds\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "integer function num_parthds ()" + +.PP +Return the number of omp threads\&. +.PP +\fBReturns:\fP +.RS 4 +num_parthds The number of threads\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell NCEP/EMC +.RE +.PP + +.PP +Definition at line 10 of file num_parthds\&.f90\&. +.PP +Referenced by SFC_DRV()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/qrain.3 b/ver-1.11.0/global_cycle/man/man3/qrain.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/qrain.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/read_salclm_gfs_nc.3 b/ver-1.11.0/global_cycle/man/man3/read_salclm_gfs_nc.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/read_salclm_gfs_nc.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/read_tf_clim_grb.3 b/ver-1.11.0/global_cycle/man/man3/read_tf_clim_grb.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/read_tf_clim_grb.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/read_write_data.f90.3 b/ver-1.11.0/global_cycle/man/man3/read_write_data.f90.3 new file mode 100644 index 000000000..e725d40a6 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/read_write_data.f90.3 @@ -0,0 +1,188 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/read_write_data.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/read_write_data.f90 \- Contains utility routines that read and write data\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBREAD_WRITE_DATA::NSST_DATA\fP" +.br +.in -1c +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fBREAD_WRITE_DATA\fP" +.br +.RI "This module contains routines that read and write data\&. " +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::get_dim_nc\fP (filename, nlat, nlon)" +.br +.RI "Get the i/j dimensions of the data from a NetCDF file\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::get_tf_clm_dim\fP (file_sst, mlat_sst, mlon_sst)" +.br +.RI "Get the i/j dimensions of RTG SST climatology file\&. " +.ti -1c +.RI "subroutine \fBREAD_WRITE_DATA::nc_check\fP (status)" +.br +.RI "Check the NetCDF status code\&. " +.ti -1c +.RI "subroutine \fBREAD_WRITE_DATA::NETCDF_ERR\fP (ERR, STRING)" +.br +.RI "If a NetCDF call returns an error, print out a user-supplied message and the NetCDF library message\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::READ_DATA\fP (LSOIL, LENSFC, DO_NSST, 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, SLPFCS, ABSFCS, T2M, Q2M, SLMASK, ZSOIL, NSST)" +.br +.RI "Read the first guess surface records and nsst records (if selected) for a single cubed-sphere tile\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::READ_GSI_DATA\fP (GSI_FILE, FILE_TYPE, LSOIL)" +.br +.RI "Read increment file from the GSI containing either the foundation temperature increments and mask, or the soil increments\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::READ_LAT_LON_OROG\fP (RLA, RLO, OROG, OROG_UF, TILE_NUM, IDIM, JDIM, IJDIM)" +.br +.RI "Read latitude and longitude for the cubed-sphere tile from the 'grid' file\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::read_salclm_gfs_nc\fP (filename, sal, xlats, xlons, nlat, nlon, itime)" +.br +.RI "Read the woa05 salinity monthly climatology file\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::read_tf_clim_grb\fP (file_sst, sst, rlats_sst, rlons_sst, mlat_sst, mlon_sst, mon)" +.br +.RI "Read a GRIB1 sst climatological analysis file\&. " +.ti -1c +.RI "subroutine \fBREAD_WRITE_DATA::remove_checksum\fP (ncid, id_var)" +.br +.RI "Remove the checksum attribute from a netcdf record\&. " +.ti -1c +.RI "subroutine, public \fBREAD_WRITE_DATA::write_data\fP (lensfc, idim, jdim, lsoil, do_nsst, 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)" +.br +.RI "Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf)\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "real, dimension(:,:), allocatable, public \fBREAD_WRITE_DATA::dtref_gaus\fP" +.br +.RI "GSI foundation temperature increment on the gaussian grid\&. " +.ti -1c +.RI "integer, public \fBREAD_WRITE_DATA::idim_gaus\fP" +.br +.RI "'i' dimension of GSI gaussian grid\&. " +.ti -1c +.RI "integer, public \fBREAD_WRITE_DATA::jdim_gaus\fP" +.br +.RI "'j' dimension of GSI gaussian grid\&. " +.ti -1c +.RI "real, dimension(:,:,:), allocatable, public \fBREAD_WRITE_DATA::slc_inc_gaus\fP" +.br +.RI "GSI soil moisture increments on the gaussian grid\&. " +.ti -1c +.RI "integer, dimension(:,:), allocatable, public \fBREAD_WRITE_DATA::slmsk_gaus\fP" +.br +.RI "GSI land mask on the gaussian grid\&. " +.ti -1c +.RI "integer, dimension(:,:), allocatable, public \fBREAD_WRITE_DATA::soilsnow_gaus\fP" +.br +.RI "GSI soil / snow mask for land on the gaussian grid\&. " +.ti -1c +.RI "real, dimension(:,:,:), allocatable, public \fBREAD_WRITE_DATA::stc_inc_gaus\fP" +.br +.RI "GSI soil temperature increments on the gaussian grid\&. " +.in -1c +.SH "Detailed Description" +.PP +Contains utility routines that read and write data\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Xu Li, Hang Lei, George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition in file \fBread_write_data\&.f90\fP\&. +.SH "Data Type Documentation" +.PP +.SH "type READ_WRITE_DATA::NSST_DATA" +.PP +Definition at line 16 of file read_write_data\&.f90\&. +.PP +\fBData Fields:\fP +.RS 4 +real, dimension(:), allocatable \fIc_0\fP +.br +.PP +real, dimension(:), allocatable \fIc_d\fP +.br +.PP +real, dimension(:), allocatable \fId_conv\fP +.br +.PP +real, dimension(:), allocatable \fIdt_cool\fP +.br +.PP +real, dimension(:), allocatable \fIifd\fP +.br +.PP +real, dimension(:), allocatable \fIqrain\fP +.br +.PP +real, dimension(:), allocatable \fItfinc\fP +.br +.PP +real, dimension(:), allocatable \fItref\fP +.br +.PP +real, dimension(:), allocatable \fIw_0\fP +.br +.PP +real, dimension(:), allocatable \fIw_d\fP +.br +.PP +real, dimension(:), allocatable \fIxs\fP +.br +.PP +real, dimension(:), allocatable \fIxt\fP +.br +.PP +real, dimension(:), allocatable \fIxtts\fP +.br +.PP +real, dimension(:), allocatable \fIxu\fP +.br +.PP +real, dimension(:), allocatable \fIxv\fP +.br +.PP +real, dimension(:), allocatable \fIxz\fP +.br +.PP +real, dimension(:), allocatable \fIxzts\fP +.br +.PP +real, dimension(:), allocatable \fIz_c\fP +.br +.PP +real, dimension(:), allocatable \fIzm\fP +.br +.PP +.RE +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/remove_checksum.3 b/ver-1.11.0/global_cycle/man/man3/remove_checksum.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/remove_checksum.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/slc_inc_gaus.3 b/ver-1.11.0/global_cycle/man/man3/slc_inc_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/slc_inc_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/slmsk_gaus.3 b/ver-1.11.0/global_cycle/man/man3/slmsk_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/slmsk_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/soilsnow_gaus.3 b/ver-1.11.0/global_cycle/man/man3/soilsnow_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/soilsnow_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/stc_inc_gaus.3 b/ver-1.11.0/global_cycle/man/man3/stc_inc_gaus.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/stc_inc_gaus.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/tf_thaw_set.3 b/ver-1.11.0/global_cycle/man/man3/tf_thaw_set.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/tf_thaw_set.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/tfinc.3 b/ver-1.11.0/global_cycle/man/man3/tfinc.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/tfinc.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/tfreez.3 b/ver-1.11.0/global_cycle/man/man3/tfreez.3 new file mode 100644 index 000000000..914435a44 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/tfreez.3 @@ -0,0 +1 @@ +.so man3/cycle.f90.3 diff --git a/ver-1.11.0/global_cycle/man/man3/tref.3 b/ver-1.11.0/global_cycle/man/man3/tref.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/tref.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/utils.3 b/ver-1.11.0/global_cycle/man/man3/utils.3 new file mode 100644 index 000000000..02dbdabe1 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/utils.3 @@ -0,0 +1,76 @@ +.TH "utils" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +utils \- Module containing utility routines\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine, public \fBREMAP_COEF\fP (is, ie, js, je, im, jm, lon, lat, id1, id2, jdc, s2c, agrid)" +.br +.RI "Generate the weights and index of the grids used in the bilinear interpolation\&. " +.in -1c +.SH "Detailed Description" +.PP +Module containing utility routines\&. + + +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.SH "Function/Subroutine Documentation" +.PP +.SS "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)" + +.PP +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\&. +.PP +\fBParameters:\fP +.RS 4 +\fIis\fP Start index in x-direction of the source array\&. +.br +\fIie\fP End index in x-direction of the source array\&. +.br +\fIjs\fP Start index in y-direction of the source array\&. +.br +\fIje\fP End index in y-direction of the source array\&. +.br +\fIim\fP x-dimension of the source array\&. +.br +\fIjm\fP y-dimension of the source array\&. +.br +\fIlon\fP 1-d array of longitudes (in radians)\&. +.br +\fIlat\fP 1-d array of latitudes (in radians)\&. +.br +\fIagrid\fP 2-d array for lon [agrid(:,:,1)] & lat [agrid(:,:,2)] (in radians)\&. +.br +\fIs2c\fP Bi-linear interpolation weights of the four nearby grids of the source array\&. +.br +\fIid1\fP Index 1 in x-direction of the nearby grids of the source array\&. +.br +\fIid2\fP Index 2 in x-direction of the nearby grids of the source array\&. +.br +\fIjdc\fP Index in y-direction of the nearby grid of the source array\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Xu Li +.RE +.PP + +.PP +Definition at line 40 of file utils\&.F90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/utils.F90.3 b/ver-1.11.0/global_cycle/man/man3/utils.F90.3 new file mode 100644 index 000000000..1f6a91489 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/utils.F90.3 @@ -0,0 +1,42 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/utils.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "global_cycle" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/utils.F90 \- Utility routines\&. + +.SH SYNOPSIS +.br +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "module \fButils\fP" +.br +.RI "Module containing utility routines\&. " +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine, public \fButils::REMAP_COEF\fP (is, ie, js, je, im, jm, lon, lat, id1, id2, jdc, s2c, agrid)" +.br +.RI "Generate the weights and index of the grids used in the bilinear interpolation\&. " +.in -1c +.SH "Detailed Description" +.PP +Utility routines\&. + + +.PP +\fBAuthor:\fP +.RS 4 +George Gayno NOAA/EMC +.RE +.PP + +.PP +Definition in file \fButils\&.F90\fP\&. +.SH "Author" +.PP +Generated automatically by Doxygen for global_cycle from the source code\&. diff --git a/ver-1.11.0/global_cycle/man/man3/w_0.3 b/ver-1.11.0/global_cycle/man/man3/w_0.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/w_0.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/w_d.3 b/ver-1.11.0/global_cycle/man/man3/w_d.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/w_d.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/write_data.3 b/ver-1.11.0/global_cycle/man/man3/write_data.3 new file mode 100644 index 000000000..9f0ebfbea --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/write_data.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xs.3 b/ver-1.11.0/global_cycle/man/man3/xs.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xs.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xt.3 b/ver-1.11.0/global_cycle/man/man3/xt.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xt.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xtts.3 b/ver-1.11.0/global_cycle/man/man3/xtts.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xtts.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xu.3 b/ver-1.11.0/global_cycle/man/man3/xu.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xu.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xv.3 b/ver-1.11.0/global_cycle/man/man3/xv.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xv.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xz.3 b/ver-1.11.0/global_cycle/man/man3/xz.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xz.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/xzts.3 b/ver-1.11.0/global_cycle/man/man3/xzts.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/xzts.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/z_c.3 b/ver-1.11.0/global_cycle/man/man3/z_c.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/z_c.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/man/man3/zm.3 b/ver-1.11.0/global_cycle/man/man3/zm.3 new file mode 100644 index 000000000..a3f5d7a50 --- /dev/null +++ b/ver-1.11.0/global_cycle/man/man3/zm.3 @@ -0,0 +1 @@ +.so man3/READ_WRITE_DATA_NSST_DATA.3 diff --git a/ver-1.11.0/global_cycle/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html b/ver-1.11.0/global_cycle/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html new file mode 100644 index 000000000..92e17ec4f --- /dev/null +++ b/ver-1.11.0/global_cycle/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html @@ -0,0 +1,106 @@ + + + + + + + +global_cycle: README + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    README
    +
    +
    +

    This program updates the GFS surface conditions using external snow and sea ice analyses. It updates monthly climatological fields such as plant greenness fraction and albedo.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/menu.js b/ver-1.11.0/global_cycle/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/global_cycle/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/global_cycle/menudata.js b/ver-1.11.0/global_cycle/menudata.js new file mode 100644 index 000000000..32cae40cf --- /dev/null +++ b/ver-1.11.0/global_cycle/menudata.js @@ -0,0 +1,39 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html"}, +{text:"Variables",url:"namespacemembers_vars.html"}]}]}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/global_cycle/namespaceMACHINE.html b/ver-1.11.0/global_cycle/namespaceMACHINE.html new file mode 100644 index 000000000..41c638c39 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaceMACHINE.html @@ -0,0 +1,202 @@ + + + + + + + +global_cycle: MACHINE Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    MACHINE Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Holds machine dependent constants for global_cycle.

    +
    Author
    Mark Iredell NOAA/EMC
    +

    Variable Documentation

    + +

    ◆ kind_dbl_prec

    + +
    +
    + + + + +
    integer, parameter MACHINE::kind_dbl_prec = 8
    +
    + +

    Kind type for 8-byte float point variables.

    + +

    Definition at line 15 of file machine.f90.

    + +
    +
    + +

    ◆ kind_io4

    + +
    +
    + + + + +
    integer, parameter MACHINE::kind_io4 = kind_sngl_prec
    +
    + +

    Kind type for 4-byte float point variables.

    + +

    Definition at line 13 of file machine.f90.

    + +
    +
    + +

    ◆ kind_io8

    + +
    +
    + + + + +
    integer, parameter MACHINE::kind_io8 = kind_dbl_prec
    +
    + +

    Kind type for 8-byte float point variables.

    + +

    Definition at line 17 of file machine.f90.

    + +
    +
    + +

    ◆ kind_sngl_prec

    + +
    +
    + + + + +
    integer, parameter MACHINE::kind_sngl_prec = 4
    +
    + +

    Kind type for 4-byte float point variables.

    + +

    Definition at line 11 of file machine.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.html b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.html new file mode 100644 index 000000000..4094ed5d9 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.html @@ -0,0 +1,1528 @@ + + + + + + + +global_cycle: READ_WRITE_DATA Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    READ_WRITE_DATA Module Reference
    +
    +
    + +

    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, 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, 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)
     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, 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)
     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...
     
    +

    Detailed Description

    +

    This module contains routines that read and write data.

    +
    Author
    Xu Li, Hang Lei, George Gayno NOAA/EMC
    +

    Data Type Documentation

    + +

    ◆ READ_WRITE_DATA::NSST_DATA

    + +
    +
    + + + + +
    type READ_WRITE_DATA::NSST_DATA
    +
    +
    +

    Definition at line 16 of file read_write_data.f90.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +real, dimension(:), allocatable +c_0 +
    +real, dimension(:), allocatable +c_d +
    +real, dimension(:), allocatable +d_conv +
    +real, dimension(:), allocatable +dt_cool +
    +real, dimension(:), allocatable +ifd +
    +real, dimension(:), allocatable +qrain +
    +real, dimension(:), allocatable +tfinc +
    +real, dimension(:), allocatable +tref +
    +real, dimension(:), allocatable +w_0 +
    +real, dimension(:), allocatable +w_d +
    +real, dimension(:), allocatable +xs +
    +real, dimension(:), allocatable +xt +
    +real, dimension(:), allocatable +xtts +
    +real, dimension(:), allocatable +xu +
    +real, dimension(:), allocatable +xv +
    +real, dimension(:), allocatable +xz +
    +real, dimension(:), allocatable +xzts +
    +real, dimension(:), allocatable +z_c +
    +real, dimension(:), allocatable +zm +
    + +
    +
    +

    Function/Subroutine Documentation

    + +

    ◆ get_dim_nc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]filenameName 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.
    +
    +
    +
    Author
    Xu Li NOAA/EMC
    + +

    Definition at line 1820 of file read_write_data.f90.

    + +
    +
    + +

    ◆ get_tf_clm_dim()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]file_sstFile name of the sst file.
    [in]mlat_sstThe 'j' dimension of the data.
    [in]mlon_sstThe 'i' dimension of the data.
    +
    +
    +
    Author
    Xu Li NOAA/EMC
    +
    Date
    2019-03-13
    + +

    Definition at line 1685 of file read_write_data.f90.

    + +
    +
    + +

    ◆ nc_check()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]statusNetCDF status code.
    +
    +
    +
    Author
    Xu Li NOAA/EMC
    + +

    Definition at line 1857 of file read_write_data.f90.

    + +
    +
    + +

    ◆ NETCDF_ERR()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]ERRNetCDF error code.
    [in]STRINGUser-defined error message.
    +
    +
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 814 of file read_write_data.f90.

    + +
    +
    + +

    ◆ READ_DATA()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public READ_WRITE_DATA::READ_DATA (integer, intent(in) LSOIL,
    integer, intent(in) LENSFC,
    logical, intent(in) DO_NSST,
    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), 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.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]LSOILNumber of soil layers.
    [in]LENSFCTotal number of points on a tile.
    [in]DO_NSSTWhen true, nsst fields are read.
    [in]INC_FILEWhen true, read from an increment file. False reads from a restart file.
    [out]IS_NOAHMPWhen true, process for the Noah-MP LSM.
    [out]TSFFCSSkin Temperature.
    [out]SMCFCSTotal volumetric soil moisture.
    [out]SWEFCSSnow water equivalent.
    [out]STCFCSSoil temperature.
    [out]TG3FCSSoil substrate temperature.
    [out]ZORFCSRoughness length.
    [out]CVFCSCloud cover.
    [out]CVBFCSCloud base.
    [out]CVTFCSCloud top.
    [out]ALBFCSSnow-free albedo.
    [out]SLIFCSLand-sea mask including ice flag.
    [out]VEGFCSVegetation greenness.
    [out]CNPFCSPlant canopy moisture content.
    [out]F10Mlog((z0+10)/z0). See model routine sfc_diff.f for details.
    [out]VETFCSVegetation type.
    [out]SOTFCSSoil type.
    [out]ALFFCSFractional coverage for strong/weak zenith angle dependent albedo.
    [out]USTARFriction velocity.
    [out]FMMlog((z0+z1)/z0). See model routine sfc_diff.f for details.
    [out]FHHlog((ztmax+z1)/ztmax). See model routine sfc_diff.f for details.
    [out]SIHFCSSea ice depth.
    [out]SICFCSSea ice concentration.
    [out]SITFCSSea ice temperature.
    [out]TPRCPPrecipitation.
    [out]SRFLAGSnow/rain flag.
    [out]SNDFCSSnow depth.
    [out]VMNFCSMinimum vegetation greenness.
    [out]VMXFCSMaximum vegetation greenness.
    [out]SLCFCSLiquid portion of volumetric soil moisture.
    [out]SLPFCSSlope type.
    [out]ABSFCSMaximum snow albedo.
    [out]T2MTwo-meter air temperature.
    [out]Q2MTwo-meter specific humidity.
    [out]SLMASKLand-sea mask without ice flag.
    [out]ZSOILSoil layer thickness.
    [out]NSSTData structure containing nsst fields.
    +
    +
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 1030 of file read_write_data.f90.

    + +
    +
    + +

    ◆ READ_GSI_DATA()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]GSI_FILEPath/name of the GSI file to be read.
    [in]FILE_TYPEfile-type to be read in, 'NST' or 'LND'.
    [in]LSOILNumber of model soil levels.
    +
    +
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 847 of file read_write_data.f90.

    + +
    +
    + +

    ◆ READ_LAT_LON_OROG()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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 
    )
    +
    + +

    Read latitude and longitude for the cubed-sphere tile from the 'grid' file.

    +

    Read the filtered and unfiltered orography from the 'orography' file.

    +
    Parameters
    + + + + + + + + + +
    [in]IDIM'i' dimension of cubed-sphere tile.
    [in]JDIM'j' dimension of cubed-sphere tile.
    [in]IJDIMTotal number of points on the cubed-sphere tile.
    [out]RLALatitude on the cubed-sphere tile.
    [out]RLOLongitude on the cubed-sphere tile.
    [out]OROGFiltered orography.
    [out]OROG_UFUnfiltered orography.
    [out]TILE_NUMCubed-sphere tile number
    +
    +
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 681 of file read_write_data.f90.

    + +
    +
    + +

    ◆ read_salclm_gfs_nc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]filenameThe name of the climatology file.
    [in]nlatThe 'j' dimension of the data in the file.
    [in]nlonThe 'i' dimension of the data in the file.
    [in]itimeThe monthly record to read.
    [out]xlatsThe latitude of the data points.
    [out]xlonsThe longitude of the data points.
    [out]salThe salinity.
    +
    +
    +
    Author
    Xu Li NOAA/EMC
    + +

    Definition at line 1744 of file read_write_data.f90.

    + +
    +
    + +

    ◆ read_tf_clim_grb()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Note
    The data is stored from north to south, but this routine flips the poles.
    +
    Parameters
    + + + + + + + + +
    [in]file_sstFile name of the sst file.
    [in]mlat_sst'j' dimension of the sst data.
    [in]mlon_sst'i' dimension of the sst data.
    [in]monThe month of the year.
    [out]sstThe sst analysis data.
    [out]rlats_sstThe latitudes of the sst data points.
    [out]rlons_sstThe longitudes of the sst data points.
    +
    +
    +
    Author
    Xu Li NOAA/EMC
    +
    Date
    2019-03-13
    + +

    Definition at line 1543 of file read_write_data.f90.

    + +
    +
    + +

    ◆ remove_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine READ_WRITE_DATA::remove_checksum (integer, intent(in) ncid,
    integer, intent(in) id_var 
    )
    +
    + +

    Remove the checksum attribute from a netcdf record.

    +
    Parameters
    + + + +
    [in]ncidnetcdf file id
    [in]id_varnetcdf variable id.
    +
    +
    +
    Author
    George Gayno NCEP/EMC
    + +

    Definition at line 642 of file read_write_data.f90.

    + +
    +
    + +

    ◆ 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,
    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 
    )
    +
    + +

    Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf).

    +
    Note
    The model restart files contain an additional snow field - snow cover (snocvr). That field is required for bit identical reproducability. If that record does not exist, the model will compute it as an initialization step. Because this program does not contain the snow cover algorithm, it will let the model compute it.
    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]idim'i' dimension of a tile.
    [in]jdim'j' dimension of a tile.
    [in]lensfcTotal number of points on a tile.
    [in]lsoilNumber of soil layers.
    [in]do_nsstWhen true, nsst fields were processed.
    [in]nsstData structure containing nsst fields.
    [in]slifcsLand-sea mask.
    [in]tsffcsSkin temperature.
    [in]vegfcsVegetation greenness.
    [in]swefcsSnow water equivalent
    [in]tg3fcsSoil substrate temperature.
    [in]zorfcsRoughness length.
    [in]albfcsSnow-free albedo.
    [in]alffcsFractional coverage for strong/weak zenith angle dependent albedo.
    [in]cnpfcsPlant canopy moisture content.
    [in]f10mlog((z0+10)/z0). See model routine sfc_diff.f for details.
    [in]t2mTwo-meter air temperature.
    [in]q2mTwo-meter specific humidity.
    [in]vetfcsVegetation type.
    [in]sotfcsSoil type.
    [in]ustarFriction velocity.
    [in]fmmlog((z0+z1)/z0). See model routine sfc_diff.f for details.
    [in]fhhlog(ztmax+z1)/ztmax). See model routine sfc_diff.f for details.
    [in]sicfcsSea ice concentraton.
    [in]sihfcsSea ice depth.
    [in]sitfcsSea ice temperature.
    [in]tprcpPrecipitation.
    [in]srflagSnow/rain flag.
    [in]swdfcsPhysical snow depth.
    [in]vmnfcsMinimum vegetation greenness.
    [in]vmxfcsMaximum vegetation greenness.
    [in]slpfcsSlope type.
    [in]absfcsMaximum snow albedo.
    [in]slcfcsLiquid portion of volumetric soil moisture.
    [in]smcfcsTotal volumetric soil moisture.
    [in]stcfcsSoil temperature.
    +
    +
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 128 of file read_write_data.f90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ dtref_gaus

    + +
    +
    + + + + +
    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.

    + +
    +
    + +

    ◆ idim_gaus

    + +
    +
    + + + + +
    integer, public READ_WRITE_DATA::idim_gaus
    +
    + +

    'i' dimension of GSI gaussian grid.

    + +

    Definition at line 38 of file read_write_data.f90.

    + +
    +
    + +

    ◆ jdim_gaus

    + +
    +
    + + + + +
    integer, public READ_WRITE_DATA::jdim_gaus
    +
    + +

    'j' dimension of GSI gaussian grid.

    + +

    Definition at line 40 of file read_write_data.f90.

    + +
    +
    + +

    ◆ slc_inc_gaus

    + +
    +
    + + + + +
    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.

    + +
    +
    + +

    ◆ slmsk_gaus

    + +
    +
    + + + + +
    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.

    + +
    +
    + +

    ◆ soilsnow_gaus

    + +
    +
    + + + + +
    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.

    + +
    +
    + +

    ◆ stc_inc_gaus

    + +
    +
    + + + + +
    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.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.js b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.js new file mode 100644 index 000000000..9adc25419 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA.js @@ -0,0 +1,4 @@ +var namespaceREAD__WRITE__DATA = +[ + [ "NSST_DATA", "namespaceREAD__WRITE__DATA.html#structREAD__WRITE__DATA_1_1NSST__DATA", "namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup.js b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup.js new file mode 100644 index 000000000..79d95deb4 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup.js @@ -0,0 +1,22 @@ +var namespaceREAD__WRITE__DATA_structREAD__WRITE__DATA_1_1NSST__DATA_dup = +[ + [ "c_0", "namespaceREAD__WRITE__DATA.html#a7b2d3b3014fa53d0836f1ae17ddeed89", null ], + [ "c_d", "namespaceREAD__WRITE__DATA.html#ab4f1dcd0aec7100361b373c9b5b882bc", null ], + [ "d_conv", "namespaceREAD__WRITE__DATA.html#abc2325d488f1184557649ad480162135", null ], + [ "dt_cool", "namespaceREAD__WRITE__DATA.html#a61fdbac3f71b38ce15a9219bc0aeb3c6", null ], + [ "ifd", "namespaceREAD__WRITE__DATA.html#a2f346b82b3d2bc1a88409a3ac175178f", null ], + [ "qrain", "namespaceREAD__WRITE__DATA.html#a24169a32ee00e78dfbc806a6c9ed32db", null ], + [ "tfinc", "namespaceREAD__WRITE__DATA.html#a9a45609a0ef5bb37c92c5f0248a04dbb", null ], + [ "tref", "namespaceREAD__WRITE__DATA.html#a51b07063777e0f9679914c07b19dc1e1", null ], + [ "w_0", "namespaceREAD__WRITE__DATA.html#a98a47ecea6c536d06bb7c0a88cb3668e", null ], + [ "w_d", "namespaceREAD__WRITE__DATA.html#a4425091a0adba9b27d9ed03ab74aed79", null ], + [ "xs", "namespaceREAD__WRITE__DATA.html#aade82c4d560fcfb9443fa79f2d435f95", null ], + [ "xt", "namespaceREAD__WRITE__DATA.html#ab08458456424f99633f69de973760c83", null ], + [ "xtts", "namespaceREAD__WRITE__DATA.html#a6201244e617b7e8b2d250f53f1ced05d", null ], + [ "xu", "namespaceREAD__WRITE__DATA.html#acb82a0ff9a56a75836cba7cac323c791", null ], + [ "xv", "namespaceREAD__WRITE__DATA.html#adb1b615a113f57cf099dbc2d5d2ff532", null ], + [ "xz", "namespaceREAD__WRITE__DATA.html#a30160793caf4bd98a96dbbbe2ad0f7c9", null ], + [ "xzts", "namespaceREAD__WRITE__DATA.html#a823651817d19a3e5f330a0c602d6cd42", null ], + [ "z_c", "namespaceREAD__WRITE__DATA.html#ab2e89d5d7369b4215681ca49621763d3", null ], + [ "zm", "namespaceREAD__WRITE__DATA.html#aeda97b822046c001dd7f6cf89a9e2a9e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/namespacemembers.html b/ver-1.11.0/global_cycle/namespacemembers.html new file mode 100644 index 000000000..b22e335d8 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespacemembers.html @@ -0,0 +1,171 @@ + + + + + + + +global_cycle: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespacemembers_func.html b/ver-1.11.0/global_cycle/namespacemembers_func.html new file mode 100644 index 000000000..d81761078 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespacemembers_func.html @@ -0,0 +1,138 @@ + + + + + + + +global_cycle: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespacemembers_vars.html b/ver-1.11.0/global_cycle/namespacemembers_vars.html new file mode 100644 index 000000000..84ef460a4 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespacemembers_vars.html @@ -0,0 +1,135 @@ + + + + + + + +global_cycle: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespaces.html b/ver-1.11.0/global_cycle/namespaces.html new file mode 100644 index 000000000..65439d774 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaces.html @@ -0,0 +1,111 @@ + + + + + + + +global_cycle: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + + + +
     NMACHINEHolds machine dependent constants for global_cycle
     NREAD_WRITE_DATAThis module contains routines that read and write data
     NutilsModule containing utility routines
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/namespaces_dup.js b/ver-1.11.0/global_cycle/namespaces_dup.js new file mode 100644 index 000000000..3d50f616b --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaces_dup.js @@ -0,0 +1,6 @@ +var namespaces_dup = +[ + [ "MACHINE", "namespaceMACHINE.html", null ], + [ "READ_WRITE_DATA", "namespaceREAD__WRITE__DATA.html", null ], + [ "utils", "namespaceutils.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/namespaceutils.html b/ver-1.11.0/global_cycle/namespaceutils.html new file mode 100644 index 000000000..4261c7989 --- /dev/null +++ b/ver-1.11.0/global_cycle/namespaceutils.html @@ -0,0 +1,239 @@ + + + + + + + +global_cycle: utils Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Module containing utility routines.

    +
    Author
    George Gayno NOAA/EMC
    +

    Function/Subroutine Documentation

    + +

    ◆ REMAP_COEF()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]isStart index in x-direction of the source array.
    [in]ieEnd index in x-direction of the source array.
    [in]jsStart index in y-direction of the source array.
    [in]jeEnd index in y-direction of the source array.
    [in]imx-dimension of the source array.
    [in]jmy-dimension of the source array.
    [in]lon1-d array of longitudes (in radians).
    [in]lat1-d array of latitudes (in radians).
    [in]agrid2-d array for lon [agrid(:,:,1)] & lat [agrid(:,:,2)] (in radians).
    [out]s2cBi-linear interpolation weights of the four nearby grids of the source array.
    [out]id1Index 1 in x-direction of the nearby grids of the source array.
    [out]id2Index 2 in x-direction of the nearby grids of the source array.
    [out]jdcIndex in y-direction of the nearby grid of the source array.
    +
    +
    +
    Author
    Xu Li
    + +

    Definition at line 40 of file utils.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/nav_f.png b/ver-1.11.0/global_cycle/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/nav_g.png b/ver-1.11.0/global_cycle/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/num_parthds.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    num_parthds.f90 File Reference
    +
    +
    + +

    Return number of threads. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    integer function num_parthds ()
     Return the number of omp threads. More...
     
    +

    Detailed Description

    +

    Return number of threads.

    +
    Author
    Mark Iredell NCEP/EMC
    + +

    Definition in file num_parthds.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ num_parthds()

    + +
    +
    + + + + + + + +
    integer function num_parthds ()
    +
    + +

    Return the number of omp threads.

    +
    Returns
    num_parthds The number of threads.
    +
    Author
    Mark Iredell NCEP/EMC
    + +

    Definition at line 10 of file num_parthds.f90.

    + +

    Referenced by SFC_DRV().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/num__parthds_8f90.js b/ver-1.11.0/global_cycle/num__parthds_8f90.js new file mode 100644 index 000000000..d589355dc --- /dev/null +++ b/ver-1.11.0/global_cycle/num__parthds_8f90.js @@ -0,0 +1,4 @@ +var num__parthds_8f90 = +[ + [ "num_parthds", "num__parthds_8f90.html#ac3494345203fb1f34de07ceff1019d94", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/num__parthds_8f90_source.html b/ver-1.11.0/global_cycle/num__parthds_8f90_source.html new file mode 100644 index 000000000..642d3208f --- /dev/null +++ b/ver-1.11.0/global_cycle/num__parthds_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/num_parthds.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    num_parthds.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    9 integer function num_parthds()
    10  use omp_lib
    11 !$OMP PARALLEL
    12  num_parthds=omp_get_num_threads()
    13 !$OMP END PARALLEL
    14  return
    15  end function num_parthds
    integer function num_parthds()
    Return the number of omp threads.
    Definition: num_parthds.f90:10
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/open.png b/ver-1.11.0/global_cycle/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +global_cycle: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/read__write__data_8f90.html b/ver-1.11.0/global_cycle/read__write__data_8f90.html new file mode 100644 index 000000000..e504e50c1 --- /dev/null +++ b/ver-1.11.0/global_cycle/read__write__data_8f90.html @@ -0,0 +1,326 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/read_write_data.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    read_write_data.f90 File Reference
    +
    +
    + +

    Contains utility routines that read and write data. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Data Types

    type  READ_WRITE_DATA::NSST_DATA
     
    + + + + +

    +Modules

    module  READ_WRITE_DATA
     This module contains routines that read and write data.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public READ_WRITE_DATA::get_dim_nc (filename, nlat, nlon)
     Get the i/j dimensions of the data from a NetCDF file. More...
     
    subroutine, public READ_WRITE_DATA::get_tf_clm_dim (file_sst, mlat_sst, mlon_sst)
     Get the i/j dimensions of RTG SST climatology file. More...
     
    subroutine READ_WRITE_DATA::nc_check (status)
     Check the NetCDF status code. More...
     
    subroutine READ_WRITE_DATA::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_WRITE_DATA::READ_DATA (LSOIL, LENSFC, DO_NSST, 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, 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_WRITE_DATA::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_WRITE_DATA::READ_LAT_LON_OROG (RLA, RLO, OROG, OROG_UF, TILE_NUM, IDIM, JDIM, IJDIM)
     Read latitude and longitude for the cubed-sphere tile from the 'grid' file. More...
     
    subroutine, public READ_WRITE_DATA::read_salclm_gfs_nc (filename, sal, xlats, xlons, nlat, nlon, itime)
     Read the woa05 salinity monthly climatology file. More...
     
    subroutine, public READ_WRITE_DATA::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 READ_WRITE_DATA::remove_checksum (ncid, id_var)
     Remove the checksum attribute from a netcdf record. More...
     
    subroutine, public READ_WRITE_DATA::write_data (lensfc, idim, jdim, lsoil, do_nsst, 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)
     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 READ_WRITE_DATA::dtref_gaus
     GSI foundation temperature increment on the gaussian grid. More...
     
    integer, public READ_WRITE_DATA::idim_gaus
     'i' dimension of GSI gaussian grid. More...
     
    integer, public READ_WRITE_DATA::jdim_gaus
     'j' dimension of GSI gaussian grid. More...
     
    real, dimension(:,:,:), allocatable, public READ_WRITE_DATA::slc_inc_gaus
     GSI soil moisture increments on the gaussian grid. More...
     
    integer, dimension(:,:), allocatable, public READ_WRITE_DATA::slmsk_gaus
     GSI land mask on the gaussian grid. More...
     
    integer, dimension(:,:), allocatable, public READ_WRITE_DATA::soilsnow_gaus
     GSI soil / snow mask for land on the gaussian grid. More...
     
    real, dimension(:,:,:), allocatable, public READ_WRITE_DATA::stc_inc_gaus
     GSI soil temperature increments on the gaussian grid. More...
     
    +

    Detailed Description

    +

    Contains utility routines that read and write data.

    +
    Author
    Xu Li, Hang Lei, George Gayno NOAA/EMC
    + +

    Definition in file read_write_data.f90.

    +

    Data Type Documentation

    + +

    ◆ READ_WRITE_DATA::NSST_DATA

    + +
    +
    + + + + +
    type READ_WRITE_DATA::NSST_DATA
    +
    +
    +

    Definition at line 16 of file read_write_data.f90.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +real, dimension(:), allocatable +c_0 +
    +real, dimension(:), allocatable +c_d +
    +real, dimension(:), allocatable +d_conv +
    +real, dimension(:), allocatable +dt_cool +
    +real, dimension(:), allocatable +ifd +
    +real, dimension(:), allocatable +qrain +
    +real, dimension(:), allocatable +tfinc +
    +real, dimension(:), allocatable +tref +
    +real, dimension(:), allocatable +w_0 +
    +real, dimension(:), allocatable +w_d +
    +real, dimension(:), allocatable +xs +
    +real, dimension(:), allocatable +xt +
    +real, dimension(:), allocatable +xtts +
    +real, dimension(:), allocatable +xu +
    +real, dimension(:), allocatable +xv +
    +real, dimension(:), allocatable +xz +
    +real, dimension(:), allocatable +xzts +
    +real, dimension(:), allocatable +z_c +
    +real, dimension(:), allocatable +zm +
    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/read__write__data_8f90.js b/ver-1.11.0/global_cycle/read__write__data_8f90.js new file mode 100644 index 000000000..0f028e8cd --- /dev/null +++ b/ver-1.11.0/global_cycle/read__write__data_8f90.js @@ -0,0 +1,42 @@ +var read__write__data_8f90 = +[ + [ "NSST_DATA", "namespaceREAD__WRITE__DATA.html#structREAD__WRITE__DATA_1_1NSST__DATA", [ + [ "c_0", "namespaceREAD__WRITE__DATA.html#a7b2d3b3014fa53d0836f1ae17ddeed89", null ], + [ "c_d", "namespaceREAD__WRITE__DATA.html#ab4f1dcd0aec7100361b373c9b5b882bc", null ], + [ "d_conv", "namespaceREAD__WRITE__DATA.html#abc2325d488f1184557649ad480162135", null ], + [ "dt_cool", "namespaceREAD__WRITE__DATA.html#a61fdbac3f71b38ce15a9219bc0aeb3c6", null ], + [ "ifd", "namespaceREAD__WRITE__DATA.html#a2f346b82b3d2bc1a88409a3ac175178f", null ], + [ "qrain", "namespaceREAD__WRITE__DATA.html#a24169a32ee00e78dfbc806a6c9ed32db", null ], + [ "tfinc", "namespaceREAD__WRITE__DATA.html#a9a45609a0ef5bb37c92c5f0248a04dbb", null ], + [ "tref", "namespaceREAD__WRITE__DATA.html#a51b07063777e0f9679914c07b19dc1e1", null ], + [ "w_0", "namespaceREAD__WRITE__DATA.html#a98a47ecea6c536d06bb7c0a88cb3668e", null ], + [ "w_d", "namespaceREAD__WRITE__DATA.html#a4425091a0adba9b27d9ed03ab74aed79", null ], + [ "xs", "namespaceREAD__WRITE__DATA.html#aade82c4d560fcfb9443fa79f2d435f95", null ], + [ "xt", "namespaceREAD__WRITE__DATA.html#ab08458456424f99633f69de973760c83", null ], + [ "xtts", "namespaceREAD__WRITE__DATA.html#a6201244e617b7e8b2d250f53f1ced05d", null ], + [ "xu", "namespaceREAD__WRITE__DATA.html#acb82a0ff9a56a75836cba7cac323c791", null ], + [ "xv", "namespaceREAD__WRITE__DATA.html#adb1b615a113f57cf099dbc2d5d2ff532", null ], + [ "xz", "namespaceREAD__WRITE__DATA.html#a30160793caf4bd98a96dbbbe2ad0f7c9", null ], + [ "xzts", "namespaceREAD__WRITE__DATA.html#a823651817d19a3e5f330a0c602d6cd42", null ], + [ "z_c", "namespaceREAD__WRITE__DATA.html#ab2e89d5d7369b4215681ca49621763d3", null ], + [ "zm", "namespaceREAD__WRITE__DATA.html#aeda97b822046c001dd7f6cf89a9e2a9e", null ] + ] ], + [ "get_dim_nc", "read__write__data_8f90.html#a6943b00e10768f1c672da3bcd47873ad", null ], + [ "get_tf_clm_dim", "read__write__data_8f90.html#ad777b3fdbc99a37e86e4a841c400355b", null ], + [ "nc_check", "read__write__data_8f90.html#adbc02068c2c65d819b62e978f5e379a6", null ], + [ "NETCDF_ERR", "read__write__data_8f90.html#a980713dc0d911ae914e6db1eb704a56b", null ], + [ "READ_DATA", "read__write__data_8f90.html#aa47cb22fc08f1f566848f9ad0ea1ad80", null ], + [ "READ_GSI_DATA", "read__write__data_8f90.html#ac5baedc292577bd0c2365ad4077458f1", null ], + [ "READ_LAT_LON_OROG", "read__write__data_8f90.html#a4076fde1bf855db325146f1f2c524511", null ], + [ "read_salclm_gfs_nc", "read__write__data_8f90.html#a6136e3822264e2729ebabb52df579940", null ], + [ "read_tf_clim_grb", "read__write__data_8f90.html#a1ff588099b0d16efc90b7465a8ffc15f", null ], + [ "remove_checksum", "read__write__data_8f90.html#a4848f484a5c1228edca5c5e8f5ba7d23", null ], + [ "write_data", "read__write__data_8f90.html#a90ee92e9597a92559f0a9dd384762448", null ], + [ "dtref_gaus", "read__write__data_8f90.html#ada53dd5f6510915e42079c455ee73717", null ], + [ "idim_gaus", "read__write__data_8f90.html#aeef3c8ca06080d8ea05f6fa5cc6a2e30", null ], + [ "jdim_gaus", "read__write__data_8f90.html#a2a92699263a01b953ef2fb20954ad8cb", null ], + [ "slc_inc_gaus", "read__write__data_8f90.html#a6fed39a47ad6d32c84fe41028254d568", null ], + [ "slmsk_gaus", "read__write__data_8f90.html#a568effba064bf165405b8df3844c37d9", null ], + [ "soilsnow_gaus", "read__write__data_8f90.html#adf8fb6840c516a88d722b08d26f24d2f", null ], + [ "stc_inc_gaus", "read__write__data_8f90.html#a4fb55178311fe11bc8ad04847050ef03", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/read__write__data_8f90_source.html b/ver-1.11.0/global_cycle/read__write__data_8f90_source.html new file mode 100644 index 000000000..918670940 --- /dev/null +++ b/ver-1.11.0/global_cycle/read__write__data_8f90_source.html @@ -0,0 +1,105 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/read_write_data.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    read_write_data.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    8 MODULE read_write_data
    9 
    10  USE netcdf
    11 
    12  PRIVATE
    13 
    14 ! DATA STRUCTURE TO HOLD ALL NSST RECORDS.
    15 
    16  TYPE, PUBLIC :: nsst_data
    17  REAL, ALLOCATABLE :: C_0(:)
    18  REAL, ALLOCATABLE :: C_D(:)
    19  REAL, ALLOCATABLE :: D_CONV(:)
    20  REAL, ALLOCATABLE :: DT_COOL(:)
    21  REAL, ALLOCATABLE :: IFD(:)
    22  REAL, ALLOCATABLE :: QRAIN(:)
    23  REAL, ALLOCATABLE :: TREF(:)
    24  REAL, ALLOCATABLE :: TFINC(:)
    25  REAL, ALLOCATABLE :: W_0(:)
    26  REAL, ALLOCATABLE :: W_D(:)
    27  REAL, ALLOCATABLE :: XS(:)
    28  REAL, ALLOCATABLE :: XT(:)
    29  REAL, ALLOCATABLE :: XTTS(:)
    30  REAL, ALLOCATABLE :: XU(:)
    31  REAL, ALLOCATABLE :: XV(:)
    32  REAL, ALLOCATABLE :: XZ(:)
    33  REAL, ALLOCATABLE :: XZTS(:)
    34  REAL, ALLOCATABLE :: Z_C(:)
    35  REAL, ALLOCATABLE :: ZM(:)
    36  END TYPE nsst_data
    37 
    38  INTEGER, PUBLIC :: idim_gaus
    40  INTEGER, PUBLIC :: jdim_gaus
    42  INTEGER, ALLOCATABLE, PUBLIC :: slmsk_gaus(:,:)
    44 
    45  INTEGER, ALLOCATABLE, PUBLIC :: soilsnow_gaus(:,:)
    48 
    49  REAL, ALLOCATABLE, PUBLIC :: dtref_gaus(:,:)
    51 
    52  REAL, ALLOCATABLE, PUBLIC :: stc_inc_gaus(:,:,:)
    54 
    55  REAL, ALLOCATABLE, PUBLIC :: slc_inc_gaus(:,:,:)
    57 
    58  PUBLIC :: read_data
    59  PUBLIC :: read_gsi_data
    60  PUBLIC :: read_lat_lon_orog
    61  PUBLIC :: write_data
    62  public :: read_tf_clim_grb,get_tf_clm_dim
    63  public :: read_salclm_gfs_nc,get_dim_nc
    64 
    65  CONTAINS
    66 
    119 
    120  subroutine write_data(lensfc,idim,jdim,lsoil, &
    121  do_nsst,nsst,slifcs,tsffcs,vegfcs,swefcs, &
    122  tg3fcs,zorfcs,albfcs,alffcs, &
    123  cnpfcs,f10m,t2m,q2m,vetfcs, &
    124  sotfcs,ustar,fmm,fhh,sicfcs, &
    125  sihfcs,sitfcs,tprcp,srflag, &
    126  swdfcs,vmnfcs,vmxfcs,slpfcs, &
    127  absfcs,slcfcs,smcfcs,stcfcs)
    129  use mpi
    130 
    131  implicit none
    132 
    133  integer, intent(in) :: lensfc, lsoil
    134  integer, intent(in) :: idim, jdim
    135 
    136  logical, intent(in) :: do_nsst
    137 
    138  real, intent(in), optional :: slifcs(lensfc),tsffcs(lensfc)
    139  real, intent(in), optional :: swefcs(lensfc),tg3fcs(lensfc)
    140  real, intent(in), optional :: zorfcs(lensfc),albfcs(lensfc,4)
    141  real, intent(in), optional :: alffcs(lensfc,2),cnpfcs(lensfc)
    142  real, intent(in), optional :: f10m(lensfc),t2m(lensfc)
    143  real, intent(in), optional :: q2m(lensfc),vegfcs(lensfc)
    144  real, intent(in), optional :: vetfcs(lensfc),sotfcs(lensfc)
    145  real, intent(in), optional :: ustar(lensfc),fmm(lensfc)
    146  real, intent(in), optional :: fhh(lensfc), sicfcs(lensfc)
    147  real, intent(in), optional :: sihfcs(lensfc), sitfcs(lensfc)
    148  real, intent(in), optional :: tprcp(lensfc), srflag(lensfc)
    149  real, intent(in), optional :: swdfcs(lensfc), vmnfcs(lensfc)
    150  real, intent(in), optional :: vmxfcs(lensfc), slpfcs(lensfc)
    151  real, intent(in), optional :: absfcs(lensfc), slcfcs(lensfc,lsoil)
    152  real, intent(in), optional :: smcfcs(lensfc,lsoil), stcfcs(lensfc,lsoil)
    153 
    154  type(nsst_data), intent(in) :: nsst
    155 
    156  integer :: dim_x, dim_y, dim_time, dims_3d(3)
    157 
    158  real :: dum2d(idim,jdim), dum3d(idim,jdim,lsoil)
    159 
    160  character(len=50) :: fnbgso
    161  character(len=3) :: rankch
    162 
    163  integer :: myrank, error, ncid, id_var
    164 
    165  call mpi_comm_rank(mpi_comm_world, myrank, error)
    166 
    167  write(rankch, '(i3.3)') (myrank+1)
    168 
    169  fnbgso = "./fnbgso." // rankch
    170 
    171  print*
    172  print*,"update OUTPUT SFC DATA TO: ",trim(fnbgso)
    173 
    174  error=nf90_open(trim(fnbgso),nf90_write,ncid)
    175  CALL netcdf_err(error, 'OPENING FILE: '//trim(fnbgso) )
    176 
    177  if(present(slifcs)) then
    178  error=nf90_inq_varid(ncid, "slmsk", id_var)
    179  call netcdf_err(error, 'reading slmsk id' )
    180  dum2d = reshape(slifcs, (/idim,jdim/))
    181  error = nf90_put_var( ncid, id_var, dum2d)
    182  call netcdf_err(error, 'writing slmsk record' )
    183  call remove_checksum(ncid, id_var)
    184  endif
    185 
    186  if(present(tsffcs)) then
    187  error=nf90_inq_varid(ncid, "tsea", id_var)
    188  call netcdf_err(error, 'reading tsea id' )
    189  dum2d = reshape(tsffcs, (/idim,jdim/))
    190  error = nf90_put_var( ncid, id_var, dum2d)
    191  call netcdf_err(error, 'writing tsea record' )
    192  call remove_checksum(ncid, id_var)
    193  endif
    194 
    195  if(present(swefcs)) then
    196  error=nf90_inq_varid(ncid, "sheleg", id_var)
    197  call netcdf_err(error, 'reading sheleg id' )
    198  dum2d = reshape(swefcs, (/idim,jdim/))
    199  error = nf90_put_var( ncid, id_var, dum2d)
    200  call netcdf_err(error, 'writing sheleg record' )
    201  call remove_checksum(ncid, id_var)
    202  endif
    203 
    204  if(present(tg3fcs)) then
    205  error=nf90_inq_varid(ncid, "tg3", id_var)
    206  call netcdf_err(error, 'reading tg3 id' )
    207  dum2d = reshape(tg3fcs, (/idim,jdim/))
    208  error = nf90_put_var( ncid, id_var, dum2d)
    209  call netcdf_err(error, 'writing tg3 record' )
    210  call remove_checksum(ncid, id_var)
    211  endif
    212 
    213  if(present(zorfcs)) then
    214  error=nf90_inq_varid(ncid, "zorl", id_var)
    215  call netcdf_err(error, 'reading zorl id' )
    216  dum2d = reshape(zorfcs, (/idim,jdim/))
    217  error = nf90_put_var( ncid, id_var, dum2d)
    218  call netcdf_err(error, 'writing zorl record' )
    219  call remove_checksum(ncid, id_var)
    220  endif
    221 
    222  if(present(albfcs)) then
    223  error=nf90_inq_varid(ncid, "alvsf", id_var)
    224  call netcdf_err(error, 'reading alvsf id' )
    225  dum2d = reshape(albfcs(:,1), (/idim,jdim/))
    226  error = nf90_put_var( ncid, id_var, dum2d)
    227  call netcdf_err(error, 'writing alvsf record' )
    228  call remove_checksum(ncid, id_var)
    229 
    230  error=nf90_inq_varid(ncid, "alvwf", id_var)
    231  call netcdf_err(error, 'reading alvwf id' )
    232  dum2d = reshape(albfcs(:,2), (/idim,jdim/))
    233  error = nf90_put_var( ncid, id_var, dum2d)
    234  call netcdf_err(error, 'writing alvwf record' )
    235  call remove_checksum(ncid, id_var)
    236 
    237  error=nf90_inq_varid(ncid, "alnsf", id_var)
    238  call netcdf_err(error, 'reading alnsf id' )
    239  dum2d = reshape(albfcs(:,3), (/idim,jdim/))
    240  error = nf90_put_var( ncid, id_var, dum2d)
    241  call netcdf_err(error, 'writing alnsf record' )
    242  call remove_checksum(ncid, id_var)
    243 
    244  error=nf90_inq_varid(ncid, "alnwf", id_var)
    245  call netcdf_err(error, 'reading alnwf id' )
    246  dum2d = reshape(albfcs(:,4), (/idim,jdim/))
    247  error = nf90_put_var( ncid, id_var, dum2d)
    248  call netcdf_err(error, 'writing alnwf record' )
    249  call remove_checksum(ncid, id_var)
    250  endif
    251 
    252  if(present(alffcs)) then
    253  error=nf90_inq_varid(ncid, "facsf", id_var)
    254  call netcdf_err(error, 'reading facsf id' )
    255  dum2d = reshape(alffcs(:,1), (/idim,jdim/))
    256  error = nf90_put_var( ncid, id_var, dum2d)
    257  call netcdf_err(error, 'writing facsf record' )
    258  call remove_checksum(ncid, id_var)
    259 
    260  error=nf90_inq_varid(ncid, "facwf", id_var)
    261  call netcdf_err(error, 'reading facwf id' )
    262  dum2d = reshape(alffcs(:,2), (/idim,jdim/))
    263  error = nf90_put_var( ncid, id_var, dum2d)
    264  call netcdf_err(error, 'writing facwf record' )
    265  call remove_checksum(ncid, id_var)
    266  endif
    267 
    268  if(present(vegfcs)) then
    269  error=nf90_inq_varid(ncid, "vfrac", id_var)
    270  call netcdf_err(error, 'reading vfrac id' )
    271  dum2d = reshape(vegfcs, (/idim,jdim/))
    272  error = nf90_put_var( ncid, id_var, dum2d)
    273  call netcdf_err(error, 'writing vegfcs record' )
    274  call remove_checksum(ncid, id_var)
    275  endif
    276 
    277  if(present(cnpfcs)) then
    278  error=nf90_inq_varid(ncid, "canopy", id_var)
    279  call netcdf_err(error, 'reading canopy id' )
    280  dum2d = reshape(cnpfcs, (/idim,jdim/))
    281  error = nf90_put_var( ncid, id_var, dum2d)
    282  call netcdf_err(error, 'writing canopy record' )
    283  call remove_checksum(ncid, id_var)
    284  endif
    285 
    286  if(present(f10m)) then
    287  error=nf90_inq_varid(ncid, "f10m", id_var)
    288  call netcdf_err(error, 'reading f10m id' )
    289  dum2d = reshape(f10m, (/idim,jdim/))
    290  error = nf90_put_var( ncid, id_var, dum2d)
    291  call netcdf_err(error, 'writing f10m record' )
    292  call remove_checksum(ncid, id_var)
    293  endif
    294 
    295  if(present(t2m)) then
    296  error=nf90_inq_varid(ncid, "t2m", id_var)
    297  call netcdf_err(error, 'reading t2m id' )
    298  dum2d = reshape(t2m, (/idim,jdim/))
    299  error = nf90_put_var( ncid, id_var, dum2d)
    300  call netcdf_err(error, 'writing t2m record' )
    301  call remove_checksum(ncid, id_var)
    302  endif
    303 
    304  if(present(q2m)) then
    305  error=nf90_inq_varid(ncid, "q2m", id_var)
    306  call netcdf_err(error, 'reading q2m id' )
    307  dum2d = reshape(q2m, (/idim,jdim/))
    308  error = nf90_put_var( ncid, id_var, dum2d)
    309  call netcdf_err(error, 'writing q2m record' )
    310  call remove_checksum(ncid, id_var)
    311  endif
    312 
    313  if(present(vetfcs)) then
    314  error=nf90_inq_varid(ncid, "vtype", id_var)
    315  call netcdf_err(error, 'reading vtype id' )
    316  dum2d = reshape(vetfcs, (/idim,jdim/))
    317  error = nf90_put_var( ncid, id_var, dum2d)
    318  call netcdf_err(error, 'writing vtype record' )
    319  call remove_checksum(ncid, id_var)
    320  endif
    321 
    322  if(present(sotfcs)) then
    323  error=nf90_inq_varid(ncid, "stype", id_var)
    324  call netcdf_err(error, 'reading stype id' )
    325  dum2d = reshape(sotfcs, (/idim,jdim/))
    326  error = nf90_put_var( ncid, id_var, dum2d)
    327  call netcdf_err(error, 'writing stype record' )
    328  call remove_checksum(ncid, id_var)
    329  endif
    330 
    331  if(present(ustar)) then
    332  error=nf90_inq_varid(ncid, "uustar", id_var)
    333  call netcdf_err(error, 'reading uustar id' )
    334  dum2d = reshape(ustar, (/idim,jdim/))
    335  error = nf90_put_var( ncid, id_var, dum2d)
    336  call netcdf_err(error, 'writing uustar record' )
    337  call remove_checksum(ncid, id_var)
    338  endif
    339 
    340  if(present(fmm)) then
    341  error=nf90_inq_varid(ncid, "ffmm", id_var)
    342  call netcdf_err(error, 'reading ffmm id' )
    343  dum2d = reshape(fmm, (/idim,jdim/))
    344  error = nf90_put_var( ncid, id_var, dum2d)
    345  call netcdf_err(error, 'writing ffmm record' )
    346  call remove_checksum(ncid, id_var)
    347  endif
    348 
    349  if(present(fhh)) then
    350  error=nf90_inq_varid(ncid, "ffhh", id_var)
    351  call netcdf_err(error, 'reading ffhh id' )
    352  dum2d = reshape(fhh, (/idim,jdim/))
    353  error = nf90_put_var( ncid, id_var, dum2d)
    354  call netcdf_err(error, 'writing ffhh record' )
    355  call remove_checksum(ncid, id_var)
    356  endif
    357 
    358  if(present(sicfcs)) then
    359  error=nf90_inq_varid(ncid, "fice", id_var)
    360  call netcdf_err(error, 'reading fice id' )
    361  dum2d = reshape(sicfcs, (/idim,jdim/))
    362  error = nf90_put_var( ncid, id_var, dum2d)
    363  call netcdf_err(error, 'writing fice record' )
    364  call remove_checksum(ncid, id_var)
    365  endif
    366 
    367  if(present(sihfcs)) then
    368  error=nf90_inq_varid(ncid, "hice", id_var)
    369  call netcdf_err(error, 'reading hice id' )
    370  dum2d = reshape(sihfcs, (/idim,jdim/))
    371  error = nf90_put_var( ncid, id_var, dum2d)
    372  call netcdf_err(error, 'writing hice record' )
    373  call remove_checksum(ncid, id_var)
    374  endif
    375 
    376  if(present(sitfcs)) then
    377  error=nf90_inq_varid(ncid, "tisfc", id_var)
    378  call netcdf_err(error, 'reading tisfc id' )
    379  dum2d = reshape(sitfcs, (/idim,jdim/))
    380  error = nf90_put_var( ncid, id_var, dum2d)
    381  call netcdf_err(error, 'writing tisfc record' )
    382  call remove_checksum(ncid, id_var)
    383  endif
    384 
    385  if(present(tprcp)) then
    386  error=nf90_inq_varid(ncid, "tprcp", id_var)
    387  call netcdf_err(error, 'reading tprcp id' )
    388  dum2d = reshape(tprcp, (/idim,jdim/))
    389  error = nf90_put_var( ncid, id_var, dum2d)
    390  call netcdf_err(error, 'writing tprcp record' )
    391  call remove_checksum(ncid, id_var)
    392  endif
    393 
    394  if(present(srflag)) then
    395  error=nf90_inq_varid(ncid, "srflag", id_var)
    396  call netcdf_err(error, 'reading srflag id' )
    397  dum2d = reshape(srflag, (/idim,jdim/))
    398  error = nf90_put_var( ncid, id_var, dum2d)
    399  call netcdf_err(error, 'writing srflag record' )
    400  call remove_checksum(ncid, id_var)
    401  endif
    402 
    403  if(present(swdfcs)) then
    404  error=nf90_inq_varid(ncid, "snwdph", id_var)
    405  call netcdf_err(error, 'reading snwdph id' )
    406  dum2d = reshape(swdfcs, (/idim,jdim/))
    407  error = nf90_put_var( ncid, id_var, dum2d)
    408  call netcdf_err(error, 'writing snwdph record' )
    409  call remove_checksum(ncid, id_var)
    410  endif
    411 
    412  if(present(vmnfcs)) then
    413  error=nf90_inq_varid(ncid, "shdmin", id_var)
    414  call netcdf_err(error, 'reading shdmin id' )
    415  dum2d = reshape(vmnfcs, (/idim,jdim/))
    416  error = nf90_put_var( ncid, id_var, dum2d)
    417  call netcdf_err(error, 'writing shdmin record' )
    418  call remove_checksum(ncid, id_var)
    419  endif
    420 
    421  if(present(vmxfcs)) then
    422  error=nf90_inq_varid(ncid, "shdmax", id_var)
    423  call netcdf_err(error, 'reading shdmax id' )
    424  dum2d = reshape(vmxfcs, (/idim,jdim/))
    425  error = nf90_put_var( ncid, id_var, dum2d)
    426  call netcdf_err(error, 'writing shdmax record' )
    427  call remove_checksum(ncid, id_var)
    428  endif
    429 
    430  if(present(slpfcs)) then
    431  error=nf90_inq_varid(ncid, "slope", id_var)
    432  call netcdf_err(error, 'reading slope id' )
    433  dum2d = reshape(slpfcs, (/idim,jdim/))
    434  error = nf90_put_var( ncid, id_var, dum2d)
    435  call netcdf_err(error, 'writing slope record' )
    436  call remove_checksum(ncid, id_var)
    437  endif
    438 
    439  if(present(absfcs)) then
    440  error=nf90_inq_varid(ncid, "snoalb", id_var)
    441  call netcdf_err(error, 'reading snoalb id' )
    442  dum2d = reshape(absfcs, (/idim,jdim/))
    443  error = nf90_put_var( ncid, id_var, dum2d)
    444  call netcdf_err(error, 'writing snoalb record' )
    445  call remove_checksum(ncid, id_var)
    446  endif
    447 
    448  if(present(slcfcs)) then
    449  error=nf90_inq_varid(ncid, "slc", id_var)
    450  call netcdf_err(error, 'reading slc id' )
    451  dum3d = reshape(slcfcs, (/idim,jdim,lsoil/))
    452  error = nf90_put_var( ncid, id_var, dum3d)
    453  call netcdf_err(error, 'writing slc record' )
    454  call remove_checksum(ncid, id_var)
    455  endif
    456 
    457  if(present(smcfcs)) then
    458  error=nf90_inq_varid(ncid, "smc", id_var)
    459  call netcdf_err(error, 'reading smc id' )
    460  dum3d = reshape(smcfcs, (/idim,jdim,lsoil/))
    461  error = nf90_put_var( ncid, id_var, dum3d)
    462  call netcdf_err(error, 'writing smc record' )
    463  call remove_checksum(ncid, id_var)
    464  endif
    465 
    466  if(present(stcfcs)) then
    467  error=nf90_inq_varid(ncid, "stc", id_var)
    468  call netcdf_err(error, 'reading stc id' )
    469  dum3d = reshape(stcfcs, (/idim,jdim,lsoil/))
    470  error = nf90_put_var( ncid, id_var, dum3d)
    471  call netcdf_err(error, 'writing stc record' )
    472  call remove_checksum(ncid, id_var)
    473  endif
    474 
    475  if(do_nsst) then
    476 
    477  error=nf90_inq_varid(ncid, "tref", id_var)
    478  call netcdf_err(error, 'reading tref id' )
    479  dum2d = reshape(nsst%tref, (/idim,jdim/))
    480  error = nf90_put_var( ncid, id_var, dum2d)
    481  call netcdf_err(error, 'WRITING TREF RECORD' )
    482  call remove_checksum(ncid, id_var)
    483 
    484  error=nf90_inq_varid(ncid, "z_c", id_var)
    485  call netcdf_err(error, 'reading z_c id' )
    486  dum2d = reshape(nsst%z_c, (/idim,jdim/))
    487  error = nf90_put_var( ncid, id_var, dum2d)
    488  call netcdf_err(error, 'WRITING Z_C RECORD' )
    489  call remove_checksum(ncid, id_var)
    490 
    491  error=nf90_inq_varid(ncid, "c_0", id_var)
    492  call netcdf_err(error, 'reading c_0 id' )
    493  dum2d = reshape(nsst%c_0, (/idim,jdim/))
    494  error = nf90_put_var( ncid, id_var, dum2d)
    495  call netcdf_err(error, 'WRITING C_0 RECORD' )
    496  call remove_checksum(ncid, id_var)
    497 
    498  error=nf90_inq_varid(ncid, "c_d", id_var)
    499  call netcdf_err(error, 'reading c_d id' )
    500  dum2d = reshape(nsst%c_d, (/idim,jdim/))
    501  error = nf90_put_var( ncid, id_var, dum2d)
    502  call netcdf_err(error, 'WRITING C_D RECORD' )
    503  call remove_checksum(ncid, id_var)
    504 
    505  error=nf90_inq_varid(ncid, "w_0", id_var)
    506  call netcdf_err(error, 'reading w_0 id' )
    507  dum2d = reshape(nsst%w_0, (/idim,jdim/))
    508  error = nf90_put_var( ncid, id_var, dum2d)
    509  call netcdf_err(error, 'WRITING W_0 RECORD' )
    510  call remove_checksum(ncid, id_var)
    511 
    512  error=nf90_inq_varid(ncid, "w_d", id_var)
    513  call netcdf_err(error, 'reading w_d id' )
    514  dum2d = reshape(nsst%w_d, (/idim,jdim/))
    515  error = nf90_put_var( ncid, id_var, dum2d)
    516  call netcdf_err(error, 'WRITING W_D RECORD' )
    517  call remove_checksum(ncid, id_var)
    518 
    519  error=nf90_inq_varid(ncid, "xt", id_var)
    520  call netcdf_err(error, 'reading xt id' )
    521  dum2d = reshape(nsst%xt, (/idim,jdim/))
    522  error = nf90_put_var( ncid, id_var, dum2d)
    523  call netcdf_err(error, 'WRITING XT RECORD' )
    524  call remove_checksum(ncid, id_var)
    525 
    526  error=nf90_inq_varid(ncid, "xs", id_var)
    527  call netcdf_err(error, 'reading xs id' )
    528  dum2d = reshape(nsst%xs, (/idim,jdim/))
    529  error = nf90_put_var( ncid, id_var, dum2d)
    530  call netcdf_err(error, 'WRITING XS RECORD' )
    531  call remove_checksum(ncid, id_var)
    532 
    533  error=nf90_inq_varid(ncid, "xu", id_var)
    534  call netcdf_err(error, 'reading xu id' )
    535  dum2d = reshape(nsst%xu, (/idim,jdim/))
    536  error = nf90_put_var( ncid, id_var, dum2d)
    537  call netcdf_err(error, 'WRITING XU RECORD' )
    538  call remove_checksum(ncid, id_var)
    539 
    540  error=nf90_inq_varid(ncid, "xv", id_var)
    541  call netcdf_err(error, 'reading xv id' )
    542  dum2d = reshape(nsst%xv, (/idim,jdim/))
    543  error = nf90_put_var( ncid, id_var, dum2d)
    544  call netcdf_err(error, 'WRITING XV RECORD' )
    545  call remove_checksum(ncid, id_var)
    546 
    547  error=nf90_inq_varid(ncid, "xz", id_var)
    548  call netcdf_err(error, 'reading xz id' )
    549  dum2d = reshape(nsst%xz, (/idim,jdim/))
    550  error = nf90_put_var( ncid, id_var, dum2d)
    551  call netcdf_err(error, 'WRITING XZ RECORD' )
    552  call remove_checksum(ncid, id_var)
    553 
    554  error=nf90_inq_varid(ncid, "zm", id_var)
    555  call netcdf_err(error, 'reading zm id' )
    556  dum2d = reshape(nsst%zm, (/idim,jdim/))
    557  error = nf90_put_var( ncid, id_var, dum2d)
    558  call netcdf_err(error, 'WRITING ZM RECORD' )
    559  call remove_checksum(ncid, id_var)
    560 
    561  error=nf90_inq_varid(ncid, "xtts", id_var)
    562  call netcdf_err(error, 'reading xtts id' )
    563  dum2d = reshape(nsst%xtts, (/idim,jdim/))
    564  error = nf90_put_var( ncid, id_var, dum2d)
    565  call netcdf_err(error, 'WRITING XTTS RECORD' )
    566  call remove_checksum(ncid, id_var)
    567 
    568  error=nf90_inq_varid(ncid, "xzts", id_var)
    569  call netcdf_err(error, 'reading xzts id' )
    570  dum2d = reshape(nsst%xzts, (/idim,jdim/))
    571  error = nf90_put_var( ncid, id_var, dum2d)
    572  call netcdf_err(error, 'WRITING XZTS RECORD' )
    573  call remove_checksum(ncid, id_var)
    574 
    575  error=nf90_inq_varid(ncid, "d_conv", id_var)
    576  call netcdf_err(error, 'reading d_conv id' )
    577  dum2d = reshape(nsst%d_conv, (/idim,jdim/))
    578  error = nf90_put_var( ncid, id_var, dum2d)
    579  call netcdf_err(error, 'WRITING D_CONV RECORD' )
    580  call remove_checksum(ncid, id_var)
    581 
    582  error=nf90_inq_varid(ncid, "ifd", id_var)
    583  call netcdf_err(error, 'reading idf id' )
    584  dum2d = reshape(nsst%ifd, (/idim,jdim/))
    585  error = nf90_put_var( ncid, id_var, dum2d)
    586  call netcdf_err(error, 'WRITING IFD RECORD' )
    587  call remove_checksum(ncid, id_var)
    588 
    589  error=nf90_inq_varid(ncid, "dt_cool", id_var)
    590  call netcdf_err(error, 'reading dt_cool id' )
    591  dum2d = reshape(nsst%dt_cool, (/idim,jdim/))
    592  error = nf90_put_var( ncid, id_var, dum2d)
    593  call netcdf_err(error, 'WRITING DT_COOL RECORD' )
    594  call remove_checksum(ncid, id_var)
    595 
    596  error=nf90_inq_varid(ncid, "qrain", id_var)
    597  call netcdf_err(error, 'reading qrain id' )
    598  dum2d = reshape(nsst%qrain, (/idim,jdim/))
    599  error = nf90_put_var( ncid, id_var, dum2d)
    600  call netcdf_err(error, 'WRITING QRAIN RECORD' )
    601  call remove_checksum(ncid, id_var)
    602 
    603 ! Some files don't include 'tfinc', which is just diagnostic.
    604 ! If missing, then add it to the restart file.
    605  error=nf90_inq_varid(ncid, "tfinc", id_var)
    606  if (error /= 0) then
    607  error=nf90_inq_dimid(ncid, "xaxis_1", dim_x)
    608  call netcdf_err(error, 'finding xaxis_1' )
    609  error=nf90_inq_dimid(ncid, "yaxis_1", dim_y)
    610  call netcdf_err(error, 'finding yaxis_1' )
    611  error=nf90_inq_dimid(ncid, "Time", dim_time)
    612  call netcdf_err(error, 'finding Time' )
    613  dims_3d(1) = dim_x
    614  dims_3d(2) = dim_y
    615  dims_3d(3) = dim_time
    616  error=nf90_redef(ncid)
    617  error = nf90_def_var(ncid, 'tfinc', nf90_double, dims_3d, id_var)
    618  call netcdf_err(error, 'DEFINING tfinc' )
    619  error = nf90_put_att(ncid, id_var, "long_name", "tfinc")
    620  call netcdf_err(error, 'DEFINING tfinc LONG NAME' )
    621  error = nf90_put_att(ncid, id_var, "units", "none")
    622  call netcdf_err(error, 'DEFINING tfinc UNITS' )
    623  error=nf90_enddef(ncid)
    624  endif
    625  dum2d = reshape(nsst%tfinc, (/idim,jdim/))
    626  error = nf90_put_var( ncid, id_var, dum2d)
    627  call netcdf_err(error, 'WRITING TFINC RECORD' )
    628 
    629  endif
    630 
    631  error = nf90_close(ncid)
    632 
    633  end subroutine write_data
    634 
    641  subroutine remove_checksum(ncid, id_var)
    643  implicit none
    644 
    645  integer, intent(in) :: ncid, id_var
    646 
    647  integer :: error
    648 
    649  error=nf90_inquire_attribute(ncid, id_var, 'checksum')
    650 
    651  if (error == 0) then ! attribute was found
    652 
    653  error = nf90_redef(ncid)
    654  call netcdf_err(error, 'entering define mode' )
    655 
    656  error=nf90_del_att(ncid, id_var, 'checksum')
    657  call netcdf_err(error, 'deleting checksum' )
    658 
    659  error= nf90_enddef(ncid)
    660  call netcdf_err(error, 'ending define mode' )
    661 
    662  endif
    663 
    664  end subroutine remove_checksum
    665 
    679  SUBROUTINE read_lat_lon_orog(RLA,RLO,OROG,OROG_UF,&
    680  TILE_NUM,IDIM,JDIM,IJDIM)
    682  USE mpi
    683 
    684  IMPLICIT NONE
    685 
    686  INTEGER, INTENT(IN) :: idim, jdim, ijdim
    687 
    688  CHARACTER(LEN=5), INTENT(OUT) :: tile_num
    689 
    690  REAL, INTENT(OUT) :: rla(ijdim),rlo(ijdim)
    691  REAL, INTENT(OUT) :: orog(ijdim),orog_uf(ijdim)
    692 
    693  CHARACTER(LEN=50) :: fnorog, fngrid
    694  CHARACTER(LEN=3) :: rankch
    695 
    696  INTEGER :: error, ncid, ncid_orog
    697  INTEGER :: i, ii, j, jj, myrank
    698  INTEGER :: id_dim, id_var, nx, ny
    699 
    700  REAL, ALLOCATABLE :: dummy(:,:), geolat(:,:), geolon(:,:)
    701  REAL(KIND=4), ALLOCATABLE :: dummy4(:,:)
    702 
    703  CALL mpi_comm_rank(mpi_comm_world, myrank, error)
    704 
    705  WRITE(rankch, '(I3.3)') (myrank+1)
    706 
    707  fngrid = "./fngrid." // rankch
    708 
    709  print*
    710  print*, "READ FV3 GRID INFO FROM: "//trim(fngrid)
    711 
    712  error=nf90_open(trim(fngrid),nf90_nowrite,ncid)
    713  CALL netcdf_err(error, 'OPENING FILE: '//trim(fngrid) )
    714 
    715  error=nf90_inq_dimid(ncid, 'nx', id_dim)
    716  CALL netcdf_err(error, 'ERROR READING NX ID' )
    717 
    718  error=nf90_inquire_dimension(ncid,id_dim,len=nx)
    719  CALL netcdf_err(error, 'ERROR READING NX' )
    720 
    721  error=nf90_inq_dimid(ncid, 'ny', id_dim)
    722  CALL netcdf_err(error, 'ERROR READING NY ID' )
    723 
    724  error=nf90_inquire_dimension(ncid,id_dim,len=ny)
    725  CALL netcdf_err(error, 'ERROR READING NY' )
    726 
    727  IF ((nx/2) /= idim .OR. (ny/2) /= jdim) THEN
    728  print*,'FATAL ERROR: DIMENSIONS IN FILE: ',(nx/2),(ny/2)
    729  print*,'DO NOT MATCH GRID DIMENSIONS: ',idim,jdim
    730  CALL mpi_abort(mpi_comm_world, 130, error)
    731  ENDIF
    732 
    733  ALLOCATE(geolon(nx+1,ny+1))
    734  ALLOCATE(geolat(nx+1,ny+1))
    735 
    736  error=nf90_inq_varid(ncid, 'x', id_var)
    737  CALL netcdf_err(error, 'ERROR READING X ID' )
    738  error=nf90_get_var(ncid, id_var, geolon)
    739  CALL netcdf_err(error, 'ERROR READING X RECORD' )
    740 
    741  error=nf90_inq_varid(ncid, 'y', id_var)
    742  CALL netcdf_err(error, 'ERROR READING Y ID' )
    743  error=nf90_get_var(ncid, id_var, geolat)
    744  CALL netcdf_err(error, 'ERROR READING Y RECORD' )
    745 
    746  ALLOCATE(dummy(idim,jdim))
    747 
    748  DO j = 1, jdim
    749  DO i = 1, idim
    750  ii = 2*i
    751  jj = 2*j
    752  dummy(i,j) = geolon(ii,jj)
    753  ENDDO
    754  ENDDO
    755 
    756  rlo = reshape(dummy, (/ijdim/))
    757 
    758  DEALLOCATE(geolon)
    759 
    760  DO j = 1, jdim
    761  DO i = 1, idim
    762  ii = 2*i
    763  jj = 2*j
    764  dummy(i,j) = geolat(ii,jj)
    765  ENDDO
    766  ENDDO
    767 
    768  rla = reshape(dummy, (/ijdim/))
    769 
    770  DEALLOCATE(geolat, dummy)
    771 
    772  error=nf90_inq_varid(ncid, 'tile', id_var)
    773  CALL netcdf_err(error, 'ERROR READING TILE ID' )
    774  error=nf90_get_var(ncid, id_var, tile_num)
    775  CALL netcdf_err(error, 'ERROR READING TILE RECORD' )
    776 
    777  error = nf90_close(ncid)
    778 
    779  fnorog = "./fnorog." // rankch
    780 
    781  print*
    782  print*, "READ FV3 OROG INFO FROM: "//trim(fnorog)
    783 
    784  error=nf90_open(trim(fnorog),nf90_nowrite,ncid_orog)
    785  CALL netcdf_err(error, 'OPENING FILE: '//trim(fnorog) )
    786 
    787  ALLOCATE(dummy4(idim,jdim))
    788 
    789  error=nf90_inq_varid(ncid_orog, 'orog_raw', id_var)
    790  CALL netcdf_err(error, 'ERROR READING orog_raw ID' )
    791  error=nf90_get_var(ncid_orog, id_var, dummy4)
    792  CALL netcdf_err(error, 'ERROR READING orog_raw RECORD' )
    793  orog_uf = reshape(dummy4, (/ijdim/))
    794 
    795  error=nf90_inq_varid(ncid_orog, 'orog_filt', id_var)
    796  CALL netcdf_err(error, 'ERROR READING orog_filt ID' )
    797  error=nf90_get_var(ncid_orog, id_var, dummy4)
    798  CALL netcdf_err(error, 'ERROR READING orog_filt RECORD' )
    799  orog = reshape(dummy4, (/ijdim/))
    800 
    801  DEALLOCATE(dummy4)
    802 
    803  error = nf90_close(ncid_orog)
    804 
    805  END SUBROUTINE read_lat_lon_orog
    806 
    813  SUBROUTINE netcdf_err( ERR, STRING )
    815  USE mpi
    816 
    817  IMPLICIT NONE
    818 
    819  INTEGER, INTENT(IN) :: ERR
    820  CHARACTER(LEN=*), INTENT(IN) :: STRING
    821  CHARACTER(LEN=80) :: ERRMSG
    822  INTEGER :: IRET
    823 
    824  IF( err == nf90_noerr )RETURN
    825  errmsg = nf90_strerror(err)
    826  print*,''
    827  print*,'FATAL ERROR: ', trim(string), ': ', trim(errmsg)
    828  print*,'STOP.'
    829  CALL mpi_abort(mpi_comm_world, 999, iret)
    830 
    831  RETURN
    832  END SUBROUTINE netcdf_err
    833 
    846  SUBROUTINE read_gsi_data(GSI_FILE, FILE_TYPE, LSOIL)
    848  IMPLICIT NONE
    849 
    850  CHARACTER(LEN=*), INTENT(IN) :: gsi_file
    851  CHARACTER(LEN=3), INTENT(IN) :: file_type
    852  INTEGER, INTENT(IN), OPTIONAL :: lsoil
    853 
    854  INTEGER :: error, id_dim, ncid
    855  INTEGER :: id_var, j
    856 
    857  INTEGER(KIND=1), ALLOCATABLE :: idummy(:,:)
    858 
    859  REAL(KIND=8), ALLOCATABLE :: dummy(:,:)
    860 
    861  CHARACTER(LEN=1) :: k_ch
    862  CHARACTER(LEN=10) :: incvar
    863  CHARACTER(LEN=80) :: err_msg
    864  INTEGER :: k, i
    865 
    866  print*
    867  print*, "READ INPUT GSI DATA FROM: "//trim(gsi_file)
    868 
    869  error=nf90_open(trim(gsi_file),nf90_nowrite,ncid)
    870  CALL netcdf_err(error, 'OPENING FILE: '//trim(gsi_file) )
    871 
    872  error=nf90_inq_dimid(ncid, 'latitude', id_dim)
    873  CALL netcdf_err(error, 'READING latitude ID' )
    874  error=nf90_inquire_dimension(ncid,id_dim,len=jdim_gaus)
    875  CALL netcdf_err(error, 'READING latitude length' )
    876  jdim_gaus = jdim_gaus - 2 ! WILL IGNORE POLE POINTS
    877 
    878  error=nf90_inq_dimid(ncid, 'longitude', id_dim)
    879  CALL netcdf_err(error, 'READING longitude ID' )
    880  error=nf90_inquire_dimension(ncid,id_dim,len=idim_gaus)
    881  CALL netcdf_err(error, 'READING longitude length' )
    882 
    883  IF (file_type=='NST') then
    884  ALLOCATE(dummy(idim_gaus,jdim_gaus+2))
    885  ALLOCATE(dtref_gaus(idim_gaus,jdim_gaus))
    886 
    887  error=nf90_inq_varid(ncid, "dtf", id_var)
    888  CALL netcdf_err(error, 'READING dtf ID' )
    889  error=nf90_get_var(ncid, id_var, dummy)
    890  CALL netcdf_err(error, 'READING dtf' )
    891 
    892  ALLOCATE(idummy(idim_gaus,jdim_gaus+2))
    893  ALLOCATE(slmsk_gaus(idim_gaus,jdim_gaus))
    894 
    895  error=nf90_inq_varid(ncid, "msk", id_var)
    896  CALL netcdf_err(error, 'READING msk ID' )
    897  error=nf90_get_var(ncid, id_var, idummy)
    898  CALL netcdf_err(error, 'READING msk' )
    899 
    900  ! REMOVE POLE POINTS.
    901 
    902  DO j = 1, jdim_gaus
    903  slmsk_gaus(:,j) = idummy(:,j+1)
    904  dtref_gaus(:,j) = dummy(:,j+1)
    905  ENDDO
    906 
    907  ELSEIF (file_type=='LND') then
    908 
    909  ALLOCATE(dummy(idim_gaus,jdim_gaus+2))
    910  ALLOCATE(stc_inc_gaus(lsoil,idim_gaus,jdim_gaus))
    911  ALLOCATE(slc_inc_gaus(lsoil,idim_gaus,jdim_gaus))
    912 
    913  ! read in soil temperature increments in each layer
    914  DO k = 1, lsoil
    915  WRITE(k_ch, '(I1)') k
    916 
    917  incvar = "soilt"//k_ch//"_inc"
    918  error=nf90_inq_varid(ncid, incvar, id_var)
    919  err_msg = "reading "//incvar//" ID"
    920  CALL netcdf_err(error, trim(err_msg))
    921  error=nf90_get_var(ncid, id_var, dummy)
    922  err_msg = "reading "//incvar//" data"
    923  CALL netcdf_err(error, err_msg)
    924 
    925  DO j = 1, jdim_gaus
    926  stc_inc_gaus(k,:,j) = dummy(:,j+1)
    927  ENDDO
    928 
    929  incvar = "slc"//k_ch//"_inc"
    930  error=nf90_inq_varid(ncid, incvar, id_var)
    931  err_msg = "reading "//incvar//" ID"
    932  CALL netcdf_err(error, trim(err_msg))
    933  error=nf90_get_var(ncid, id_var, dummy)
    934  err_msg = "reading "//incvar//" data"
    935  CALL netcdf_err(error, err_msg)
    936 
    937  DO j = 1, jdim_gaus
    938  slc_inc_gaus(k,:,j) = dummy(:,j+1)
    939  ENDDO
    940 
    941  ENDDO
    942 
    943  ALLOCATE(idummy(idim_gaus,jdim_gaus+2))
    944  ALLOCATE(soilsnow_gaus(idim_gaus,jdim_gaus))
    945 
    946  error=nf90_inq_varid(ncid, "soilsnow_mask", id_var)
    947  CALL netcdf_err(error, 'READING soilsnow_mask ID' )
    948  error=nf90_get_var(ncid, id_var, idummy)
    949  CALL netcdf_err(error, 'READING soilsnow_mask' )
    950 
    951  ! REMOVE POLE POINTS.
    952 
    953  DO j = 1, jdim_gaus
    954  soilsnow_gaus(:,j) = idummy(:,j+1)
    955  ENDDO
    956 
    957 
    958  ELSE
    959  print *, 'WARNING: FILE_TYPE', file_type, 'not recognised.', &
    960  ', no increments read in'
    961  ENDIF
    962 
    963  IF(ALLOCATED(dummy)) DEALLOCATE(dummy)
    964  IF(ALLOCATED(idummy)) DEALLOCATE(idummy)
    965 
    966  error = nf90_close(ncid)
    967 
    968  END SUBROUTINE read_gsi_data
    969 
    1018  SUBROUTINE read_data(LSOIL,LENSFC,DO_NSST,INC_FILE,IS_NOAHMP, &
    1019  TSFFCS,SMCFCS,SWEFCS,STCFCS, &
    1020  TG3FCS,ZORFCS, &
    1021  CVFCS,CVBFCS,CVTFCS,ALBFCS, &
    1022  VEGFCS,SLIFCS,CNPFCS,F10M, &
    1023  VETFCS,SOTFCS,ALFFCS, &
    1024  USTAR,FMM,FHH, &
    1025  SIHFCS,SICFCS,SITFCS, &
    1026  TPRCP,SRFLAG,SNDFCS, &
    1027  VMNFCS,VMXFCS,SLCFCS, &
    1028  SLPFCS,ABSFCS,T2M,Q2M,SLMASK, &
    1029  ZSOIL,NSST)
    1030  USE mpi
    1031 
    1032  IMPLICIT NONE
    1033 
    1034  INTEGER, INTENT(IN) :: lsoil, lensfc
    1035  LOGICAL, INTENT(IN) :: do_nsst, inc_file
    1036 
    1037  LOGICAL, OPTIONAL, INTENT(OUT) :: is_noahmp
    1038 
    1039  REAL, OPTIONAL, INTENT(OUT) :: cvfcs(lensfc), cvbfcs(lensfc)
    1040  REAL, OPTIONAL, INTENT(OUT) :: cvtfcs(lensfc), albfcs(lensfc,4)
    1041  REAL, OPTIONAL, INTENT(OUT) :: slifcs(lensfc), cnpfcs(lensfc)
    1042  REAL, OPTIONAL, INTENT(OUT) :: vegfcs(lensfc), f10m(lensfc)
    1043  REAL, OPTIONAL, INTENT(OUT) :: vetfcs(lensfc), sotfcs(lensfc)
    1044  REAL, OPTIONAL, INTENT(OUT) :: tsffcs(lensfc), swefcs(lensfc)
    1045  REAL, OPTIONAL, INTENT(OUT) :: tg3fcs(lensfc), zorfcs(lensfc)
    1046  REAL, OPTIONAL, INTENT(OUT) :: alffcs(lensfc,2), ustar(lensfc)
    1047  REAL, OPTIONAL, INTENT(OUT) :: fmm(lensfc), fhh(lensfc)
    1048  REAL, OPTIONAL, INTENT(OUT) :: sihfcs(lensfc), sicfcs(lensfc)
    1049  REAL, OPTIONAL, INTENT(OUT) :: sitfcs(lensfc), tprcp(lensfc)
    1050  REAL, OPTIONAL, INTENT(OUT) :: srflag(lensfc), sndfcs(lensfc)
    1051  REAL, OPTIONAL, INTENT(OUT) :: vmnfcs(lensfc), vmxfcs(lensfc)
    1052  REAL, OPTIONAL, INTENT(OUT) :: slpfcs(lensfc), absfcs(lensfc)
    1053  REAL, OPTIONAL, INTENT(OUT) :: t2m(lensfc), q2m(lensfc), slmask(lensfc)
    1054  REAL, OPTIONAL, INTENT(OUT) :: slcfcs(lensfc,lsoil)
    1055  REAL, OPTIONAL, INTENT(OUT) :: smcfcs(lensfc,lsoil)
    1056  REAL, OPTIONAL, INTENT(OUT) :: stcfcs(lensfc,lsoil)
    1057  REAL(KIND=4), OPTIONAL, INTENT(OUT) :: zsoil(lsoil)
    1058 
    1059  TYPE(nsst_data), OPTIONAL :: nsst ! intent(out) will crash
    1060  ! because subtypes are allocated in main.
    1061 
    1062  CHARACTER(LEN=50) :: fnbgsi
    1063  CHARACTER(LEN=3) :: rankch
    1064 
    1065  INTEGER :: error, error2, ncid, myrank
    1066  INTEGER :: idim, jdim, id_dim
    1067  INTEGER :: id_var, ierr
    1068 
    1069  REAL(KIND=8), ALLOCATABLE :: dummy(:,:), dummy3d(:,:,:)
    1070 
    1071  CALL mpi_comm_rank(mpi_comm_world, myrank, error)
    1072 
    1073  WRITE(rankch, '(I3.3)') (myrank+1)
    1074 
    1075  IF (inc_file) THEN
    1076  fnbgsi = "./xainc." // rankch
    1077  ELSE
    1078  fnbgsi = "./fnbgsi." // rankch
    1079  ENDIF
    1080 
    1081  print*
    1082  print*, "READ INPUT SFC DATA FROM: "//trim(fnbgsi)
    1083 
    1084  error=nf90_open(trim(fnbgsi),nf90_nowrite,ncid)
    1085  CALL netcdf_err(error, 'OPENING FILE: '//trim(fnbgsi) )
    1086 
    1087  error=nf90_inq_dimid(ncid, 'xaxis_1', id_dim)
    1088  CALL netcdf_err(error, 'READING xaxis_1' )
    1089  error=nf90_inquire_dimension(ncid,id_dim,len=idim)
    1090  CALL netcdf_err(error, 'READING xaxis_1' )
    1091 
    1092  error=nf90_inq_dimid(ncid, 'yaxis_1', id_dim)
    1093  CALL netcdf_err(error, 'READING yaxis_1' )
    1094  error=nf90_inquire_dimension(ncid,id_dim,len=jdim)
    1095  CALL netcdf_err(error, 'READING yaxis_1' )
    1096 
    1097  IF ((idim*jdim) /= lensfc) THEN
    1098  print*,'FATAL ERROR: DIMENSIONS WRONG.'
    1099  CALL mpi_abort(mpi_comm_world, 88, ierr)
    1100  ENDIF
    1101 
    1102 ! Check for records that indicate the restart file is
    1103 ! for the Noah-MP land surface model.
    1104 
    1105  IF(PRESENT(is_noahmp))THEN
    1106  error=nf90_inq_varid(ncid, "canliqxy", id_var)
    1107  error2=nf90_inq_varid(ncid, "tsnoxy", id_var)
    1108  is_noahmp=.false.
    1109  IF(error == 0 .AND. error2 == 0) THEN
    1110  is_noahmp=.true.
    1111  print*,"- WILL PROCESS FOR NOAH-MP LSM."
    1112  ENDIF
    1113  ENDIF
    1114 
    1115  ALLOCATE(dummy(idim,jdim))
    1116 
    1117  IF (PRESENT(tsffcs)) THEN
    1118  error=nf90_inq_varid(ncid, "tsea", id_var)
    1119  CALL netcdf_err(error, 'READING tsea ID' )
    1120  error=nf90_get_var(ncid, id_var, dummy)
    1121  CALL netcdf_err(error, 'READING tsea' )
    1122  tsffcs = reshape(dummy, (/lensfc/))
    1123  ENDIF
    1124 
    1125  IF (PRESENT(swefcs)) THEN
    1126  error=nf90_inq_varid(ncid, "sheleg", id_var)
    1127  CALL netcdf_err(error, 'READING sheleg ID' )
    1128  error=nf90_get_var(ncid, id_var, dummy)
    1129  CALL netcdf_err(error, 'READING sheleg' )
    1130  swefcs = reshape(dummy, (/lensfc/))
    1131  ENDIF
    1132 
    1133  IF (PRESENT(tg3fcs)) THEN
    1134  error=nf90_inq_varid(ncid, "tg3", id_var)
    1135  CALL netcdf_err(error, 'READING tg3 ID' )
    1136  error=nf90_get_var(ncid, id_var, dummy)
    1137  CALL netcdf_err(error, 'READING tg3' )
    1138  tg3fcs = reshape(dummy, (/lensfc/))
    1139  ENDIF
    1140 
    1141  IF (PRESENT(zorfcs)) THEN
    1142  error=nf90_inq_varid(ncid, "zorl", id_var)
    1143  CALL netcdf_err(error, 'READING zorl ID' )
    1144  error=nf90_get_var(ncid, id_var, dummy)
    1145  CALL netcdf_err(error, 'READING zorl' )
    1146  zorfcs = reshape(dummy, (/lensfc/))
    1147  ENDIF
    1148 
    1149  IF (PRESENT(albfcs)) THEN
    1150 
    1151  error=nf90_inq_varid(ncid, "alvsf", id_var)
    1152  CALL netcdf_err(error, 'READING alvsf ID' )
    1153  error=nf90_get_var(ncid, id_var, dummy)
    1154  CALL netcdf_err(error, 'READING alvsf' )
    1155  albfcs(:,1) = reshape(dummy, (/lensfc/))
    1156 
    1157  error=nf90_inq_varid(ncid, "alvwf", id_var)
    1158  CALL netcdf_err(error, 'READING alvwf ID' )
    1159  error=nf90_get_var(ncid, id_var, dummy)
    1160  CALL netcdf_err(error, 'READING alvwf' )
    1161  albfcs(:,2) = reshape(dummy, (/lensfc/))
    1162 
    1163  error=nf90_inq_varid(ncid, "alnsf", id_var)
    1164  CALL netcdf_err(error, 'READING alnsf ID' )
    1165  error=nf90_get_var(ncid, id_var, dummy)
    1166  CALL netcdf_err(error, 'READING alnsf' )
    1167  albfcs(:,3) = reshape(dummy, (/lensfc/))
    1168 
    1169  error=nf90_inq_varid(ncid, "alnwf", id_var)
    1170  CALL netcdf_err(error, 'READING alnwf ID' )
    1171  error=nf90_get_var(ncid, id_var, dummy)
    1172  CALL netcdf_err(error, 'READING alnwf' )
    1173  albfcs(:,4) = reshape(dummy, (/lensfc/))
    1174 
    1175  ENDIF
    1176 
    1177  IF (PRESENT(slifcs)) THEN
    1178  error=nf90_inq_varid(ncid, "slmsk", id_var)
    1179  CALL netcdf_err(error, 'READING slmsk ID' )
    1180  error=nf90_get_var(ncid, id_var, dummy)
    1181  CALL netcdf_err(error, 'READING slmsk' )
    1182  slifcs = reshape(dummy, (/lensfc/))
    1183  slmask = slifcs
    1184  WHERE (slmask > 1.5) slmask=0.0 ! remove sea ice
    1185  ENDIF
    1186 
    1187  IF (PRESENT(cnpfcs)) THEN
    1188  error=nf90_inq_varid(ncid, "canopy", id_var)
    1189  CALL netcdf_err(error, 'READING canopy ID' )
    1190  error=nf90_get_var(ncid, id_var, dummy)
    1191  CALL netcdf_err(error, 'READING canopy' )
    1192  cnpfcs = reshape(dummy, (/lensfc/))
    1193  ENDIF
    1194 
    1195  IF (PRESENT(vegfcs)) THEN
    1196  error=nf90_inq_varid(ncid, "vfrac", id_var)
    1197  CALL netcdf_err(error, 'READING vfrac ID' )
    1198  error=nf90_get_var(ncid, id_var, dummy)
    1199  CALL netcdf_err(error, 'READING vfrac' )
    1200  vegfcs = reshape(dummy, (/lensfc/))
    1201  ENDIF
    1202 
    1203  IF (PRESENT(f10m)) THEN
    1204  error=nf90_inq_varid(ncid, "f10m", id_var)
    1205  CALL netcdf_err(error, 'READING f10m ID' )
    1206  error=nf90_get_var(ncid, id_var, dummy)
    1207  CALL netcdf_err(error, 'READING f10m' )
    1208  f10m = reshape(dummy, (/lensfc/))
    1209  ENDIF
    1210 
    1211  IF (PRESENT(vetfcs)) THEN
    1212  error=nf90_inq_varid(ncid, "vtype", id_var)
    1213  CALL netcdf_err(error, 'READING vtype ID' )
    1214  error=nf90_get_var(ncid, id_var, dummy)
    1215  CALL netcdf_err(error, 'READING vtype' )
    1216  vetfcs = reshape(dummy, (/lensfc/))
    1217  ENDIF
    1218 
    1219  IF (PRESENT(sotfcs)) THEN
    1220  error=nf90_inq_varid(ncid, "stype", id_var)
    1221  CALL netcdf_err(error, 'READING stype ID' )
    1222  error=nf90_get_var(ncid, id_var, dummy)
    1223  CALL netcdf_err(error, 'READING stype' )
    1224  sotfcs = reshape(dummy, (/lensfc/))
    1225  ENDIF
    1226 
    1227  IF (PRESENT(alffcs)) THEN
    1228  error=nf90_inq_varid(ncid, "facsf", id_var)
    1229  CALL netcdf_err(error, 'READING facsf ID' )
    1230  error=nf90_get_var(ncid, id_var, dummy)
    1231  CALL netcdf_err(error, 'READING facsf' )
    1232  alffcs(:,1) = reshape(dummy, (/lensfc/))
    1233 
    1234  error=nf90_inq_varid(ncid, "facwf", id_var)
    1235  CALL netcdf_err(error, 'READING facwf ID' )
    1236  error=nf90_get_var(ncid, id_var, dummy)
    1237  CALL netcdf_err(error, 'READING facwf' )
    1238  alffcs(:,2) = reshape(dummy, (/lensfc/))
    1239  ENDIF
    1240 
    1241  IF (PRESENT(ustar)) THEN
    1242  error=nf90_inq_varid(ncid, "uustar", id_var)
    1243  CALL netcdf_err(error, 'READING uustar ID' )
    1244  error=nf90_get_var(ncid, id_var, dummy)
    1245  CALL netcdf_err(error, 'READING uustar' )
    1246  ustar = reshape(dummy, (/lensfc/))
    1247  ENDIF
    1248 
    1249  IF (PRESENT(fmm)) THEN
    1250  error=nf90_inq_varid(ncid, "ffmm", id_var)
    1251  CALL netcdf_err(error, 'READING ffmm ID' )
    1252  error=nf90_get_var(ncid, id_var, dummy)
    1253  CALL netcdf_err(error, 'READING ffmm' )
    1254  fmm = reshape(dummy, (/lensfc/))
    1255  ENDIF
    1256 
    1257  IF (PRESENT(fhh)) THEN
    1258  error=nf90_inq_varid(ncid, "ffhh", id_var)
    1259  CALL netcdf_err(error, 'READING ffhh ID' )
    1260  error=nf90_get_var(ncid, id_var, dummy)
    1261  CALL netcdf_err(error, 'READING ffhh' )
    1262  fhh = reshape(dummy, (/lensfc/))
    1263  ENDIF
    1264 
    1265  IF (PRESENT(sihfcs)) THEN
    1266  error=nf90_inq_varid(ncid, "hice", id_var)
    1267  CALL netcdf_err(error, 'READING hice ID' )
    1268  error=nf90_get_var(ncid, id_var, dummy)
    1269  CALL netcdf_err(error, 'READING hice' )
    1270  sihfcs = reshape(dummy, (/lensfc/))
    1271  ENDIF
    1272 
    1273  IF (PRESENT(sicfcs)) THEN
    1274  error=nf90_inq_varid(ncid, "fice", id_var)
    1275  CALL netcdf_err(error, 'READING fice ID' )
    1276  error=nf90_get_var(ncid, id_var, dummy)
    1277  CALL netcdf_err(error, 'READING fice' )
    1278  sicfcs = reshape(dummy, (/lensfc/))
    1279  ENDIF
    1280 
    1281  IF (PRESENT(sitfcs)) THEN
    1282  error=nf90_inq_varid(ncid, "tisfc", id_var)
    1283  CALL netcdf_err(error, 'READING tisfc ID' )
    1284  error=nf90_get_var(ncid, id_var, dummy)
    1285  CALL netcdf_err(error, 'READING tisfc' )
    1286  sitfcs = reshape(dummy, (/lensfc/))
    1287  ENDIF
    1288 
    1289  IF (PRESENT(tprcp)) THEN
    1290  error=nf90_inq_varid(ncid, "tprcp", id_var)
    1291  CALL netcdf_err(error, 'READING tprcp ID' )
    1292  error=nf90_get_var(ncid, id_var, dummy)
    1293  CALL netcdf_err(error, 'READING tprcp' )
    1294  tprcp = reshape(dummy, (/lensfc/))
    1295  ENDIF
    1296 
    1297  IF (PRESENT(srflag)) THEN
    1298  error=nf90_inq_varid(ncid, "srflag", id_var)
    1299  CALL netcdf_err(error, 'READING srflag ID' )
    1300  error=nf90_get_var(ncid, id_var, dummy)
    1301  CALL netcdf_err(error, 'READING srflag' )
    1302  srflag = reshape(dummy, (/lensfc/))
    1303  ENDIF
    1304 
    1305  IF (PRESENT(sndfcs)) THEN
    1306  error=nf90_inq_varid(ncid, "snwdph", id_var)
    1307  CALL netcdf_err(error, 'READING snwdph ID' )
    1308  error=nf90_get_var(ncid, id_var, dummy)
    1309  CALL netcdf_err(error, 'READING snwdph' )
    1310  sndfcs = reshape(dummy, (/lensfc/))
    1311  ENDIF
    1312 
    1313  IF (PRESENT(vmnfcs)) THEN
    1314  error=nf90_inq_varid(ncid, "shdmin", id_var)
    1315  CALL netcdf_err(error, 'READING shdmin ID' )
    1316  error=nf90_get_var(ncid, id_var, dummy)
    1317  CALL netcdf_err(error, 'READING shdmin' )
    1318  vmnfcs = reshape(dummy, (/lensfc/))
    1319  ENDIF
    1320 
    1321  IF (PRESENT(vmxfcs)) THEN
    1322  error=nf90_inq_varid(ncid, "shdmax", id_var)
    1323  CALL netcdf_err(error, 'READING shdmax ID' )
    1324  error=nf90_get_var(ncid, id_var, dummy)
    1325  CALL netcdf_err(error, 'READING shdmax' )
    1326  vmxfcs = reshape(dummy, (/lensfc/))
    1327  ENDIF
    1328 
    1329  IF (PRESENT(slpfcs)) THEN
    1330  error=nf90_inq_varid(ncid, "slope", id_var)
    1331  CALL netcdf_err(error, 'READING slope ID' )
    1332  error=nf90_get_var(ncid, id_var, dummy)
    1333  CALL netcdf_err(error, 'READING slope' )
    1334  slpfcs = reshape(dummy, (/lensfc/))
    1335  ENDIF
    1336 
    1337  IF (PRESENT(absfcs)) THEN
    1338  error=nf90_inq_varid(ncid, "snoalb", id_var)
    1339  CALL netcdf_err(error, 'READING snoalb ID' )
    1340  error=nf90_get_var(ncid, id_var, dummy)
    1341  CALL netcdf_err(error, 'READING snoalb' )
    1342  absfcs = reshape(dummy, (/lensfc/))
    1343  ENDIF
    1344 
    1345  IF (PRESENT(t2m)) THEN
    1346  error=nf90_inq_varid(ncid, "t2m", id_var)
    1347  CALL netcdf_err(error, 'READING t2m ID' )
    1348  error=nf90_get_var(ncid, id_var, dummy)
    1349  CALL netcdf_err(error, 'READING t2m' )
    1350  t2m = reshape(dummy, (/lensfc/))
    1351  ENDIF
    1352 
    1353  IF (PRESENT(q2m)) THEN
    1354  error=nf90_inq_varid(ncid, "q2m", id_var)
    1355  CALL netcdf_err(error, 'READING q2m ID' )
    1356  error=nf90_get_var(ncid, id_var, dummy)
    1357  CALL netcdf_err(error, 'READING q2m' )
    1358  q2m = reshape(dummy, (/lensfc/))
    1359  ENDIF
    1360 
    1361  nsst_read : IF(do_nsst) THEN
    1362 
    1363  print*
    1364  print*,"WILL READ NSST RECORDS."
    1365 
    1366  error=nf90_inq_varid(ncid, "c_0", id_var)
    1367  CALL netcdf_err(error, 'READING c_0 ID' )
    1368  error=nf90_get_var(ncid, id_var, dummy)
    1369  CALL netcdf_err(error, 'READING c_0' )
    1370  nsst%C_0 = reshape(dummy, (/lensfc/))
    1371 
    1372  error=nf90_inq_varid(ncid, "c_d", id_var)
    1373  CALL netcdf_err(error, 'READING c_d ID' )
    1374  error=nf90_get_var(ncid, id_var, dummy)
    1375  CALL netcdf_err(error, 'READING c_d' )
    1376  nsst%C_D = reshape(dummy, (/lensfc/))
    1377 
    1378  error=nf90_inq_varid(ncid, "d_conv", id_var)
    1379  CALL netcdf_err(error, 'READING d_conv ID' )
    1380  error=nf90_get_var(ncid, id_var, dummy)
    1381  CALL netcdf_err(error, 'READING d_conv' )
    1382  nsst%D_CONV = reshape(dummy, (/lensfc/))
    1383 
    1384  error=nf90_inq_varid(ncid, "dt_cool", id_var)
    1385  CALL netcdf_err(error, 'READING dt_cool ID' )
    1386  error=nf90_get_var(ncid, id_var, dummy)
    1387  CALL netcdf_err(error, 'READING dt_cool' )
    1388  nsst%DT_COOL = reshape(dummy, (/lensfc/))
    1389 
    1390  error=nf90_inq_varid(ncid, "ifd", id_var)
    1391  CALL netcdf_err(error, 'READING ifd ID' )
    1392  error=nf90_get_var(ncid, id_var, dummy)
    1393  CALL netcdf_err(error, 'READING ifd' )
    1394  nsst%IFD = reshape(dummy, (/lensfc/))
    1395 
    1396  error=nf90_inq_varid(ncid, "qrain", id_var)
    1397  CALL netcdf_err(error, 'READING qrain ID' )
    1398  error=nf90_get_var(ncid, id_var, dummy)
    1399  CALL netcdf_err(error, 'READING qrain' )
    1400  nsst%QRAIN = reshape(dummy, (/lensfc/))
    1401 
    1402  error=nf90_inq_varid(ncid, "tref", id_var)
    1403  CALL netcdf_err(error, 'READING tref ID' )
    1404  error=nf90_get_var(ncid, id_var, dummy)
    1405  CALL netcdf_err(error, 'READING tref' )
    1406  nsst%TREF = reshape(dummy, (/lensfc/))
    1407 
    1408  error=nf90_inq_varid(ncid, "w_0", id_var)
    1409  CALL netcdf_err(error, 'READING w_0 ID' )
    1410  error=nf90_get_var(ncid, id_var, dummy)
    1411  CALL netcdf_err(error, 'READING w_0' )
    1412  nsst%W_0 = reshape(dummy, (/lensfc/))
    1413 
    1414  error=nf90_inq_varid(ncid, "w_d", id_var)
    1415  CALL netcdf_err(error, 'READING w_d ID' )
    1416  error=nf90_get_var(ncid, id_var, dummy)
    1417  CALL netcdf_err(error, 'READING w_d' )
    1418  nsst%W_D = reshape(dummy, (/lensfc/))
    1419 
    1420  error=nf90_inq_varid(ncid, "xs", id_var)
    1421  CALL netcdf_err(error, 'READING xs ID' )
    1422  error=nf90_get_var(ncid, id_var, dummy)
    1423  CALL netcdf_err(error, 'READING xs' )
    1424  nsst%XS = reshape(dummy, (/lensfc/))
    1425 
    1426  error=nf90_inq_varid(ncid, "xt", id_var)
    1427  CALL netcdf_err(error, 'READING xt ID' )
    1428  error=nf90_get_var(ncid, id_var, dummy)
    1429  CALL netcdf_err(error, 'READING xt' )
    1430  nsst%XT = reshape(dummy, (/lensfc/))
    1431 
    1432  error=nf90_inq_varid(ncid, "xtts", id_var)
    1433  CALL netcdf_err(error, 'READING xtts ID' )
    1434  error=nf90_get_var(ncid, id_var, dummy)
    1435  CALL netcdf_err(error, 'READING xtts' )
    1436  nsst%XTTS = reshape(dummy, (/lensfc/))
    1437 
    1438  error=nf90_inq_varid(ncid, "xu", id_var)
    1439  CALL netcdf_err(error, 'READING xu ID' )
    1440  error=nf90_get_var(ncid, id_var, dummy)
    1441  CALL netcdf_err(error, 'READING xu' )
    1442  nsst%XU = reshape(dummy, (/lensfc/))
    1443 
    1444  error=nf90_inq_varid(ncid, "xv", id_var)
    1445  CALL netcdf_err(error, 'READING xv ID' )
    1446  error=nf90_get_var(ncid, id_var, dummy)
    1447  CALL netcdf_err(error, 'READING xv' )
    1448  nsst%XV = reshape(dummy, (/lensfc/))
    1449 
    1450  error=nf90_inq_varid(ncid, "xz", id_var)
    1451  CALL netcdf_err(error, 'READING xz ID' )
    1452  error=nf90_get_var(ncid, id_var, dummy)
    1453  CALL netcdf_err(error, 'READING xz' )
    1454  nsst%XZ = reshape(dummy, (/lensfc/))
    1455 
    1456  error=nf90_inq_varid(ncid, "xzts", id_var)
    1457  CALL netcdf_err(error, 'READING xzts ID' )
    1458  error=nf90_get_var(ncid, id_var, dummy)
    1459  CALL netcdf_err(error, 'READING xzts' )
    1460  nsst%XZTS = reshape(dummy, (/lensfc/))
    1461 
    1462  error=nf90_inq_varid(ncid, "z_c", id_var)
    1463  CALL netcdf_err(error, 'READING z_c ID' )
    1464  error=nf90_get_var(ncid, id_var, dummy)
    1465  CALL netcdf_err(error, 'READING z_c' )
    1466  nsst%Z_C = reshape(dummy, (/lensfc/))
    1467 
    1468  error=nf90_inq_varid(ncid, "zm", id_var)
    1469  CALL netcdf_err(error, 'READING zm ID' )
    1470  error=nf90_get_var(ncid, id_var, dummy)
    1471  CALL netcdf_err(error, 'READING zm' )
    1472  nsst%ZM = reshape(dummy, (/lensfc/))
    1473 
    1474  END IF nsst_read
    1475 
    1476  DEALLOCATE(dummy)
    1477 
    1478  ALLOCATE(dummy3d(idim,jdim,lsoil))
    1479 
    1480  IF (PRESENT(smcfcs)) THEN
    1481  error=nf90_inq_varid(ncid, "smc", id_var)
    1482  CALL netcdf_err(error, 'READING smc ID' )
    1483  error=nf90_get_var(ncid, id_var, dummy3d)
    1484  CALL netcdf_err(error, 'READING smc' )
    1485  smcfcs = reshape(dummy3d, (/lensfc,lsoil/))
    1486  ENDIF
    1487 
    1488  IF (PRESENT(slcfcs)) THEN
    1489  error=nf90_inq_varid(ncid, "slc", id_var)
    1490  CALL netcdf_err(error, 'READING slc ID' )
    1491  error=nf90_get_var(ncid, id_var, dummy3d)
    1492  CALL netcdf_err(error, 'READING slc' )
    1493  slcfcs = reshape(dummy3d, (/lensfc,lsoil/))
    1494  ENDIF
    1495 
    1496  IF (PRESENT(stcfcs)) THEN
    1497  error=nf90_inq_varid(ncid, "stc", id_var)
    1498  CALL netcdf_err(error, 'READING stc ID' )
    1499  error=nf90_get_var(ncid, id_var, dummy3d)
    1500  CALL netcdf_err(error, 'READING stc' )
    1501  stcfcs = reshape(dummy3d, (/lensfc,lsoil/))
    1502  ENDIF
    1503 
    1504  DEALLOCATE(dummy3d)
    1505 
    1506 ! cloud fields not in warm restart files. set to zero?
    1507 
    1508  IF (PRESENT(cvfcs)) cvfcs = 0.0
    1509  IF (PRESENT(cvtfcs)) cvtfcs = 0.0
    1510  IF (PRESENT(cvbfcs)) cvbfcs = 0.0
    1511 
    1512 ! soil layer thicknesses not in warm restart files. hardwire
    1513 ! for now.
    1514 
    1515  IF (PRESENT(zsoil)) THEN
    1516  zsoil(1) = -0.1
    1517  zsoil(2) = -0.4
    1518  zsoil(3) = -1.0
    1519  zsoil(4) = -2.0
    1520  ENDIF
    1521 
    1522  error = nf90_close(ncid)
    1523 
    1524  END SUBROUTINE read_data
    1525 
    1542 subroutine read_tf_clim_grb(file_sst,sst,rlats_sst,rlons_sst,mlat_sst,mlon_sst,mon)
    1544  use mpi
    1545 
    1546  implicit none
    1547 
    1548 ! declare passed variables and arrays
    1549  character(*) , intent(in ) :: file_sst
    1550  integer , intent(in ) :: mon,mlat_sst,mlon_sst
    1551  real, dimension(mlat_sst) , intent( out) :: rlats_sst
    1552  real, dimension(mlon_sst) , intent( out) :: rlons_sst
    1553  real, dimension(mlon_sst,mlat_sst) , intent( out) :: sst
    1554 
    1555 ! declare local parameters
    1556  integer,parameter:: lu_sst = 21 ! fortran unit number of grib sst file
    1557  real, parameter :: deg2rad = 3.141593/180.0
    1558 
    1559 ! declare local variables and arrays
    1560  logical(1), allocatable, dimension(:) :: lb
    1561 
    1562  integer :: nlat_sst
    1563  integer :: nlon_sst
    1564  integer :: iret,ni,nj
    1565  integer :: mscan,kb1,ierr
    1566  integer :: jincdir,i,iincdir,kb2,kb3,kf,kg,k,j,jf
    1567  integer, dimension(22):: jgds,kgds
    1568  integer, dimension(25):: jpds,kpds
    1569 
    1570  real :: xsst0
    1571  real :: ysst0
    1572  real :: dres
    1573  real, allocatable, dimension(:) :: f
    1574 
    1575 !************+******************************************************************************
    1576 !
    1577 ! open sst analysis file (grib)
    1578  write(*,*) ' sstclm : ',file_sst
    1579  call baopenr(lu_sst,trim(file_sst),iret)
    1580  if (iret /= 0 ) then
    1581  write(6,*)'FATAL ERROR in read_tf_clm_grb: error opening sst file.'
    1582  CALL mpi_abort(mpi_comm_world, 111, ierr)
    1583  endif
    1584 
    1585 ! define sst variables for read
    1586  j=-1
    1587  jpds=-1
    1588  jgds=-1
    1589  jpds(5)=11 ! sst variable
    1590  jpds(6)=1 ! surface
    1591  jpds(9) = mon
    1592  call getgbh(lu_sst,0,j,jpds,jgds,kg,kf,k,kpds,kgds,iret)
    1593 
    1594  nlat_sst = kgds(3) ! number points on longitude circle (360)
    1595  nlon_sst = kgds(2) ! number points on latitude circle (720)
    1596 
    1597 ! write(*,*) 'nlat_sst, nlon_sst, mon : ',nlat_sst, nlon_sst, mon
    1598 ! write(*,*) 'mlat_sst, mlon_sst : ',mlat_sst, mlon_sst
    1599 
    1600 ! allocate arrays
    1601  allocate(lb(nlat_sst*nlon_sst))
    1602  allocate(f(nlat_sst*nlon_sst))
    1603  jf=nlat_sst*nlon_sst
    1604 
    1605 ! read in the analysis
    1606  call getgb(lu_sst,0,jf,j,jpds,jgds,kf,k,kpds,kgds,lb,f,iret)
    1607  if (iret /= 0) then
    1608  write(6,*)'FATAL ERROR in read_tf_clm_grb: error reading sst analysis data record.'
    1609  deallocate(lb,f)
    1610  CALL mpi_abort(mpi_comm_world, 111, ierr)
    1611  endif
    1612 
    1613  if ( (nlat_sst /= mlat_sst) .or. (nlon_sst /= mlon_sst) ) then
    1614  write(6,*)'FATAL ERROR in read_rtg_org: inconsistent dimensions. mlat_sst,mlon_sst=',&
    1615  mlat_sst,mlon_sst,' -versus- nlat_sst,nlon_sst=',nlat_sst,nlon_sst
    1616  deallocate(lb,f)
    1617  CALL mpi_abort(mpi_comm_world, 111, ierr)
    1618  endif
    1619 
    1620 !
    1621 ! get xlats and xlons
    1622 !
    1623  dres = 180.0/real(nlat_sst)
    1624  ysst0 = 0.5*dres-90.0
    1625  xsst0 = 0.5*dres
    1626 
    1627 ! get lat_sst & lon_sst
    1628  do j = 1, nlat_sst
    1629  rlats_sst(j) = ysst0 + real(j-1)*dres
    1630  enddo
    1631 
    1632  do i = 1, nlon_sst
    1633  rlons_sst(i) = (xsst0 + real(i-1)*dres)
    1634  enddo
    1635 
    1636 ! load dimensions and grid specs. check for unusual values
    1637  ni=kgds(2) ! 720 for 0.5 x 0.5
    1638  nj=kgds(3) ! 360 for 0.5 x 0.5 resolution
    1639 
    1640  mscan=kgds(11)
    1641  kb1=ibits(mscan,7,1) ! i scan direction
    1642  kb2=ibits(mscan,6,1) ! j scan direction
    1643  kb3=ibits(mscan,5,1) ! (i,j) or (j,i)
    1644 
    1645 ! get i and j scanning directions from kb1 and kb2.
    1646 ! 0 yields +1, 1 yields -1. +1 is west to east, -1 is east to west.
    1647  iincdir = 1-kb1*2
    1648 
    1649 ! 0 yields -1, 1 yields +1. +1 is south to north, -1 is north to south.
    1650  jincdir = kb2*2 - 1
    1651 
    1652 ! write(*,*) 'read_tf_clim_grb,iincdir,jincdir : ',iincdir,jincdir
    1653  do k=1,kf
    1654 
    1655 ! kb3 from scan mode indicates if i points are consecutive
    1656 ! or if j points are consecutive
    1657  if(kb3==0)then ! (i,j)
    1658  i=(ni+1)*kb1+(mod(k-1,ni)+1)*iincdir
    1659  j=(nj+1)*(1-kb2)+jincdir*((k-1)/ni+1)
    1660  else ! (j,i)
    1661  j=(nj+1)*(1-kb2)+(mod(k-1,nj)+1)*jincdir
    1662  i=(ni+1)*kb1+iincdir*((k-1)/nj+1)
    1663  endif
    1664  sst(i,j) = f(k)
    1665  end do
    1666 
    1667  deallocate(lb,f)
    1668 
    1669  call baclose(lu_sst,iret)
    1670  if (iret /= 0 ) then
    1671  write(6,*)'FATAL ERROR in read_tf_clm_grb: error closing sst file.'
    1672  CALL mpi_abort(mpi_comm_world, 121, ierr)
    1673  endif
    1674 
    1675 end subroutine read_tf_clim_grb
    1676 
    1684 subroutine get_tf_clm_dim(file_sst,mlat_sst,mlon_sst)
    1685  use mpi
    1686 
    1687  implicit none
    1688 
    1689 ! declare passed variables and arrays
    1690  character(*) , intent(in ) :: file_sst
    1691  integer , intent(out) :: mlat_sst,mlon_sst
    1692 
    1693 ! declare local parameters
    1694  integer,parameter:: lu_sst = 21 ! fortran unit number of grib sst file
    1695 
    1696  integer :: iret
    1697  integer :: mscan,kb1
    1698  integer :: kf,kg,k,j,ierr
    1699  integer, dimension(22):: jgds,kgds
    1700  integer, dimension(25):: jpds,kpds
    1701 
    1702 !************+******************************************************************************
    1703 !
    1704 ! open sst analysis file (grib)
    1705  call baopenr(lu_sst,trim(file_sst),iret)
    1706  if (iret /= 0 ) then
    1707  write(6,*)'FATAL ERROR in get_tf_clm_dim: error opening sst file.'
    1708  CALL mpi_abort(mpi_comm_world, 111, ierr)
    1709  endif
    1710 
    1711 ! define sst variables for read
    1712  j=-1
    1713  jpds=-1
    1714  jgds=-1
    1715  jpds(5)=11 ! sst variable
    1716  jpds(6)=1 ! surface
    1717  jpds(9) = 1
    1718  call getgbh(lu_sst,0,j,jpds,jgds,kg,kf,k,kpds,kgds,iret)
    1719 
    1720  mlat_sst = kgds(3) ! number points on longitude circle (360)
    1721  mlon_sst = kgds(2) ! number points on latitude circle (720)
    1722 
    1723  write(*,*) 'mlat_sst, mlon_sst : ',mlat_sst, mlon_sst
    1724 
    1725  call baclose(lu_sst,iret)
    1726  if (iret /= 0 ) then
    1727  write(6,*)'FATAL ERROR in get_tf_clm_dim: error closing sst file.'
    1728  CALL mpi_abort(mpi_comm_world, 121, ierr)
    1729  endif
    1730 end subroutine get_tf_clm_dim
    1731 
    1743 subroutine read_salclm_gfs_nc(filename,sal,xlats,xlons,nlat,nlon,itime)
    1744  use netcdf
    1745  implicit none
    1746 
    1747  ! This is the name of the data file we will read.
    1748  character (len=*), intent(in) :: filename
    1749  integer, intent(in) :: nlat,nlon
    1750  integer, intent(in) :: itime
    1751  real, dimension(nlat), intent(out) :: xlats
    1752  real, dimension(nlon), intent(out) :: xlons
    1753  real, dimension(nlon,nlat), intent(out) :: sal
    1754 ! Local variables
    1755  integer :: ncid,ntime
    1756 
    1757  integer, parameter :: ndims = 3
    1758  character (len = *), parameter :: lat_name = "latitude"
    1759  character (len = *), parameter :: lon_name = "longitude"
    1760  character (len = *), parameter :: t_name = "time"
    1761  character (len = *), parameter :: sal_name="sal"
    1762  integer :: no_fill,fill_value
    1763  integer :: time_varid,lon_varid, lat_varid, z_varid, sal_varid
    1764 
    1765  ! The start and count arrays will tell the netCDF library where to read our data.
    1766  integer, dimension(ndims) :: start, count
    1767 
    1768  character (len = *), parameter :: units = "units"
    1769  character (len = *), parameter :: sal_units = "psu"
    1770  ! PSU (Practical SalinitUnit). 1 PSU = 1g/kg
    1771  character (len = *), parameter :: time_units = "months"
    1772  character (len = *), parameter :: lat_units = "degrees_north"
    1773  character (len = *), parameter :: lon_units = "degrees_east"
    1774 
    1775  integer :: missv
    1776 ! Loop indices
    1777  integer :: i,j
    1778 
    1779 ! Open the file.
    1780  call nc_check( nf90_open(filename, nf90_nowrite, ncid) )
    1781 
    1782 ! Get the varids of time, latitude, longitude & depth coordinate variables.
    1783  call nc_check( nf90_inq_varid(ncid, t_name, time_varid) )
    1784  call nc_check( nf90_inq_varid(ncid, lat_name, lat_varid) )
    1785  call nc_check( nf90_inq_varid(ncid, lon_name, lon_varid) )
    1786 
    1787 ! Read the time, latitude and longitude data.
    1788 ! call nc_check( nf90_get_var(ncid, time_varid, ntime) )
    1789  call nc_check( nf90_get_var(ncid, lat_varid, xlats) )
    1790  call nc_check( nf90_get_var(ncid, lon_varid, xlons) )
    1791 
    1792 ! Get the varids of the sal netCDF variables.
    1793  call nc_check( nf90_inq_varid(ncid, sal_name,sal_varid) )
    1794 
    1795 ! Read 1 record of nlat*nlon values, starting at the beginning
    1796 ! of the record (the (1, 1, 1, rec) element in the netCDF file).
    1797  start = (/ 1, 1, itime /)
    1798  count = (/ nlon, nlat, 1 /)
    1799 
    1800 ! write(*,*) 'read_salclm_gfs_nc itime : ',itime
    1801 ! Read the sal data from the file, one record at a time.
    1802  call nc_check( nf90_get_var(ncid, sal_varid, sal, start, count) )
    1803 
    1804 ! Close the file. This frees up any internal netCDF resources
    1805 ! associated with the file.
    1806  call nc_check( nf90_close(ncid) )
    1807 
    1808 ! If we got this far, everything worked as expected. Yipee!
    1809 ! print *,"*** SUCCESS reading file ", filename, "!"
    1810 
    1811 end subroutine read_salclm_gfs_nc
    1812 
    1819 subroutine get_dim_nc(filename,nlat,nlon)
    1820  use netcdf
    1821  implicit none
    1822 
    1823  character (len=*), intent(in) :: filename
    1824  integer, intent(out) :: nlat,nlon
    1825 ! Local variables
    1826  character (len = *), parameter :: lat_name = "latitude"
    1827  character (len = *), parameter :: lon_name = "longitude"
    1828  integer :: ncid
    1829  integer :: latdimid,londimid
    1830 
    1831 ! Open the file.
    1832  call nc_check( nf90_open(filename, nf90_nowrite, ncid) )
    1833 
    1834 ! Get dimensions
    1835  call nc_check( nf90_inq_dimid(ncid,lat_name,latdimid) )
    1836  call nc_check( nf90_inq_dimid(ncid,lon_name,londimid) )
    1837  call nc_check( nf90_inquire_dimension(ncid,latdimid,len=nlat) )
    1838  call nc_check( nf90_inquire_dimension(ncid,londimid,len=nlon) )
    1839 
    1840 ! write(*,'(a,1x,a6,2I8)') 'get_dim_nc, file, nlat, nlon : ',filename,nlat,nlon
    1841 
    1842 ! Close the file. This frees up any internal netCDF resources
    1843 ! associated with the file.
    1844  call nc_check( nf90_close(ncid) )
    1845 
    1846 ! If we got this far, everything worked as expected. Yipee!
    1847 ! print *,"*** SUCCESS get dimensions from nc file ", filename, "!"
    1848 
    1849 end subroutine get_dim_nc
    1850 
    1856 subroutine nc_check(status)
    1858  use mpi
    1859  use netcdf
    1860 
    1861  integer, intent ( in) :: status
    1862  integer :: ierr
    1863 
    1864  if(status /= nf90_noerr) then
    1865  print *, 'FATAL ERROR:'
    1866  print *, trim(nf90_strerror(status))
    1867  CALL mpi_abort(mpi_comm_world, 122, ierr)
    1868  end if
    1869 end subroutine nc_check
    1870 
    1871  END MODULE read_write_data
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/resize.js b/ver-1.11.0/global_cycle/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/global_cycle/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/global_cycle/search/all_0.html b/ver-1.11.0/global_cycle/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_0.js b/ver-1.11.0/global_cycle/search/all_0.js new file mode 100644 index 000000000..4598a3bbc --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['add_5fincrement_5fsnow',['add_increment_snow',['../land__increments_8f90.html#ae260c4c211018b060db3dfb15fdf74d6',1,'land_increments']]], + ['add_5fincrement_5fsoil',['add_increment_soil',['../land__increments_8f90.html#a425ded6741ffff2a673035ac541c8c89',1,'land_increments']]], + ['adjust_5fnsst',['ADJUST_NSST',['../cycle_8f90.html#a3bcd703b740c4c43e45df8ce88224e2c',1,'cycle.f90']]], + ['apply_5fland_5fda_5fadjustments_5fsnd',['apply_land_da_adjustments_snd',['../land__increments_8f90.html#a46cacafd29fb14ec2945614634e35478',1,'land_increments']]], + ['apply_5fland_5fda_5fadjustments_5fsoil',['apply_land_da_adjustments_soil',['../land__increments_8f90.html#a0eb9fa735a3dd4b7757eec092da0317e',1,'land_increments']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_1.html b/ver-1.11.0/global_cycle/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_1.js b/ver-1.11.0/global_cycle/search/all_1.js new file mode 100644 index 000000000..95e5d31b7 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['calculate_5flandinc_5fmask',['calculate_landinc_mask',['../land__increments_8f90.html#af965fc620e3a6d871e762d0adc67f386',1,'land_increments']]], + ['climo_5ftrend',['CLIMO_TREND',['../cycle_8f90.html#adb312a7db72e061a8eaaff76684a724f',1,'cycle.f90']]], + ['cycle_2ef90',['cycle.f90',['../cycle_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_2.html b/ver-1.11.0/global_cycle/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_2.js b/ver-1.11.0/global_cycle/search/all_2.js new file mode 100644 index 000000000..3a697661f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dtref_5fgaus',['dtref_gaus',['../namespaceREAD__WRITE__DATA.html#ada53dd5f6510915e42079c455ee73717',1,'READ_WRITE_DATA']]], + ['dtzm_5fpoint',['DTZM_POINT',['../cycle_8f90.html#ad8d01c13656e78126c451632e5951940',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_3.html b/ver-1.11.0/global_cycle/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_3.js b/ver-1.11.0/global_cycle/search/all_3.js new file mode 100644 index 000000000..07b858a38 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['get_5fdim_5fnc',['get_dim_nc',['../namespaceREAD__WRITE__DATA.html#a6943b00e10768f1c672da3bcd47873ad',1,'READ_WRITE_DATA']]], + ['get_5fsal_5fclm',['get_sal_clm',['../cycle_8f90.html#aaa5ccf0addd191b13a3bdfb9558a005b',1,'cycle.f90']]], + ['get_5fsal_5fclm_5fta',['get_sal_clm_ta',['../cycle_8f90.html#a6cb5a7888d49b29e0b30e5ca206f7294',1,'cycle.f90']]], + ['get_5ftf_5fclm',['get_tf_clm',['../cycle_8f90.html#ad6a9017387ab47706fdac2c2c0593f0a',1,'cycle.f90']]], + ['get_5ftf_5fclm_5fdim',['get_tf_clm_dim',['../namespaceREAD__WRITE__DATA.html#ad777b3fdbc99a37e86e4a841c400355b',1,'READ_WRITE_DATA']]], + ['get_5ftf_5fclm_5fta',['get_tf_clm_ta',['../cycle_8f90.html#a7dd48dac426c3c605ce62a2d868a72c3',1,'cycle.f90']]], + ['get_5ftim_5fwei',['get_tim_wei',['../cycle_8f90.html#a250f9e210a13e3bd9b669f904a279d83',1,'cycle.f90']]], + ['global_5fcycle',['global_cycle',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_4.html b/ver-1.11.0/global_cycle/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_4.js b/ver-1.11.0/global_cycle/search/all_4.js new file mode 100644 index 000000000..692a8ef35 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['idim_5fgaus',['idim_gaus',['../namespaceREAD__WRITE__DATA.html#aeef3c8ca06080d8ea05f6fa5cc6a2e30',1,'READ_WRITE_DATA']]], + ['intp_5ftile',['intp_tile',['../cycle_8f90.html#ab37a1ed396c350a20fed5c59a05dbb59',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_5.html b/ver-1.11.0/global_cycle/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_5.js b/ver-1.11.0/global_cycle/search/all_5.js new file mode 100644 index 000000000..bf67b02a1 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jdim_5fgaus',['jdim_gaus',['../namespaceREAD__WRITE__DATA.html#a2a92699263a01b953ef2fb20954ad8cb',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_6.html b/ver-1.11.0/global_cycle/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_6.js b/ver-1.11.0/global_cycle/search/all_6.js new file mode 100644 index 000000000..0d278efd8 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['kind_5fdbl_5fprec',['kind_dbl_prec',['../namespaceMACHINE.html#ac48e08cc5549d22cefd4f2623fd947aa',1,'MACHINE']]], + ['kind_5fio4',['kind_io4',['../namespaceMACHINE.html#aa632fb8829a3193ea14e28c1d7e51b2f',1,'MACHINE']]], + ['kind_5fio8',['kind_io8',['../namespaceMACHINE.html#a2fc44b0610f436f7748aee153af944dc',1,'MACHINE']]], + ['kind_5fsngl_5fprec',['kind_sngl_prec',['../namespaceMACHINE.html#aaf4ad38d4a8bcd4de16b9247fc69310b',1,'MACHINE']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_7.html b/ver-1.11.0/global_cycle/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_7.js b/ver-1.11.0/global_cycle/search/all_7.js new file mode 100644 index 000000000..87b3a6e55 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['land_5fincrements_2ef90',['land_increments.f90',['../land__increments_8f90.html',1,'']]], + ['lsm_5fnoah',['lsm_noah',['../land__increments_8f90.html#ad0e0ffe4348e56494575f7f004452868',1,'land_increments']]], + ['lsm_5fnoahmp',['lsm_noahmp',['../land__increments_8f90.html#a3f83b45e15f8b52c19a9fb3ea1835009',1,'land_increments']]], + ['lsoil_5fincr',['lsoil_incr',['../land__increments_8f90.html#a45e8f8152a7d38fc49808987a86e8cd1',1,'land_increments']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_8.html b/ver-1.11.0/global_cycle/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_8.js b/ver-1.11.0/global_cycle/search/all_8.js new file mode 100644 index 000000000..bc676b35f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['machine',['MACHINE',['../namespaceMACHINE.html',1,'']]], + ['machine_2ef90',['machine.f90',['../machine_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_9.html b/ver-1.11.0/global_cycle/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_9.js b/ver-1.11.0/global_cycle/search/all_9.js new file mode 100644 index 000000000..1aaca0ae0 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['nc_5fcheck',['nc_check',['../namespaceREAD__WRITE__DATA.html#adbc02068c2c65d819b62e978f5e379a6',1,'READ_WRITE_DATA']]], + ['netcdf_5ferr',['NETCDF_ERR',['../namespaceREAD__WRITE__DATA.html#a980713dc0d911ae914e6db1eb704a56b',1,'READ_WRITE_DATA']]], + ['nsst_5fdata',['NSST_DATA',['../namespaceREAD__WRITE__DATA.html#structREAD__WRITE__DATA_1_1NSST__DATA',1,'READ_WRITE_DATA']]], + ['nsst_5fwater_5freset',['nsst_water_reset',['../cycle_8f90.html#af8c1e8a1a1b952babdabb8122a4e2fda',1,'cycle.f90']]], + ['num_5fparthds',['num_parthds',['../num__parthds_8f90.html#ac3494345203fb1f34de07ceff1019d94',1,'num_parthds.f90']]], + ['num_5fparthds_2ef90',['num_parthds.f90',['../num__parthds_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_a.html b/ver-1.11.0/global_cycle/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_a.js b/ver-1.11.0/global_cycle/search/all_a.js new file mode 100644 index 000000000..845dca2f7 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_a.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html',1,'']]], + ['read_5fdata',['READ_DATA',['../namespaceREAD__WRITE__DATA.html#aa47cb22fc08f1f566848f9ad0ea1ad80',1,'READ_WRITE_DATA']]], + ['read_5fgsi_5fdata',['READ_GSI_DATA',['../namespaceREAD__WRITE__DATA.html#ac5baedc292577bd0c2365ad4077458f1',1,'READ_WRITE_DATA']]], + ['read_5flat_5flon_5forog',['READ_LAT_LON_OROG',['../namespaceREAD__WRITE__DATA.html#a4076fde1bf855db325146f1f2c524511',1,'READ_WRITE_DATA']]], + ['read_5fsalclm_5fgfs_5fnc',['read_salclm_gfs_nc',['../namespaceREAD__WRITE__DATA.html#a6136e3822264e2729ebabb52df579940',1,'READ_WRITE_DATA']]], + ['read_5ftf_5fclim_5fgrb',['read_tf_clim_grb',['../namespaceREAD__WRITE__DATA.html#a1ff588099b0d16efc90b7465a8ffc15f',1,'READ_WRITE_DATA']]], + ['read_5fwrite_5fdata',['READ_WRITE_DATA',['../namespaceREAD__WRITE__DATA.html',1,'']]], + ['read_5fwrite_5fdata_2ef90',['read_write_data.f90',['../read__write__data_8f90.html',1,'']]], + ['remap_5fcoef',['REMAP_COEF',['../namespaceutils.html#af61419fdfbada973e156f6b020ae165a',1,'utils']]], + ['remove_5fchecksum',['remove_checksum',['../namespaceREAD__WRITE__DATA.html#a4848f484a5c1228edca5c5e8f5ba7d23',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_b.html b/ver-1.11.0/global_cycle/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_b.js b/ver-1.11.0/global_cycle/search/all_b.js new file mode 100644 index 000000000..3074fe2b6 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sfc_5fdrv',['SFC_DRV',['../cycle_8f90.html#ab7330f0a35c0940f420a5106c42b9fca',1,'cycle.f90']]], + ['sfcdrv',['SFCDRV',['../cycle_8f90.html#af53223ab45c7afa36e3d1c5016070e0b',1,'cycle.f90']]], + ['slc_5finc_5fgaus',['slc_inc_gaus',['../namespaceREAD__WRITE__DATA.html#a6fed39a47ad6d32c84fe41028254d568',1,'READ_WRITE_DATA']]], + ['slmsk_5fgaus',['slmsk_gaus',['../namespaceREAD__WRITE__DATA.html#a568effba064bf165405b8df3844c37d9',1,'READ_WRITE_DATA']]], + ['soilsnow_5fgaus',['soilsnow_gaus',['../namespaceREAD__WRITE__DATA.html#adf8fb6840c516a88d722b08d26f24d2f',1,'READ_WRITE_DATA']]], + ['stc_5finc_5fgaus',['stc_inc_gaus',['../namespaceREAD__WRITE__DATA.html#a4fb55178311fe11bc8ad04847050ef03',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_c.html b/ver-1.11.0/global_cycle/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_c.js b/ver-1.11.0/global_cycle/search/all_c.js new file mode 100644 index 000000000..581be1152 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tf_5fthaw_5fset',['tf_thaw_set',['../cycle_8f90.html#ade32d73a7d3d2ee2e9813674aea1f797',1,'cycle.f90']]], + ['tfreez',['tfreez',['../land__increments_8f90.html#a942fd8279c4a90e040fa084be0f92d1f',1,'land_increments::tfreez()'],['../cycle_8f90.html#a8609bf25108d7ef0c230efe2a92d2517',1,'tfreez(): cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_d.html b/ver-1.11.0/global_cycle/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_d.js b/ver-1.11.0/global_cycle/search/all_d.js new file mode 100644 index 000000000..2c8546e45 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['utils',['utils',['../namespaceutils.html',1,'']]], + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/all_e.html b/ver-1.11.0/global_cycle/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/all_e.js b/ver-1.11.0/global_cycle/search/all_e.js new file mode 100644 index 000000000..01b02a881 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/all_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write_5fdata',['write_data',['../namespaceREAD__WRITE__DATA.html#a90ee92e9597a92559f0a9dd384762448',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/classes_0.html b/ver-1.11.0/global_cycle/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/classes_0.js b/ver-1.11.0/global_cycle/search/classes_0.js new file mode 100644 index 000000000..87d841a3f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nsst_5fdata',['NSST_DATA',['../namespaceREAD__WRITE__DATA.html#structREAD__WRITE__DATA_1_1NSST__DATA',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/close.png b/ver-1.11.0/global_cycle/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/search/files_0.html b/ver-1.11.0/global_cycle/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_0.js b/ver-1.11.0/global_cycle/search/files_0.js new file mode 100644 index 000000000..038a09774 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cycle_2ef90',['cycle.f90',['../cycle_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/files_1.html b/ver-1.11.0/global_cycle/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_1.js b/ver-1.11.0/global_cycle/search/files_1.js new file mode 100644 index 000000000..3285ce19f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['land_5fincrements_2ef90',['land_increments.f90',['../land__increments_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/files_2.html b/ver-1.11.0/global_cycle/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_2.js b/ver-1.11.0/global_cycle/search/files_2.js new file mode 100644 index 000000000..3518c9b63 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['machine_2ef90',['machine.f90',['../machine_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/files_3.html b/ver-1.11.0/global_cycle/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_3.js b/ver-1.11.0/global_cycle/search/files_3.js new file mode 100644 index 000000000..6469d2074 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['num_5fparthds_2ef90',['num_parthds.f90',['../num__parthds_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/files_4.html b/ver-1.11.0/global_cycle/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_4.js b/ver-1.11.0/global_cycle/search/files_4.js new file mode 100644 index 000000000..8321480d6 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5fwrite_5fdata_2ef90',['read_write_data.f90',['../read__write__data_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/files_5.html b/ver-1.11.0/global_cycle/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/files_5.js b/ver-1.11.0/global_cycle/search/files_5.js new file mode 100644 index 000000000..be5261352 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_0.html b/ver-1.11.0/global_cycle/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_0.js b/ver-1.11.0/global_cycle/search/functions_0.js new file mode 100644 index 000000000..4598a3bbc --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['add_5fincrement_5fsnow',['add_increment_snow',['../land__increments_8f90.html#ae260c4c211018b060db3dfb15fdf74d6',1,'land_increments']]], + ['add_5fincrement_5fsoil',['add_increment_soil',['../land__increments_8f90.html#a425ded6741ffff2a673035ac541c8c89',1,'land_increments']]], + ['adjust_5fnsst',['ADJUST_NSST',['../cycle_8f90.html#a3bcd703b740c4c43e45df8ce88224e2c',1,'cycle.f90']]], + ['apply_5fland_5fda_5fadjustments_5fsnd',['apply_land_da_adjustments_snd',['../land__increments_8f90.html#a46cacafd29fb14ec2945614634e35478',1,'land_increments']]], + ['apply_5fland_5fda_5fadjustments_5fsoil',['apply_land_da_adjustments_soil',['../land__increments_8f90.html#a0eb9fa735a3dd4b7757eec092da0317e',1,'land_increments']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_1.html b/ver-1.11.0/global_cycle/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_1.js b/ver-1.11.0/global_cycle/search/functions_1.js new file mode 100644 index 000000000..6cf64ca2b --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['calculate_5flandinc_5fmask',['calculate_landinc_mask',['../land__increments_8f90.html#af965fc620e3a6d871e762d0adc67f386',1,'land_increments']]], + ['climo_5ftrend',['CLIMO_TREND',['../cycle_8f90.html#adb312a7db72e061a8eaaff76684a724f',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_2.html b/ver-1.11.0/global_cycle/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_2.js b/ver-1.11.0/global_cycle/search/functions_2.js new file mode 100644 index 000000000..67e107183 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dtzm_5fpoint',['DTZM_POINT',['../cycle_8f90.html#ad8d01c13656e78126c451632e5951940',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_3.html b/ver-1.11.0/global_cycle/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_3.js b/ver-1.11.0/global_cycle/search/functions_3.js new file mode 100644 index 000000000..c28f0f65c --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['get_5fdim_5fnc',['get_dim_nc',['../namespaceREAD__WRITE__DATA.html#a6943b00e10768f1c672da3bcd47873ad',1,'READ_WRITE_DATA']]], + ['get_5fsal_5fclm',['get_sal_clm',['../cycle_8f90.html#aaa5ccf0addd191b13a3bdfb9558a005b',1,'cycle.f90']]], + ['get_5fsal_5fclm_5fta',['get_sal_clm_ta',['../cycle_8f90.html#a6cb5a7888d49b29e0b30e5ca206f7294',1,'cycle.f90']]], + ['get_5ftf_5fclm',['get_tf_clm',['../cycle_8f90.html#ad6a9017387ab47706fdac2c2c0593f0a',1,'cycle.f90']]], + ['get_5ftf_5fclm_5fdim',['get_tf_clm_dim',['../namespaceREAD__WRITE__DATA.html#ad777b3fdbc99a37e86e4a841c400355b',1,'READ_WRITE_DATA']]], + ['get_5ftf_5fclm_5fta',['get_tf_clm_ta',['../cycle_8f90.html#a7dd48dac426c3c605ce62a2d868a72c3',1,'cycle.f90']]], + ['get_5ftim_5fwei',['get_tim_wei',['../cycle_8f90.html#a250f9e210a13e3bd9b669f904a279d83',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_4.html b/ver-1.11.0/global_cycle/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_4.js b/ver-1.11.0/global_cycle/search/functions_4.js new file mode 100644 index 000000000..f0f28615e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['intp_5ftile',['intp_tile',['../cycle_8f90.html#ab37a1ed396c350a20fed5c59a05dbb59',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_5.html b/ver-1.11.0/global_cycle/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_5.js b/ver-1.11.0/global_cycle/search/functions_5.js new file mode 100644 index 000000000..eb7ac1dae --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['nc_5fcheck',['nc_check',['../namespaceREAD__WRITE__DATA.html#adbc02068c2c65d819b62e978f5e379a6',1,'READ_WRITE_DATA']]], + ['netcdf_5ferr',['NETCDF_ERR',['../namespaceREAD__WRITE__DATA.html#a980713dc0d911ae914e6db1eb704a56b',1,'READ_WRITE_DATA']]], + ['nsst_5fwater_5freset',['nsst_water_reset',['../cycle_8f90.html#af8c1e8a1a1b952babdabb8122a4e2fda',1,'cycle.f90']]], + ['num_5fparthds',['num_parthds',['../num__parthds_8f90.html#ac3494345203fb1f34de07ceff1019d94',1,'num_parthds.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_6.html b/ver-1.11.0/global_cycle/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_6.js b/ver-1.11.0/global_cycle/search/functions_6.js new file mode 100644 index 000000000..82b547632 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['read_5fdata',['READ_DATA',['../namespaceREAD__WRITE__DATA.html#aa47cb22fc08f1f566848f9ad0ea1ad80',1,'READ_WRITE_DATA']]], + ['read_5fgsi_5fdata',['READ_GSI_DATA',['../namespaceREAD__WRITE__DATA.html#ac5baedc292577bd0c2365ad4077458f1',1,'READ_WRITE_DATA']]], + ['read_5flat_5flon_5forog',['READ_LAT_LON_OROG',['../namespaceREAD__WRITE__DATA.html#a4076fde1bf855db325146f1f2c524511',1,'READ_WRITE_DATA']]], + ['read_5fsalclm_5fgfs_5fnc',['read_salclm_gfs_nc',['../namespaceREAD__WRITE__DATA.html#a6136e3822264e2729ebabb52df579940',1,'READ_WRITE_DATA']]], + ['read_5ftf_5fclim_5fgrb',['read_tf_clim_grb',['../namespaceREAD__WRITE__DATA.html#a1ff588099b0d16efc90b7465a8ffc15f',1,'READ_WRITE_DATA']]], + ['remap_5fcoef',['REMAP_COEF',['../namespaceutils.html#af61419fdfbada973e156f6b020ae165a',1,'utils']]], + ['remove_5fchecksum',['remove_checksum',['../namespaceREAD__WRITE__DATA.html#a4848f484a5c1228edca5c5e8f5ba7d23',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_7.html b/ver-1.11.0/global_cycle/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_7.js b/ver-1.11.0/global_cycle/search/functions_7.js new file mode 100644 index 000000000..9d27aa303 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sfc_5fdrv',['SFC_DRV',['../cycle_8f90.html#ab7330f0a35c0940f420a5106c42b9fca',1,'cycle.f90']]], + ['sfcdrv',['SFCDRV',['../cycle_8f90.html#af53223ab45c7afa36e3d1c5016070e0b',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_8.html b/ver-1.11.0/global_cycle/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_8.js b/ver-1.11.0/global_cycle/search/functions_8.js new file mode 100644 index 000000000..84772d5fe --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tf_5fthaw_5fset',['tf_thaw_set',['../cycle_8f90.html#ade32d73a7d3d2ee2e9813674aea1f797',1,'cycle.f90']]], + ['tfreez',['tfreez',['../cycle_8f90.html#a8609bf25108d7ef0c230efe2a92d2517',1,'cycle.f90']]] +]; diff --git a/ver-1.11.0/global_cycle/search/functions_9.html b/ver-1.11.0/global_cycle/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/functions_9.js b/ver-1.11.0/global_cycle/search/functions_9.js new file mode 100644 index 000000000..01b02a881 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write_5fdata',['write_data',['../namespaceREAD__WRITE__DATA.html#a90ee92e9597a92559f0a9dd384762448',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/mag_sel.png b/ver-1.11.0/global_cycle/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/search/namespaces_0.html b/ver-1.11.0/global_cycle/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/namespaces_0.js b/ver-1.11.0/global_cycle/search/namespaces_0.js new file mode 100644 index 000000000..1018c8b4e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['machine',['MACHINE',['../namespaceMACHINE.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/namespaces_1.html b/ver-1.11.0/global_cycle/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/namespaces_1.js b/ver-1.11.0/global_cycle/search/namespaces_1.js new file mode 100644 index 000000000..1fe5f8d30 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5fwrite_5fdata',['READ_WRITE_DATA',['../namespaceREAD__WRITE__DATA.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/namespaces_2.html b/ver-1.11.0/global_cycle/search/namespaces_2.html new file mode 100644 index 000000000..0a9167460 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/namespaces_2.js b/ver-1.11.0/global_cycle/search/namespaces_2.js new file mode 100644 index 000000000..83b3e7052 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils',['utils',['../namespaceutils.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/nomatches.html b/ver-1.11.0/global_cycle/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/global_cycle/search/pages_0.html b/ver-1.11.0/global_cycle/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/global_cycle/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/pages_0.js b/ver-1.11.0/global_cycle/search/pages_0.js new file mode 100644 index 000000000..8f05b0740 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['global_5fcycle',['global_cycle',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/pages_1.html b/ver-1.11.0/global_cycle/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/global_cycle/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/pages_1.js b/ver-1.11.0/global_cycle/search/pages_1.js new file mode 100644 index 000000000..5f21fa96b --- /dev/null +++ b/ver-1.11.0/global_cycle/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_global_cycle_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/global_cycle/search/search.css b/ver-1.11.0/global_cycle/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/global_cycle/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/global_cycle/search/search.js b/ver-1.11.0/global_cycle/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/global_cycle/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/search/search_r.png b/ver-1.11.0/global_cycle/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_0.js b/ver-1.11.0/global_cycle/search/variables_0.js new file mode 100644 index 000000000..ea578c972 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dtref_5fgaus',['dtref_gaus',['../namespaceREAD__WRITE__DATA.html#ada53dd5f6510915e42079c455ee73717',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_1.html b/ver-1.11.0/global_cycle/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_1.js b/ver-1.11.0/global_cycle/search/variables_1.js new file mode 100644 index 000000000..9f2908985 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['idim_5fgaus',['idim_gaus',['../namespaceREAD__WRITE__DATA.html#aeef3c8ca06080d8ea05f6fa5cc6a2e30',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_2.html b/ver-1.11.0/global_cycle/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_2.js b/ver-1.11.0/global_cycle/search/variables_2.js new file mode 100644 index 000000000..bf67b02a1 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jdim_5fgaus',['jdim_gaus',['../namespaceREAD__WRITE__DATA.html#a2a92699263a01b953ef2fb20954ad8cb',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_3.html b/ver-1.11.0/global_cycle/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_3.js b/ver-1.11.0/global_cycle/search/variables_3.js new file mode 100644 index 000000000..0d278efd8 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['kind_5fdbl_5fprec',['kind_dbl_prec',['../namespaceMACHINE.html#ac48e08cc5549d22cefd4f2623fd947aa',1,'MACHINE']]], + ['kind_5fio4',['kind_io4',['../namespaceMACHINE.html#aa632fb8829a3193ea14e28c1d7e51b2f',1,'MACHINE']]], + ['kind_5fio8',['kind_io8',['../namespaceMACHINE.html#a2fc44b0610f436f7748aee153af944dc',1,'MACHINE']]], + ['kind_5fsngl_5fprec',['kind_sngl_prec',['../namespaceMACHINE.html#aaf4ad38d4a8bcd4de16b9247fc69310b',1,'MACHINE']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_4.html b/ver-1.11.0/global_cycle/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_4.js b/ver-1.11.0/global_cycle/search/variables_4.js new file mode 100644 index 000000000..153742917 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['lsm_5fnoah',['lsm_noah',['../land__increments_8f90.html#ad0e0ffe4348e56494575f7f004452868',1,'land_increments']]], + ['lsm_5fnoahmp',['lsm_noahmp',['../land__increments_8f90.html#a3f83b45e15f8b52c19a9fb3ea1835009',1,'land_increments']]], + ['lsoil_5fincr',['lsoil_incr',['../land__increments_8f90.html#a45e8f8152a7d38fc49808987a86e8cd1',1,'land_increments']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_5.html b/ver-1.11.0/global_cycle/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_5.js b/ver-1.11.0/global_cycle/search/variables_5.js new file mode 100644 index 000000000..6af2bbabd --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['slc_5finc_5fgaus',['slc_inc_gaus',['../namespaceREAD__WRITE__DATA.html#a6fed39a47ad6d32c84fe41028254d568',1,'READ_WRITE_DATA']]], + ['slmsk_5fgaus',['slmsk_gaus',['../namespaceREAD__WRITE__DATA.html#a568effba064bf165405b8df3844c37d9',1,'READ_WRITE_DATA']]], + ['soilsnow_5fgaus',['soilsnow_gaus',['../namespaceREAD__WRITE__DATA.html#adf8fb6840c516a88d722b08d26f24d2f',1,'READ_WRITE_DATA']]], + ['stc_5finc_5fgaus',['stc_inc_gaus',['../namespaceREAD__WRITE__DATA.html#a4fb55178311fe11bc8ad04847050ef03',1,'READ_WRITE_DATA']]] +]; diff --git a/ver-1.11.0/global_cycle/search/variables_6.html b/ver-1.11.0/global_cycle/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/global_cycle/search/variables_6.js b/ver-1.11.0/global_cycle/search/variables_6.js new file mode 100644 index 000000000..5c25c2454 --- /dev/null +++ b/ver-1.11.0/global_cycle/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tfreez',['tfreez',['../land__increments_8f90.html#a942fd8279c4a90e040fa084be0f92d1f',1,'land_increments']]] +]; diff --git a/ver-1.11.0/global_cycle/splitbar.png b/ver-1.11.0/global_cycle/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/sync_off.png b/ver-1.11.0/global_cycle/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/sync_on.png b/ver-1.11.0/global_cycle/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/tab_a.png b/ver-1.11.0/global_cycle/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/tab_b.png b/ver-1.11.0/global_cycle/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/global_cycle/tabs.css b/ver-1.11.0/global_cycle/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/global_cycle/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/utils_8F90.html b/ver-1.11.0/global_cycle/utils_8F90.html new file mode 100644 index 000000000..5765cc09b --- /dev/null +++ b/ver-1.11.0/global_cycle/utils_8F90.html @@ -0,0 +1,131 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/utils.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils.F90 File Reference
    +
    +
    + +

    Utility routines. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  utils
     Module containing utility routines.
     
    + + + + +

    +Functions/Subroutines

    subroutine, public utils::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...
     
    +

    Detailed Description

    +

    Utility routines.

    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition in file utils.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/global_cycle/utils_8F90.js b/ver-1.11.0/global_cycle/utils_8F90.js new file mode 100644 index 000000000..56c6ded12 --- /dev/null +++ b/ver-1.11.0/global_cycle/utils_8F90.js @@ -0,0 +1,4 @@ +var utils_8F90 = +[ + [ "REMAP_COEF", "utils_8F90.html#af61419fdfbada973e156f6b020ae165a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/global_cycle/utils_8F90_source.html b/ver-1.11.0/global_cycle/utils_8F90_source.html new file mode 100644 index 000000000..db200ad42 --- /dev/null +++ b/ver-1.11.0/global_cycle/utils_8F90_source.html @@ -0,0 +1,106 @@ + + + + + + + +global_cycle: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/global_cycle.fd/utils.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    global_cycle +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utils.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7  module utils
    8 
    9  public remap_coef
    10 
    11  contains
    12 
    38  SUBROUTINE remap_coef( is, ie, js, je,&
    39  im, jm, lon, lat, id1, id2, jdc, s2c, agrid )
    40 
    41  implicit none
    42  integer, intent(in):: is, ie, js, je
    43  integer, intent(in):: im, jm
    44  real, intent(in):: lon(im), lat(jm)
    45  real, intent(out):: s2c(is:ie,js:je,4)
    46  integer, intent(out), dimension(is:ie,js:je):: id1, id2, jdc
    47  real, intent(in):: agrid(is:ie,js:je,2)
    48  ! local:
    49  real :: rdlon(im)
    50  real :: rdlat(jm)
    51  real:: a1, b1
    52  real, parameter :: pi = 3.1415926
    53  integer i,j, i1, i2, jc, i0, j0
    54  do i=1,im-1
    55  rdlon(i) = 1. / (lon(i+1) - lon(i))
    56  enddo
    57  rdlon(im) = 1. / (lon(1) + 2.*pi - lon(im))
    58 
    59  do j=1,jm-1
    60  rdlat(j) = 1. / (lat(j+1) - lat(j))
    61  enddo
    62 
    63  ! * Interpolate to cubed sphere cell center
    64  do 5000 j=js,je
    65 
    66  do i=is,ie
    67 
    68  if ( agrid(i,j,1)>lon(im) ) then
    69  i1 = im; i2 = 1
    70  a1 = (agrid(i,j,1)-lon(im)) * rdlon(im)
    71  elseif ( agrid(i,j,1)<lon(1) ) then
    72  i1 = im; i2 = 1
    73  a1 = (agrid(i,j,1)+2.*pi-lon(im)) * rdlon(im)
    74  else
    75  do i0=1,im-1
    76  if ( agrid(i,j,1)>=lon(i0) .and. agrid(i,j,1)<=lon(i0+1) ) then
    77  i1 = i0; i2 = i0+1
    78  a1 = (agrid(i,j,1)-lon(i1)) * rdlon(i0)
    79  go to 111
    80  endif
    81  enddo
    82  endif
    83 111 continue
    84 
    85  if ( agrid(i,j,2)<lat(1) ) then
    86  jc = 1
    87  b1 = 0.
    88  elseif ( agrid(i,j,2)>lat(jm) ) then
    89  jc = jm-1
    90  b1 = 1.
    91  else
    92  do j0=1,jm-1
    93  if ( agrid(i,j,2)>=lat(j0) .and. agrid(i,j,2)<=lat(j0+1) ) then
    94  jc = j0
    95  b1 = (agrid(i,j,2)-lat(jc)) * rdlat(jc)
    96  go to 222
    97  endif
    98  enddo
    99  endif
    100 222 continue
    101 
    102  if ( a1<0.0 .or. a1>1.0 .or. b1<0.0 .or. b1>1.0 ) then
    103  write(*,*) 'gid=', i,j,a1, b1
    104  endif
    105 
    106  s2c(i,j,1) = (1.-a1) * (1.-b1)
    107  s2c(i,j,2) = a1 * (1.-b1)
    108  s2c(i,j,3) = a1 * b1
    109  s2c(i,j,4) = (1.-a1) * b1
    110  id1(i,j) = i1
    111  id2(i,j) = i2
    112  jdc(i,j) = jc
    113  enddo !i-loop
    114 5000 continue ! j-loop
    115 
    116  END SUBROUTINE remap_coef
    117 
    118  end module utils
    Module containing utility routines.
    Definition: utils.F90:7
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/README_8md_source.html b/ver-1.11.0/grid_tools/README_8md_source.html new file mode 100644 index 000000000..69499a989 --- /dev/null +++ b/ver-1.11.0/grid_tools/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/docs/README.md
    +
    +
    +
    1 Utility programs for creating model grids.
    2 
    3 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/annotated.html b/ver-1.11.0/grid_tools/annotated.html new file mode 100644 index 000000000..6346f836d --- /dev/null +++ b/ver-1.11.0/grid_tools/annotated.html @@ -0,0 +1,253 @@ + + + + + + + +grid_tools: Data Types List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types List
    +
    +
    +
    Here are the data types with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NpesgSuite 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
     NpfunThis module is for evaluating several useful real-valued functions that are not always available in Fortran compilers
     Npmat
     Npmat2Routines dealing with the operations of banded matrices
     Npmat4Module for handy vector and matrix operations in Euclidean geometry
     Npmat5Utility routines for orienting the globe and basic geographical mappings
     Npsym2A 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
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/annotated_dup.js b/ver-1.11.0/grid_tools/annotated_dup.js new file mode 100644 index 000000000..a0bad2db4 --- /dev/null +++ b/ver-1.11.0/grid_tools/annotated_dup.js @@ -0,0 +1,19 @@ +var annotated_dup = +[ + [ "pesg", "namespacepesg.html", "namespacepesg" ], + [ "pfun", "namespacepfun.html", "namespacepfun" ], + [ "pmat", null, [ + [ "inv", "interfacepmat_1_1inv.html", "interfacepmat_1_1inv" ], + [ "invl", "interfacepmat_1_1invl.html", "interfacepmat_1_1invl" ], + [ "invu", "interfacepmat_1_1invu.html", "interfacepmat_1_1invu" ], + [ "l1lm", "interfacepmat_1_1l1lm.html", "interfacepmat_1_1l1lm" ], + [ "ldlm", "interfacepmat_1_1ldlm.html", "interfacepmat_1_1ldlm" ], + [ "ldum", "interfacepmat_1_1ldum.html", "interfacepmat_1_1ldum" ], + [ "swpvv", "interfacepmat_1_1swpvv.html", "interfacepmat_1_1swpvv" ], + [ "udlmm", "interfacepmat_1_1udlmm.html", "interfacepmat_1_1udlmm" ] + ] ], + [ "pmat2", "namespacepmat2.html", "namespacepmat2" ], + [ "pmat4", "namespacepmat4.html", "namespacepmat4" ], + [ "pmat5", "namespacepmat5.html", "namespacepmat5" ], + [ "psym2", "namespacepsym2.html", "namespacepsym2" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/bc_s.png b/ver-1.11.0/grid_tools/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/bdwn.png b/ver-1.11.0/grid_tools/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +grid_tools: Data Types + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types
    +
    +
    +
    a | b | c | d | e | f | g | h | i | l | m | n | o | p | q | r | s | t | u | w | x | z
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      a  
    +
    expmat (pmat4)   identity (pmat4)   plroti (pmat5)   u1lxb (pmat2)   
    expsym2 (psym2)   ininmap (pmat5)   
      q  
    +
    u1lyb (pmat2)   
    absv (pmat4)   expsym2d_e (psym2)   inivmap (pmat5)   udlb (pmat2)   
    ahav (pfun)   expsym2d_t (psym2)   inv (pmat)   qtoax (pmat4)   udlbv (pmat2)   
    ahavh (pfun)   
      f  
    +
    invl (pmat)   qtorot (pmat4)   udlbx (pmat2)   
    atanh (pfun)   invsym2 (psym2)   qtospin (pmat4)   udlby (pmat2)   
    avco (pmat2)   frametwist (pmat5)   invu (pmat)   
      r  
    +
    udlmm (pmat)   
    axial (pmat4)   
      g  
    +
      l  
    +
    udlvb (pmat2)   
    axtoq (pmat4)   rottoax (pmat4)   udlxb (pmat2)   
    axtorot (pmat4)   gaulegh (pesg)   l1lm (pmat)   rottoq (pmat4)   udlyb (pmat2)   
      b  
    +
    gd (pfun)   l1ubb (pmat2)   rowops (pmat4)   
      w  
    +
    gdi (pfun)   l1ueb (pmat2)   
      s  
    +
    bestesg_geo (pesg)   get_edges (pesg)   ldlm (pmat)   wrtb (pmat2)   
    bestesg_map (pesg)   get_meanq (pesg)   ldltb (pmat2)   sarea (pmat4)   
      x  
    +
      c  
    +
    get_qofv (pesg)   ldub (pmat2)   sech (pfun)   
    get_qx (pesg)   ldum (pmat)   sechs (pfun)   xctoxm_ak (pesg)   
    cad1b (pmat2)   gram (pmat4)   linbv (pmat2)   setem (pmat4)   xctoxs (pesg)   
    cad2b (pmat2)   grtoc (pmat5)   logsym2 (psym2)   setmobius (pmat4)   xmtog_ak_dd (pesg)   
    chol2 (psym2)   gtoc (pmat5)   ltdlbv (pmat2)   sinhox (pfun)   xmtog_ak_rr (pesg)   
    clipb (pmat2)   gtoframe (pmat5)   
      m  
    +
    sinhoxm (pfun)   xmtoxc_ak (pesg)   
    corral (pmat4)   gtoxm_ak_dd (pesg)   sinox (pfun)   xmtoxt (pesg)   
    cross_product (pmat4)   gtoxm_ak_rr (pesg)   mobius (pmat4)   sinoxm (pfun)   xstoxc (pesg)   
    csb1b (pmat2)   guessak_geo (pesg)   mobiusi (pmat4)   spintoq (pmat4)   xstoxt (pesg)   
    csb2b (pmat2)   guessak_map (pesg)   mulqq (pmat4)   sqrtsym2 (psym2)   xttoxm (pesg)   
    ctoc_schm (pmat5)   
      h  
    +
      n  
    +
    sqrtsym2d_e (psym2)   xttoxs (pesg)   
    ctog (pmat5)   sqrtsym2d_t (psym2)   
      z  
    +
    ctogr (pmat5)   hav (pmat4)   normalize (pmat4)   swpvv (pmat)   
    ctoz (pmat4)   hav (pfun)   normalized (pmat4)   
      t  
    +
    zmtozt (pesg)   
      d  
    +
    havh (pfun)   
      o  
    +
    znfun (pmat4)   
    hgrid_ak (pesg)   trace (pmat4)   zntay (pmat4)   
    det (pmat4)   hgrid_ak_dc (pesg)   orthogonalized (pmat4)   triple_product (pmat4)   ztoc (pmat4)   
    dfco (pmat2)   hgrid_ak_dd (pesg)   outer_product (pmat4)   
      u  
    +
    zttozm (pesg)   
    dfco2 (pmat2)   hgrid_ak_rc (pesg)   
      p  
    +
    diag (pmat4)   hgrid_ak_rr (pesg)   u1lbv (pmat2)   
    dlltoxy (pmat4)   huarea (pmat4)   paraframe (pmat5)   u1lbx (pmat2)   
      e  
    +
      i  
    +
    plctoc (pmat5)   u1lby (pmat2)   
    plrot (pmat5)   u1lvb (pmat2)   
    eigensym2 (psym2)   id2222 (psym2)   
    +
    a | b | c | d | e | f | g | h | i | l | m | n | o | p | q | r | s | t | u | w | x | z
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/closed.png b/ver-1.11.0/grid_tools/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.html b/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.html new file mode 100644 index 000000000..6dec6494f --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.html @@ -0,0 +1,112 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/shave.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    shave.fd Directory Reference
    +
    +
    + + + + + +

    +Files

    file  shave_nc.F90 [code]
     Utility to shave down domains of FV3 files.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.js b/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.js new file mode 100644 index 000000000..b678810de --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_6b68644a683d9303e9d79781b0bd2270.js @@ -0,0 +1,4 @@ +var dir_6b68644a683d9303e9d79781b0bd2270 = +[ + [ "shave_nc.F90", "shave__nc_8F90.html", "shave__nc_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.html b/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.html new file mode 100644 index 000000000..11a530c9c --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.html @@ -0,0 +1,142 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    regional_esg_grid.fd Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  pesg.f90 [code]
     Routines to perform ESG regional grid mappings.
     
    file  pfun.f90 [code]
     Routine evaluating useful functions not always available in Fortran.
     
    file  pietc.f90 [code]
     Double-precision constants.
     
    file  pietc_s.f90 [code]
     Single precision constants.
     
    file  pkind.f90 [code]
     Standard integer, real, and complex single and double precision kinds.
     
    file  pmat.f90 [code]
     Utility routines for various linear inversions and Cholesky.
     
    file  pmat2.f90 [code]
     Routines dealing with the operations of banded matrices.
     
    file  pmat4.f90 [code]
     Euclidean geometry, geometric (stereographic) projections, related transformations (Mobius).
     
    file  pmat5.f90 [code]
     Handy geographical transformations.
     
    file  psym2.f90 [code]
     Matrix routines.
     
    file  regional_esg_grid.f90 [code]
     Compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.js b/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.js new file mode 100644 index 000000000..040cef697 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_9657eff0956b3eb388856752841d1579.js @@ -0,0 +1,14 @@ +var dir_9657eff0956b3eb388856752841d1579 = +[ + [ "pesg.f90", "pesg_8f90.html", "pesg_8f90" ], + [ "pfun.f90", "pfun_8f90.html", "pfun_8f90" ], + [ "pietc.f90", "pietc_8f90.html", "pietc_8f90" ], + [ "pietc_s.f90", "pietc__s_8f90.html", "pietc__s_8f90" ], + [ "pkind.f90", "pkind_8f90.html", "pkind_8f90" ], + [ "pmat.f90", "pmat_8f90.html", "pmat_8f90" ], + [ "pmat2.f90", "pmat2_8f90.html", "pmat2_8f90" ], + [ "pmat4.f90", "pmat4_8f90.html", "pmat4_8f90" ], + [ "pmat5.f90", "pmat5_8f90.html", "pmat5_8f90" ], + [ "psym2.f90", "psym2_8f90.html", "psym2_8f90" ], + [ "regional_esg_grid.f90", "regional__esg__grid_8f90.html", "regional__esg__grid_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..39c77469b --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,105 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..494300886 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "grid_tools.fd", "dir_ee03633112c8d9ea7602f8750e16b75d.html", "dir_ee03633112c8d9ea7602f8750e16b75d" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.html b/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.html new file mode 100644 index 000000000..c463a7d14 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.html @@ -0,0 +1,112 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/global_equiv_resol.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    global_equiv_resol.fd Directory Reference
    +
    +
    + + + + + +

    +Files

    file  global_equiv_resol.f90 [code]
     Compute the global equivalent resolution for regional grids.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.js b/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.js new file mode 100644 index 000000000..7537a68fd --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_dfdd762fc4b7c970f916d4807862bec3.js @@ -0,0 +1,4 @@ +var dir_dfdd762fc4b7c970f916d4807862bec3 = +[ + [ "global_equiv_resol.f90", "global__equiv__resol_8f90.html", "global__equiv__resol_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.html b/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.html new file mode 100644 index 000000000..ae01dead9 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.html @@ -0,0 +1,109 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    grid_tools.fd Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.js b/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.js new file mode 100644 index 000000000..6815a2579 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_ee03633112c8d9ea7602f8750e16b75d.js @@ -0,0 +1,7 @@ +var dir_ee03633112c8d9ea7602f8750e16b75d = +[ + [ "filter_topo.fd", "dir_f246156297d017f275be68d41d9d31ad.html", "dir_f246156297d017f275be68d41d9d31ad" ], + [ "global_equiv_resol.fd", "dir_dfdd762fc4b7c970f916d4807862bec3.html", "dir_dfdd762fc4b7c970f916d4807862bec3" ], + [ "regional_esg_grid.fd", "dir_9657eff0956b3eb388856752841d1579.html", "dir_9657eff0956b3eb388856752841d1579" ], + [ "shave.fd", "dir_6b68644a683d9303e9d79781b0bd2270.html", "dir_6b68644a683d9303e9d79781b0bd2270" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.html b/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.html new file mode 100644 index 000000000..f5fea74b1 --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.html @@ -0,0 +1,115 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/filter_topo.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    filter_topo.fd Directory Reference
    +
    +
    + + + + + + + + +

    +Files

    file  filter_topo.F90 [code]
     This program does ???
     
    file  utils.F90 [code]
     Utility routines.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.js b/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.js new file mode 100644 index 000000000..da82824ba --- /dev/null +++ b/ver-1.11.0/grid_tools/dir_f246156297d017f275be68d41d9d31ad.js @@ -0,0 +1,5 @@ +var dir_f246156297d017f275be68d41d9d31ad = +[ + [ "filter_topo.F90", "filter__topo_8F90.html", "filter__topo_8F90" ], + [ "utils.F90", "utils_8F90.html", "utils_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/doc.png b/ver-1.11.0/grid_tools/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/doxygen.css b/ver-1.11.0/grid_tools/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/grid_tools/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/grid_tools/doxygen.png b/ver-1.11.0/grid_tools/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/dynsections.js b/ver-1.11.0/grid_tools/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/grid_tools/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +grid_tools: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + +
      sorc
      grid_tools.fd
      filter_topo.fd
     filter_topo.F90This program does ???
     utils.F90Utility routines
      global_equiv_resol.fd
     global_equiv_resol.f90Compute the global equivalent resolution for regional grids
      regional_esg_grid.fd
     pesg.f90Routines to perform ESG regional grid mappings
     pfun.f90Routine evaluating useful functions not always available in Fortran
     pietc.f90Double-precision constants
     pietc_s.f90Single precision constants
     pkind.f90Standard integer, real, and complex single and double precision kinds
     pmat.f90Utility routines for various linear inversions and Cholesky
     pmat2.f90Routines dealing with the operations of banded matrices
     pmat4.f90Euclidean geometry, geometric (stereographic) projections, related transformations (Mobius)
     pmat5.f90Handy geographical transformations
     psym2.f90Matrix routines
     regional_esg_grid.f90Compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid
      shave.fd
     shave_nc.F90Utility to shave down domains of FV3 files
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/files_dup.js b/ver-1.11.0/grid_tools/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/grid_tools/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/ver-1.11.0/grid_tools/filter__topo_8F90.html b/ver-1.11.0/grid_tools/filter__topo_8F90.html new file mode 100644 index 000000000..fd2c5b753 --- /dev/null +++ b/ver-1.11.0/grid_tools/filter__topo_8F90.html @@ -0,0 +1,2105 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/filter_topo.fd/filter_topo.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    filter_topo.F90 File Reference
    +
    +
    + +

    This program does ??? +More...

    +
    #include <netcdf.inc>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine cart_to_latlon (np, q, xs, ys)
     ??? More...
     
    subroutine cell_center2 (q1, q2, q3, q4, e2)
     ??? More...
     
    subroutine check (status)
     Check results of netCDF call. More...
     
    subroutine compute_filter_constants
     Compute resolution-dependent values for the filtering. More...
     
    real function cos_angle (p1, p2, p3)
     ??? More...
     
    subroutine del2_cubed_sphere (is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxc, dyc, sin_sg, nmax, cd, zero_ocean, mask, nested, regional)
     ??? More...
     
    subroutine del4_cubed_sphere (is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxc, dyc, sin_sg, nmax, zero_ocean, mask, nested, regional)
     ??? More...
     
    subroutine fill_AGRID_scalar_corners (q, ng, npx, npy, isd, jsd, fill)
     ??? More...
     
    subroutine fill_AGRID_xy_corners (x, y, ng, npx, npy, isd, jsd)
     ??? More...
     
    subroutine fill_BGRID_scalar_corners (q, ng, npx, npy, isd, jsd, fill)
     ??? More...
     
    subroutine fill_cubic_grid_halo (data, data2, halo, ioff, joff, sign1, sign2)
     This routine fill the halo points for the cubic grid. More...
     
    subroutine fill_DGRID_xy_corners (x, y, ng, npx, npy, isd, jsd)
     ??? More...
     
    program filter_topo
     This program does ??? More...
     
    subroutine FV3_zs_filter (is, ie, js, je, isd, ied, jsd, jed, npx, npy, npx_global, ntiles, grid_type, stretch_fac, nested, area, dxa, dya, dx, dy, dxc, dyc, sin_sg, phis, regional)
     ??? More...
     
    real function get_area (p1, p4, p2, p3, radius)
     ??? More...
     
    real function great_circle_dist (q1, q2, radius)
     ??? More...
     
    subroutine latlon2xyz (p, e)
     ??? More...
     
    subroutine mid_pt3_cart (p1, p2, e)
     ??? More...
     
    subroutine mid_pt_sphere (p1, p2, pm)
     ??? More...
     
    subroutine read_grid_file (regional)
     ??? More...
     
    subroutine read_topo_file (regional)
     ??? More...
     
    real function spherical_angle (p1, p2, p3)
     ??? More...
     
    subroutine two_delta_filter (is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxa, dya, dxc, dyc, sin_sg, cd, zero_ocean, check_slope, filter_type, grid_type, mask, nested, ntmax, regional)
     ??? More...
     
    subroutine write_topo_file (is, ie, js, je, ntiles, q, regional)
     Replace the topo_field. More...
     
    +

    Detailed Description

    +

    This program does ???

    +
    Author
    GFDL Programmer
    + +

    Definition in file filter_topo.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ cart_to_latlon()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::cart_to_latlon (integer, intent(in) np,
    real, dimension(3,np), intent(inout) q,
    real, dimension(np), intent(inout) xs,
    real, dimension(np), intent(inout) ys 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + +
    [in]np???
    [in]q???
    [in]xs???
    [in]ys???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 483 of file filter_topo.F90.

    + +

    Referenced by cell_center2(), and mid_pt_sphere().

    + +
    +
    + +

    ◆ cell_center2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::cell_center2 (real, dimension(2), intent(in) q1,
    real, dimension(2), intent(in) q2,
    real, dimension(2), intent(in) q3,
    real, dimension(2), intent(in) q4,
    real, dimension(2), intent(out) e2 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + +
    [in]q1???
    [in]q2???
    [in]q3???
    [in]q4???
    [in]e2???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 584 of file filter_topo.F90.

    + +

    References cart_to_latlon(), and latlon2xyz().

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ check()

    + +
    +
    + + + + + + + + +
    subroutine filter_topo::check (integer, intent(in) status)
    +
    + +

    Check results of netCDF call.

    +
    Parameters
    + + +
    [in]statusreturn code to check
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1959 of file filter_topo.F90.

    + +

    Referenced by global_equiv_resol(), regional_grid(), and shave_nc().

    + +
    +
    + +

    ◆ compute_filter_constants()

    + +
    +
    + + + + + + + +
    subroutine filter_topo::compute_filter_constants ()
    +
    + +

    Compute resolution-dependent values for the filtering.

    +
    Author
    GFDL Programmer
    + +

    Definition at line 1975 of file filter_topo.F90.

    + +

    Referenced by filter_topo().

    + +
    +
    + +

    ◆ cos_angle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real function filter_topo::cos_angle (real, dimension(3), intent(in) p1,
    real, dimension(3), intent(in) p2,
    real, dimension(3), intent(in) p3 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + +
    [in]p1???
    [in]p2???
    [in]p3???
    +
    +
    +
    Returns
    ???
    +
    Author
    GFDL Programmer
    + +

    Definition at line 530 of file filter_topo.F90.

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ del2_cubed_sphere()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::del2_cubed_sphere (integer, intent(in) is,
    integer, intent(in) ie,
    integer, intent(in) js,
    integer, intent(in) je,
    integer, intent(in) isd,
    integer, intent(in) ied,
    integer, intent(in) jsd,
    integer, intent(in) jed,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) ntiles,
    real, dimension(is-ng:ie+ng, js-ng:je+ng, ntiles), intent(inout) q,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) area,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dx,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dy,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dxc,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dyc,
    real, dimension(4,isd:ied,jsd:jed, ntiles), intent(in) sin_sg,
    integer, intent(in) nmax,
    real, intent(in) cd,
    logical, intent(in) zero_ocean,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) mask,
    logical, intent(in) nested,
    logical, intent(in) regional 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]is???
    [in]ie???
    [in]js???
    [in]je???
    [in]isd???
    [in]ied???
    [in]jsd???
    [in]jed???
    [in]npx???
    [in]npy???
    [in]ntiles???
    [in]q???
    [in]area???
    [in]dx???
    [in]dy???
    [in]dxc???
    [in]dyc???
    [in]sin_sg???
    [in]nmax???
    [in]cd???
    [in]zero_ocean???
    [in]mask???
    [in]nested???
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1599 of file filter_topo.F90.

    + +

    References fill_cubic_grid_halo().

    + +
    +
    + +

    ◆ del4_cubed_sphere()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::del4_cubed_sphere (integer, intent(in) is,
    integer, intent(in) ie,
    integer, intent(in) js,
    integer, intent(in) je,
    integer, intent(in) isd,
    integer, intent(in) ied,
    integer, intent(in) jsd,
    integer, intent(in) jed,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) ntiles,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(inout) q,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) area,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dx,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dy,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dxc,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dyc,
    real, dimension(4,isd:ied,jsd:jed, ntiles), intent(in) sin_sg,
    integer, intent(in) nmax,
    logical, intent(in) zero_ocean,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) mask,
    logical, intent(in) nested,
    logical, intent(in) regional 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]is???
    [in]ie???
    [in]js???
    [in]je???
    [in]isd???
    [in]ied???
    [in]jsd???
    [in]jed???
    [in]npx???
    [in]npy???
    [in]ntiles???
    [in]q???
    [in]area???
    [in]dx???
    [in]dy???
    [in]dxc???
    [in]dyc???
    [in]sin_sg???
    [in]nmax???
    [in]zero_ocean???
    [in]mask???
    [in]nested???
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1722 of file filter_topo.F90.

    + +

    References fill_cubic_grid_halo().

    + +

    Referenced by FV3_zs_filter().

    + +
    +
    + +

    ◆ fill_AGRID_scalar_corners()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::fill_AGRID_scalar_corners (real, dimension(isd:,jsd:,:), intent(inout) q,
    integer, intent(in) ng,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) isd,
    integer, intent(in) jsd,
    integer, intent(in) fill 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + +
    [in]q???
    [in]ng???
    [in]npx???
    [in]npy???
    [in]isd???
    [in]jsd???
    [in]fill???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 237 of file filter_topo.F90.

    + +
    +
    + +

    ◆ fill_AGRID_xy_corners()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::fill_AGRID_xy_corners (real, dimension(isd:,jsd:,:), intent(inout) x,
    real, dimension(isd:,jsd:,:), intent(inout) y,
    integer, intent(in) ng,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) isd,
    integer, intent(in) jsd 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + +
    [in]x???
    [in]y???
    [in]ng???
    [in]npx???
    [in]npy???
    [in]isd???
    [in]jsd???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 338 of file filter_topo.F90.

    + +
    +
    + +

    ◆ fill_BGRID_scalar_corners()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::fill_BGRID_scalar_corners (real, dimension(isd:,jsd:,:), intent(inout) q,
    integer, intent(in) ng,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) isd,
    integer, intent(in) jsd,
    integer, intent(in) fill 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + +
    [in]q???
    [in]ng???
    [in]npx???
    [in]npy???
    [in]isd???
    [in]jsd???
    [in]fill???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 287 of file filter_topo.F90.

    + +
    +
    + +

    ◆ fill_cubic_grid_halo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::fill_cubic_grid_halo (real, dimension(1-halo:,1-halo:,:), intent(inout) data,
    real, dimension(1-halo:,1-halo:,:), intent(inout) data2,
    integer, intent(in) halo,
    integer, intent(in) ioff,
    integer, intent(in) joff,
    integer, intent(in) sign1,
    integer, intent(in) sign2 
    )
    +
    + +

    This routine fill the halo points for the cubic grid.

    +

    ioff and joff is used to distinguish T, C, E, or N-cell.

    +
    Parameters
    + + + + + + + + +
    [in]data???
    [in]data2???
    [in]halo???
    [in]ioff???
    [in]joff???
    [in]sign1???
    [in]sign2???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1116 of file filter_topo.F90.

    + +

    Referenced by del2_cubed_sphere(), del4_cubed_sphere(), read_grid_file(), read_topo_file(), and two_delta_filter().

    + +
    +
    + +

    ◆ fill_DGRID_xy_corners()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::fill_DGRID_xy_corners (real, dimension(isd:,jsd:,:), intent(inout) x,
    real, dimension(isd:,jsd:,:), intent(inout) y,
    integer, intent(in) ng,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) isd,
    integer, intent(in) jsd 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + +
    [in]x???
    [in]y???
    [in]ng???
    [in]npx???
    [in]npy???
    [in]isd???
    [in]jsd???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 370 of file filter_topo.F90.

    + +
    +
    + +

    ◆ filter_topo()

    + +
    +
    + + + + + + + +
    program filter_topo ()
    +
    + +

    This program does ???

    +
    Returns
    0 for success, error code otherwise.
    +
    Author
    S-J Lin (GFDL) for filtering algorithm(s)
    +
    +Zhi Liang (GFDL) who packaged it into a standalone application.
    + +

    Definition at line 10 of file filter_topo.F90.

    + +

    References compute_filter_constants(), utils::grid_type, utils::nested, read_grid_file(), utils::read_namelist(), read_topo_file(), utils::regional, utils::stretch_fac, and write_topo_file().

    + +
    +
    + +

    ◆ FV3_zs_filter()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::FV3_zs_filter (integer, intent(in) is,
    integer, intent(in) ie,
    integer, intent(in) js,
    integer, intent(in) je,
    integer, intent(in) isd,
    integer, intent(in) ied,
    integer, intent(in) jsd,
    integer, intent(in) jed,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) npx_global,
    integer, intent(in) ntiles,
    integer, intent(in) grid_type,
    real, intent(in) stretch_fac,
    logical, intent(in) nested,
    real, dimension(isd:ied,jsd:jed, ntiles), intent(in) area,
    real, dimension(isd:ied,jsd:jed, ntiles), intent(in) dxa,
    real, dimension(isd:ied,jsd:jed, ntiles), intent(in) dya,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dx,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dy,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dxc,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dyc,
    real, dimension(4,isd:ied,jsd:jed,ntiles), intent(in) sin_sg,
    real, dimension(isd:ied,jsd:jed,ntiles), intent(inout) phis,
    logical, intent(in) regional 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]is???
    [in]ie???
    [in]js???
    [in]je???
    [in]isd???
    [in]ied???
    [in]jsd???
    [in]jed???
    [in]npx???
    [in]npy???
    [in]npx_global???
    [in]ntiles???
    [in]grid_type???
    [in]stretch_fac???
    [in]nested???
    [in]area???
    [in]dxa???
    [in]dya???
    [in]dx???
    [in]dy???
    [in]dxc???
    [in]dyc???
    [in]sin_sg???
    [in]phis???
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1187 of file filter_topo.F90.

    + +

    References del4_cubed_sphere(), and two_delta_filter().

    + +
    +
    + +

    ◆ get_area()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real function filter_topo::get_area (real, dimension(2), intent(in) p1,
    real, dimension(2), intent(in) p4,
    real, dimension(2), intent(in) p2,
    real, dimension(2), intent(in) p3,
    real, intent(in), optional radius 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + +
    [in]p1???
    [in]p4???
    [in]p2???
    [in]p3???
    [in]radius???
    +
    +
    +
    Returns
    area
    +
    Author
    GFDL Programmer
    + +

    Definition at line 184 of file filter_topo.F90.

    + +

    References latlon2xyz(), and spherical_angle().

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ great_circle_dist()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real function filter_topo::great_circle_dist (real, dimension(2), intent(in) q1,
    real, dimension(2), intent(in) q2,
    real, intent(in), optional radius 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + +
    [in]q1
    [in]q2
    [in]radius
    +
    +
    +
    Returns
    ???
    +
    Author
    GFDL Programmer
    + +

    Definition at line 82 of file filter_topo.F90.

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ latlon2xyz()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::latlon2xyz (real, dimension(2), intent(in) p,
    real, dimension(3), intent(out) e 
    )
    +
    + +

    ???

    +
    Parameters
    + + + +
    [in]p???
    [in]e???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 449 of file filter_topo.F90.

    + +

    Referenced by cell_center2(), get_area(), mid_pt_sphere(), and read_grid_file().

    + +
    +
    + +

    ◆ mid_pt3_cart()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::mid_pt3_cart (real, dimension(3), intent(in) p1,
    real, dimension(3), intent(in) p2,
    real, dimension(3), intent(out) e 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + +
    [in]p1???
    [in]p2???
    [in]e???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 416 of file filter_topo.F90.

    + +

    Referenced by mid_pt_sphere(), and read_grid_file().

    + +
    +
    + +

    ◆ mid_pt_sphere()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::mid_pt_sphere (real, dimension(2), intent(in) p1,
    real, dimension(2), intent(in) p2,
    real, dimension(2), intent(out) pm 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + +
    [in]p1???
    [in]p2???
    [in]pm???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 397 of file filter_topo.F90.

    + +

    References cart_to_latlon(), latlon2xyz(), and mid_pt3_cart().

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ read_grid_file()

    + +
    +
    + + + + + + + + +
    subroutine filter_topo::read_grid_file (logical, intent(in) regional)
    +
    + +

    ???

    +
    Parameters
    + + +
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 615 of file filter_topo.F90.

    + +

    References cell_center2(), cos_angle(), fill_cubic_grid_halo(), utils::fill_regional_halo(), get_area(), great_circle_dist(), utils::grid_file, utils::handle_err(), latlon2xyz(), mid_pt3_cart(), mid_pt_sphere(), utils::nested, and utils::regional.

    + +

    Referenced by filter_topo().

    + +
    +
    + +

    ◆ read_topo_file()

    + +
    +
    + + + + + + + + +
    subroutine filter_topo::read_topo_file (logical, intent(in) regional)
    +
    + +

    ???

    +
    Parameters
    + + +
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 968 of file filter_topo.F90.

    + +

    References fill_cubic_grid_halo().

    + +

    Referenced by filter_topo().

    + +
    +
    + +

    ◆ spherical_angle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real function filter_topo::spherical_angle (real, dimension(3) p1,
    real, dimension(3) p2,
    real, dimension(3) p3 
    )
    +
    + +

    ???

    +
    +           p3
    +         /
    +        /
    +       p1 ---> angle
               p2
    + 
    Parameters
    + + + + +
    [in]p1???
    [in]p2???
    [in]p3???
    +
    +
    +
    Returns
    ???
    +
    Author
    GFDL Programmer
    + +

    Definition at line 123 of file filter_topo.F90.

    + +

    Referenced by get_area().

    + +
    +
    + +

    ◆ two_delta_filter()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::two_delta_filter (integer, intent(in) is,
    integer, intent(in) ie,
    integer, intent(in) js,
    integer, intent(in) je,
    integer, intent(in) isd,
    integer, intent(in) ied,
    integer, intent(in) jsd,
    integer, intent(in) jed,
    integer, intent(in) npx,
    integer, intent(in) npy,
    integer, intent(in) ntiles,
    real, dimension(isd:ied, jsd:jed,ntiles), intent(inout) q,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) area,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dx,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dy,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) dxa,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) dya,
    real, dimension(isd:ied+1,jsd:jed, ntiles), intent(in) dxc,
    real, dimension(isd:ied, jsd:jed+1, ntiles), intent(in) dyc,
    real, dimension(4,isd:ied,jsd:jed, ntiles), intent(in) sin_sg,
    real, intent(in) cd,
    logical, intent(in) zero_ocean,
    logical, intent(in) check_slope,
    integer, intent(in) filter_type,
    integer, intent(in) grid_type,
    real, dimension(isd:ied, jsd:jed, ntiles), intent(in) mask,
    logical, intent(in) nested,
    integer, intent(in) ntmax,
    logical, intent(in) regional 
    )
    +
    + +

    ???

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]is???
    [in]ie???
    [in]js???
    [in]je???
    [in]isd???
    [in]ied???
    [in]jsd???
    [in]jed???
    [in]npx???
    [in]npy???
    [in]ntiles???
    [in]q???
    [in]area???
    [in]dx???
    [in]dy???
    [in]dxa???
    [in]dya???
    [in]dxc???
    [in]dyc???
    [in]sin_sg???
    [in]cd???
    [in]zero_ocean???
    [in]check_slope???
    [in]filter_type???
    [in]grid_type???
    [in]mask???
    [in]nested???
    [in]ntmax???
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1270 of file filter_topo.F90.

    + +

    References fill_cubic_grid_halo().

    + +

    Referenced by FV3_zs_filter().

    + +
    +
    + +

    ◆ write_topo_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine filter_topo::write_topo_file (integer, intent(in) is,
    integer, intent(in) ie,
    integer, intent(in) js,
    integer, intent(in) je,
    integer, intent(in) ntiles,
    real, dimension(is:ie,js:je,ntiles), intent(in) q,
    logical, intent(in) regional 
    )
    +
    + +

    Replace the topo_field.

    +
    Parameters
    + + + + + + + + +
    [in]is???
    [in]ie???
    [in]js???
    [in]je???
    [in]ntiles???
    [in]q???
    [in]regional???
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1068 of file filter_topo.F90.

    + +

    Referenced by filter_topo().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/filter__topo_8F90.js b/ver-1.11.0/grid_tools/filter__topo_8F90.js new file mode 100644 index 000000000..c58d7e24f --- /dev/null +++ b/ver-1.11.0/grid_tools/filter__topo_8F90.js @@ -0,0 +1,27 @@ +var filter__topo_8F90 = +[ + [ "cart_to_latlon", "filter__topo_8F90.html#a29326a5d8919e362ef0f9f9f72b5ec7e", null ], + [ "cell_center2", "filter__topo_8F90.html#adda2d1676dfdde78cc80d9896bce881f", null ], + [ "check", "filter__topo_8F90.html#a5873370d008f550eebbd792e402ce3de", null ], + [ "compute_filter_constants", "filter__topo_8F90.html#a4c877441cf933bf55ddb18ec7e58d670", null ], + [ "cos_angle", "filter__topo_8F90.html#ac8a1860db6999f6754e47d678d25661c", null ], + [ "del2_cubed_sphere", "filter__topo_8F90.html#a1e6b27b88552c78f37a77d10641951e6", null ], + [ "del4_cubed_sphere", "filter__topo_8F90.html#a7b0818ef0ccc4ab0ff5670e5a4da31c7", null ], + [ "fill_AGRID_scalar_corners", "filter__topo_8F90.html#afbf523660c495eba39b03c488603e39e", null ], + [ "fill_AGRID_xy_corners", "filter__topo_8F90.html#add46a0ed8b05639ed61af504527f279d", null ], + [ "fill_BGRID_scalar_corners", "filter__topo_8F90.html#a8909e0690277954b158ffb06ccaf99ed", null ], + [ "fill_cubic_grid_halo", "filter__topo_8F90.html#aa4c33c4ce544e71e4f38da43fea552e0", null ], + [ "fill_DGRID_xy_corners", "filter__topo_8F90.html#ada6d23dc5a282ec74dfd6191605d54e5", null ], + [ "filter_topo", "filter__topo_8F90.html#a8160043e7e9d4afe2362292926087e3f", null ], + [ "FV3_zs_filter", "filter__topo_8F90.html#a53576f546c3c958cf8b95fdc01b063dd", null ], + [ "get_area", "filter__topo_8F90.html#a9d5af5d3196c9d664733b8c126d12656", null ], + [ "great_circle_dist", "filter__topo_8F90.html#ab7efdbd3670acafb99d01346069d7c53", null ], + [ "latlon2xyz", "filter__topo_8F90.html#a269a68f22ed721deddc0c2c033796ebe", null ], + [ "mid_pt3_cart", "filter__topo_8F90.html#a0304bc57977aa4400723fcabaf77b730", null ], + [ "mid_pt_sphere", "filter__topo_8F90.html#ac0b3cdd4924ded0ba7623f19f3cca62f", null ], + [ "read_grid_file", "filter__topo_8F90.html#a785f23018f914203386301fbcf662368", null ], + [ "read_topo_file", "filter__topo_8F90.html#ab3abc977e2ff801f9d8413e0a42ddd69", null ], + [ "spherical_angle", "filter__topo_8F90.html#a88eb7531b52377c9014425995013cd5f", null ], + [ "two_delta_filter", "filter__topo_8F90.html#a36dff92b0a19ac712034eb203fda4f5d", null ], + [ "write_topo_file", "filter__topo_8F90.html#abdd604d14cb50cf80246aa580676ac9a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/filter__topo_8F90_source.html b/ver-1.11.0/grid_tools/filter__topo_8F90_source.html new file mode 100644 index 000000000..61b76d768 --- /dev/null +++ b/ver-1.11.0/grid_tools/filter__topo_8F90_source.html @@ -0,0 +1,133 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/filter_topo.fd/filter_topo.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    filter_topo.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    10 program filter_topo
    11 
    12  use utils
    13 
    14  implicit none
    15 
    16 #include <netcdf.inc>
    17 
    18 #ifdef NO_QUAD_PRECISION
    19  ! 64-bit precision (kind=8)
    20  integer, parameter:: f_p = selected_real_kind(15)
    21 #else
    22  ! Higher precision (kind=16) for grid geometrical factors:
    23  integer, parameter:: f_p = selected_real_kind(20)
    24 #endif
    25 
    26  integer, parameter :: xdir=1
    27  integer, parameter :: ydir=2
    28  real, parameter :: pi = 3.14159265358979323846d0
    29  real, parameter :: radius = 6371200.0
    30  real, parameter :: big_number=1.d8
    31  real, parameter :: tiny_number=1.d-8
    32 
    33  real:: cd4 ! Dimensionless coeff for del-4 difussion (with FCT)
    34  real:: peak_fac ! overshoot factor for the mountain peak
    35  real:: max_slope ! max allowable terrain slope: 1 --> 45 deg
    36 
    37  integer :: n_del2_weak
    38 
    39  integer :: ntiles = 0
    40 
    41  real da_min
    42 
    43  real, allocatable :: oro(:,:,:), mask(:,:,:)
    44  real, allocatable :: dx(:,:,:), dy(:,:,:)
    45  real, allocatable :: dxa(:,:,:), dya(:,:,:)
    46  real, allocatable :: dxc(:,:,:), dyc(:,:,:)
    47  real, allocatable :: area(:,:,:)
    48  real, allocatable :: sin_sg(:,:,:,:)
    49 
    50  integer :: is,ie,js,je,isd,ied,jsd,jed
    51  integer,parameter :: ng = 3
    52  integer :: nx, ny, npx, npy, nx_nest, ny_nest, npx_nest, npy_nest, is_nest, ie_nest, js_nest, je_nest, isd_nest, ied_nest, jsd_nest, jed_nest
    53  !--- read namelist
    54  call read_namelist()
    55 
    56  !--- compute filter constants according to grid resolution.
    58 
    59  !--- read the target grid.
    61 
    62  !--- read the topography data
    64 
    65  !--- filter the data
    66  call fv3_zs_filter(is,ie,js,je,isd,ied,jsd,jed,npx,npy,npx,ntiles,grid_type, &
    67  stretch_fac, nested, area, dxa, dya, dx, dy, dxc, dyc, sin_sg, oro, regional )
    68 
    69  !--- write out the data
    70  call write_topo_file(is,ie,js,je,ntiles,oro(is:ie,js:je,:),regional )
    71 
    72 contains
    73 
    81  real function great_circle_dist( q1, q2, radius )
    82  real, intent(IN) :: q1(2), q2(2)
    83  real, intent(IN), optional :: radius
    84 
    85  real (f_p):: p1(2), p2(2)
    86  real (f_p):: beta
    87  integer n
    88 
    89  do n=1,2
    90  p1(n) = q1(n)
    91  p2(n) = q2(n)
    92  enddo
    93 
    94  beta = asin( sqrt( sin((p1(2)-p2(2))/2.)**2 + cos(p1(2))*cos(p2(2))* &
    95  sin((p1(1)-p2(1))/2.)**2 ) ) * 2.
    96 
    97  if ( present(radius) ) then
    98  great_circle_dist = radius * beta
    99  else
    100  great_circle_dist = beta ! Returns the angle
    101  endif
    102 
    103  end function great_circle_dist
    104 
    122  real function spherical_angle(p1, p2, p3)
    124  real p1(3), p2(3), p3(3)
    125 
    126  real (f_p):: e1(3), e2(3), e3(3)
    127  real (f_p):: px, py, pz
    128  real (f_p):: qx, qy, qz
    129  real (f_p):: angle, ddd
    130  integer n
    131 
    132  do n=1,3
    133  e1(n) = p1(n)
    134  e2(n) = p2(n)
    135  e3(n) = p3(n)
    136  enddo
    137 
    138  !-------------------------------------------------------------------
    139  ! Page 41, Silverman's book on Vector Algebra; spherical trigonmetry
    140  !-------------------------------------------------------------------
    141  ! Vector P:
    142  px = e1(2)*e2(3) - e1(3)*e2(2)
    143  py = e1(3)*e2(1) - e1(1)*e2(3)
    144  pz = e1(1)*e2(2) - e1(2)*e2(1)
    145  ! Vector Q:
    146  qx = e1(2)*e3(3) - e1(3)*e3(2)
    147  qy = e1(3)*e3(1) - e1(1)*e3(3)
    148  qz = e1(1)*e3(2) - e1(2)*e3(1)
    149 
    150  ddd = (px*px+py*py+pz*pz)*(qx*qx+qy*qy+qz*qz)
    151 
    152  if ( ddd <= 0.0d0 ) then
    153  angle = 0.d0
    154  else
    155  ddd = (px*qx+py*qy+pz*qz) / sqrt(ddd)
    156  if ( abs(ddd)>1.d0) then
    157  angle = 2.d0*atan(1.0) ! 0.5*pi
    158  !FIX (lmh) to correctly handle co-linear points (angle near pi or 0)
    159  if (ddd < 0.d0) then
    160  angle = 4.d0*atan(1.0d0) !should be pi
    161  else
    162  angle = 0.d0
    163  end if
    164  else
    165  angle = acos( ddd )
    166  endif
    167  endif
    168 
    169  spherical_angle = angle
    170 
    171  end function spherical_angle
    172 
    173 
    183  real function get_area(p1, p4, p2, p3, radius)
    184  !-----------------------------------------------
    185  real, intent(in), dimension(2):: p1, p2, p3, p4
    186  real, intent(in), optional:: radius
    187  !-----------------------------------------------
    188  real e1(3), e2(3), e3(3)
    189  real ang1, ang2, ang3, ang4
    190 
    191  ! S-W: 1
    192  call latlon2xyz(p1, e1) ! p1
    193  call latlon2xyz(p2, e2) ! p2
    194  call latlon2xyz(p4, e3) ! p4
    195  ang1 = spherical_angle(e1, e2, e3)
    196  !----
    197  ! S-E: 2
    198  !----
    199  call latlon2xyz(p2, e1)
    200  call latlon2xyz(p3, e2)
    201  call latlon2xyz(p1, e3)
    202  ang2 = spherical_angle(e1, e2, e3)
    203  !----
    204  ! N-E: 3
    205  !----
    206  call latlon2xyz(p3, e1)
    207  call latlon2xyz(p4, e2)
    208  call latlon2xyz(p2, e3)
    209  ang3 = spherical_angle(e1, e2, e3)
    210  !----
    211  ! N-W: 4
    212  !----
    213  call latlon2xyz(p4, e1)
    214  call latlon2xyz(p3, e2)
    215  call latlon2xyz(p1, e3)
    216  ang4 = spherical_angle(e1, e2, e3)
    217 
    218  if ( present(radius) ) then
    219  get_area = (ang1 + ang2 + ang3 + ang4 - 2.*pi) * radius**2
    220  else
    221  get_area = ang1 + ang2 + ang3 + ang4 - 2.*pi
    222  endif
    223 
    224  end function get_area
    225 
    236  subroutine fill_agrid_scalar_corners(q, ng, npx, npy, isd, jsd, fill)
    237  integer, intent(in) :: ng, npx, npy, isd, jsd
    238  integer, intent(in) :: fill
    239  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: q
    240 
    241  integer :: i, j
    242 
    243  select case (fill)
    244  case (xdir)
    245  do j=1,ng
    246  do i=1,ng
    247  q(1-i ,1-j ,:) = q(1-j ,i ,:) !SW Corner
    248  q(1-i ,npy-1+j,:) = q(1-j ,npy-1-i+1,:) !NW Corner
    249  q(npx-1+i,1-j ,:) = q(npx-1+j,i ,:) !SE Corner
    250  q(npx-1+i,npy-1+j,:) = q(npx-1+j,npy-1-i+1,:) !NE Corner
    251  enddo
    252  enddo
    253  case (ydir)
    254  do j=1,ng
    255  do i=1,ng
    256  q(1-j ,1-i ,:) = q(i ,1-j ,:) !SW Corner
    257  q(1-j ,npy-1+i,:) = q(i ,npy-1+j,:) !NW Corner
    258  q(npx-1+j,1-i ,:) = q(npx-1-i+1,1-j ,:) !SE Corner
    259  q(npx-1+j,npy-1+i,:) = q(npx-1-i+1,npy-1+j,:) !NE Corner
    260  enddo
    261  enddo
    262  case default
    263  do j=1,ng
    264  do i=1,ng
    265  q(1-j ,1-i ,:) = q(i ,1-j ,:) !SW Corner
    266  q(1-j ,npy-1+i,:) = q(i ,npy-1+j,:) !NW Corner
    267  q(npx-1+j,1-i ,:) = q(npx-1-i+1,1-j ,:) !SE Corner
    268  q(npx-1+j,npy-1+i,:) = q(npx-1-i+1,npy-1+j,:) !NE Corner
    269  enddo
    270  enddo
    271  end select
    272 
    273 
    274  end subroutine fill_agrid_scalar_corners
    275 
    286  subroutine fill_bgrid_scalar_corners(q, ng, npx, npy, isd, jsd, fill)
    287  integer, intent(in) :: ng, npx, npy, isd, jsd
    288  integer, intent(in) :: fill
    289  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: q
    290 
    291  integer :: i, j
    292 
    293  select case (fill)
    294  case (xdir)
    295  do j=1,ng
    296  do i=1,ng
    297  q(1-i ,1-j ,:) = q(1-j ,i+1 ,:) !SW Corner
    298  q(1-i ,npy+j,:) = q(1-j ,npy-i ,:) !NW Corner
    299  q(npx+i,1-j ,:) = q(npx+j,i+1 ,:) !SE Corner
    300  q(npx+i,npy+j,:) = q(npx+j,npy-i ,:) !NE Corner
    301  enddo
    302  enddo
    303  case (ydir)
    304  do j=1,ng
    305  do i=1,ng
    306  q(1-j ,1-i ,:) = q(i+1 ,1-j ,:) !SW Corner
    307  q(1-j ,npy+i,:) = q(i+1 ,npy+j ,:) !NW Corner
    308  q(npx+j,1-i ,:) = q(npx-i,1-j ,:) !SE Corner
    309  q(npx+j,npy+i,:) = q(npx-i,npy+j ,:) !NE Corner
    310  enddo
    311  enddo
    312  case default
    313  do j=1,ng
    314  do i=1,ng
    315  q(1-i ,1-j ,:) = q(1-j ,i+1 ,:) !SW Corner
    316  q(1-i ,npy+j,:) = q(1-j ,npy-i ,:) !NW Corner
    317  q(npx+i,1-j ,:) = q(npx+j,i+1 ,:) !SE Corner
    318  q(npx+i,npy+j,:) = q(npx+j,npy-i ,:) !NE Corner
    319  enddo
    320  enddo
    321  end select
    322 
    323 
    324 
    325  end subroutine fill_bgrid_scalar_corners
    326 
    337  subroutine fill_agrid_xy_corners(x, y, ng, npx, npy, isd, jsd)
    338  integer, intent(in) :: ng, npx, npy, isd, jsd
    339  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: x
    340  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: y
    341  integer :: i,j
    342 
    343  do j=1,ng
    344  do i=1,ng
    345  x(1-i ,1-j ,:) = y(1-j ,i ,:) !SW Corner
    346  x(1-i ,npy-1+j,:) = y(1-j ,npy-1-i+1,:) !NW Corner
    347  x(npx-1+i,1-j ,:) = y(npx-1+j,i ,:) !SE Corner
    348  x(npx-1+i,npy-1+j,:) = y(npx-1+j,npy-1-i+1,:) !NE Corner
    349 
    350  y(1-j ,1-i ,:) = x(i ,1-j ,:) !SW Corner
    351  y(1-j ,npy-1+i,:) = x(i ,npy-1+j,:) !NW Corner
    352  y(npx-1+j,1-i ,:) = x(npx-1-i+1,1-j ,:) !SE Corner
    353  y(npx-1+j,npy-1+i,:) = x(npx-1-i+1,npy-1+j,:) !NE Corner
    354  enddo
    355  enddo
    356 
    357  end subroutine fill_agrid_xy_corners
    358 
    369  subroutine fill_dgrid_xy_corners(x, y, ng, npx, npy, isd, jsd)
    370  integer, intent(in) :: ng, npx, npy, isd, jsd
    371  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: x
    372  real, DIMENSION(isd:,jsd:,:), intent(INOUT):: y
    373  integer :: i,j
    374 
    375  do j=1,ng
    376  do i=1,ng
    377  x(1-i ,1-j , :) = y(1-j ,i , :) !SW Corner
    378  x(1-i ,npy+j , :) = y(1-j ,npy-i, :) !NW Corner
    379  x(npx-1+i,1-j , :) = y(npx+j,i , :) !SE Corner
    380  x(npx-1+i,npy+j , :) = y(npx+j,npy-i, :) !NE Corner
    381  y(1-i ,1-j , :) = x(j ,1-i , :) !SW Corner
    382  y(1-i ,npy-1+j, :) = x(j ,npy+i, :) !NW Corner
    383  y(npx+i ,1-j , :) = x(npx-j,1-i , :) !SE Corner
    384  y(npx+i ,npy-1+j, :) = x(npx-j,npy+i, :) !NE Corner
    385  enddo
    386  enddo
    387 
    388  end subroutine fill_dgrid_xy_corners
    389 
    396  subroutine mid_pt_sphere(p1, p2, pm)
    397  real, intent(IN) :: p1(2), p2(2)
    398  real, intent(OUT) :: pm(2)
    399  !------------------------------------------
    400  real :: e1(3), e2(3), e3(3)
    401 
    402  call latlon2xyz(p1, e1)
    403  call latlon2xyz(p2, e2)
    404  call mid_pt3_cart(e1, e2, e3)
    405  call cart_to_latlon(1, e3, pm(1), pm(2))
    406 
    407  end subroutine mid_pt_sphere
    408 
    415  subroutine mid_pt3_cart(p1, p2, e)
    416  real, intent(IN) :: p1(3), p2(3)
    417  real, intent(OUT) :: e(3)
    418  !
    419  real (f_p):: q1(3), q2(3)
    420  real (f_p):: dd, e1, e2, e3
    421  integer k
    422 
    423  do k=1,3
    424  q1(k) = p1(k)
    425  q2(k) = p2(k)
    426  enddo
    427 
    428  e1 = q1(1) + q2(1)
    429  e2 = q1(2) + q2(2)
    430  e3 = q1(3) + q2(3)
    431 
    432  dd = sqrt( e1**2 + e2**2 + e3**2 )
    433  e1 = e1 / dd
    434  e2 = e2 / dd
    435  e3 = e3 / dd
    436 
    437  e(1) = e1
    438  e(2) = e2
    439  e(3) = e3
    440 
    441  end subroutine mid_pt3_cart
    442 
    448  subroutine latlon2xyz(p, e)
    449  !
    450  ! Routine to map (lon, lat) to (x,y,z)
    451  !
    452  real, intent(in) :: p(2)
    453  real, intent(out):: e(3)
    454 
    455  integer n
    456  real (f_p):: q(2)
    457  real (f_p):: e1, e2, e3
    458 
    459  do n=1,2
    460  q(n) = p(n)
    461  enddo
    462 
    463  e1 = cos(q(2)) * cos(q(1))
    464  e2 = cos(q(2)) * sin(q(1))
    465  e3 = sin(q(2))
    466  !-----------------------------------
    467  ! Truncate to the desired precision:
    468  !-----------------------------------
    469  e(1) = e1
    470  e(2) = e2
    471  e(3) = e3
    472 
    473  end subroutine latlon2xyz
    474 
    482  subroutine cart_to_latlon(np, q, xs, ys)
    483  ! vector version of cart_to_latlon1
    484  integer, intent(in):: np
    485  real, intent(inout):: q(3,np)
    486  real, intent(inout):: xs(np), ys(np)
    487  ! local
    488  real, parameter:: esl=1.d-10
    489  real (f_p):: p(3)
    490  real (f_p):: dist, lat, lon
    491  integer i,k
    492 
    493  do i=1,np
    494  do k=1,3
    495  p(k) = q(k,i)
    496  enddo
    497  dist = sqrt(p(1)**2 + p(2)**2 + p(3)**2)
    498  do k=1,3
    499  p(k) = p(k) / dist
    500  enddo
    501 
    502  if ( (abs(p(1))+abs(p(2))) < esl ) then
    503  lon = real(0.,kind=f_p)
    504  else
    505  lon = atan2( p(2), p(1) ) ! range [-pi,pi]
    506  endif
    507 
    508  if ( lon < 0.) lon = real(2.,kind=f_p)*pi + lon
    509  ! RIGHT_HAND system:
    510  lat = asin(p(3))
    511 
    512  xs(i) = lon
    513  ys(i) = lat
    514  ! q Normalized:
    515  do k=1,3
    516  q(k,i) = p(k)
    517  enddo
    518  enddo
    519 
    520  end subroutine cart_to_latlon
    521 
    529  real function cos_angle(p1, p2, p3)
    530  ! As spherical_angle, but returns the cos(angle)
    531  ! p3
    532  ! ^
    533  ! |
    534  ! |
    535  ! p1 ---> p2
    536  !
    537  real, intent(in):: p1(3), p2(3), p3(3)
    538 
    539  real (f_p):: e1(3), e2(3), e3(3)
    540  real (f_p):: px, py, pz
    541  real (f_p):: qx, qy, qz
    542  real (f_p):: angle, ddd
    543  integer n
    544 
    545  do n=1,3
    546  e1(n) = p1(n)
    547  e2(n) = p2(n)
    548  e3(n) = p3(n)
    549  enddo
    550 
    551  !-------------------------------------------------------------------
    552  ! Page 41, Silverman's book on Vector Algebra; spherical trigonmetry
    553  !-------------------------------------------------------------------
    554  ! Vector P:= e1 X e2
    555  px = e1(2)*e2(3) - e1(3)*e2(2)
    556  py = e1(3)*e2(1) - e1(1)*e2(3)
    557  pz = e1(1)*e2(2) - e1(2)*e2(1)
    558 
    559  ! Vector Q: e1 X e3
    560  qx = e1(2)*e3(3) - e1(3)*e3(2)
    561  qy = e1(3)*e3(1) - e1(1)*e3(3)
    562  qz = e1(1)*e3(2) - e1(2)*e3(1)
    563 
    564  ! ddd = sqrt[ (P*P) (Q*Q) ]
    565  ddd = sqrt( (px**2+py**2+pz**2)*(qx**2+qy**2+qz**2) )
    566  if ( ddd > 0.d0 ) then
    567  angle = (px*qx+py*qy+pz*qz) / ddd
    568  else
    569  angle = 1.d0
    570  endif
    571  cos_angle = angle
    572 
    573  end function cos_angle
    574 
    583  subroutine cell_center2(q1, q2, q3, q4, e2)
    584  real, intent(in ) :: q1(2), q2(2), q3(2), q4(2)
    585  real, intent(out) :: e2(2)
    586  ! Local
    587  real p1(3), p2(3), p3(3), p4(3)
    588  real ec(3)
    589  real dd
    590  integer k
    591 
    592  call latlon2xyz(q1, p1)
    593  call latlon2xyz(q2, p2)
    594  call latlon2xyz(q3, p3)
    595  call latlon2xyz(q4, p4)
    596 
    597  do k=1,3
    598  ec(k) = p1(k) + p2(k) + p3(k) + p4(k)
    599  enddo
    600  dd = sqrt( ec(1)**2 + ec(2)**2 + ec(3)**2 )
    601 
    602  do k=1,3
    603  ec(k) = ec(k) / dd
    604  enddo
    605 
    606  call cart_to_latlon(1, ec, e2(1), e2(2))
    607 
    608  end subroutine cell_center2
    609 
    614  subroutine read_grid_file(regional)
    616  logical, intent(in) :: regional ! Is this a regional run?
    617  integer :: fsize=65536
    618  integer :: status, ncid, id_dim, id_var, ncid2, t
    619  integer :: ni, nj, i, j, tw, te, ip
    620  real :: g1(2), g2(2), g3(2), g4(2), g5(2)
    621  real :: p1(3), p3(3)
    622  real :: p_lL(2), p_uL(2), p_lR(2), p_uR(2)
    623  character(len=512) :: tile_file
    624  real, allocatable, dimension(:,:) :: tmpvar, geolon_c_nest, geolat_c_nest
    625  real, allocatable, dimension(:,:,:) :: geolon_c, geolat_c
    626  real, allocatable, dimension(:,:,:) :: geolon_t, geolat_t, cos_sg, grid3
    627  integer :: start(4), nread(4)
    628 
    629  print*, "Read the grid from file "//trim(grid_file)
    630 
    631  status=nf__open(trim(grid_file),nf_nowrite,fsize,ncid)
    632  call handle_err(status, 'Open file '//trim(grid_file) )
    633 
    634  status=nf_inq_dimid(ncid, 'ntiles', id_dim)
    635  call handle_err(status, 'inquire dimension ntiles from file '//trim(grid_file) )
    636  status=nf_inq_dimlen(ncid,id_dim,ntiles)
    637  call handle_err(status, 'inquire dimension ntiles length from file '//trim(grid_file) )
    638 
    639  if( ntiles == 6) then
    640  print*, " read_grid_file: This is a global grid."
    641  elseif( ntiles >= 6 )then
    642  print*, " read_grid_file: This is a nested grid."
    643  print*, " filter only the globe."
    644  ntiles=6
    645  elseif( ntiles == 1 )then
    646  print*, " read_grid_file: This is a standalone regional grid."
    647  endif
    648 
    649  !--- loop through ntiles and make sure the grid size match between all the tiles.
    650 
    651  start(:) = 1
    652  nread(:) = 1
    653 
    654  do t = 1, ntiles
    655  start(2) = t; nread(1) = 255
    656  status = nf_inq_varid(ncid, 'gridfiles', id_var)
    657  call handle_err(status, 'inquire varid of gridfiles from file '//trim(grid_file) )
    658 
    659  !--- Obtain the grid file name from the mosaic file.
    660  status = nf_get_vara_text(ncid, id_var, start, nread, tile_file )
    661  call handle_err(status, 'get value of gridfiles from file '//trim(grid_file) )
    662 
    663  status=nf__open(trim(tile_file),nf_nowrite,fsize,ncid2)
    664  call handle_err(status, 'Open file '//trim(tile_file) )
    665 
    666  status=nf_inq_dimid(ncid2, 'nx', id_dim)
    667  call handle_err(status, 'inquire dimension nx from file '//trim(grid_file) )
    668  status=nf_inq_dimlen(ncid2,id_dim,ni)
    669  call handle_err(status, 'inquire dimension nx length from file '//trim(grid_file) )
    670  status=nf_inq_dimid(ncid2, 'ny', id_dim)
    671  call handle_err(status, 'inquire dimension ny from file '//trim(grid_file) )
    672  status=nf_inq_dimlen(ncid2,id_dim,nj)
    673  call handle_err(status, 'inquire dimension ny length '//'from file '//trim(grid_file) )
    674  if( t == 1 ) then
    675  ! ni and nj must be even
    676  if(mod(ni,2) .NE. 0 .or. mod(nj,2) .NE. 0) &
    677  call handle_err(-1, "read_grid_file: ni and nj must be even")
    678 
    679  nx = ni/2
    680  ny = nj/2
    681  npx = nx + 1
    682  npy = ny + 1
    683  is = 1 ; ie = nx
    684  js = 1 ; je = ny
    685  isd=is-ng; ied=ie+ng
    686  jsd=js-ng; jed=je+ng
    687 
    688  allocate(tmpvar(ni+1,nj+1))
    689  allocate(geolon_c(isd:ied+1,jsd:jed+1,6))
    690  allocate(geolat_c(isd:ied+1,jsd:jed+1,6))
    691  else if ( t == 7 ) then ! nested grid
    692  if(mod(ni,2) .NE. 0 .or. mod(nj,2) .NE. 0) &
    693  call handle_err(-1, "read_grid_file: ni and nj must be even")
    694 
    695  nx_nest = ni/2
    696  ny_nest = nj/2
    697  npx_nest = nx_nest + 1
    698  npy_nest = ny_nest + 1
    699  is_nest = 1 ; ie_nest = nx
    700  js_nest = 1 ; je_nest = ny
    701  isd_nest=is_nest-ng; ied_nest=ie_nest+ng
    702  jsd_nest=js_nest-ng; jed_nest=je_nest+ng
    703  deallocate(tmpvar)
    704  allocate(tmpvar(ni+1,nj+1))
    705  allocate(geolon_c_nest(isd:ied+1,jsd:jed+1))
    706  allocate(geolat_c_nest(isd:ied+1,jsd:jed+1))
    707  else
    708  !-- make sure ni and nj match between tiles
    709  if(ni .ne. nx*2 .OR. nj .ne. ny*2) &
    710  call handle_err(-1, "mismatch of grid size between tiles")
    711  endif
    712 
    713  status=nf_inq_varid(ncid2, 'x', id_var)
    714  call handle_err(status, 'inquire varid of x from file '//trim(grid_file) )
    715  status=nf_get_var_double(ncid2, id_var, tmpvar)
    716  call handle_err(status, 'inquire data of x from file '//trim(grid_file) )
    717  if(t==7) then
    718  geolon_c_nest(1:npx,1:npy) = tmpvar(1:ni+1:2,1:nj+1:2)*pi/180.
    719  else
    720  geolon_c(1:npx,1:npy,t) = tmpvar(1:ni+1:2,1:nj+1:2)*pi/180.
    721  endif
    722 
    723  status=nf_inq_varid(ncid2, 'y', id_var)
    724  call handle_err(status, 'inquire varid of y from file '//trim(grid_file) )
    725  status=nf_get_var_double(ncid2, id_var, tmpvar)
    726  call handle_err(status, 'inquire data of y from file '//trim(grid_file) )
    727  if(t==7) then
    728  geolat_c_nest(1:npx,1:npy) = tmpvar(1:ni+1:2,1:nj+1:2)*pi/180.
    729  else
    730  geolat_c(1:npx,1:npy,t) = tmpvar(1:ni+1:2,1:nj+1:2)*pi/180.
    731  endif
    732  status = nf_close(ncid2)
    733  call handle_err(status, "close file "//trim(tile_file))
    734  enddo
    735 
    736  deallocate(tmpvar)
    737 
    738  status = nf_close(ncid)
    739  call handle_err(status, "close file "//trim(grid_file))
    740 
    741  is = 1 ; ie = nx
    742  js = 1 ; je = ny
    743  isd=is-ng; ied=ie+ng
    744  jsd=js-ng; jed=je+ng
    745 
    746  if( .not. regional ) then
    747  call fill_cubic_grid_halo(geolon_c, geolon_c, ng, 1, 1, 1, 1)
    748  call fill_cubic_grid_halo(geolat_c, geolat_c, ng, 1, 1, 1, 1)
    749  if(.not. nested) call fill_bgrid_scalar_corners(geolon_c, ng, npx, npy, isd, jsd, xdir)
    750  if(.not. nested) call fill_bgrid_scalar_corners(geolat_c, ng, npx, npy, isd, jsd, ydir)
    751  else
    752  call fill_regional_halo(geolon_c, ng)
    753  call fill_regional_halo(geolat_c, ng)
    754  endif
    755 
    756  !--- compute grid cell center
    757  allocate(geolon_t(isd:ied,jsd:jed,ntiles), geolat_t(isd:ied,jsd:jed,ntiles))
    758 
    759  geolon_t(:,:,:) = -1.e25
    760  geolat_t(:,:,:) = -1.e25
    761 
    762  do t = 1, ntiles
    763  do j=js,je ; do i=is,ie
    764  g1(1) = geolon_c(i,j,t); g1(2) = geolat_c(i,j,t)
    765  g2(1) = geolon_c(i+1,j,t); g2(2) = geolat_c(i+1,j,t)
    766  g3(1) = geolon_c(i,j+1,t); g3(2) = geolat_c(i,j+1,t)
    767  g4(1) = geolon_c(i+1,j+1,t); g4(2) = geolat_c(i+1,j+1,t)
    768  call cell_center2(g1, g2, g3, g4, g5 )
    769  geolon_t(i,j,t) = g5(1)
    770  geolat_t(i,j,t) = g5(2)
    771  enddo ; enddo
    772  enddo
    773 
    774 
    775  if( .not. regional ) then
    776  call fill_cubic_grid_halo(geolon_t, geolon_t, ng, 0, 0, 1, 1)
    777  call fill_cubic_grid_halo(geolat_t, geolat_t, ng, 0, 0, 1, 1)
    778  if (.not. nested) call fill_agrid_scalar_corners(geolon_t, ng, npx, npy, isd, jsd, xdir)
    779  if (.not. nested) call fill_agrid_scalar_corners(geolat_t, ng, npx, npy, isd, jsd, ydir)
    780  endif
    781 
    782  !--- compute dx, dy
    783  allocate(dx(isd:ied,jsd:jed+1,ntiles))
    784  allocate(dy(isd:ied+1,jsd:jed,ntiles))
    785  do t = 1, ntiles
    786  do j = js, je+1 ; do i = is, ie
    787  g1(1) = geolon_c(i ,j,t)
    788  g1(2) = geolat_c(i ,j,t)
    789  g2(1) = geolon_c(i+1,j,t)
    790  g2(2) = geolat_c(i+1,j,t)
    791  dx(i,j,t) = great_circle_dist( g2, g1, radius )
    792  enddo ; enddo
    793  enddo
    794  do t = 1, ntiles
    795  do j = js, je
    796  do i = is, ie+1
    797  g1(1) = geolon_c(i,j, t)
    798  g1(2) = geolat_c(i,j, t)
    799  g2(1) = geolon_c(i,j+1,t)
    800  g2(2) = geolat_c(i,j+1,t)
    801  dy(i,j,t) = great_circle_dist( g2, g1, radius )
    802  enddo
    803  enddo
    804  enddo
    805 
    806  if( .not. regional ) then
    807  !--- make sure it is consitent between tiles. The following maybe not necessary.
    808  do t = 1, ntiles
    809  if(mod(t,2) ==0) then ! tile 2 4 6
    810  tw = t - 1
    811  te = t + 2
    812  if(te > ntiles) te = te - ntiles
    813  dy(is, js:je,t) = dy(ie+1,js:je,tw) ! west boundary
    814  dy(ie+1, js:je, t) = dx(ie:is:-1,js, te) ! east boundary
    815  else
    816  tw = t - 2
    817  if( tw <= 0) tw = tw + ntiles
    818  te = t + 1
    819  dy(is, js:je, t) = dx(ie:is:-1, je+1, tw) ! west boundary
    820  dy(ie+1, js:je,t) = dy(1,js:je,te) ! east boundary
    821  endif
    822  enddo
    823 
    824  call fill_cubic_grid_halo(dx, dy, ng, 0, 1, 1, 1)
    825  call fill_cubic_grid_halo(dy, dx, ng, 1, 0, 1, 1)
    826 
    827  if (.not. nested) call fill_dgrid_xy_corners(dx, dy, ng, npx, npy, isd, jsd)
    828  endif
    829 
    830  !--- compute dxa and dya -----
    831  allocate(dxa(isd:ied,jsd:jed,ntiles))
    832  allocate(dya(isd:ied,jsd:jed,ntiles))
    833  do t = 1, ntiles
    834  do j=js,je ; do i=is,ie
    835  g1(1) = geolon_c(i,j,t); g1(2) = geolat_c(i,j,t)
    836  g2(1) = geolon_c(i,j+1,t); g2(2) = geolat_c(i,j+1,t)
    837  call mid_pt_sphere(g1, g2, g3)
    838  g1(1) = geolon_c(i+1,j,t); g1(2) = geolat_c(i+1,j,t)
    839  g2(1) = geolon_c(i+1,j+1,t); g2(2) = geolat_c(i+1,j+1,t)
    840  call mid_pt_sphere(g1, g2, g4)
    841  dxa(i,j,t) = great_circle_dist( g4, g3, radius )
    842  g1(1) = geolon_c(i,j,t); g1(2) = geolat_c(i,j,t)
    843  g2(1) = geolon_c(i+1,j,t); g2(2) = geolat_c(i+1,j,t)
    844  call mid_pt_sphere(g1, g2, g3)
    845  g1(1) = geolon_c(i,j+1,t); g1(2) = geolat_c(i,j+1,t)
    846  g2(1) = geolon_c(i+1,j+1,t); g2(2) = geolat_c(i+1,j+1,t)
    847  call mid_pt_sphere(g1, g2, g4)
    848  dya(i,j,t) = great_circle_dist( g4, g3, radius )
    849  enddo; enddo
    850  enddo
    851 
    852  if( .not.regional ) then
    853  call fill_cubic_grid_halo(dxa, dya, ng, 0, 0, 1, 1)
    854  call fill_cubic_grid_halo(dya, dxa, ng, 0, 0, 1, 1)
    855 
    856  if (.not. nested) call fill_agrid_xy_corners(dxa, dya, ng, npx, npy, isd, jsd)
    857  endif
    858 
    859  !--- compute dxc and dyc
    860  allocate(dxc(isd:ied+1,jsd:jed,ntiles))
    861  allocate(dyc(isd:ied,jsd:jed+1,ntiles))
    862  do t = 1, ntiles
    863  do j=jsd,jed
    864  do i=isd+1,ied
    865  g1(1) = geolon_c(i,j,t); g1(2) = geolat_c(i,j,t)
    866  g2(1) = geolon_c(i-1,j,t); g2(2) = geolat_c(i-1,j,t)
    867  dxc(i,j,t) = great_circle_dist(g1, g2, radius)
    868  enddo
    869  dxc(isd,j,t) = dxc(isd+1,j,t)
    870  dxc(ied+1,j,t) = dxc(ied,j,t)
    871  enddo
    872 
    873  do j=jsd+1,jed
    874  do i=isd,ied
    875  g1(1) = geolon_c(i,j,t); g1(2) = geolat_c(i,j,t)
    876  g2(1) = geolon_c(i,j-1,t); g2(2) = geolat_c(i,j-1,t)
    877  dyc(i,j,t) = great_circle_dist(g1, g2, radius)
    878  enddo
    879  enddo
    880  do i=isd,ied
    881  dyc(i,jsd,t) = dyc(i,jsd+1,t)
    882  dyc(i,jed+1,t) = dyc(i,jed,t)
    883  end do
    884  enddo
    885 
    886  !--- compute area
    887  allocate(area(isd:ied,jsd:jed,ntiles))
    888  do t = 1, ntiles
    889  do j=js,je
    890  do i=is,ie
    891  p_ll(1) = geolon_c(i ,j ,t) ; p_ll(2) = geolat_c(i ,j ,t)
    892  p_ul(1) = geolon_c(i ,j+1,t) ; p_ul(2) = geolat_c(i ,j+1,t)
    893  p_lr(1) = geolon_c(i+1,j ,t) ; p_lr(2) = geolat_c(i+1,j ,t)
    894  p_ur(1) = geolon_c(i+1,j+1,t) ; p_ur(2) = geolat_c(i+1,j+1,t)
    895 
    896  ! Spherical Excess Formula
    897  area(i,j,t) = get_area(p_ll, p_ul, p_lr, p_ur, radius)
    898  enddo
    899  enddo
    900  enddo
    901 
    902  if( .not.regional ) then
    903  call fill_cubic_grid_halo(area, area, ng, 0, 0, 1, 1)
    904  endif
    905 
    906  da_min = minval(area(is:ie,js:je,:))
    907 
    908  !--- compute sin_sg
    909  allocate(sin_sg(4,isd:ied,jsd:jed,ntiles))
    910  allocate(cos_sg(4,isd:ied,jsd:jed))
    911  allocate(grid3(3, npx, npy))
    912  cos_sg(:,:,:) = big_number
    913  sin_sg(:,:,:,:) = tiny_number
    914 
    915  ! 9---4---8
    916  ! | |
    917  ! 1 5 3
    918  ! | |
    919  ! 6---2---7
    920  do t = 1, ntiles
    921  do j=js,je+1
    922  do i = is,ie+1
    923  g1(1) = geolon_c(i,j,t)
    924  g1(2) = geolat_c(i,j,t)
    925  call latlon2xyz(g1, grid3(:,i,j))
    926  enddo
    927  enddo
    928  do j=js,je
    929  do i=is,ie
    930  g1(1) = geolon_t(i,j,t); g1(2) = geolat_t(i,j,t)
    931  call latlon2xyz(g1, p3) ! righ-hand system consistent with grid3
    932  call mid_pt3_cart(grid3(1,i,j), grid3(1,i,j+1), p1)
    933  cos_sg(1,i,j) = cos_angle( p1, p3, grid3(1,i,j+1) )
    934  call mid_pt3_cart(grid3(1,i,j), grid3(1,i+1,j), p1)
    935  cos_sg(2,i,j) = cos_angle( p1, grid3(1,i+1,j), p3 )
    936  call mid_pt3_cart(grid3(1,i+1,j), grid3(1,i+1,j+1), p1)
    937  cos_sg(3,i,j) = cos_angle( p1, p3, grid3(1,i+1,j) )
    938  call mid_pt3_cart(grid3(1,i,j+1), grid3(1,i+1,j+1), p1)
    939  cos_sg(4,i,j) = cos_angle( p1, grid3(1,i,j+1), p3 )
    940  enddo
    941  enddo
    942 
    943  do ip=1,4
    944  do j=js,je
    945  do i=is,ie
    946  sin_sg(ip,i,j,t) = min(1.0, sqrt( max(0., 1.-cos_sg(ip,i,j)**2) ) )
    947  enddo
    948  enddo
    949  enddo
    950  enddo
    951 
    952  if( .not.regional ) then
    953  do ip=1,4
    954  call fill_cubic_grid_halo(sin_sg(ip,:,:,:), sin_sg(ip,:,:,:), ng, 0, 0, 1, 1)
    955  enddo
    956  endif
    957 
    958  deallocate(cos_sg, grid3, geolon_c, geolat_c, geolon_t, geolat_t)
    959 
    960 
    961  end subroutine read_grid_file
    962 
    967  subroutine read_topo_file(regional)
    969  logical,intent(in) :: regional ! Is this a run with a regional domain?
    970  integer :: fsize=65536
    971  integer :: status, ncid, id_var, ndim, dimsiz, nt
    972  character(len=256) :: tile_file
    973  character(len=32) :: text
    974  integer :: len, t, dims(2)
    975  real :: tmp(is:ie,js:je)
    976 
    977  allocate(oro(isd:ied,jsd:jed,ntiles))
    978  allocate(mask(isd:ied,jsd:jed,ntiles))
    979  oro = -big_number
    980  mask = 0
    981 
    982  !--- make sure topo_file suffix is not ".nc"
    983  len = len_trim(topo_file)
    984  if( index(topo_file, '.nc', back=.true.) == len-2) then
    985  call handle_err(-1, "remove .nc from namelist topo_file="//trim(topo_file) )
    986  endif
    987 
    988  !--- loop through each tile file to get the orography
    989  do nt = 1, ntiles
    990 
    991  if( regional ) then
    992  t = nt + 6 ! The single regional tile must be #7 for now.
    993  else
    994  t = nt
    995  endif
    996 
    997  write(text, '(i1.1)' ) t
    998  tile_file = trim(topo_file)//'.tile'//trim(text)//'.nc'
    999  status=nf__open(trim(tile_file),nf_nowrite,fsize,ncid)
    1000  call handle_err(status, 'Open file '//trim(tile_file) )
    1001 
    1002  status=nf_inq_varid(ncid, topo_field, id_var)
    1003  call handle_err(status, 'inquire varid of '//trim(topo_field)//' from file '//trim(tile_file) )
    1004 
    1005  status = nf_inq_varndims(ncid, id_var, ndim)
    1006  call handle_err(status, 'inquire ndims of '//trim(topo_field)//' from file '//trim(tile_file) )
    1007 
    1008  if(ndim .NE. 2) call handle_err(-1, 'ndims of '//trim(topo_field)//' from file '// &
    1009  trim(tile_file)//' should be 2')
    1010 
    1011  ! get data dimension and should match grid file size
    1012  status = nf_inq_vardimid(ncid, id_var,dims);
    1013  call handle_err(status, 'inquire dimid of '//trim(topo_field)//' from file '//trim(tile_file) )
    1014 
    1015  status = nf_inq_dimlen(ncid, dims(1), dimsiz)
    1016  call handle_err(status, 'inquire first dimension length of '//trim(topo_field)//' from file '//trim(tile_file) )
    1017  if(dimsiz .NE. nx) call handle_err(-1, "mismatch of lon dimension size between "// &
    1018  trim(grid_file)//' and '//trim(tile_file) )
    1019 
    1020  status = nf_inq_dimlen(ncid, dims(2), dimsiz)
    1021  call handle_err(status, 'inquire second dimension length of '//trim(topo_field)//' from file '//trim(tile_file) )
    1022 
    1023  if(dimsiz .NE. ny) call handle_err(-1, "mismatch of lat dimension size between "// &
    1024  trim(grid_file)//' and '//trim(tile_file) )
    1025 
    1026  status = nf_get_var_double(ncid, id_var, oro(is:ie,js:je,nt))
    1027  call handle_err(status, 'get the value of '//trim(topo_field)//' from file '//trim(tile_file) )
    1028 
    1029  status=nf_inq_varid(ncid, mask_field, id_var)
    1030  call handle_err(status, 'inquire varid of '//trim(mask_field)//' from file '//trim(tile_file) )
    1031 
    1032  status = nf_get_var_double(ncid, id_var, tmp)
    1033  call handle_err(status, 'get the value of '//trim(mask_field)//' from file '//trim(tile_file) )
    1034 
    1035  mask(is:ie,js:je,nt) = tmp
    1036 
    1037  status = nf_close(ncid)
    1038  call handle_err(status, "close file "//trim(tile_file))
    1039  enddo
    1040 
    1041  if( .not.regional ) then
    1042  !--- update halo
    1043  call fill_cubic_grid_halo(oro, oro, ng, 0, 0, 1, 1)
    1044  call fill_cubic_grid_halo(mask, mask, ng, 0, 0, 1, 1)
    1045  endif
    1046 
    1047  if( regional ) then
    1048  call fill_regional_halo(oro, ng)
    1049  oro(:,:,:) = max(oro(:,:,:),0.)
    1050  call fill_regional_halo(mask, ng)
    1051  mask(:,:,:) = min(max(mask(:,:,:),0.),1.)
    1052  endif
    1053 
    1054 
    1055  end subroutine read_topo_file
    1056 
    1067  subroutine write_topo_file(is,ie,js,je,ntiles,q,regional)
    1068  integer, intent(in) :: is,ie,js,je,ntiles
    1069  real, intent(in) :: q(is:ie,js:je,ntiles)
    1070  logical, intent(in) :: regional
    1071 
    1072  integer :: fsize=65536
    1073  integer :: nt, t, status, ncid, id_var
    1074  character(len=256) :: tile_file
    1075  character(len=3) :: text
    1076  !--- loop through each tile file to update topo_field
    1077 
    1078  do nt = 1, ntiles
    1079 
    1080  if( regional ) then
    1081  t = nt + 6
    1082  else
    1083  t = nt
    1084  endif
    1085 
    1086  write(text, '(i1.1)' ) t
    1087  tile_file = trim(topo_file)//'.tile'//trim(text)//'.nc'
    1088  status=nf__open(trim(tile_file),nf_write,fsize,ncid)
    1089  call handle_err(status, 'write_topo_file: Open file '//trim(tile_file) )
    1090 
    1091  status=nf_inq_varid(ncid, topo_field, id_var)
    1092  call handle_err(status, 'write_topo_file:inquire varid of '//trim(topo_field)//' from file '//trim(tile_file) )
    1093 
    1094  status = nf_put_var_double(ncid, id_var, q(:,:,nt))
    1095  call handle_err(status, 'write_topo_file: put the value of '//trim(topo_field)//' from file '//trim(tile_file) )
    1096 
    1097  status = nf_close(ncid)
    1098  call handle_err(status, "write_topo_file: close file "//trim(tile_file))
    1099  enddo
    1100 
    1101 
    1102  end subroutine write_topo_file
    1103 
    1115  subroutine fill_cubic_grid_halo(data, data2, halo, ioff, joff, sign1, sign2)
    1116  integer, intent(in) :: halo
    1117  real, dimension(1-halo:,1-halo:,:), intent(inout) :: data, data2
    1118  integer, intent(in) :: ioff, joff, sign1, sign2
    1119  integer :: lw, le, ls, ln
    1120  integer :: i, tile
    1121 
    1122  ntiles = size(data,3)
    1123 
    1124  do tile = 1, ntiles
    1125  if(mod(tile,2) == 0) then ! tile 2, 4, 6
    1126  lw = tile - 1; le = tile + 2; ls = tile - 2; ln = tile + 1
    1127  if(le > 6 ) le = le - 6
    1128  if(ls < 1 ) ls = ls + 6
    1129  if(ln > 6 ) ln = ln - 6
    1130  data(1-halo:0, 1:ny+joff, tile) = data(nx-halo+1:nx, 1:ny+joff, lw) ! west
    1131  do i = 1, halo
    1132  data(nx+i+ioff, 1:ny+joff, tile) = sign1*data2(nx+joff:1:-1, i+ioff, le) ! east
    1133  end do
    1134  do i = 1, halo
    1135  data(1:nx+ioff, 1-i, tile) = sign2*data2(nx-i+1, ny+ioff:1:-1, ls) ! south
    1136  end do
    1137  data(1:nx+ioff, ny+1+joff:ny+halo+joff, tile) = data(1:nx+ioff, 1+joff:halo+joff, ln) ! north
    1138  else ! tile 1, 3, 5
    1139  lw = tile - 2; le = tile + 1; ls = tile - 1; ln = tile + 2
    1140  if(lw < 1 ) lw = lw + 6
    1141  if(ls < 1 ) ls = ls + 6
    1142  if(ln > 6 ) ln = ln - 6
    1143  do i = 1, halo
    1144  data(1-i, 1:ny+joff, tile) = sign1*data2(nx+joff:1:-1, ny-i+1, lw) ! west
    1145  end do
    1146  data(nx+1+ioff:nx+halo+ioff, 1:ny+joff, tile) = data(1+ioff:halo+ioff, 1:ny+joff, le) ! east
    1147  data(1:nx+ioff, 1-halo:0, tile) = data(1:nx+ioff, ny-halo+1:ny, ls) ! south
    1148  do i = 1, halo
    1149  data(1:nx+ioff, ny+i+joff, tile) = sign2*data2(i+joff, ny+ioff:1:-1, ln) ! north
    1150  end do
    1151  end if
    1152  enddo
    1153 
    1154  end subroutine fill_cubic_grid_halo
    1155 
    1184  subroutine fv3_zs_filter (is, ie, js, je, isd, ied, jsd, jed, npx, npy, npx_global, ntiles, &
    1185  grid_type, stretch_fac, nested, area, dxa, dya, dx, dy, dxc, dyc, &
    1186  sin_sg, phis, regional )
    1187  integer, intent(in) :: is, ie, js, je, ntiles
    1188  integer, intent(in) :: isd, ied, jsd, jed, npx, npy, npx_global, grid_type
    1189  real, intent(in), dimension(isd:ied,jsd:jed, ntiles)::area, dxa, dya
    1190  real, intent(in), dimension(isd:ied, jsd:jed+1, ntiles):: dx, dyc
    1191  real, intent(in), dimension(isd:ied+1,jsd:jed, ntiles):: dy, dxc
    1192 
    1193  real, intent(IN):: sin_sg(4,isd:ied,jsd:jed,ntiles)
    1194  real, intent(IN):: stretch_fac
    1195  logical, intent(IN) :: nested, regional
    1196  real, intent(inout):: phis(isd:ied,jsd:jed,ntiles)
    1197  real:: cd2
    1198  integer mdim, n_del2, n_del4
    1199 
    1200  mdim = nint( real(npx_global) * min(10., stretch_fac) )
    1201 
    1202  ! Del-2: high resolution only
    1203  if ( npx_global<=97 ) then
    1204  n_del2 = 0
    1205  elseif ( npx_global<=193 ) then
    1206  n_del2 = 1
    1207  else
    1208  n_del2 = 2
    1209  endif
    1210  cd2 = 0.16*da_min
    1211  ! Applying strong 2-delta-filter:
    1212  if ( n_del2 > 0 ) &
    1213  call two_delta_filter(is,ie,js,je,isd,ied,jsd,jed, npx, npy, ntiles, phis, area, &
    1214  dx, dy, dxa, dya, dxc, dyc, sin_sg, cd2, zero_ocean, &
    1215  .true.,0, grid_type, mask, nested, n_del2, regional)
    1216 
    1217  ! MFCT Del-4:
    1218  if ( mdim<=193 ) then
    1219  n_del4 = 1
    1220  elseif ( mdim<=1537 ) then
    1221  n_del4 = 2
    1222  else
    1223  n_del4 = 3
    1224  endif
    1225  call del4_cubed_sphere(is,ie,js,je,isd,ied,jsd,jed,npx, npy, ntiles, &
    1226  phis, area, dx, dy, dxc, dyc, sin_sg, n_del4, zero_ocean, mask, nested, regional)
    1227  ! Applying weak 2-delta-filter:
    1228  cd2 = 0.12*da_min
    1229  call two_delta_filter(is,ie,js,je,isd,ied,jsd,jed,npx, npy, ntiles, &
    1230  phis, area, dx, dy, dxa, dya, dxc, dyc, sin_sg, cd2, zero_ocean, &
    1231  .true., 1, grid_type, mask, nested, n_del2_weak, regional)
    1232 
    1233  end subroutine fv3_zs_filter
    1234 
    1267  subroutine two_delta_filter(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, &
    1268  q, area, dx, dy, dxa, dya, dxc, dyc, sin_sg, cd, zero_ocean, &
    1269  check_slope, filter_type, grid_type, mask, nested, ntmax, regional)
    1270  integer, intent(in) :: is, ie, js, je
    1271  integer, intent(in) :: isd, ied, jsd, jed
    1272  integer, intent(in) :: npx, npy, grid_type
    1273  integer, intent(in) :: ntmax, ntiles
    1274  integer, intent(in) :: filter_type ! 0: strong, 1: weak
    1275  real, intent(in) :: cd
    1276  ! INPUT arrays
    1277  real, intent(in)::area(isd:ied, jsd:jed, ntiles)
    1278  real, intent(in):: dx(isd:ied, jsd:jed+1, ntiles)
    1279  real, intent(in):: dy(isd:ied+1,jsd:jed, ntiles)
    1280  real, intent(in):: dxa(isd:ied, jsd:jed, ntiles)
    1281  real, intent(in):: dya(isd:ied, jsd:jed, ntiles)
    1282  real, intent(in):: dxc(isd:ied+1,jsd:jed, ntiles)
    1283  real, intent(in):: dyc(isd:ied, jsd:jed+1, ntiles)
    1284  real, intent(in):: sin_sg(4,isd:ied,jsd:jed, ntiles)
    1285  real, intent(in):: mask(isd:ied, jsd:jed, ntiles) ! 0==water, 1==land
    1286  logical, intent(in):: zero_ocean, check_slope
    1287  logical, intent(in):: nested, regional
    1288  ! OUTPUT arrays
    1289  real, intent(inout):: q(isd:ied, jsd:jed,ntiles)
    1290  ! Local:
    1291  real, parameter:: p1 = 7./12.
    1292  real, parameter:: p2 = -1./12.
    1293  real, parameter:: c1 = -2./14.
    1294  real, parameter:: c2 = 11./14.
    1295  real, parameter:: c3 = 5./14.
    1296 
    1297  real:: ddx(is:ie+1,js:je), ddy(is:ie,js:je+1)
    1298  logical:: extm(is-1:ie+1)
    1299  logical:: ext2(is:ie,js-1:je+1)
    1300  real:: a1(is-1:ie+2)
    1301  real:: a2(is:ie,js-1:je+2)
    1302  real:: a3(is:ie,js:je,ntiles)
    1303  real:: smax, m_slope, fac
    1304  integer:: i,j, nt, t
    1305  integer:: is1, ie2, js1, je2
    1306 
    1307  if ( .not. nested .and. grid_type<3 ) then
    1308  is1 = max(3,is-1); ie2 = min(npx-2,ie+2)
    1309  js1 = max(3,js-1); je2 = min(npy-2,je+2)
    1310  else
    1311  is1 = is-1; ie2 = ie+2
    1312  js1 = js-1; je2 = je+2
    1313  end if
    1314 
    1315  if ( check_slope ) then
    1316  m_slope = max_slope
    1317  else
    1318  m_slope = 10.
    1319  endif
    1320 
    1321 
    1322  do nt=1, ntmax
    1323  if( .not.regional ) then
    1324  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1325  endif
    1326 
    1327  ! Check slope
    1328  if ( nt==1 .and. check_slope ) then
    1329  do t = 1, ntiles
    1330  do j=js,je
    1331  do i=is,ie+1
    1332  ddx(i,j) = (q(i,j,t) - q(i-1,j,t))/dxc(i,j,t)
    1333  ddx(i,j) = abs(ddx(i,j))
    1334  enddo
    1335  enddo
    1336  do j=js,je+1
    1337  do i=is,ie
    1338  ddy(i,j) = (q(i,j,t) - q(i,j-1,t))/dyc(i,j,t)
    1339  ddy(i,j) = abs(ddy(i,j))
    1340  enddo
    1341  enddo
    1342  do j=js,je
    1343  do i=is,ie
    1344  a3(i,j,t) = max( ddx(i,j), ddx(i+1,j), ddy(i,j), ddy(i,j+1) )
    1345  enddo
    1346  enddo
    1347  enddo
    1348  smax = maxval(a3(is:ie,js:je,:))
    1349  write(*,*) 'Before filter: Max_slope=', smax
    1350  endif
    1351 
    1352 
    1353  ! First step: average the corners:
    1354  if ( .not. nested .and. nt==1 ) then
    1355  do t = 1, ntiles
    1356  q(1,1,t) = (q(1,1,t)*area(1,1,t)+q(0,1,t)*area(0,1,t)+q(1,0,t)*area(1,0,t)) &
    1357  / ( area(1,1,t)+ area(0,1,t)+ area(1,0,t) )
    1358  q(0,1,t) = q(1,1,t)
    1359  q(1,0,t) = q(1,1,t)
    1360 
    1361  q(ie, 1,t) = (q(ie,1,t)*area(ie,1,t)+q(npx,1,t)*area(npx,1,t)+q(ie,0,t)*area(ie,0,t)) &
    1362  / ( area(ie,1,t)+ area(npx,1,t)+ area(ie,0,t))
    1363  q(npx,1,t) = q(ie,1,t)
    1364  q(ie, 0,t) = q(ie,1,t)
    1365 
    1366  q(1, je,t) = (q(1,je,t)*area(1,je,t)+q(0,je,t)*area(0,je,t)+q(1,npy,t)*area(1,npy,t)) &
    1367  / ( area(1,je,t)+ area(0,je,t)+ area(1,npy,t))
    1368  q(0, je,t) = q(1,je,t)
    1369  q(1,npy,t) = q(1,je,t)
    1370 
    1371  q(ie, je,t) = (q(ie,je,t)*area(ie,je,t)+q(npx,je,t)*area(npx,je,t)+q(ie,npy,t)*area(ie,npy,t)) &
    1372  / ( area(ie,je,t)+ area(npx,je,t)+ area(ie,npy,t))
    1373  q(npx,je,t) = q(ie,je,t)
    1374  q(ie,npy,t) = q(ie,je,t)
    1375  enddo
    1376  if( .not.regional ) then
    1377  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1378  endif
    1379  endif
    1380 
    1381  do t = 1, ntiles
    1382  ! x-diffusive flux:
    1383  do j=js,je
    1384 
    1385  do i=is1, ie2
    1386  a1(i) = p1*(q(i-1,j,t)+q(i,j,t)) + p2*(q(i-2,j,t)+q(i+1,j,t))
    1387  enddo
    1388 
    1389  if ( (.not. (nested .or. regional)) .and. grid_type<3 ) then
    1390  a1(0) = c1*q(-2,j,t) + c2*q(-1,j,t) + c3*q(0,j,t)
    1391  a1(1) = 0.5*(((2.*dxa(0,j,t)+dxa(-1,j,t))*q(0,j,t)-dxa(0,j,t)*q(-1,j,t))/(dxa(-1,j,t)+dxa(0,j,t)) &
    1392  + ((2.*dxa(1,j,t)+dxa( 2,j,t))*q(1,j,t)-dxa(1,j,t)*q( 2,j,t))/(dxa(1, j,t)+dxa(2,j,t)))
    1393  a1(2) = c3*q(1,j,t) + c2*q(2,j,t) +c1*q(3,j,t)
    1394 
    1395  a1(npx-1) = c1*q(npx-3,j,t) + c2*q(npx-2,j,t) + c3*q(npx-1,j,t)
    1396  a1(npx) = 0.5*(((2.*dxa(npx-1,j,t)+dxa(npx-2,j,t))*q(npx-1,j,t)-dxa(npx-1,j,t)*q(npx-2,j,t)) &
    1397  /(dxa(npx-2,j,t)+dxa(npx-1,j,t)) &
    1398  + ((2.*dxa(npx, j,t)+dxa(npx+1,j,t))*q(npx, j,t)-dxa(npx, j,t)*q(npx+1,j,t))/ &
    1399  (dxa(npx, j,t)+dxa(npx+1,j,t)))
    1400  a1(npx+1) = c3*q(npx,j,t) + c2*q(npx+1,j,t) + c1*q(npx+2,j,t)
    1401  endif
    1402 
    1403  if ( regional .and. grid_type<3 ) then
    1404  a1(0) = c1*q(-1,j,t) + c2*q(-1,j,t) + c3*q(0,j,t)
    1405  a1(2) = c3*q(1,j,t) + c2*q(2,j,t) + c1*q(3,j,t)
    1406  a1(1) = 0.5*(a1(0) + a1(2))
    1407 
    1408  a1(npx-1) = c1*q(npx-3,j,t) + c2*q(npx-2,j,t) + c3*q(npx-1,j,t)
    1409  a1(npx+1) = c3*q(npx,j,t) + c2*q(npx+1,j,t) + c1*q(npx+2,j,t)
    1410  a1(npx) = 0.5*(a1(npx-1)+a1(npx+1))
    1411  endif
    1412 
    1413  if ( filter_type == 0 ) then
    1414  do i=is-1, ie+1
    1415  if( abs(3.*(a1(i)+a1(i+1)-2.*q(i,j,t))) > abs(a1(i)-a1(i+1)) ) then
    1416  extm(i) = .true.
    1417  else
    1418  extm(i) = .false.
    1419  endif
    1420  enddo
    1421  else
    1422  do i=is-1, ie+1
    1423  if ( (a1(i)-q(i,j,t))*(a1(i+1)-q(i,j,t)) > 0. ) then
    1424  extm(i) = .true.
    1425  else
    1426  extm(i) = .false.
    1427  endif
    1428  enddo
    1429  endif
    1430 
    1431  do i=is,ie+1
    1432  ddx(i,j) = (q(i-1,j,t)-q(i,j,t))/dxc(i,j,t)
    1433  if ( extm(i-1).and.extm(i) ) then
    1434  ddx(i,j) = 0.5*(sin_sg(3,i-1,j,t)+sin_sg(1,i,j,t))*dy(i,j,t)*ddx(i,j)
    1435  elseif ( abs(ddx(i,j)) > m_slope ) then
    1436  fac = min(1., max( 0.1, ( abs(ddx(i,j))-m_slope )/m_slope) )
    1437  ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j,t)+sin_sg(1,i,j,t))*dy(i,j,t)*ddx(i,j)
    1438  else
    1439  ddx(i,j) = 0.
    1440  endif
    1441  enddo
    1442  enddo ! do j=js,je
    1443 
    1444  ! y-diffusive flux:
    1445  do j=js1,je2
    1446  do i=is,ie
    1447  a2(i,j) = p1*(q(i,j-1,t)+q(i,j,t)) + p2*(q(i,j-2,t)+q(i,j+1,t))
    1448  enddo
    1449  enddo
    1450  if ( (.not. (nested .or. regional)) .and. grid_type<3 ) then
    1451  do i=is,ie
    1452  a2(i,0) = c1*q(i,-2,t) + c2*q(i,-1,t) + c3*q(i,0,t)
    1453  a2(i,1) = 0.5*(((2.*dya(i,0,t)+dya(i,-1,t))*q(i,0,t)-dya(i,0,t)*q(i,-1,t))/(dya(i,-1,t)+dya(i,0,t)) &
    1454  + ((2.*dya(i,1,t)+dya(i, 2,t))*q(i,1,t)-dya(i,1,t)*q(i, 2,t))/(dya(i, 1,t)+dya(i,2,t)))
    1455  a2(i,2) = c3*q(i,1,t) + c2*q(i,2,t) + c1*q(i,3,t)
    1456  enddo
    1457 
    1458  do i=is,ie
    1459  a2(i,npy-1) = c1*q(i,npy-3,t) + c2*q(i,npy-2,t) + c3*q(i,npy-1,t)
    1460  a2(i,npy) = 0.5*(((2.*dya(i,npy-1,t)+dya(i,npy-2,t))*q(i,npy-1,t)-dya(i,npy-1,t)*q(i,npy-2,t))/ &
    1461  (dya(i,npy-2,t)+dya(i,npy-1,t)) &
    1462  + ((2.*dya(i,npy,t)+dya(i,npy+1,t))*q(i,npy,t)-dya(i,npy,t)*q(i,npy+1,t))/&
    1463  (dya(i,npy,t)+dya(i,npy+1,t)))
    1464  a2(i,npy+1) = c3*q(i,npy,t) + c2*q(i,npy+1,t) + c1*q(i,npy+2,t)
    1465  enddo
    1466  endif
    1467 
    1468  if ( regional .and. grid_type<3 ) then
    1469  do i=is,ie
    1470  a2(i,0) = c1*q(i,-2,t) + c2*q(i,-1,t) + c3*q(i,0,t)
    1471  a2(i,2) = c3*q(i,1,t) + c2*q(i,2,t) + c1*q(i,3,t)
    1472  a2(i,1) = 0.5*(a2(i,0) + a2(i,2))
    1473  enddo
    1474 
    1475  do i=is,ie
    1476  a2(i,npy-1) = c1*q(i,npy-3,t) + c2*q(i,npy-2,t) + c3*q(i,npy-1,t)
    1477  a2(i,npy+1) = c3*q(i,npy,t) + c2*q(i,npy+1,t) + c1*q(i,npy+2,t)
    1478  a2(i,npy) = 0.5*(a2(i,npy-1)+a2(i,npy+1))
    1479  enddo
    1480  endif
    1481 
    1482  if ( filter_type == 0 ) then
    1483  do j=js-1,je+1
    1484  do i=is,ie
    1485  if( abs(3.*(a2(i,j)+a2(i,j+1)-2.*q(i,j,t))) > abs(a2(i,j)-a2(i,j+1)) ) then
    1486  ext2(i,j) = .true.
    1487  else
    1488  ext2(i,j) = .false.
    1489  endif
    1490  enddo
    1491  enddo
    1492  else
    1493  do j=js-1,je+1
    1494  do i=is,ie
    1495  if ( (a2(i,j)-q(i,j,t))*(a2(i,j+1)-q(i,j,t)) > 0. ) then
    1496  ext2(i,j) = .true.
    1497  else
    1498  ext2(i,j) = .false.
    1499  endif
    1500  enddo
    1501  enddo
    1502  endif
    1503 
    1504  do j=js,je+1
    1505  do i=is,ie
    1506  ddy(i,j) = (q(i,j-1,t)-q(i,j,t))/dyc(i,j,t)
    1507  if ( ext2(i,j-1) .and. ext2(i,j) ) then
    1508  ddy(i,j) = 0.5*(sin_sg(4,i,j-1,t)+sin_sg(2,i,j,t))*dx(i,j,t)*ddy(i,j)
    1509  elseif ( abs(ddy(i,j))>m_slope ) then
    1510  fac = min(1., max(0.1,(abs(ddy(i,j))-m_slope)/m_slope))
    1511  ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1,t)+sin_sg(2,i,j,t))*dx(i,j,t)*ddy(i,j)
    1512  else
    1513  ddy(i,j) = 0.
    1514  endif
    1515  enddo
    1516  enddo
    1517 
    1518  if ( zero_ocean ) then
    1519  ! Limit diffusive flux over water cells:
    1520  do j=js,je
    1521  do i=is,ie+1
    1522  ddx(i,j) = max(0., min(mask(i-1,j,t), mask(i,j,t))) * ddx(i,j)
    1523  enddo
    1524  enddo
    1525  do j=js,je+1
    1526  do i=is,ie
    1527  ddy(i,j) = max(0., min(mask(i,j-1,t), mask(i,j,t))) * ddy(i,j)
    1528  enddo
    1529  enddo
    1530  endif
    1531 
    1532  do j=js,je
    1533  do i=is,ie
    1534  q(i,j,t) = q(i,j,t) + cd/area(i,j,t)*(ddx(i,j)-ddx(i+1,j)+ddy(i,j)-ddy(i,j+1))
    1535  enddo
    1536  enddo
    1537  enddo ! do t = 1, ntiles
    1538  enddo ! nt=1, ntmax
    1539 
    1540 ! Check slope
    1541  if ( check_slope ) then
    1542  if( .not.regional ) then
    1543  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1544  endif
    1545  do t = 1, ntiles
    1546  do j=js,je
    1547  do i=is,ie+1
    1548  ddx(i,j) = (q(i,j,t) - q(i-1,j,t))/dxc(i,j,t)
    1549  ddx(i,j) = abs(ddx(i,j))
    1550  enddo
    1551  enddo
    1552  do j=js,je+1
    1553  do i=is,ie
    1554  ddy(i,j) = (q(i,j,t) - q(i,j-1,t))/dyc(i,j,t)
    1555  ddy(i,j) = abs(ddy(i,j))
    1556  enddo
    1557  enddo
    1558  do j=js,je
    1559  do i=is,ie
    1560  a3(i,j,t) = max( ddx(i,j), ddx(i+1,j), ddy(i,j), ddy(i,j+1) )
    1561  enddo
    1562  enddo
    1563  enddo
    1564  smax = maxval(a3(is:ie,js:je,:))
    1565  write(*,*) 'After filter: Max_slope=', smax
    1566  endif
    1567 
    1568  end subroutine two_delta_filter
    1569 
    1597  subroutine del2_cubed_sphere(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles,&
    1598  q, area, dx, dy, dxc, dyc, sin_sg, nmax, cd, zero_ocean, mask, nested, regional)
    1599  integer, intent(in) :: is, ie, js, je
    1600  integer, intent(in) :: isd, ied, jsd, jed
    1601  integer, intent(in):: npx, npy, ntiles
    1602  integer, intent(in):: nmax
    1603  real, intent(in):: cd
    1604  logical, intent(in):: zero_ocean
    1605  ! INPUT arrays
    1606  real, intent(in)::area(isd:ied, jsd:jed, ntiles)
    1607  real, intent(in):: dx(isd:ied, jsd:jed+1, ntiles)
    1608  real, intent(in):: dy(isd:ied+1,jsd:jed, ntiles)
    1609  real, intent(in):: dxc(isd:ied+1,jsd:jed, ntiles)
    1610  real, intent(in):: dyc(isd:ied, jsd:jed+1, ntiles)
    1611  real, intent(IN):: sin_sg(4,isd:ied,jsd:jed, ntiles)
    1612  real, intent(in):: mask(isd:ied, jsd:jed, ntiles) ! 0==water, 1==land
    1613  logical, intent(IN) :: nested, regional
    1614 
    1615  ! OUTPUT arrays
    1616  real, intent(inout):: q(is-ng:ie+ng, js-ng:je+ng, ntiles)
    1617  ! Local:
    1618  real ddx(is:ie+1,js:je), ddy(is:ie,js:je+1)
    1619  integer i,j,n,t
    1620 
    1621  if( .not.regional ) then
    1622  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1623  endif
    1624 
    1625  do t = 1, ntiles
    1626  ! First step: average the corners:
    1627  if ( .not. nested) then
    1628  q(1,1,t) = (q(1,1,t)*area(1,1,t)+q(0,1,t)*area(0,1,t)+q(1,0,t)*area(1,0,t)) &
    1629  / ( area(1,1,t)+ area(0,1,t)+ area(1,0,t) )
    1630  q(0,1,t) = q(1,1,t)
    1631  q(1,0,t) = q(1,1,t)
    1632  endif
    1633  if ( .not. nested) then
    1634  q(ie, 1,t) = (q(ie,1,t)*area(ie,1,t)+q(npx,1,t)*area(npx,1,t)+q(ie,0,t)*area(ie,0,t)) &
    1635  / ( area(ie,1,t)+ area(npx,1,t)+ area(ie,0,t))
    1636  q(npx,1,t) = q(ie,1,t)
    1637  q(ie, 0,t) = q(ie,1,t)
    1638  endif
    1639  if ( .not. nested ) then
    1640  q(ie, je,t) = (q(ie,je,t)*area(ie,je,t)+q(npx,je,t)*area(npx,je,t)+q(ie,npy,t)*area(ie,npy,t)) &
    1641  / ( area(ie,je,t)+ area(npx,je,t)+ area(ie,npy,t))
    1642  q(npx,je,t) = q(ie,je,t)
    1643  q(ie,npy,t) = q(ie,je,t)
    1644  endif
    1645  if ( .not. nested) then
    1646  q(1, je,t) = (q(1,je,t)*area(1,je,t)+q(0,je,t)*area(0,je,t)+q(1,npy,t)*area(1,npy,t)) &
    1647  / ( area(1,je,t)+ area(0,je,t)+ area(1,npy,t))
    1648  q(0, je,t) = q(1,je,t)
    1649  q(1,npy,t) = q(1,je,t)
    1650  endif
    1651  enddo
    1652 
    1653  do n=1,nmax
    1654  if( .not.regional ) then
    1655  if( n>1 ) call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1656  endif
    1657  do t = 1, ntiles
    1658  do j=js,je
    1659  do i=is,ie+1
    1660  ddx(i,j) = 0.5*(sin_sg(3,i-1,j,t)+sin_sg(1,i,j,t))*dy(i,j,t)*(q(i-1,j,t)-q(i,j,t))/dxc(i,j,t)
    1661  enddo
    1662  enddo
    1663  do j=js,je+1
    1664  do i=is,ie
    1665  ddy(i,j) = dx(i,j,t)*(q(i,j-1,t)-q(i,j,t))/dyc(i,j,t) &
    1666  *0.5*(sin_sg(4,i,j-1,t)+sin_sg(2,i,j,t))
    1667  enddo
    1668  enddo
    1669 
    1670  if ( zero_ocean ) then
    1671  ! Limit diffusive flux over ater cells:
    1672  do j=js,je
    1673  do i=is,ie+1
    1674  ddx(i,j) = max(0., min(mask(i-1,j,t), mask(i,j,t))) * ddx(i,j)
    1675  enddo
    1676  enddo
    1677  do j=js,je+1
    1678  do i=is,ie
    1679  ddy(i,j) = max(0., min(mask(i,j-1,t), mask(i,j,t))) * ddy(i,j)
    1680  enddo
    1681  enddo
    1682  endif
    1683 
    1684  do j=js,je
    1685  do i=is,ie
    1686  q(i,j,t) = q(i,j,t) + cd/area(i,j,t)*(ddx(i,j)-ddx(i+1,j)+ddy(i,j)-ddy(i,j+1))
    1687  enddo
    1688  enddo
    1689  enddo
    1690  enddo
    1691 
    1692  end subroutine del2_cubed_sphere
    1693 
    1720  subroutine del4_cubed_sphere(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, &
    1721  q, area, dx, dy, dxc, dyc, sin_sg, nmax, zero_ocean, mask, nested, regional)
    1722  integer, intent(in) :: is, ie, js, je
    1723  integer, intent(in) :: isd, ied, jsd, jed
    1724  integer, intent(in) :: npx, npy, nmax, ntiles
    1725  logical, intent(in) :: zero_ocean
    1726  real, intent(in):: mask(isd:ied, jsd:jed, ntiles) ! 0==water, 1==land
    1727  real, intent(in)::area(isd:ied, jsd:jed, ntiles)
    1728  real, intent(in):: dx(isd:ied, jsd:jed+1, ntiles)
    1729  real, intent(in):: dy(isd:ied+1,jsd:jed, ntiles)
    1730  real, intent(in):: dxc(isd:ied+1,jsd:jed, ntiles)
    1731  real, intent(in):: dyc(isd:ied, jsd:jed+1, ntiles)
    1732  real, intent(IN):: sin_sg(4,isd:ied,jsd:jed, ntiles)
    1733  real, intent(inout):: q(isd:ied, jsd:jed, ntiles)
    1734  logical, intent(IN) :: nested, regional
    1735  ! Local:
    1736  ! diffusivity
    1737  real :: diff(is-1:ie+1,js-1:je+1, ntiles)
    1738  ! diffusive fluxes:
    1739  real :: fx1(is:ie+1,js:je), fy1(is:ie,js:je+1)
    1740  real :: fx2(is:ie+1,js:je,ntiles), fy2(is:ie,js:je+1,ntiles)
    1741  real :: fx4(is:ie+1,js:je,ntiles), fy4(is:ie,js:je+1,ntiles)
    1742  real, dimension(isd:ied,jsd:jed,ntiles):: d2, win, wou
    1743  real, dimension(is:ie,js:je, ntiles) :: qlow, qmin, qmax
    1744  real, parameter:: esl = 1.e-20
    1745  integer i,j, n, t
    1746 
    1747  ! On a nested grid the haloes are not filled. Set to zero.
    1748  d2 = 0.
    1749  win = 0.
    1750  wou = 0.
    1751 
    1752  do t = 1, ntiles
    1753  do j=js-1,je+1 ; do i=is-1,ie+1
    1754  diff(i,j,t) = cd4*area(i,j,t) ! area dependency is needed for stretched grid
    1755  enddo; enddo
    1756 
    1757  do j=js,je ; do i=is,ie
    1758  qmax(i,j,t) = q(i,j,t) * peak_fac
    1759  qmin(i,j,t) = q(i,j,t) / peak_fac
    1760  enddo; enddo
    1761  enddo
    1762 
    1763  do n=1,nmax
    1764  if( .not.regional ) then
    1765  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1766  endif
    1767 
    1768  ! First step: average the corners:
    1769  if ( .not. nested .and. n==1 ) then
    1770  do t = 1, ntiles
    1771  q(1,1,t) = (q(1,1,t)*area(1,1,t)+q(0,1,t)*area(0,1,t)+q(1,0,t)*area(1,0,t)) &
    1772  / ( area(1,1,t)+ area(0,1,t)+ area(1,0,t) )
    1773  q(0,1,t) = q(1,1,t)
    1774  q(1,0,t) = q(1,1,t)
    1775  q(0,0,t) = q(1,1,t)
    1776 
    1777  q(ie, 1,t) = (q(ie,1,t)*area(ie,1,t)+q(npx,1,t)*area(npx,1,t)+q(ie,0,t)*area(ie,0,t)) &
    1778  / ( area(ie,1,t)+ area(npx,1,t)+ area(ie,0,t))
    1779  q(npx,1,t) = q(ie,1,t)
    1780  q(ie, 0,t) = q(ie,1,t)
    1781  q(npx,0,t) = q(ie,1,t)
    1782 
    1783  q(1, je,t) = (q(1,je,t)*area(1,je,t)+q(0,je,t)*area(0,je,t)+q(1,npy,t)*area(1,npy,t)) &
    1784  / ( area(1,je,t)+ area(0,je,t)+ area(1,npy,t))
    1785  q(0, je,t) = q(1,je,t)
    1786  q(1,npy,t) = q(1,je,t)
    1787  q(0,npy,t) = q(1,je,t)
    1788 
    1789  q(ie, je,t) = (q(ie,je,t)*area(ie,je,t)+q(npx,je,t)*area(npx,je,t)+q(ie,npy,t)*area(ie,npy,t)) &
    1790  / ( area(ie,je,t)+ area(npx,je,t)+ area(ie,npy,t))
    1791  q(npx, je,t) = q(ie,je,t)
    1792  q(ie, npy,t) = q(ie,je,t)
    1793  q(npx,npy,t) = q(ie,je,t)
    1794  enddo
    1795  if( .not.regional ) then
    1796  call fill_cubic_grid_halo(q, q, ng, 0, 0, 1, 1)
    1797  endif
    1798  endif
    1799 
    1800  do t = 1, ntiles
    1801 
    1802  !--------------
    1803  ! Compute del-2
    1804  !--------------
    1805  ! call copy_corners(q, npx, npy, 1)
    1806  do j=js,je
    1807  do i=is,ie+1
    1808  fx2(i,j,t) = 0.25*(diff(i-1,j,t)+diff(i,j,t))*dy(i,j,t)*(q(i-1,j,t)-q(i,j,t))/dxc(i,j,t) &
    1809  *(sin_sg(1,i,j,t)+sin_sg(3,i-1,j,t))
    1810  enddo
    1811  enddo
    1812 
    1813  ! call copy_corners(q, npx, npy, 2)
    1814  do j=js,je+1
    1815  do i=is,ie
    1816  fy2(i,j,t) = 0.25*(diff(i,j-1,t)+diff(i,j,t))*dx(i,j,t)*(q(i,j-1,t)-q(i,j,t))/dyc(i,j,t) &
    1817  *(sin_sg(2,i,j,t)+sin_sg(4,i,j-1,t))
    1818  enddo
    1819  enddo
    1820 
    1821  do j=js,je
    1822  do i=is,ie
    1823  d2(i,j,t) = (fx2(i,j,t)-fx2(i+1,j,t)+fy2(i,j,t)-fy2(i,j+1,t)) / area(i,j,t)
    1824  enddo
    1825  enddo
    1826 
    1827  ! qlow == low order monotonic solution
    1828  if ( zero_ocean ) then
    1829  ! Limit diffusive flux over water cells:
    1830  do j=js,je
    1831  do i=is,ie+1
    1832  fx1(i,j) = max(0., min(mask(i-1,j,t), mask(i,j,t))) * fx2(i,j,t)
    1833  enddo
    1834  enddo
    1835  do j=js,je+1
    1836  do i=is,ie
    1837  fy1(i,j) = max(0., min(mask(i,j-1,t), mask(i,j,t))) * fy2(i,j,t)
    1838  enddo
    1839  enddo
    1840  do j=js,je
    1841  do i=is,ie
    1842  qlow(i,j,t) = q(i,j,t) + (fx1(i,j)-fx1(i+1,j)+fy1(i,j)-fy1(i,j+1)) / area(i,j,t)
    1843  d2(i,j,t) = diff(i,j,t) * d2(i,j,t)
    1844  enddo
    1845  enddo
    1846  else
    1847  do j=js,je
    1848  do i=is,ie
    1849  qlow(i,j,t) = q(i,j,t) + d2(i,j,t)
    1850  d2(i,j,t) = diff(i,j,t) * d2(i,j,t)
    1851  enddo
    1852  enddo
    1853  endif
    1854  enddo
    1855  if( .not.regional ) then
    1856  call fill_cubic_grid_halo(d2, d2, ng, 0, 0, 1, 1)
    1857  endif
    1858 
    1859  !---------------------
    1860  ! Compute del4 fluxes:
    1861  !---------------------
    1862  ! call copy_corners(d2, npx, npy, 1)
    1863  do t = 1, ntiles
    1864  do j=js,je
    1865  do i=is,ie+1
    1866  fx4(i,j,t) = 0.5*(sin_sg(3,i-1,j,t)+sin_sg(1,i,j,t))*dy(i,j,t)*(d2(i,j,t)-d2(i-1,j,t))/dxc(i,j,t)-fx2(i,j,t)
    1867  enddo
    1868  enddo
    1869 
    1870  ! call copy_corners(d2, npx, npy, 2)
    1871  do j=js,je+1
    1872  do i=is,ie
    1873  fy4(i,j,t) = dx(i,j,t)*(d2(i,j,t)-d2(i,j-1,t))/dyc(i,j,t) &
    1874  *0.5*(sin_sg(2,i,j,t)+sin_sg(4,i,j-1,t))-fy2(i,j,t)
    1875  enddo
    1876  enddo
    1877 
    1878  do j=js,je
    1879  do i=is,ie
    1880  qmin(i,j,t) = min(qmin(i,j,t), q(i-1,j-1,t), q(i,j-1,t), q(i+1,j-1,t), &
    1881  q(i-1,j ,t), q(i,j ,t), q(i+1,j ,t), &
    1882  q(i-1,j+1,t), q(i,j+1,t), q(i+1,j+1,t) )
    1883  qmax(i,j,t) = max(qmax(i,j,t), q(i-1,j-1,t), q(i,j-1,t), q(i+1,j-1,t), &
    1884  q(i-1,j ,t), q(i,j ,t), q(i+1,j ,t), &
    1885  q(i-1,j+1,t), q(i,j+1,t), q(i+1,j+1,t) )
    1886  enddo
    1887  enddo
    1888 
    1889  !----------------
    1890  ! Flux limitting:
    1891  !----------------
    1892  do j=js,je
    1893  do i=is,ie
    1894  win(i,j,t) = max(0.,fx4(i, j,t)) - min(0.,fx4(i+1,j,t)) + &
    1895  max(0.,fy4(i, j,t)) - min(0.,fy4(i,j+1,t)) + esl
    1896  wou(i,j,t) = max(0.,fx4(i+1,j,t)) - min(0.,fx4(i, j,t)) + &
    1897  max(0.,fy4(i,j+1,t)) - min(0.,fy4(i, j,t)) + esl
    1898  win(i,j,t) = max(0., qmax(i,j,t) - qlow(i,j,t)) / win(i,j,t)*area(i,j,t)
    1899  wou(i,j,t) = max(0., qlow(i,j,t) - qmin(i,j,t)) / wou(i,j,t)*area(i,j,t)
    1900  enddo
    1901  enddo
    1902  enddo
    1903  if( .not.regional ) then
    1904  call fill_cubic_grid_halo(win, win, ng, 0, 0, 1, 1)
    1905  call fill_cubic_grid_halo(wou, wou, ng, 0, 0, 1, 1)
    1906  endif
    1907  do t = 1, ntiles
    1908  do j=js,je
    1909  do i=is,ie+1
    1910  if ( fx4(i,j,t) > 0. ) then
    1911  fx4(i,j,t) = min(1., wou(i-1,j,t), win(i,j,t)) * fx4(i,j,t)
    1912  else
    1913  fx4(i,j,t) = min(1., win(i-1,j,t), wou(i,j,t)) * fx4(i,j,t)
    1914  endif
    1915  enddo
    1916  enddo
    1917  do j=js,je+1
    1918  do i=is,ie
    1919  if ( fy4(i,j,t) > 0. ) then
    1920  fy4(i,j,t) = min(1., wou(i,j-1,t), win(i,j,t)) * fy4(i,j,t)
    1921  else
    1922  fy4(i,j,t) = min(1., win(i,j-1,t), wou(i,j,t)) * fy4(i,j,t)
    1923  endif
    1924  enddo
    1925  enddo
    1926 
    1927 
    1928  if ( zero_ocean ) then
    1929  ! Limit diffusive flux over ocean cells:
    1930  do j=js,je
    1931  do i=is,ie+1
    1932  fx4(i,j,t) = max(0., min(mask(i-1,j,t), mask(i,j,t))) * fx4(i,j,t)
    1933  enddo
    1934  enddo
    1935  do j=js,je+1
    1936  do i=is,ie
    1937  fy4(i,j,t) = max(0., min(mask(i,j-1,t), mask(i,j,t))) * fy4(i,j,t)
    1938  enddo
    1939  enddo
    1940  endif
    1941 
    1942  ! Update:
    1943  do j=js,je
    1944  do i=is,ie
    1945  q(i,j,t) = qlow(i,j,t) + (fx4(i,j,t)-fx4(i+1,j,t)+fy4(i,j,t)-fy4(i,j+1,t))/area(i,j,t)
    1946  enddo
    1947  enddo
    1948  enddo
    1949  enddo ! end n-loop
    1950 
    1951 
    1952  end subroutine del4_cubed_sphere
    1953 
    1958  subroutine check(status)
    1959  use netcdf
    1960  integer,intent(in) :: status
    1961 !
    1962  if(status /= nf90_noerr) then
    1963  write(0,*) ' check netcdf status = ', status
    1964  write(0,'("error ", a)') trim(nf90_strerror(status))
    1965  write(0,*) "Stopped"
    1966  stop 4
    1967  endif
    1968  end subroutine check
    1969 
    1974  subroutine compute_filter_constants
    1976  ! set the given values for various cube resolutions (c48, c96, c192, c384, c768, c1152, c3072)
    1977 
    1978  integer,parameter :: nres=8
    1979  integer :: index1,index2,n
    1980 
    1981  real :: factor
    1982 
    1983  real,dimension(1:nres) :: cube_res=(/48.,96.,128.,192.,384.,768.,1152.,3072./)
    1984 
    1985  real,dimension(1:nres) :: n_del2_weak_vals=(/4.,8.,8.,12.,12.,16.,20.,24./)
    1986  real,dimension(1:nres) :: cd4_vals =(/0.12,0.12,0.13,0.15,0.15,0.15,0.15,0.15/)
    1987  real,dimension(1:nres) :: max_slope_vals =(/0.12,0.12,0.12,0.12,0.12,0.12,0.16,0.30/)
    1988  real,dimension(1:nres) :: peak_fac_vals =(/1.1,1.1,1.1,1.05,1.0,1.0,1.0,1.0/)
    1989 
    1990  if(res<cube_res(1))then
    1991  index1 = 1
    1992  index2 = 1
    1993  factor = 0.
    1994  elseif(res>cube_res(nres))then
    1995  index1 = nres
    1996  index2 = nres
    1997  factor = 0.
    1998  else
    1999  do n=2,nres
    2000  if(res<=cube_res(n))then
    2001  index2 = n
    2002  index1 = n-1
    2003  factor = (res-cube_res(n-1))/(cube_res(n)-cube_res(n-1))
    2004  exit
    2005  endif
    2006  enddo
    2007  endif
    2008 
    2009  n_del2_weak = nint(n_del2_weak_vals(index1)+factor*(n_del2_weak_vals(index2)-n_del2_weak_vals(index1)))
    2010  cd4 = cd4_vals(index1)+factor*(cd4_vals(index2)-cd4_vals(index1))
    2011  max_slope = max_slope_vals(index1)+factor*(max_slope_vals(index2)-max_slope_vals(index1))
    2012  peak_fac = peak_fac_vals(index1)+factor*(peak_fac_vals(index2)-peak_fac_vals(index1))
    2013 
    2014  print*,''
    2015  print*,'- FILTER COEFFICIENTS FOR RESOLUTION ', res
    2016  print*,'- CD4: ', cd4
    2017  print*,'- N_DEL2_WEAK: ', n_del2_weak
    2018  print*,'- MAX_SLOPE: ', max_slope
    2019  print*,'- PEAK_FAC: ', peak_fac
    2020 
    2021  end subroutine compute_filter_constants
    2022 
    2023 end program filter_topo
    subroutine cart_to_latlon(np, q, xs, ys)
    ???
    +
    subroutine cell_center2(q1, q2, q3, q4, e2)
    ???
    +
    subroutine read_topo_file(regional)
    ???
    +
    subroutine fill_regional_halo(data, halo)
    This routine extrapolate geolat_c and geolon_c halo points for the regional standalone grid...
    Definition: utils.F90:71
    +
    subroutine mid_pt3_cart(p1, p2, e)
    ???
    +
    real function cos_angle(p1, p2, p3)
    ???
    +
    subroutine latlon2xyz(p, e)
    ???
    +
    real function great_circle_dist(q1, q2, radius)
    ???
    Definition: filter_topo.F90:82
    +
    subroutine del4_cubed_sphere(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxc, dyc, sin_sg, nmax, zero_ocean, mask, nested, regional)
    ???
    +
    subroutine del2_cubed_sphere(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxc, dyc, sin_sg, nmax, cd, zero_ocean, mask, nested, regional)
    ???
    +
    logical nested
    If true, process a global grid with a nest.
    Definition: utils.F90:22
    +
    subroutine handle_err(status, string)
    Prints an error message to standard output, then halts program execution with a bad status...
    Definition: utils.F90:107
    +
    real function spherical_angle(p1, p2, p3)
    ???
    +
    real function get_area(p1, p4, p2, p3, radius)
    ???
    +
    subroutine read_namelist
    Read the program namelist file.
    Definition: utils.F90:37
    +
    character(len=512) grid_file
    Path/name of the grid mosaic file.
    Definition: utils.F90:18
    +
    logical regional
    If true, process a stand-alone regional grid.
    Definition: utils.F90:23
    +
    integer grid_type
    Grid type.
    Definition: utils.F90:25
    +
    subroutine fill_cubic_grid_halo(data, data2, halo, ioff, joff, sign1, sign2)
    This routine fill the halo points for the cubic grid.
    +
    real stretch_fac
    Grid stretching factor.
    Definition: utils.F90:27
    +
    Module that contains general utility routines.
    Definition: utils.F90:8
    +
    subroutine read_grid_file(regional)
    ???
    +
    subroutine write_topo_file(is, ie, js, je, ntiles, q, regional)
    Replace the topo_field.
    +
    subroutine mid_pt_sphere(p1, p2, pm)
    ???
    +
    subroutine check(status)
    Check results of netCDF call.
    +
    subroutine compute_filter_constants
    Compute resolution-dependent values for the filtering.
    +
    program filter_topo
    This program does ???
    Definition: filter_topo.F90:10
    +
    subroutine two_delta_filter(is, ie, js, je, isd, ied, jsd, jed, npx, npy, ntiles, q, area, dx, dy, dxa, dya, dxc, dyc, sin_sg, cd, zero_ocean, check_slope, filter_type, grid_type, mask, nested, ntmax, regional)
    ???
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/folderclosed.png b/ver-1.11.0/grid_tools/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/functions.html b/ver-1.11.0/grid_tools/functions.html new file mode 100644 index 000000000..024cee9d8 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions.html @@ -0,0 +1,149 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - a -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_b.html b/ver-1.11.0/grid_tools/functions_b.html new file mode 100644 index 000000000..96efc9864 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_b.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - b -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_c.html b/ver-1.11.0/grid_tools/functions_c.html new file mode 100644 index 000000000..3dd926ddb --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_c.html @@ -0,0 +1,173 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - c -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_d.html b/ver-1.11.0/grid_tools/functions_d.html new file mode 100644 index 000000000..5cb3e37f0 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_d.html @@ -0,0 +1,278 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - d -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_dup.js b/ver-1.11.0/grid_tools/functions_dup.js new file mode 100644 index 000000000..7c42d6126 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_dup.js @@ -0,0 +1,25 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "w", "functions_w.html", null ], + [ "x", "functions_x.html", null ], + [ "z", "functions_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/functions_e.html b/ver-1.11.0/grid_tools/functions_e.html new file mode 100644 index 000000000..9e4c1e9cf --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_e.html @@ -0,0 +1,131 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - e -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_f.html b/ver-1.11.0/grid_tools/functions_f.html new file mode 100644 index 000000000..54ed034fd --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_f.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - f -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func.html b/ver-1.11.0/grid_tools/functions_func.html new file mode 100644 index 000000000..84c4ddbd9 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func.html @@ -0,0 +1,149 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func.js b/ver-1.11.0/grid_tools/functions_func.js new file mode 100644 index 000000000..6bcc2866b --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func.js @@ -0,0 +1,25 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "g", "functions_func_g.html", null ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "q", "functions_func_q.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "w", "functions_func_w.html", null ], + [ "x", "functions_func_x.html", null ], + [ "z", "functions_func_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/functions_func_b.html b/ver-1.11.0/grid_tools/functions_func_b.html new file mode 100644 index 000000000..32c776851 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_b.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - b -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_c.html b/ver-1.11.0/grid_tools/functions_func_c.html new file mode 100644 index 000000000..82280f1fd --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_c.html @@ -0,0 +1,173 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_d.html b/ver-1.11.0/grid_tools/functions_func_d.html new file mode 100644 index 000000000..b1ffae868 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_d.html @@ -0,0 +1,278 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_e.html b/ver-1.11.0/grid_tools/functions_func_e.html new file mode 100644 index 000000000..4d1cdd18d --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_e.html @@ -0,0 +1,131 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_f.html b/ver-1.11.0/grid_tools/functions_func_f.html new file mode 100644 index 000000000..c83531d5d --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_f.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - f -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_g.html b/ver-1.11.0/grid_tools/functions_func_g.html new file mode 100644 index 000000000..ad92755b1 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_g.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - g -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_h.html b/ver-1.11.0/grid_tools/functions_func_h.html new file mode 100644 index 000000000..64325e0c9 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_h.html @@ -0,0 +1,148 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - h -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_i.html b/ver-1.11.0/grid_tools/functions_func_i.html new file mode 100644 index 000000000..f62aca656 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_i.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_l.html b/ver-1.11.0/grid_tools/functions_func_l.html new file mode 100644 index 000000000..a65587d8b --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_l.html @@ -0,0 +1,128 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - l -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_m.html b/ver-1.11.0/grid_tools/functions_func_m.html new file mode 100644 index 000000000..9e60c316b --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_m.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_n.html b/ver-1.11.0/grid_tools/functions_func_n.html new file mode 100644 index 000000000..c2f239be5 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_n.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - n -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_o.html b/ver-1.11.0/grid_tools/functions_func_o.html new file mode 100644 index 000000000..441257576 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_o.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_p.html b/ver-1.11.0/grid_tools/functions_func_p.html new file mode 100644 index 000000000..e4fe6463e --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_p.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_q.html b/ver-1.11.0/grid_tools/functions_func_q.html new file mode 100644 index 000000000..40bdfa946 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_q.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - q -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_r.html b/ver-1.11.0/grid_tools/functions_func_r.html new file mode 100644 index 000000000..f684199e8 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_r.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_s.html b/ver-1.11.0/grid_tools/functions_func_s.html new file mode 100644 index 000000000..9dbc44d8c --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_s.html @@ -0,0 +1,251 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_t.html b/ver-1.11.0/grid_tools/functions_func_t.html new file mode 100644 index 000000000..030b7ac62 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_t.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - t -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_u.html b/ver-1.11.0/grid_tools/functions_func_u.html new file mode 100644 index 000000000..ee7387d3e --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_u.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_w.html b/ver-1.11.0/grid_tools/functions_func_w.html new file mode 100644 index 000000000..e6523def4 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_w.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_x.html b/ver-1.11.0/grid_tools/functions_func_x.html new file mode 100644 index 000000000..5b194fa5e --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_x.html @@ -0,0 +1,155 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - x -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_func_z.html b/ver-1.11.0/grid_tools/functions_func_z.html new file mode 100644 index 000000000..922016460 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_func_z.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Data Fields - Functions/Subroutines + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - z -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_g.html b/ver-1.11.0/grid_tools/functions_g.html new file mode 100644 index 000000000..f50152a9b --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_g.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - g -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_h.html b/ver-1.11.0/grid_tools/functions_h.html new file mode 100644 index 000000000..a5d7e4a5f --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_h.html @@ -0,0 +1,148 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - h -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_i.html b/ver-1.11.0/grid_tools/functions_i.html new file mode 100644 index 000000000..bfc2006b5 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_i.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - i -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_l.html b/ver-1.11.0/grid_tools/functions_l.html new file mode 100644 index 000000000..1d324f4e8 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_l.html @@ -0,0 +1,128 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - l -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_m.html b/ver-1.11.0/grid_tools/functions_m.html new file mode 100644 index 000000000..6aa8ee521 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_m.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - m -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_n.html b/ver-1.11.0/grid_tools/functions_n.html new file mode 100644 index 000000000..fc53d4b5a --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_n.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - n -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_o.html b/ver-1.11.0/grid_tools/functions_o.html new file mode 100644 index 000000000..302b5ffd9 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_o.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - o -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_p.html b/ver-1.11.0/grid_tools/functions_p.html new file mode 100644 index 000000000..d56fbe9c7 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_p.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - p -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_q.html b/ver-1.11.0/grid_tools/functions_q.html new file mode 100644 index 000000000..acbf2ddc4 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_q.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - q -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_r.html b/ver-1.11.0/grid_tools/functions_r.html new file mode 100644 index 000000000..9b75b5f96 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_r.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_s.html b/ver-1.11.0/grid_tools/functions_s.html new file mode 100644 index 000000000..d2471e894 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_s.html @@ -0,0 +1,251 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - s -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_t.html b/ver-1.11.0/grid_tools/functions_t.html new file mode 100644 index 000000000..773d46cf1 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_t.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - t -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_u.html b/ver-1.11.0/grid_tools/functions_u.html new file mode 100644 index 000000000..41e6c2aaa --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_u.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_w.html b/ver-1.11.0/grid_tools/functions_w.html new file mode 100644 index 000000000..8dc7e7563 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_w.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_x.html b/ver-1.11.0/grid_tools/functions_x.html new file mode 100644 index 000000000..fb9cc2332 --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_x.html @@ -0,0 +1,155 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - x -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/functions_z.html b/ver-1.11.0/grid_tools/functions_z.html new file mode 100644 index 000000000..1348999cc --- /dev/null +++ b/ver-1.11.0/grid_tools/functions_z.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    + +

    - z -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/global__equiv__resol_8f90.html b/ver-1.11.0/grid_tools/global__equiv__resol_8f90.html new file mode 100644 index 000000000..c111eedc1 --- /dev/null +++ b/ver-1.11.0/grid_tools/global__equiv__resol_8f90.html @@ -0,0 +1,189 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    global_equiv_resol.f90 File Reference
    +
    +
    + +

    Compute the global equivalent resolution for regional grids. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine check (status)
     Check results of netCDF call. More...
     
    program global_equiv_resol
     Compute the global equivalent resolution for regional grids using the average model grid cell size in meters squared. More...
     
    +

    Detailed Description

    +

    Compute the global equivalent resolution for regional grids.

    +
    Author
    Gerard Ketefian NOAA/GSL
    + +

    Definition in file global_equiv_resol.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ check()

    + +
    +
    + + + + + + + + +
    subroutine check (integer, intent(in) status)
    +
    + +

    Check results of netCDF call.

    +
    Parameters
    + + +
    [in]statusreturn code to check
    +
    +
    +
    Author
    Gerard Ketefian NOAA/GSL
    + +

    Definition at line 193 of file global_equiv_resol.f90.

    + +
    +
    + +

    ◆ global_equiv_resol()

    + +
    +
    + + + + + + + +
    program global_equiv_resol ()
    +
    + +

    Compute the global equivalent resolution for regional grids using the average model grid cell size in meters squared.

    +
      +
    • RES(in km) = (360 degrees / 4*CRES) * 111 km
    • +
    +

    Using the average cell size the equivalent global resolution is:

    +
      +
    • CRES = NINT((2*PI*RADIUS_OF_EARTH)/(4*AVG_CELL_SIZE)
    • +
    +
    Author
    Gerard Ketefian NOAA/GSL
    +
    Returns
    0 for success, error code otherwise
    + +

    Definition at line 16 of file global_equiv_resol.f90.

    + +

    References check().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/global__equiv__resol_8f90.js b/ver-1.11.0/grid_tools/global__equiv__resol_8f90.js new file mode 100644 index 000000000..6fd047853 --- /dev/null +++ b/ver-1.11.0/grid_tools/global__equiv__resol_8f90.js @@ -0,0 +1,5 @@ +var global__equiv__resol_8f90 = +[ + [ "check", "global__equiv__resol_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50", null ], + [ "global_equiv_resol", "global__equiv__resol_8f90.html#ac7c17106d99b979f5c9b65d79b0faa95", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/global__equiv__resol_8f90_source.html b/ver-1.11.0/grid_tools/global__equiv__resol_8f90_source.html new file mode 100644 index 000000000..254aa5bf4 --- /dev/null +++ b/ver-1.11.0/grid_tools/global__equiv__resol_8f90_source.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/global_equiv_resol.fd/global_equiv_resol.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    global_equiv_resol.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    17 
    18  use netcdf
    19 
    20  implicit none
    21 
    22  integer, parameter :: dp = kind(1.0d0)
    23  real(dp), parameter :: pi_geom = 4.0*atan(1.0), &
    24  radius_earth = 6371200.0
    25 
    26  character(len=256) :: grid_fn
    27  integer :: ncid, nxsg_dimid, nysg_dimid, dasg_varid, num_args
    28  integer :: nxsg, nysg, nx, ny, res_equiv
    29  real(dp) :: avg_cell_size, min_cell_size, max_cell_size
    30  real(dp), dimension(:,:), allocatable :: &
    31  quarter_da_ll, quarter_da_lr, quarter_da_ur, quarter_da_ul, &
    32  dasg, da, sqrt_da
    33 !
    34 !=======================================================================
    35 !
    36 ! Read in the name of the file from the command line. The command-line
    37 ! call to this program should have exactly one argument consisting of
    38 ! the path to the NetCDF grid specification file to be read in. If this
    39 ! is not the case, print out a usage message and exit.
    40 !
    41 !=======================================================================
    42 !
    43  num_args = command_argument_count()
    44  if (num_args == 1) then
    45  call get_command_argument(1, grid_fn)
    46  else
    47  WRITE(*,500)
    48  WRITE(*,500) "Exactly one argument must be specified to program global_equiv_resol."
    49  WRITE(*,500) "Usage:"
    50  WRITE(*,500)
    51  WRITE(*,500) " global_equiv_resol path_to_grid_file"
    52  WRITE(*,500)
    53  WRITE(*,500) "where path_to_grid_file is the path to the NetCDF grid file. Actual "
    54  WRITE(*,500) "number of specified command line arguments is:"
    55  WRITE(*,510) " num_args = ", num_args
    56  WRITE(*,500) "Stopping."
    57 500 FORMAT(a)
    58 510 FORMAT(a, i3)
    59  stop
    60  end if
    61 !
    62 !=======================================================================
    63 !
    64 ! Open the grid file and read in the dimensions of the supergrid. The
    65 ! supergrid is a grid that has twice the resolution of the actual/compu-
    66 ! tational grid. In the file, the names of the supergrid dimensions are
    67 ! nx and ny. Here, however, we reserve those names for the dimensions
    68 ! of the actual grid (since in the FV3 code and in other data files, nx
    69 ! and ny are used to denote the dimensions of the actual grid) and in-
    70 ! stead use the variables nxSG and nySG to denote the dimensions of the
    71 ! supergrid.
    72 !
    73 !=======================================================================
    74 !
    75  WRITE(*,500)
    76  WRITE(*,500) "Opening NetCDF grid file for reading/writing:"
    77  WRITE(*,500) " grid_fn = " // trim(grid_fn)
    78 
    79  call check( nf90_open(trim(grid_fn), nf90_write, ncid) )
    80 
    81  call check( nf90_inq_dimid(ncid, "nx", nxsg_dimid) )
    82  call check( nf90_inquire_dimension(ncid, nxsg_dimid, len=nxsg) )
    83 
    84  call check( nf90_inq_dimid(ncid, "ny", nysg_dimid) )
    85  call check( nf90_inquire_dimension(ncid, nysg_dimid, len=nysg) )
    86 
    87  WRITE(*,500)
    88  WRITE(*,500) "Dimensions of supergrid are:"
    89  WRITE(*,520) " nxSG = ", nxsg
    90  WRITE(*,520) " nySG = ", nysg
    91 520 FORMAT(a, i7)
    92 !
    93 !=======================================================================
    94 !
    95 ! Read in the cell areas on the supergrid. Then add the areas of the
    96 ! four supergrid cells that make up one grid cell to obtain the cell
    97 ! areas on the actual grid.
    98 !
    99 !=======================================================================
    100 !
    101  allocate(dasg(0:nxsg-1, 0:nysg-1))
    102  call check( nf90_inq_varid(ncid, "area", dasg_varid) )
    103  call check( nf90_get_var(ncid, dasg_varid, dasg) )
    104 
    105  nx = nxsg/2
    106  ny = nysg/2
    107 
    108  WRITE(*,500)
    109  WRITE(*,500) "Dimensions of (actual, i.e. computational) grid are:"
    110  WRITE(*,520) " nx = ", nx
    111  WRITE(*,520) " ny = ", ny
    112 
    113  allocate(quarter_da_ll(0:nx-1, 0:ny-1))
    114  allocate(quarter_da_lr(0:nx-1, 0:ny-1))
    115  allocate(quarter_da_ul(0:nx-1, 0:ny-1))
    116  allocate(quarter_da_ur(0:nx-1, 0:ny-1))
    117 
    118  quarter_da_ll = dasg(0:nxsg-1:2, 0:nysg-1:2)
    119  quarter_da_lr = dasg(0:nxsg-1:2, 1:nysg-1:2)
    120  quarter_da_ur = dasg(1:nxsg-1:2, 1:nysg-1:2)
    121  quarter_da_ul = dasg(1:nxsg-1:2, 0:nysg-1:2)
    122 
    123  allocate(da(0:nx-1, 0:ny-1))
    124  allocate(sqrt_da(0:nx-1, 0:ny-1))
    125 
    126  da = quarter_da_ll + quarter_da_lr + quarter_da_ur + quarter_da_ul
    127 !
    128 !=======================================================================
    129 !
    130 ! Calculate a typical/representative cell size for each cell by taking
    131 ! the square root of the area of the cell. Then calculate the minimum,
    132 ! maximum, and average cell sizes over the whole grid.
    133 !
    134 !=======================================================================
    135 !
    136  sqrt_da = sqrt(da)
    137  min_cell_size = minval(sqrt_da)
    138  max_cell_size = maxval(sqrt_da)
    139  avg_cell_size = sum(sqrt_da)/(nx*ny)
    140 
    141  WRITE(*,500)
    142  WRITE(*,500) "Minimum, maximum, and average cell sizes are (based on square"
    143  WRITE(*,500) "root of cell area):"
    144  WRITE(*,530) " min_cell_size = ", min_cell_size
    145  WRITE(*,530) " max_cell_size = ", max_cell_size
    146  WRITE(*,530) " avg_cell_size = ", avg_cell_size
    147 530 FORMAT(a, g11.4)
    148 !
    149 !=======================================================================
    150 !
    151 ! Use the average cell size to calculate an equivalent global uniform
    152 ! cubed-sphere resolution (in units of number of cells) for the regional
    153 ! grid. This is the RES that a global uniform (i.e. stretch factor of
    154 ! 1) cubed-sphere grid would need to have in order to have the same no-
    155 ! minal cell size as the average cell size of the regional grid.
    156 !
    157 !=======================================================================
    158 !
    159  res_equiv = nint( (2.0*pi_geom*radius_earth)/(4.0*avg_cell_size) )
    160 
    161  WRITE(*,500)
    162  WRITE(*,500) "Equivalent global uniform cubed-sphere resolution is:"
    163  WRITE(*,*) " RES_equiv = ", res_equiv
    164 !
    165 !=======================================================================
    166 !
    167 ! Write the average cell size and equivalent global resolution to the
    168 ! grid file as a global attributes.
    169 !
    170 !=======================================================================
    171 !
    172  WRITE(*,500)
    173  WRITE(*,500) "Writing avg_cell_size and RES_equiv to the grid specification"
    174  WRITE(*,500) "file as global attributes..."
    175 
    176  call check( nf90_redef(ncid) )
    177  call check( nf90_put_att(ncid, nf90_global, "avg_cell_size", avg_cell_size) )
    178  call check( nf90_put_att(ncid, nf90_global, "RES_equiv", res_equiv) )
    179  call check( nf90_enddef(ncid) )
    180 
    181  call check( nf90_close(ncid) )
    182 
    183  WRITE(*,500)
    184  WRITE(*,500) "Done."
    185 
    186 end program global_equiv_resol
    187 
    192 subroutine check(status)
    193  use netcdf
    194  integer,intent(in) :: status
    195 !
    196  if(status /= nf90_noerr) then
    197  write(0,*) ' check netcdf status = ', status
    198  write(0,'("error ", a)') trim(nf90_strerror(status))
    199  stop "Stopped"
    200  endif
    201 end subroutine check
    program global_equiv_resol
    Compute the global equivalent resolution for regional grids using the average model grid cell size in...
    +
    subroutine check(status)
    Check results of netCDF call.
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/globals.html b/ver-1.11.0/grid_tools/globals.html new file mode 100644 index 000000000..8a0272310 --- /dev/null +++ b/ver-1.11.0/grid_tools/globals.html @@ -0,0 +1,227 @@ + + + + + + + +grid_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - l -

    + + +

    - m -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/globals_func.html b/ver-1.11.0/grid_tools/globals_func.html new file mode 100644 index 000000000..812aeab42 --- /dev/null +++ b/ver-1.11.0/grid_tools/globals_func.html @@ -0,0 +1,227 @@ + + + + + + + +grid_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - l -

    + + +

    - m -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/grid__tools_8md_source.html b/ver-1.11.0/grid_tools/grid__tools_8md_source.html new file mode 100644 index 000000000..f1aff48c5 --- /dev/null +++ b/ver-1.11.0/grid_tools/grid__tools_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/docs/grid_tools.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/docs/grid_tools.md
    +
    +
    +
    1 
    2 # grid_tools
    3 
    4 # Introduction
    5 
    6 The grid_tools include:
    7 * filter_topo.F90 - filter topography
    8 * global_equiv_resol.f90 - compute the equivalent global resolution of
    9  a regional grid
    10 * regional_esg_grid.f90 - create regional extended Schmidt gnomonic
    11  grids
    12 * shave_nc.F90 - shave down domains of FV3 files
    13 
    14 This document is part of the <a href="../index.html">UFS_UTILS
    15 documentation</a>.
    16 
    17 The grid_tools programs are part of the
    18 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/index.html b/ver-1.11.0/grid_tools/index.html new file mode 100644 index 000000000..5d97d752c --- /dev/null +++ b/ver-1.11.0/grid_tools/index.html @@ -0,0 +1,114 @@ + + + + + + + +grid_tools: grid_tools + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    grid_tools
    +
    +
    +

    +Introduction

    +

    The grid_tools include:

    +

    This document is part of the UFS_UTILS documentation.

    +

    The grid_tools programs are part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.html b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.html new file mode 100644 index 000000000..faab9e3db --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.html @@ -0,0 +1,221 @@ + + + + + + + +grid_tools: pesg::bestesg_geo Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::bestesg_geo Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 42 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ bestesg_geo()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::bestesg_geo::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + +
    [in]lam
    [in]garcxmap-space half-spans
    [in]garcymap-space half-spans
    [out]aExtended Schmidt Gnomonic parameter
    [out]kExtended Schmidt Gnomonic parameter
    [out]marcx
    [out]marcy
    [out]q
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 903 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.js b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.js new file mode 100644 index 000000000..ef951dd27 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__geo.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1bestesg__geo = +[ + [ "bestesg_geo", "interfacepesg_1_1bestesg__geo.html#a2ab7bf5fe621ccf7e709fbd15af4dea9", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.html b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.html new file mode 100644 index 000000000..56a24f485 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.html @@ -0,0 +1,221 @@ + + + + + + + +grid_tools: pesg::bestesg_map Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::bestesg_map Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 43 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ bestesg_map()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::bestesg_map::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + +
    [in]lam
    [in]marcxmap-coordinate half-spans
    [in]marcymap-coordinate half-spans
    [out]aExtended Schmidt Gnomonic parameter
    [out]kExtended Schmidt Gnomonic parameter
    [out]garcxgeographical half-spans
    [out]garcygeographical half-spans
    [out]q
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1073 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.js b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.js new file mode 100644 index 000000000..8dfa67e0f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1bestesg__map.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1bestesg__map = +[ + [ "bestesg_map", "interfacepesg_1_1bestesg__map.html#aec609b83b6f4f05beaba28ce0b6144a7", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.html b/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.html new file mode 100644 index 000000000..3faba12f9 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.html @@ -0,0 +1,177 @@ + + + + + + + +grid_tools: pesg::gaulegh Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::gaulegh Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 58 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ gaulegh()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gaulegh::gaulegh (integer(spi), intent(in) m,
    real(dp), dimension(m), intent(out) x,
    real(dp), dimension(m), intent(out) w 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    mnumber of nodes in half-interval
    xnodes and weights
    wnodes and weights
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1852 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.js b/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.js new file mode 100644 index 000000000..b1f739986 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gaulegh.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1gaulegh = +[ + [ "gaulegh", "interfacepesg_1_1gaulegh.html#afe168e8a4b4e7d74529145284abe6f7d", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.html b/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.html new file mode 100644 index 000000000..4a94c602c --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.html @@ -0,0 +1,183 @@ + + + + + + + +grid_tools: pesg::get_edges Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::get_edges Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 36 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ get_edges()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_edges::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + +
    [in]arcxCenter-relative angle (degrees) of edge midpoint in +x
    [in]arcyCenter-relative angle (degrees) of edge midpoint in +y
    [out]edgexregion's +x edge midpoint as cartesian unit 3-vector
    [out]edgeyregion's +y edge midpoint as cartesian unit 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 489 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.js b/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.js new file mode 100644 index 000000000..dbffe872d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__edges.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1get__edges = +[ + [ "get_edges", "interfacepesg_1_1get__edges.html#a2567fee33d1896d51f62813f9cc9edb0", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.html b/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.html new file mode 100644 index 000000000..22a97aa71 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.html @@ -0,0 +1,349 @@ + + + + + + + +grid_tools: pesg::get_meanq Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::get_meanq Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 39 of file pesg.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ get_meanqd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_meanq::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]ngh
    [in]lamLambda
    [in]xg
    [in]wg
    [in]akparameter vector
    [in]mamap-space domain-parameter vector
    [out]qlambda-parameterized quality diagnostic
    [out]qdakderivatives value
    [out]qdmaderivatives value
    [out]gageographic domain-parameter vector
    [out]gadak
    [out]gadma
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 604 of file pesg.f90.

    + +
    +
    + +

    ◆ get_meanqs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_meanq::get_meanqs (integer(spi), intent(in) n,
    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,n), intent(in) aks,
    real(dp), dimension(2,n), intent(in) mas,
    real(dp), dimension(n), intent(out) qs,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like getmeanqd, except for n different values, aks, of ak and n different values, mas of ma, and without any of the derivatives.

    +
    Parameters
    + + + + + + + + + + +
    [in]n
    [in]ngh
    [in]lam
    [in]xg
    [in]wg
    [in]aks
    [in]mas
    [out]qs
    [out]ff
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 682 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.js b/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.js new file mode 100644 index 000000000..a2146cd93 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__meanq.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1get__meanq = +[ + [ "get_meanqd", "interfacepesg_1_1get__meanq.html#a13bada4885b90600bffe0e72c198487f", null ], + [ "get_meanqs", "interfacepesg_1_1get__meanq.html#afd5d2fefa922c7f25911d3ec85fdc2c9", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.html b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.html new file mode 100644 index 000000000..6f0c6aafd --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.html @@ -0,0 +1,379 @@ + + + + + + + +grid_tools: pesg::get_qofv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::get_qofv Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 38 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ get_qofv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qofv::get_qofv (real(dp), intent(in) lam,
    real(dp), intent(in) v1,
    real(dp), intent(in) v2,
    real(dp), intent(in) v3,
    real(dp), intent(in) v4,
    real(dp), intent(out) q 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + +
    [in]lam
    [in]v1quadratic diagnostics of EL
    [in]v2linear diagnostics of EL
    [in]v3linear diagnostics of EL
    [in]v4quadratic diagnostics of EL
    [out]qquadratic quantity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 729 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ get_qofvd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qofv::get_qofvd (real(dp), intent(in) lam,
    real(dp), intent(in) v2,
    real(dp), intent(in) v3,
    real(dp), dimension(2), intent(in) v1d,
    real(dp), dimension(2), intent(in) v2d,
    real(dp), dimension(2), intent(in) v3d,
    real(dp), dimension(2), intent(in) v4d,
    real(dp), dimension(2), intent(out) qd 
    )
    +
    +private
    +
    + +

    Like get_qofv, but for (only) the 2-vector derivatives of Q.

    +

    Note that the quadratic diagnostics v1 and v4 do not participate in this formula.

    +
    Parameters
    + + + + + + + + + +
    [in]lam
    [in]v2
    [in]v3
    [in]v1d
    [in]v2d
    [in]v3d
    [in]v4d
    [out]qd
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 751 of file pesg.f90.

    + +
    +
    + +

    ◆ get_qsofvs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qofv::get_qsofvs (integer(spi), intent(in) n,
    real(dp), intent(in) lam,
    real(dp), dimension(n), intent(in) v1s,
    real(dp), dimension(n), intent(in) v2s,
    real(dp), dimension(n), intent(in) v3s,
    real(dp), dimension(n), intent(in) v4s,
    real(dp), dimension(n), intent(out) qs 
    )
    +
    +private
    +
    + +

    General util to convert value.

    +
    Parameters
    + + + + + + + + +
    [in]n
    [in]lam
    [in]v1s
    [in]v2s
    [in]v3s
    [in]v4s
    [out]qs
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 771 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.js b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.js new file mode 100644 index 000000000..10e9a85d4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qofv.js @@ -0,0 +1,6 @@ +var interfacepesg_1_1get__qofv = +[ + [ "get_qofv", "interfacepesg_1_1get__qofv.html#aeb424866c84641a3c74a385b45c6a4e2", null ], + [ "get_qofvd", "interfacepesg_1_1get__qofv.html#a9c94c901c2a3489187295372cef8b978", null ], + [ "get_qsofvs", "interfacepesg_1_1get__qofv.html#a63a7edd08c8e3fd95e09a7fadb56db5a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.html b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.html new file mode 100644 index 000000000..297cf306a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.html @@ -0,0 +1,300 @@ + + + + + + + +grid_tools: pesg::get_qx Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::get_qx Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 37 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ get_qx()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qx::get_qx (real(dp), dimension(3,2), intent(in) j0,
    real(dp), intent(out) v1,
    real(dp), intent(out) v2,
    real(dp), intent(out) v3,
    real(dp), intent(out) v4 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]j0jacobian matrix
    [out]v1quadratic diagnostics of EL
    [out]v2linear diagnostics of EL
    [out]v3linear diagnostics of EL
    [out]v4quadratic diagnostics of EL
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 512 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ get_qxd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qx::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + +
    [in]j0jacobian matrix
    [in]j0dderivative of j0
    [in]v1
    [in]v2
    [in]v3
    [in]v4
    [in]v1d
    [in]v2d
    [in]v3d
    [in]v4d
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 542 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.js b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.js new file mode 100644 index 000000000..dfe0f235e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1get__qx.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1get__qx = +[ + [ "get_qx", "interfacepesg_1_1get__qx.html#a7d66f24a78ff7ed91dbdb54ac0b9ccf6", null ], + [ "get_qxd", "interfacepesg_1_1get__qx.html#a2f9061aa3a42063e28bb379bc4d4e13c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.html b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.html new file mode 100644 index 000000000..5aa3a6cf1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.html @@ -0,0 +1,332 @@ + + + + + + + +grid_tools: pesg::gtoxm_ak_dd Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::gtoxm_ak_dd Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 51 of file pesg.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gtoxm_ak_dd_g()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_dd::gtoxm_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), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like gtoxm_ak_rr_g, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]pdlatdegrees latitude defining mapping projection center
    [in]pdlondegrees longitude defining mapping projection center
    [in]pdaziAzimuth of mapping orientation at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]dlatdegrees latitude of a point to be mapped
    [in]dlondegrees longitude of a point to be mapped
    [out]xm2-vector image of the point in center-relative grid units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1984 of file pesg.f90.

    + +
    +
    + +

    ◆ gtoxm_ak_dd_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_dd::gtoxm_ak_dd_m (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) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like gtoxm_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]pdlatdegrees latitude defining mapping center
    [in]pdlondegrees longitude defining mapping center
    [in]pdaziAzimuth of mapping orientation at its center
    [in]dlatdegrees latitude of point to be mapped
    [in]dlondegrees longitude of point to be mapped
    [out]xm2-vector center-relative map space image of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1955 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.js b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.js new file mode 100644 index 000000000..bdd41837a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__dd.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1gtoxm__ak__dd = +[ + [ "gtoxm_ak_dd_g", "interfacepesg_1_1gtoxm__ak__dd.html#ac1071d57180a7703340a3ba0e9755d0b", null ], + [ "gtoxm_ak_dd_m", "interfacepesg_1_1gtoxm__ak__dd.html#af90c23ad50d9a59a6c7fd4fda9f78195", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.html b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.html new file mode 100644 index 000000000..0e87d7c13 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.html @@ -0,0 +1,334 @@ + + + + + + + +grid_tools: pesg::gtoxm_ak_rr Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::gtoxm_ak_rr Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 49 of file pesg.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gtoxm_ak_rr_g()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_rr::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 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]platradians latitude defining mapping projection center
    [in]plonradians longitude defining mapping projection center
    [in]paziAzimuth of mapping orientation at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]latradians latitude of a point to be mapped
    [in]lonradians longitude of a point to be mapped
    [out]xm2-vector map space image in center-relative grid units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1933 of file pesg.f90.

    + +
    +
    + +

    ◆ gtoxm_ak_rr_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_rr::gtoxm_ak_rr_m (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) lat,
    real(dp), intent(in) lon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]platradians latitude defining mapping projection center
    [in]plonradians longitude defining mapping projection center
    [in]paziAximuth of mapping orientation at its center
    [in]latradians latitude of a point to be mapped
    [in]lonradians longitude of a point to be mapped
    [out]xm2-vector center-relative map-space image of mapped point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1888 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.js b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.js new file mode 100644 index 000000000..c863b1d27 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1gtoxm__ak__rr.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1gtoxm__ak__rr = +[ + [ "gtoxm_ak_rr_g", "interfacepesg_1_1gtoxm__ak__rr.html#a6eaa19a4e531fdc6fccb2fe9b3154443", null ], + [ "gtoxm_ak_rr_m", "interfacepesg_1_1gtoxm__ak__rr.html#a11e3d13ce4dc1c0ca5afcc890d2b0da1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.html b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.html new file mode 100644 index 000000000..388abebe0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: pesg::guessak_geo Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::guessak_geo Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 41 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ guessak_geo()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::guessak_geo::guessak_geo (real(dp), intent(in) asp,
    real(dp), intent(in) arc,
    real(dp), dimension(2), intent(out) ak 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    aspaspect ratio of intended domain
    arcmajor semi-axis angle in degrees for intended domain
    akfirst guess of the parameter vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 809 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.js b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.js new file mode 100644 index 000000000..bd444b50d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__geo.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1guessak__geo = +[ + [ "guessak_geo", "interfacepesg_1_1guessak__geo.html#ab956aa430e69602167fd715e75f85d29", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.html b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.html new file mode 100644 index 000000000..ea03b19dd --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: pesg::guessak_map Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::guessak_map Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 40 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ guessak_map()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::guessak_map::guessak_map (real(dp), intent(in) asp,
    real(dp), intent(in) tmarcx,
    real(dp), dimension(2), intent(out) ak 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]aspaspect ratio
    [in]tmarcx
    [out]akfirst guess for the parameter vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 791 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.js b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.js new file mode 100644 index 000000000..1743d14d2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1guessak__map.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1guessak__map = +[ + [ "guessak_map", "interfacepesg_1_1guessak__map.html#a9e8b6c869d7c64a90e8d2482bf72c137", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.html b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.html new file mode 100644 index 000000000..1b47ac2f4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.html @@ -0,0 +1,447 @@ + + + + + + + +grid_tools: pesg::hgrid_ak Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::hgrid_ak Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 48 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hgrid_ak()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak::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 
    )
    +
    +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, in dimensional units upon return.

    +

    The gridded lats and lons, glat and glon, remain in radians.

    +
    Parameters
    + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of map orientation at its center
    [in]reearth radius
    [in]delxremap-space grid increments in the dimensional units
    [in]delyremap-space grid increments in the dimensional units
    [out]glatgrid points for latitude
    [out]glongrid points for longitude
    [out]gareaarray of grid-cell areas in dimensional units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1766 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ hgrid_ak_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak::hgrid_ak_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) 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,
    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) dangle_dx,
    real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) dangle_dy,
    logical, intent(out) ff 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumber of grid spaces in x
    [in]nynumber of grid spaces in y
    [in]aExtended Schmidt Gnomonic parameter
    [in]kExtended Schmidt Gnomonic parameter
    [in]platlatitude of projection center of the mapping (radians)
    [in]plonlongitude of projection center of the mapping (radians)
    [in]paziAzimuth of map orientation at its center (radians)
    [in]reearth radius in dimensional length units
    [in]delxremap-space grid increments in the dimensional units
    [in]delyremap-space grid increments in the dimensional units
    [out]glatgridded lats (radians)
    [out]glongridded lons (radians)
    [out]gareagrid cell areas in dimensional units
    [out]dxx- grid steps in dimensional units
    [out]dyy- grid steps in dimensional units
    [out]dangle_dxazimuth rotations of the steps dx (in degrees)
    [out]dangle_dyazimuth rotations of the steps dy (in degrees)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1818 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.js b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.js new file mode 100644 index 000000000..4d2b81313 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1hgrid__ak = +[ + [ "hgrid_ak", "interfacepesg_1_1hgrid__ak.html#a2c468c9be70c50df8666c7dec8969112", null ], + [ "hgrid_ak_c", "interfacepesg_1_1hgrid__ak.html#a3554220b0cd6349e118b780b1b430366", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.html b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.html new file mode 100644 index 000000000..b06e410c5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.html @@ -0,0 +1,261 @@ + + + + + + + +grid_tools: pesg::hgrid_ak_dc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::hgrid_ak_dc Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 47 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hgrid_ak_dc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_dc::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatdegrees latitude of the projection center of the mapping
    [in]pdlondegrees longitude of the projection center of the mapping
    [in]pdaziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [out]xcgrid points' earth-centered unit cartesians
    [out]xcdJacobian matrices, d(xc)/d(xm)
    [out]gareaarray of grid-cell areas (steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1724 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.js b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.js new file mode 100644 index 000000000..6d7e1bd99 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dc.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1hgrid__ak__dc = +[ + [ "hgrid_ak_dc", "interfacepesg_1_1hgrid__ak__dc.html#a1adcff5ff5e1af4ed869ca558273cbb4", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.html b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.html new file mode 100644 index 000000000..890c2ec3a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.html @@ -0,0 +1,432 @@ + + + + + + + +grid_tools: pesg::hgrid_ak_dd Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::hgrid_ak_dd Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 46 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hgrid_ak_dd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_dd::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumber of the grid spaces in x
    [in]nynumber of the grid spaces in y
    [in]aparameter of an ESG mapping
    [in]kparameter of an ESG mapping
    [in]pdlatdegrees latitude of the projection center of mapping
    [in]pdlondegrees longitude of the projection center of mapping
    [in]pdazidegrees azimuth of orientation of mapping at its center
    [in]delxcentral x-spacing of the grid (in radians)
    [in]delycentral y-spacing of the grid (in radians)
    [out]gdlatarray of grid point latitudes (in degrees)
    [out]gdlonarray of grid point longitudes (in dgrees)
    [out]gareaarray of grid cell areas (in steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1630 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ hgrid_ak_dd_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_dd::hgrid_ak_dd_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) 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,
    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) dangle_dx,
    real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) dangle_dy,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like hgrid_ak_rr_c, except all the angle arguments (but not delx,dely) are in degrees instead of radians.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatlatitude defining projection center of the mapping
    [in]pdlonlongitude defining projection center of the mapping
    [in]pdaziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid (in radians)
    [in]delycentral y-spacing of the grid (in radians)
    [out]gdlatarray of grid point degree-latitudes
    [out]gdlonarray of grid point degree-longitudes
    [out]gareaarray of grid-cell areas (steradians)
    [out]dxstep sizes of the grid-cell edges in x (earth radius=1 unit)
    [out]dystep sizes of the grid-cell edges in y (earth radius=1 unit)
    [out]dangle_dxazimuth rotation of the x grid steps, dx (degrees)
    [out]dangle_dyazimuth rotation of the y grid steps, dy (degrees)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1673 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.js b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.js new file mode 100644 index 000000000..3463596d0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__dd.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1hgrid__ak__dd = +[ + [ "hgrid_ak_dd", "interfacepesg_1_1hgrid__ak__dd.html#adf29825e0ec6d723f1b34d603d54ce55", null ], + [ "hgrid_ak_dd_c", "interfacepesg_1_1hgrid__ak__dd.html#a4c25db01cd4089ea7ddfb6e766200127", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.html b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.html new file mode 100644 index 000000000..e1f2f69d0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.html @@ -0,0 +1,262 @@ + + + + + + + +grid_tools: pesg::hgrid_ak_rc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::hgrid_ak_rc Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 45 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hgrid_ak_rc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_rc::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 
    )
    +
    +private
    +
    + +

    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. .

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    lxcenter-relative x grid index for left edge of the domain
    lycenter-relative y grid index for lower edge of the domain
    nxnumbers of the grid spaces in x
    nynumbers of the grid spaces in y
    aparameters of the ESG mapping centered at (plat,plon)
    kparameters of the ESG mapping centered at (plat,plon)
    platlatitude of the projection center of the mapping (radians)
    plonlongitude of the projection center of the mapping (radians)
    paziazimuth of orientation of mapping at its center
    delxcentral x-spacing of the grid (in radians)
    delycentral y-spacing of the grid (in radians)
    xcEarth-centered unit cartesian 3-vectors at each grid point
    xcdJacobian matrices, d(xc)/d(xm), at each grid point
    garearectangular array of grid-cell areas (steradians)
    fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1541 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.js b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.js new file mode 100644 index 000000000..0269b2dd6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rc.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1hgrid__ak__rc = +[ + [ "hgrid_ak_rc", "interfacepesg_1_1hgrid__ak__rc.html#a4c195203e881120327dab22b1ab5a288", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.html b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.html new file mode 100644 index 000000000..036a2e85b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.html @@ -0,0 +1,436 @@ + + + + + + + +grid_tools: pesg::hgrid_ak_rr Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::hgrid_ak_rr Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 44 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hgrid_ak_rr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_rr::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 
    )
    +
    +private
    +
    + +

    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. .

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative grid index in x of left edge of the domain
    [in]lycenter-relative grid index in y of lower edge of the domain
    [in]nxnumber of grid spaces in x
    [in]nynumber of grid spaces in y
    [in]Aparameter of the ESG mapping centered at (plat,plon)
    [in]Kparameter of the ESG mapping centered at (plat,plon)
    [in]platlatitude of projection center of mapping (radians)
    [in]plonlongitude of projection center of mapping (radians)
    [in]paziazimuth of orientation of mapping at its center
    [in]delxcentral x-spacing of the grid (radians)
    [in]delycentral y-spacing of the grid (radians)
    [out]glatgrid points' latitudes
    [out]glongrid points' longitudes
    [out]gareaarray of grid-cell areas (steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1221 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ hgrid_ak_rr_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_rr::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aExtended Schmidt Gnomonic parameter
    [in]kExtended Schmidt Gnomonic parameter
    [in]platlatitude of the projection center of the mapping (radians)
    [in]plonlongitude of the projection center of the mapping (radians)
    [in]paziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid (radians)
    [in]delycentral y-spacing of the grid (radians)
    [out]glatgrid points' latitudes (radians)
    [out]glongrid points' longitudes (radians)
    [out]gareaarray of grid-cell areas (steradians)
    [out]dxgrid steps in x at grid cell edges (radians)
    [out]dygrid steps in y at grid cell edges (radians)
    [out]angle_dxx angles relative to local east (radians)
    [out]angle_dyy angles relative to local north (radians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1338 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.js b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.js new file mode 100644 index 000000000..cb9935404 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1hgrid__ak__rr.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1hgrid__ak__rr = +[ + [ "hgrid_ak_rr", "interfacepesg_1_1hgrid__ak__rr.html#a05ca3c2a8715f34ff41cab3f46c0d58f", null ], + [ "hgrid_ak_rr_c", "interfacepesg_1_1hgrid__ak__rr.html#a61f700277c49083334f4defac4f44b93", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.html new file mode 100644 index 000000000..15eefc319 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pesg::xctoxm_ak Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xctoxm_ak Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine xctoxm_ak (a, k, xc, xm, ff)
     Inverse mapping of xmtoxc_ak. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 33 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xctoxm_ak()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xctoxm_ak::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 
    )
    +
    +private
    +
    + +

    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).

    +
    Parameters
    + + + + + + +
    [in]aESG mapping parameter for line spacing profile
    [in]kESG mapping parameter for Gauss curvature in Schmidt mapping
    [in]xcEarth-centered cartesian unit 3-vector
    [out]xm2-vector map coordinate
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 466 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.js new file mode 100644 index 000000000..1779641e4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxm__ak.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1xctoxm__ak = +[ + [ "xctoxm_ak", "interfacepesg_1_1xctoxm__ak.html#af5e56d69fb6122348ea935542e358d0b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.html new file mode 100644 index 000000000..2b927bb38 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.html @@ -0,0 +1,170 @@ + + + + + + + +grid_tools: pesg::xctoxs Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xctoxs Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine xctoxs (xc, xs)
     Inverse of xstoxc. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 25 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xctoxs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xctoxs::xctoxs (real(dp), dimension(3), intent(in) xc,
    real(dp), dimension(2), intent(out) xs 
    )
    +
    +private
    +
    + +

    Inverse of xstoxc.

    +

    I.e., cartesians to stereographic.

    +
    Parameters
    + + + +
    [in]xcEarth-centered cartesian unit 3-vector
    [out]xsStereographic map coordinates
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 68 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.js new file mode 100644 index 000000000..efcb93397 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xctoxs.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1xctoxs = +[ + [ "xctoxs", "interfacepesg_1_1xctoxs.html#a78f98f4fe9558ca1991c028280b31891", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.html new file mode 100644 index 000000000..c9a573be2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.html @@ -0,0 +1,332 @@ + + + + + + + +grid_tools: pesg::xmtog_ak_dd Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xmtog_ak_dd Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 55 of file pesg.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ xmtog_ak_dd_g()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_dd::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 
    )
    +
    +private
    +
    + +

    Like xmtog_ak_rr_g, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatdegrees latitude of projection center of the mapping
    [in]pdlondegrees longitude of projection center of the mapping
    [in]pdaziAzimuth of the mapping orientation about its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]xmmap coordinates, in grid units, of a point to be mapped
    [out]dlatdegrees latitude of the point
    [out]dlondegrees longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2118 of file pesg.f90.

    + +
    +
    + +

    ◆ xmtog_ak_dd_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_dd::xmtog_ak_dd_m (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), dimension(2), intent(in) xm,
    real(dp), intent(out) dlat,
    real(dp), intent(out) dlon,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like xmtog_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameters of the ESG mapping
    [in]kparameters of the ESG mapping
    [in]pdlatdegrees latitude of the projection center of the mapping
    [in]pdlondegrees longitude of the projection center of the mapping
    [in]pdaziAzimuth of the orientation of the mapping at its center
    [in]xmmap space 2-vector coordinates of a point
    [out]dlatdegrees latitude of the point
    [out]dlondegrees longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2087 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.js new file mode 100644 index 000000000..4403577f7 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__dd.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1xmtog__ak__dd = +[ + [ "xmtog_ak_dd_g", "interfacepesg_1_1xmtog__ak__dd.html#a2254f5d16f294c915a0fd39e2430d777", null ], + [ "xmtog_ak_dd_m", "interfacepesg_1_1xmtog__ak__dd.html#a0685fb23b5b0b364ee793c57998a43a1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.html new file mode 100644 index 000000000..54c2bbc86 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.html @@ -0,0 +1,334 @@ + + + + + + + +grid_tools: pesg::xmtog_ak_rr Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xmtog_ak_rr Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 53 of file pesg.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ xmtog_ak_rr_g()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_rr::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameters of the ESG mapping
    [in]kparameters of the ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing grid point in radians
    [in]xmgrid-space 2-vector coordinates of a point to be mapped
    [out]latradians latitude of the point
    [out]lonradians longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2063 of file pesg.f90.

    + +
    +
    + +

    ◆ xmtog_ak_rr_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_rr::xmtog_ak_rr_m (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), dimension(2), intent(in) xm,
    real(dp), intent(out) lat,
    real(dp), intent(out) lon,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameter of an ESG mapping
    [in]kparameter of an ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of orientation of the mapping at its center
    [in]xmcenter-relative 2-vector map space coordinates of a point
    [out]latradians latitude of the point
    [out]lonradians longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2015 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.js new file mode 100644 index 000000000..42b444c34 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtog__ak__rr.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1xmtog__ak__rr = +[ + [ "xmtog_ak_rr_g", "interfacepesg_1_1xmtog__ak__rr.html#a436175556f7f34e2e0a2803ccb1df66d", null ], + [ "xmtog_ak_rr_m", "interfacepesg_1_1xmtog__ak__rr.html#a1bf3a9ea52eab26a3aefafb34f6e8899", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.html new file mode 100644 index 000000000..33f6d6979 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.html @@ -0,0 +1,357 @@ + + + + + + + +grid_tools: pesg::xmtoxc_ak Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xmtoxc_ak Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 34 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xmtoxc_ak()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxc_ak::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + +
    [in]aESG mapping parameter for line spacing profile
    [in]kESG mapping parameter for Gauss curvature in Schmidt mapping
    [in]xmmap-space 2-vector
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian matrix, d(xc)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 440 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ xmtoxc_vak()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxc_ak::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 
    )
    +
    +private
    +
    + +

    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.

    Parameters
    + + + + + + +
    [in]ak2-vector parameterization of the ESG mapping
    [in]xm2-vector of map plane coordinates
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian, d(xc)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 381 of file pesg.f90.

    + +
    +
    + +

    ◆ xmtoxc_vak1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxc_ak::xmtoxc_vak1 (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,
    real(dp), dimension(3,2), intent(out) xc1,
    real(dp), dimension(3,2,2), intent(out) xcd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like xmtoxc_vak, _ak, but also return derivatives wrt ak.

    +
    Parameters
    + + + + + + + + +
    [in]ak2-vector parameterization of the ESG mapping
    [in]xm2-vector of map plane coordinates
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian of xc wrt xm, d(xc)/d(xm)
    [out]xc1Partial derivatives wrt ak of xc, d(xc)/d(ak)
    [out]xcd1Second derivative wrt xm and ak of xc, d^2(xc)/(d(xm)d(ak))
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 400 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.js new file mode 100644 index 000000000..555e29b95 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxc__ak.js @@ -0,0 +1,6 @@ +var interfacepesg_1_1xmtoxc__ak = +[ + [ "xmtoxc_ak", "interfacepesg_1_1xmtoxc__ak.html#adbeb4657ddfbd8fc23adef0e0fe2d8d9", null ], + [ "xmtoxc_vak", "interfacepesg_1_1xmtoxc__ak.html#a26cd804e7890507c4a18be58c8487658", null ], + [ "xmtoxc_vak1", "interfacepesg_1_1xmtoxc__ak.html#ac6e70d6aff9245b40ff151c7b0304123", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.html new file mode 100644 index 000000000..cbc7ea076 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.html @@ -0,0 +1,277 @@ + + + + + + + +grid_tools: pesg::xmtoxt Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xmtoxt Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 31 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xmtoxt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxt::xmtoxt (real(dp), intent(in) a,
    real(dp), dimension(2), intent(in) xm,
    real(dp), dimension(2), intent(out) xt,
    real(dp), dimension(2,2), intent(out) xtd,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd.

    +
    Parameters
    + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]xmVector value of map coordinates
    [out]xtVector value of gnomonic plane coordinates
    [out]xtd2*2 diagonal Jacobian, d(xt)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 254 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ xmtoxt1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxt::xmtoxt1 (real(dp), intent(in) a,
    real(dp), dimension(2), intent(in) xm,
    real(dp), dimension(2), intent(out) xt,
    real(dp), dimension(2,2), intent(out) xtd,
    real(dp), dimension(2), intent(out) xt1,
    real(dp), dimension(2,2), intent(out) xtd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt1, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd Also, the derivatives, wrt a, of these quantities.

    +
    Parameters
    + + + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]xmVector value of map plane coordinates
    [out]xtVector value of gnomonic plane coordinates
    [out]xtd2*2 diagonal Jacobian, d(xt)/d(xm)
    [out]xt1Derivative wrt a of xt, d(xt)/da
    [out]xtd1Derivative wrt a of Jacobian xtd, d^2(xt)/(d(xm)da)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 276 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.js new file mode 100644 index 000000000..c23db9b7e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xmtoxt.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1xmtoxt = +[ + [ "xmtoxt", "interfacepesg_1_1xmtoxt.html#a7433dcb5be1326e2881e179af74fe774", null ], + [ "xmtoxt1", "interfacepesg_1_1xmtoxt.html#aedcdd965e69afef31aedaeee1e2055f3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.html new file mode 100644 index 000000000..b4f756ed7 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.html @@ -0,0 +1,244 @@ + + + + + + + +grid_tools: pesg::xstoxc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xstoxc Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 26 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xstoxc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xstoxc::xstoxc (real(dp), dimension(2), intent(in) xs,
    real(dp), dimension(3), intent(out) xc,
    real(dp), dimension(3,2), intent(out) xcd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]xsStereographic map coordinates
    [out]xcCartesian earth-centered 3-vector
    [out]xcdValue of jacobian matrix, encoding distortion and metric
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 85 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ xstoxc1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xstoxc::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 
    )
    +
    +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. xcdd is the further derivative, wrt xs, of xcd.

    +
    Parameters
    + + + + + +
    [in]xsStereographic map coordinates
    [out]xcCartesian earth-centered 3-vector
    [out]xcdJacobian matrix, encoding distortion and metric
    [out]xcddFurther derivative, wrt xs, of xcd
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 107 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.js new file mode 100644 index 000000000..373b5f715 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxc.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1xstoxc = +[ + [ "xstoxc", "interfacepesg_1_1xstoxc.html#a696efa5221df9904b594a6dff690d37f", null ], + [ "xstoxc1", "interfacepesg_1_1xstoxc.html#a3ed442df5562780bc67ed9f713589331", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.html new file mode 100644 index 000000000..5326ebb7d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.html @@ -0,0 +1,183 @@ + + + + + + + +grid_tools: pesg::xstoxt Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xstoxt Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine xstoxt (k, xs, xt, ff)
     Inverse of xttoxs. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 27 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xstoxt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xstoxt::xstoxt (real(dp), intent(in) k,
    real(dp), dimension(2), intent(in) xs,
    real(dp), dimension(2), intent(out) xt,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Inverse of xttoxs.

    +
    Parameters
    + + + + + +
    [in]kGaussian curvature parameter of Schmidt mapping
    [in]xsStereographic plane coordinates
    [out]xtScaled gnomonic plane coordinates
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 139 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.js new file mode 100644 index 000000000..1ee33af99 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xstoxt.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1xstoxt = +[ + [ "xstoxt", "interfacepesg_1_1xstoxt.html#a8ec61b7e39738a5551d52ad047deaf70", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.html new file mode 100644 index 000000000..96566e80a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.html @@ -0,0 +1,185 @@ + + + + + + + +grid_tools: pesg::xttoxm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xttoxm Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine xttoxm (a, xt, xm, ff)
     Inverse of xmtoxt. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 29 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xttoxm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xttoxm::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
    +
    + +

    Inverse of xmtoxt.

    +
    Parameters
    + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    +
    [in]xtGnomonic plane coordinates
    +
    [out]xmMap coordinates
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 235 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.js new file mode 100644 index 000000000..03cc240c5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxm.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1xttoxm = +[ + [ "xttoxm", "interfacepesg_1_1xttoxm.html#a57bcd6b7890fd9886bcc782e950341f2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.html b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.html new file mode 100644 index 000000000..eb77bff17 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.html @@ -0,0 +1,284 @@ + + + + + + + +grid_tools: pesg::xttoxs Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::xttoxs Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 28 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ xttoxs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xttoxs::xttoxs (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,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Scaled gnomonic plane xt to standard stereographic plane xs.

    +
    Parameters
    + + + + + + +
    [in]kGaussian curvature parameter of Schmidt mapping
    [in]xtScaled gnomonic plane
    [out]xsStandard stereographic plane
    [out]xsdJacobian matrix, d(xs)/d(xt).
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 159 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ xttoxs1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xttoxs::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 
    )
    +
    +private
    +
    + +

    Like xttoxs, but also, return the derivatives, wrt K, of xs and xsd.

    +
    Parameters
    + + + + + + + + + +
    [in]kGaussian curvature parameter of the Schmidt mapping
    [in]xtScaled gnomonic plane
    [out]xsStandard stereographic plane
    [out]xsdJacobian matrix, d(xs)/d(xt)
    [out]xsddSecond partial derivatives, d^2(xs)/(d(xt)d(xt))
    [out]xs1Derivative of xs wrt mapping parameter, d(xs)/dk
    [out]xsd1Derivative of Jacobian wrt k: d^2(xs)/(d(xt)dk)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 193 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.js b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.js new file mode 100644 index 000000000..6f84b944e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1xttoxs.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1xttoxs = +[ + [ "xttoxs", "interfacepesg_1_1xttoxs.html#a24374fb1c1d555b1bd15ff563ea49ca1", null ], + [ "xttoxs1", "interfacepesg_1_1xttoxs.html#a09bc292e06041cf476b307f5e637311a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.html b/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.html new file mode 100644 index 000000000..34a3473c4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.html @@ -0,0 +1,277 @@ + + + + + + + +grid_tools: pesg::zmtozt Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::zmtozt Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 32 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ zmtozt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zmtozt::zmtozt (real(dp), intent(in) a,
    real(dp), intent(in) zm,
    real(dp), intent(out) zt,
    real(dp), intent(out) ztd,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]zmScalar value of single map plane coordinate
    [out]ztScalar value of single gnomonic plane coordinate
    [out]ztdDerivative of gnomonic coordinate, d(zt)/d(zm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 323 of file pesg.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ zmtozt1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zmtozt::zmtozt1 (real(dp), intent(in) a,
    real(dp), intent(in) zm,
    real(dp), intent(out) zt,
    real(dp), intent(out) ztd,
    real(dp), intent(out) zt1,
    real(dp), intent(out) ztd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt, but also, get the derivative with respect to a, zt1 of zt, and ztd1 of ztd.

    +
    Parameters
    + + + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]zmSingle map plane coordinate
    [in]ztSingle gnomonic plane coordinate
    [in]ztdDerivative wrt zm of zt, d(zt)/d(zm)
    [in]zt1Derivative wrt a of zt, d(zt)/da
    [in]ztd1Derivative wrt a of ztd, d^2(zt)/(d(zm)da)
    [in]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 348 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.js b/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.js new file mode 100644 index 000000000..23348f287 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1zmtozt.js @@ -0,0 +1,5 @@ +var interfacepesg_1_1zmtozt = +[ + [ "zmtozt", "interfacepesg_1_1zmtozt.html#afa1ce1f98f16e3bb96c90e2903a27e0f", null ], + [ "zmtozt1", "interfacepesg_1_1zmtozt.html#a832844d072bb50cf0fa1e211f9571f1b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.html b/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.html new file mode 100644 index 000000000..ac5e141e6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.html @@ -0,0 +1,183 @@ + + + + + + + +grid_tools: pesg::zttozm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg::zttozm Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine zttozm (a, zt, zm, ff)
     Inverse of zmtozt. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 30 of file pesg.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ zttozm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zttozm::zttozm (real(dp), intent(in) a,
    real(dp), intent(in) zt,
    real(dp), intent(out) zm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Inverse of zmtozt.

    +
    Parameters
    + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]ztScalar value of single gnomonic plane coordinate
    [out]zmScalar value of single map plane coordinate
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 299 of file pesg.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.js b/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.js new file mode 100644 index 000000000..bf7906693 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepesg_1_1zttozm.js @@ -0,0 +1,4 @@ +var interfacepesg_1_1zttozm = +[ + [ "zttozm", "interfacepesg_1_1zttozm.html#a3c74fb087d1b650aabea418716fe8f8f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.html b/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.html new file mode 100644 index 000000000..336a96e8e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::ahav Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::ahav Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 23 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ ahav_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::ahav::ahav_d (real(dp), intent(in) a)
    +
    +private
    +
    + +

    Arc-haversine function for double precision real.

    +
    Parameters
    + + +
    [in]adouble precision real argument
    +
    +
    +
    Returns
    t arc-haversine function of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 157 of file pfun.f90.

    + +
    +
    + +

    ◆ ahav_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::ahav::ahav_s (real(sp), intent(in) a)
    +
    +private
    +
    + +

    Arc-haversine function for single precision real.

    +
    Parameters
    + + +
    [in]asingle precision real argument
    +
    +
    +
    Returns
    t arc-haversine function of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 144 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.js b/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.js new file mode 100644 index 000000000..1b35504ed --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1ahav.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1ahav = +[ + [ "ahav_d", "interfacepfun_1_1ahav.html#acf8305d2f736dd6391036ac3ab10c8f5", null ], + [ "ahav_s", "interfacepfun_1_1ahav.html#addfbc0f51d05a1dc198cac875e42cc64", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.html b/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.html new file mode 100644 index 000000000..1c2623b5c --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.html @@ -0,0 +1,201 @@ + + + + + + + +grid_tools: pfun::ahavh Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::ahavh Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 24 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ ahavh_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::ahavh::ahavh_d (real(dp), intent(in) a)
    +
    +private
    +
    + +

    Hyperbolic arc-haversine for double precision real.

    +
    Parameters
    + + +
    [in]adouble precision real argument
    +
    +
    +
    Returns
    t hyperbolic arc-haversine of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 185 of file pfun.f90.

    + +
    +
    + +

    ◆ ahavh_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::ahavh::ahavh_s (real(sp), intent(in) a)
    +
    +private
    +
    + +

    Hyperbolic arc-haversine for single precision real.

    +
    Note
    The minus sign in the hyperbolic arc-haversine definition.
    +
    Parameters
    + + +
    [in]asingle precision real argument
    +
    +
    +
    Returns
    t hyperbolic arc-haversine of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 172 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.js b/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.js new file mode 100644 index 000000000..c6c7cecd6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1ahavh.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1ahavh = +[ + [ "ahavh_d", "interfacepfun_1_1ahavh.html#ac5fabed789f0296b561e319c2beb2287", null ], + [ "ahavh_s", "interfacepfun_1_1ahavh.html#a284548e7ddf6c883e3be29f4d717a9c9", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.html b/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.html new file mode 100644 index 000000000..56c8ee8b2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.html @@ -0,0 +1,201 @@ + + + + + + + +grid_tools: pfun::atanh Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::atanh Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 25 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ atanh_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::atanh::atanh_d (real(dp), intent(in) t)
    +
    +private
    +
    + +

    Hyperbolic arc-tangent for double precision real.

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a hyperbolic arc-tangent of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 216 of file pfun.f90.

    + +
    +
    + +

    ◆ atanh_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::atanh::atanh_s (real(sp), intent(in) t)
    +
    +private
    +
    + +

    Hyperbolic arc-tangent for single precision real.

    +

    (compilers now have this)

    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a hyperbolic arc-tangent of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 198 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.js b/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.js new file mode 100644 index 000000000..eb3e10d0f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1atanh.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1atanh = +[ + [ "atanh_d", "interfacepfun_1_1atanh.html#a69517925b9443ce8bfa7d549c6f43984", null ], + [ "atanh_s", "interfacepfun_1_1atanh.html#a42a7065ef14bd86c138feb75dcf3f0ca", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1gd.html b/ver-1.11.0/grid_tools/interfacepfun_1_1gd.html new file mode 100644 index 000000000..e2ccab101 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1gd.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::gd Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::gd Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 19 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gd_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::gd::gd_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Gudermannian function (related to Mercator map projections)

    +
    Parameters
    + + +
    [in]xdouble precision real argument of function
    +
    +
    +
    Returns
    y Gudermannian function of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 54 of file pfun.f90.

    + +
    +
    + +

    ◆ gd_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::gd::gd_s (real(sp), intent(in) x)
    +
    +private
    +
    + +

    Gudermannian function (related to Mercator map projections)

    +
    Parameters
    + + +
    [in]xsingle precision real argument of function
    +
    +
    +
    Returns
    y Gudermannian function of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 41 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1gd.js b/ver-1.11.0/grid_tools/interfacepfun_1_1gd.js new file mode 100644 index 000000000..82fa3a493 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1gd.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1gd = +[ + [ "gd_d", "interfacepfun_1_1gd.html#a50c7186779f3277d102b48b4db383d82", null ], + [ "gd_s", "interfacepfun_1_1gd.html#a66b921b3cfabbce309388eeb55329f08", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.html b/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.html new file mode 100644 index 000000000..b68c5b3ae --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::gdi Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::gdi Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 20 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gdi_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::gdi::gdi_d (real(dp), intent(in) y)
    +
    +private
    +
    + +

    Inverse Gudermannian function for double precision real.

    +
    Parameters
    + + +
    [in]ydouble precision real argument
    +
    +
    +
    Returns
    x inverse Gudermannian function of y
    +
    Author
    R. J. Purser
    + +

    Definition at line 78 of file pfun.f90.

    + +
    +
    + +

    ◆ gdi_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::gdi::gdi_s (real(sp), intent(in) y)
    +
    +private
    +
    + +

    Inverse Gudermannian function for single precision real.

    +
    Parameters
    + + +
    [in]ysingle precision real argument
    +
    +
    +
    Returns
    x inverse Gudermannian function of y
    +
    Author
    R. J. Purser
    + +

    Definition at line 66 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.js b/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.js new file mode 100644 index 000000000..9ce322979 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1gdi.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1gdi = +[ + [ "gdi_d", "interfacepfun_1_1gdi.html#a1670d15b2ef8d89eb4f803eda27fef9d", null ], + [ "gdi_s", "interfacepfun_1_1gdi.html#ad8f5d75ea5c9582a611896c9c8e2612b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1hav.html b/ver-1.11.0/grid_tools/interfacepfun_1_1hav.html new file mode 100644 index 000000000..6960a75fa --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1hav.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::hav Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::hav Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 21 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ hav_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::hav::hav_d (real(dp), intent(in) t)
    +
    +private
    +
    + +

    Haversine function for double precision real (for geometry on the sphere).

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 103 of file pfun.f90.

    + +
    +
    + +

    ◆ hav_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::hav::hav_s (real(sp), intent(in) t)
    +
    +private
    +
    + +

    Haversine function for single precision real (for geometry on the sphere).

    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 90 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1hav.js b/ver-1.11.0/grid_tools/interfacepfun_1_1hav.js new file mode 100644 index 000000000..dd40c99f2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1hav.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1hav = +[ + [ "hav_d", "interfacepfun_1_1hav.html#aaf9f06e8e5b6f13a13223303db85e839", null ], + [ "hav_s", "interfacepfun_1_1hav.html#a464148193f6ee1520f1afa7be42ab7c2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1havh.html b/ver-1.11.0/grid_tools/interfacepfun_1_1havh.html new file mode 100644 index 000000000..5504e32cd --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1havh.html @@ -0,0 +1,201 @@ + + + + + + + +grid_tools: pfun::havh Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::havh Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 22 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ havh_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::havh::havh_d (real(dp), intent(in) t)
    +
    +private
    +
    + +

    Hyperbolic-haversine for double precision real (for pseudosphere geometry).

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a hyperbolic-haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 131 of file pfun.f90.

    + +
    +
    + +

    ◆ havh_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::havh::havh_s (real(sp), intent(in) t)
    +
    +private
    +
    + +

    Hyperbolic-haversine for single precision real (for pseudosphere geometry).

    +
    Note
    The minus sign in the hyperbolic-haversine definition.
    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a hyperbolic-haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 118 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1havh.js b/ver-1.11.0/grid_tools/interfacepfun_1_1havh.js new file mode 100644 index 000000000..50f490bd3 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1havh.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1havh = +[ + [ "havh_d", "interfacepfun_1_1havh.html#a8b5f748c23a72f0c0c8b29cbcffdf04e", null ], + [ "havh_s", "interfacepfun_1_1havh.html#a976cd89ada48113173bc41db19e3e31d", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sech.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sech.html new file mode 100644 index 000000000..17564f350 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sech.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::sech Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sech Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 26 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sech_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sech::sech_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Hyperbolic secant for double precision real.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r hyperbolic secant of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 251 of file pfun.f90.

    + +
    +
    + +

    ◆ sech_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::sech::sech_s (real(sp), intent(in) x)
    +
    +private
    +
    + +

    Hyperbolic secant for single precision real.

    +
    Parameters
    + + +
    [in]xsingle precision real argument
    +
    +
    +
    Returns
    r hyperbolic secant of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 234 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sech.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sech.js new file mode 100644 index 000000000..2ace7932d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sech.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1sech = +[ + [ "sech_d", "interfacepfun_1_1sech.html#aef9ac9a07c282fd90345f3905353659b", null ], + [ "sech_s", "interfacepfun_1_1sech.html#a106d127499d43f402ea6589cef825d45", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.html new file mode 100644 index 000000000..6dfbe4465 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pfun::sechs Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sechs Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 27 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sechs_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sechs::sechs_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Hyperbolic secant-squared function (logistic distribution).

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sech-squared of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 279 of file pfun.f90.

    + +
    +
    + +

    ◆ sechs_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::sechs::sechs_s (real(sp), intent(in) x)
    +
    +private
    +
    + +

    Hyperbolic secant-squared function (logistic distribution).

    +
    Parameters
    + + +
    [in]xsingle precision real argument
    +
    +
    +
    Returns
    r sech-squared of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 267 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.js new file mode 100644 index 000000000..60a7b8943 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sechs.js @@ -0,0 +1,5 @@ +var interfacepfun_1_1sechs = +[ + [ "sechs_d", "interfacepfun_1_1sechs.html#a4f02efd305e6a2ceaac3414b4e233a98", null ], + [ "sechs_s", "interfacepfun_1_1sechs.html#a1323f4c401c15a81b02d42d3cc17a566", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.html new file mode 100644 index 000000000..6ecde3fa6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.html @@ -0,0 +1,159 @@ + + + + + + + +grid_tools: pfun::sinhox Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sinhox Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    real(dp) function sinhox_d (x)
     Evaluate the symmetric real function sinh(x)/x. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 31 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sinhox_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sinhox::sinhox_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Evaluate the symmetric real function sinh(x)/x.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sinh(x)/x
    +
    Author
    R. J. Purser
    + +

    Definition at line 345 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.js new file mode 100644 index 000000000..b618081fc --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhox.js @@ -0,0 +1,4 @@ +var interfacepfun_1_1sinhox = +[ + [ "sinhox_d", "interfacepfun_1_1sinhox.html#af3c51392433a4b18c9a7baad4b9cbd2b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.html new file mode 100644 index 000000000..40aa1b841 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.html @@ -0,0 +1,160 @@ + + + + + + + +grid_tools: pfun::sinhoxm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sinhoxm Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    real(dp) function sinhoxm_d (x)
     Evaluate the symmetric real function sinh(x)/x-1. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 30 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sinhoxm_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sinhoxm::sinhoxm_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Evaluate the symmetric real function sinh(x)/x-1.

    +

    still accurate near x=0.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sinh(x)-1
    +
    Author
    R. J. Purser
    + +

    Definition at line 325 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.js new file mode 100644 index 000000000..7689e127f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinhoxm.js @@ -0,0 +1,4 @@ +var interfacepfun_1_1sinhoxm = +[ + [ "sinhoxm_d", "interfacepfun_1_1sinhoxm.html#ad6b249c10f7bc87358a6509e090e9417", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.html new file mode 100644 index 000000000..3733b05de --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.html @@ -0,0 +1,159 @@ + + + + + + + +grid_tools: pfun::sinox Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sinox Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    real(dp) function sinox_d (x)
     Evaluate the symmetric real function sin(x)/x. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 29 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sinox_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sinox::sinox_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Evaluate the symmetric real function sin(x)/x.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sin(x)/x
    +
    Author
    R. J. Purser
    + +

    Definition at line 311 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.js new file mode 100644 index 000000000..f5a5b4b69 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinox.js @@ -0,0 +1,4 @@ +var interfacepfun_1_1sinox = +[ + [ "sinox_d", "interfacepfun_1_1sinox.html#a23275f052c82f47125d3b6118ffa0a7b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.html b/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.html new file mode 100644 index 000000000..3a90eaa86 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.html @@ -0,0 +1,159 @@ + + + + + + + +grid_tools: pfun::sinoxm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun::sinoxm Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    real(dp) function sinoxm_d (x)
     Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 28 of file pfun.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ sinoxm_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sinoxm::sinoxm_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sin(x)/x-1
    +
    Author
    R. J. Purser
    + +

    Definition at line 291 of file pfun.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.js b/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.js new file mode 100644 index 000000000..9d0a24ddb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepfun_1_1sinoxm.js @@ -0,0 +1,4 @@ +var interfacepfun_1_1sinoxm = +[ + [ "sinoxm_d", "interfacepfun_1_1sinoxm.html#a730c51002f428fd257ed50d3dd1d8aff", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.html new file mode 100644 index 000000000..252440e85 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.html @@ -0,0 +1,358 @@ + + + + + + + +grid_tools: pmat2::avco Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::avco Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine 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 DAVCO (na, nb, za, zb, z0, a, b)
     Double precision version of subroutine avco for midpoint interpolation. More...
     
    subroutine TAVCO (xa, xb, a, b)
     Simplified computation of compact midpoint interpolation coefficients. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 56 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ AVCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::avco::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of t-points operated on by this row of the A of (*)
    [in]nbnumber of s-points operated on by this row of the B of (*)
    [in]zacoordinates of t-points used in this row of (*)
    [in]zbcoordinates of s-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [out]athe NA coefficients A for this scheme
    [out]bthe NB coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 100 of file pmat2.f90.

    + +
    +
    + +

    ◆ DAVCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::avco::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 
    )
    +
    +private
    +
    + +

    Double precision version of subroutine avco for midpoint interpolation.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of target points involved in formula
    [in]nbnumber of source points involved in formula
    [in]zacoordinates of target points
    [in]zbcoordinates of source points
    [in]z0nominal point of application of compact interpolation formula
    [out]athe coefficients A for this scheme
    [out]bthe coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 134 of file pmat2.f90.

    + +
    +
    + +

    ◆ TAVCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::avco::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 
    )
    +
    +private
    +
    + +

    Simplified computation of compact midpoint interpolation coefficients.

    +
    Parameters
    + + + + + +
    [in]xacoordinates of target points relative to point of application
    [in]xbcoordinates of source points relative to point of application
    [out]athe coefficients A for this scheme
    [out]bthe coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 165 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.js new file mode 100644 index 000000000..31acf1338 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1avco.js @@ -0,0 +1,6 @@ +var interfacepmat2_1_1avco = +[ + [ "AVCO", "interfacepmat2_1_1avco.html#acef3e7182ff9a93770e768e27c3fc03f", null ], + [ "DAVCO", "interfacepmat2_1_1avco.html#a49f03de74302bfaaacaa8d1fc25636aa", null ], + [ "TAVCO", "interfacepmat2_1_1avco.html#a46787b6c53036556770602283a4826d1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.html new file mode 100644 index 000000000..56155f19e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::cad1b Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::cad1b Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine CAD1B (m1, mah1, mah2, mirror2, a)
     Incorporate operand symmetry and clip near end-1 of a band matrix operator. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 60 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ CAD1B()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::cad1b::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 
    )
    +
    +private
    +
    + +

    Incorporate operand symmetry and clip near end-1 of a band matrix operator.

    +
    Parameters
    + + + + + + +
    [in]m1Size of implied full matrix
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-1 operand element.
    [in,out]aInput 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.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 426 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.js new file mode 100644 index 000000000..bdd5be534 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad1b.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1cad1b = +[ + [ "CAD1B", "interfacepmat2_1_1cad1b.html#a306a30ff97349989c08d794df4d40781", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.html new file mode 100644 index 000000000..69e3ba250 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::cad2b Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::cad2b Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine CAD2B (m1, m2, mah1, mah2, mirror2, a)
     Incorporate symmetry and clip near end-2 of a band matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 62 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ CAD2B()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::cad2b::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 
    )
    +
    +private
    +
    + +

    Incorporate symmetry and clip near end-2 of a band matrix.

    +
    Parameters
    + + + + + + + +
    [in]m1Number of rows of full matrix A
    [in]m2Number of columns of implied full matrix A
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-2 operand element.
    [in,out]aInput operator, output as symmetrized and clipped at end-2.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 477 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.js new file mode 100644 index 000000000..dbf8f7522 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1cad2b.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1cad2b = +[ + [ "CAD2B", "interfacepmat2_1_1cad2b.html#a0f21eb55d9251b40ebd0d48222b9add7", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.html new file mode 100644 index 000000000..78b2bc53f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.html @@ -0,0 +1,267 @@ + + + + + + + +grid_tools: pmat2::clipb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::clipb Interface Reference
    +
    +
    + + + + + + + + + + +

    +Private Member Functions

    clib
     
    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 59 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ clib_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pure subroutine pmat2::clipb::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 
    )
    +
    +private
    +
    + +

    Clip (set to zero) the unused values in a banded matrix representation.

    +
    Parameters
    + + + + + + +
    [in]m1number of matrix rows
    [in]m2number of matrix columns
    [in]mah1number of subdiagonals
    [in]mah2number of superdiagonals
    [in]acomplex matrix elements, stored compactly as rows
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 406 of file pmat2.f90.

    + +
    +
    + +

    ◆ clib_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pure subroutine pmat2::clipb::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 
    )
    +
    +private
    +
    + +

    Clip (set to zero) the unused values in a banded matrix representation.

    +
    Parameters
    + + + + + + +
    [in]m1number of matrix rows
    [in]m2number of matrix columns
    [in]mah1number of subdiagonals
    [in]mah2number of superdiagonals
    [in]adouble precision matrix elements, stored compactly as rows
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 388 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.js new file mode 100644 index 000000000..875acc7b2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1clipb.js @@ -0,0 +1,6 @@ +var interfacepmat2_1_1clipb = +[ + [ "clib", "interfacepmat2_1_1clipb.html#ac7871c2ab9a7ab88611daec9c73e90e5", null ], + [ "clib_c", "interfacepmat2_1_1clipb.html#a63831c47a7c965d120e2ff4fcc861748", null ], + [ "clib_d", "interfacepmat2_1_1clipb.html#adcb065da7c0828a20e54c530ac7b3815", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.html new file mode 100644 index 000000000..872e0f9a3 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::csb1b Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::csb1b Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine CSB1B (m1, mah1, mah2, mirror2, a)
     Like cad1b, but for antisymmetric operand. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 61 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ CSB1B()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::csb1b::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 
    )
    +
    +private
    +
    + +

    Like cad1b, but for antisymmetric operand.

    +
    Parameters
    + + + + + + +
    [in]m1Size of implied full matrix
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-1 operand element.
    [in,out]aInput operator, output as clipped antisymmetric at end-1.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 451 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.js new file mode 100644 index 000000000..93ec54c57 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb1b.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1csb1b = +[ + [ "CSB1B", "interfacepmat2_1_1csb1b.html#a6d45411a82aaac14e7738cc8ada452cd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.html new file mode 100644 index 000000000..7efc9868b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::csb2b Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::csb2b Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine CSB2B (m1, m2, mah1, mah2, mirror2, a)
     Incorporate operand antisymmetry and clip near end-2 of a band matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 63 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ CSB2B()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::csb2b::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 
    )
    +
    +private
    +
    + +

    Incorporate operand antisymmetry and clip near end-2 of a band matrix.

    +
    Parameters
    + + + + + + + +
    [in]m1Number of rows of matrix A
    [in]m2Number of columns of matrix A
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-2 operand element.
    [in,out]aInput operator, output as antisymmetrized and clipped at end-2.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 504 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.js new file mode 100644 index 000000000..57fe6a501 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1csb2b.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1csb2b = +[ + [ "CSB2B", "interfacepmat2_1_1csb2b.html#ad5e4d44be479265a450e5a2589aa6130", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.html new file mode 100644 index 000000000..2ab382786 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.html @@ -0,0 +1,358 @@ + + + + + + + +grid_tools: pmat2::dfco Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::dfco Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine DDFCO (na, nb, za, zb, z0, a, b)
     Double precision version of dfco for compact differentiation coefficients. More...
     
    subroutine 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 TDFCO (xa, xb, a, b)
     Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 57 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DDFCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco::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 
    )
    +
    +private
    +
    + +

    Double precision version of dfco for compact differentiation coefficients.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of A coefficients multiplying derivatives
    [in]nbnumber of B coefficients multiplying cumulatives
    [in]zacoordinates of the density (d) points
    [in]zbcoordinates of the cumulative (c) points
    [in]z0nominal point of application of the compact formula
    [in]athe A-coefficients for this scheme
    [in]bthe B-coefficients for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 225 of file pmat2.f90.

    + +
    +
    + +

    ◆ DFCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of d-points operated on by this row of the A of (*)
    [in]nbnumber of c-points operated on by this row of the B of (*)
    [in]zacoordinates of d-points used in this row of (*)
    [in]zbcoordinates of c-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [in]Athe A-coefficients for this scheme
    [in]Bthe B-coefficients for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 190 of file pmat2.f90.

    + +
    +
    + +

    ◆ TDFCO()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco::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 
    )
    +
    +private
    +
    + +

    Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa.

    +
    Parameters
    + + + + + +
    [in]xacoordinates, relative to point of application, of d values
    [in]xbcoordinates, relatuve to point of application, of c values
    [in]athe coefficients, A, for this scheme
    [in]bthe coefficients, B, for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 258 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.js new file mode 100644 index 000000000..cfd383086 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco.js @@ -0,0 +1,6 @@ +var interfacepmat2_1_1dfco = +[ + [ "DDFCO", "interfacepmat2_1_1dfco.html#aeaa94e95d5bfceb407ba3fa7164b9383", null ], + [ "DFCO", "interfacepmat2_1_1dfco.html#aab1b1da5fc6ea9d612ab05e7c8f33aff", null ], + [ "TDFCO", "interfacepmat2_1_1dfco.html#a106bf482522e94da7bbc9fa41e0d8e22", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.html new file mode 100644 index 000000000..ec4f047ba --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.html @@ -0,0 +1,358 @@ + + + + + + + +grid_tools: pmat2::dfco2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::dfco2 Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine DDFCO2 (na, nb, za, zb, z0, a, b)
     Double precision version of DFCO2 to get 2nd-derivative coefficients. More...
     
    subroutine 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 TDFCO2 (xa, xb, a, b)
     Simplified computation of compact 2nd-derivative coefficients. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 58 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DDFCO2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco2::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 
    )
    +
    +private
    +
    + +

    Double precision version of DFCO2 to get 2nd-derivative coefficients.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of 2nd-derivative (d) points in compact formula
    [in]nbnumber of source points (c)
    [in]zacoordinates of 2nd-derivative points
    [in]zbcoordinates of source points
    [in]z0nominal coordinate of application
    [in]acoefficients A for derivative points
    [in]bcoefficients B for source points
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 318 of file pmat2.f90.

    + +
    +
    + +

    ◆ DFCO2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco2::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of d-points operated on by this row of the A of (*)
    [in]nbnumber of c-points operated on by this row of the B of (*)
    [in]zacoordinates of d-points used in this row of (*)
    [in]zbcoordinates of c-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [in]athe NA coefficients A for this scheme
    [in]bthe NB coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 283 of file pmat2.f90.

    + +
    +
    + +

    ◆ TDFCO2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dfco2::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 
    )
    +
    +private
    +
    + +

    Simplified computation of compact 2nd-derivative coefficients.

    +
    Parameters
    + + + + + +
    [in]xaRelative coordinates of derivatives
    [in]xbRelative coordinates of source points
    [out]acoefficients A for the derivatives in compact scheme
    [out]bcoefficients B for source values in the compact scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 350 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.js new file mode 100644 index 000000000..bc878630c --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1dfco2.js @@ -0,0 +1,6 @@ +var interfacepmat2_1_1dfco2 = +[ + [ "DDFCO2", "interfacepmat2_1_1dfco2.html#aeb24962f4022807a2d8328fffb422c85", null ], + [ "DFCO2", "interfacepmat2_1_1dfco2.html#a8730b0e9971d89a27c8a9365f03a79a7", null ], + [ "TDFCO2", "interfacepmat2_1_1dfco2.html#a3c1adfc240e174a0ecf0a5851825f7e2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.html new file mode 100644 index 000000000..179e22837 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.html @@ -0,0 +1,292 @@ + + + + + + + +grid_tools: pmat2::l1ubb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::l1ubb Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine DL1UBB (m, mah1, mah2, mbh1, mbh2, a, b)
     Double precision version of L1UBB. More...
     
    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 66 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DL1UBB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::l1ubb::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 
    )
    +
    +private
    +
    + +

    Double precision version of L1UBB.

    +
    Parameters
    + + + + + + + + +
    [in]mNumber of rows of A and B
    [in]mah1left half-width of fortran array A
    [in]mah2right half-width of fortran array A
    [in]mbh1left half-width of fortran array B
    [in]mbh2left half-width of fortran array B
    [in,out]aInput double precision band matrix A; output factors encoded as [D**-1 * L * D]+[U-I]
    [in,out]bInput double precision band matrix B; output [D**-1 B]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 771 of file pmat2.f90.

    + +
    +
    + +

    ◆ L1UBB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::l1ubb::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 
    )
    +
    +private
    +
    + +

    [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].

    +
    Parameters
    + + + + + + + + +
    [in]mNumber of rows of A and B
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in]mbh1number of subdiagonals of B
    [in]mbh2number of superdiagonals of B
    [in,out]ainput 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]bInput single precision band matrix B; output [D**-1 B]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 733 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.js new file mode 100644 index 000000000..610d440eb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ubb.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1l1ubb = +[ + [ "DL1UBB", "interfacepmat2_1_1l1ubb.html#a63e9d8d2a24ab985320bb1b97eedb179", null ], + [ "L1UBB", "interfacepmat2_1_1l1ubb.html#aa9450336a73dd3f95870dd1d2623557f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.html new file mode 100644 index 000000000..9d5740b3b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.html @@ -0,0 +1,293 @@ + + + + + + + +grid_tools: pmat2::l1ueb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::l1ueb Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine DL1UEB (m, mah1, mah2, mbh1, mbh2, a, b)
     Double precision version of L1UEB. More...
     
    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 67 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DL1UEB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::l1ueb::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 
    )
    +
    +private
    +
    + +

    Double precision version of L1UEB.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of band matrices A and B
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in]mbh1number of subdiagonals of B
    [in]mbh2number of superdiagonals of B
    [in,out]aInput matrix A; output encoded L, D, U, factors
    [in,out]bInput matrix B; output D**-1 * B
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 855 of file pmat2.f90.

    + +
    +
    + +

    ◆ L1UEB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::l1ueb::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 
    )
    +
    +private
    +
    + +

    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).

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of B, one less than the rows of A (which has "row 0")
    [in]mah1left half-width of fortran array A
    [in]mah2right half-width of fortran array A
    [in]mbh1left half-width of fortran array B
    [in]mbh2right half-width of fortran array B
    [in,out]ainput 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]bin as band matrix, out as same but premultiplied by diagonal [D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1998
    + +

    Definition at line 818 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.js new file mode 100644 index 000000000..2a7ac7d90 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1l1ueb.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1l1ueb = +[ + [ "DL1UEB", "interfacepmat2_1_1l1ueb.html#ad9ebaf4646bac275bc3509fe95c1ebd9", null ], + [ "L1UEB", "interfacepmat2_1_1l1ueb.html#adb4a6107e3e9389c7cdcfbc9ff76be02", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.html new file mode 100644 index 000000000..b97f8bc91 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.html @@ -0,0 +1,237 @@ + + + + + + + +grid_tools: pmat2::ldltb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::ldltb Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine DLDLTB (m, mah1, a)
     [L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky). More...
     
    subroutine LDLTB (m, mah1, a)
     [L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky). More...
     
    +

    Detailed Description

    +
    +

    Definition at line 65 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DLDLTB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ldltb::DLDLTB (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    real(dp), dimension(m,-mah1:0), intent(inout) a 
    )
    +
    +private
    +
    + +

    [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

    Parameters
    + + + + +
    [in]msize of symmetric matrix A
    [in]mah1semi-bandwidth of matrix A
    [in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 645 of file pmat2.f90.

    + +
    +
    + +

    ◆ LDLTB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ldltb::LDLTB (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    real(sp), dimension(m,-mah1:0), intent(inout) a 
    )
    +
    +private
    +
    + +

    [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.

    +
    Parameters
    + + + + +
    [in]msize of symmetric matrix A
    [in]mah1semi-bandwidth of matrix A
    [in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 609 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.js new file mode 100644 index 000000000..a534dcc06 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldltb.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1ldltb = +[ + [ "DLDLTB", "interfacepmat2_1_1ldltb.html#a9cd9c8a7e9598f2ea4e6fde216c0faae", null ], + [ "LDLTB", "interfacepmat2_1_1ldltb.html#abd6f9634b50c0aa2b117f17f0fbc8571", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.html new file mode 100644 index 000000000..8344ed4d5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.html @@ -0,0 +1,250 @@ + + + + + + + +grid_tools: pmat2::ldub Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::ldub Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine DLDUB (m, mah1, mah2, a)
     [L]*[D]*[U] factoring of double precision band-matrix. More...
     
    subroutine LDUB (m, mah1, mah2, a)
     [L]*[D]*[U] factoring of single precision band-matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 64 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DLDUB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ldub::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 
    )
    +
    +private
    +
    + +

    [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

    Parameters
    + + + + + +
    [in]mThe number of rows of array A
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 571 of file pmat2.f90.

    + +
    +
    + +

    ◆ LDUB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ldub::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 
    )
    +
    +private
    +
    + +

    [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

    Parameters
    + + + + + +
    [in]mThe number of rows of array A
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 532 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.js new file mode 100644 index 000000000..59ea1d6ce --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ldub.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1ldub = +[ + [ "DLDUB", "interfacepmat2_1_1ldub.html#a4f97445ab31ad5601c7d470c4889fb75", null ], + [ "LDUB", "interfacepmat2_1_1ldub.html#a0b6ba04df748e267fe8162929b30b31c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.html new file mode 100644 index 000000000..c8c1a1ffc --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::linbv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::linbv Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine LINBV (m, mah1, mah2, a, v)
     Solve LINear system with square Banded-matrix and vector V. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 82 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ LINBV()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::linbv::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 
    )
    +
    +private
    +
    + +

    Solve LINear system with square Banded-matrix and vector V.

    +
    Parameters
    + + + + + + +
    [in]morder of matrix A
    [in]mah1left half-bandwidth of A
    [in]mah2right half-bandwidth of A
    [in,out]asystem matrix on input, its [L]*[D**-1]*[U] factorization on exit
    [in,out]vvector of right-hand-sides on input, solution vector on exit
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1323 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.js new file mode 100644 index 000000000..1650bea71 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1linbv.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1linbv = +[ + [ "LINBV", "interfacepmat2_1_1linbv.html#a1dd40614e16f594e05a811388a697cdd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.html new file mode 100644 index 000000000..0bbeee129 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.html @@ -0,0 +1,251 @@ + + + + + + + +grid_tools: pmat2::ltdlbv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::ltdlbv Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 68 of file pmat2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ltdlbv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ltdlbv::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 
    )
    +
    +private
    +
    + +

    Like udlbv, except assuming a is the ldlt decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy)

    +
    Parameters
    + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]aencodes the L*D*L^T factorization of the linear-system matrix, as supplied by subroutine LDLTB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 950 of file pmat2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ dltdlbv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::ltdlbv::dltdlbv (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    real(dp), dimension(m,-mah1:0), intent(in) a,
    real(dp), dimension(m), intent(inout) v 
    )
    +
    +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)

    +
    Parameters
    + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in,out]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 980 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.js new file mode 100644 index 000000000..7f925bb13 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1ltdlbv.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1ltdlbv = +[ + [ "ltdlbv", "interfacepmat2_1_1ltdlbv.html#a256952d13f24070b486c9243cd1aa270", null ], + [ "dltdlbv", "interfacepmat2_1_1ltdlbv.html#ad52a67325d4326691f4b633ab04c6c13", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.html new file mode 100644 index 000000000..61fc80c23 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::u1lbv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lbv Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LBV (m, mah1, mah2, a, v)
     Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 76 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LBV()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lbv::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 
    )
    +
    +private
    +
    + +

    Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1155 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.js new file mode 100644 index 000000000..0c5d5b957 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbv.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lbv = +[ + [ "U1LBV", "interfacepmat2_1_1u1lbv.html#ac60455dba7e5165d439a02017e79809e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.html new file mode 100644 index 000000000..5cab86286 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::u1lbx Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lbx Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LBX (mx, mah1, mah2, my, a, v)
     Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 77 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LBX()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lbx::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 
    )
    +
    +private
    +
    + +

    Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1186 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.js new file mode 100644 index 000000000..543a727dc --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lbx.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lbx = +[ + [ "U1LBX", "interfacepmat2_1_1u1lbx.html#a3aaf3850bc62ee13a92b8bfbcbe0021f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.html new file mode 100644 index 000000000..5d9f78aa6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::u1lby Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lby Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LBY (my, mah1, mah2, mx, a, v)
     Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 78 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LBY()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lby::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 
    )
    +
    +private
    +
    + +

    Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1214 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.js new file mode 100644 index 000000000..9160d23a0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lby.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lby = +[ + [ "U1LBY", "interfacepmat2_1_1u1lby.html#adbba1c18a2842310e74d9a11fb1783ce", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.html new file mode 100644 index 000000000..23fb24eba --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::u1lvb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lvb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LVB (m, mah1, mah2, v, a)
     Special Back-substitution step of linear inversion involving left-Vector and Banded matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 79 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LVB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lvb::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 
    )
    +
    +private
    +
    + +

    Special Back-substitution step of linear inversion involving left-Vector and Banded matrix.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and columns for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]vinput as right-hand-side row-vector, output as solution vector
    [in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1240 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.js new file mode 100644 index 000000000..48a505a73 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lvb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lvb = +[ + [ "U1LVB", "interfacepmat2_1_1u1lvb.html#a3f40924cfe1fc60e335b03a660e0ae6b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.html new file mode 100644 index 000000000..0bbd20c7d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::u1lxb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lxb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LXB (mx, mah1, mah2, my, v, a)
     Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 80 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LXB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lxb::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 
    )
    +
    +private
    +
    + +

    Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1271 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.js new file mode 100644 index 000000000..2c7240f46 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lxb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lxb = +[ + [ "U1LXB", "interfacepmat2_1_1u1lxb.html#aa59d2b66c5cc4254a3edfbe7c3a3a80c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.html new file mode 100644 index 000000000..e81c3eb28 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::u1lyb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::u1lyb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine U1LYB (my, mah1, mah2, mx, v, a)
     Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 81 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ U1LYB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::u1lyb::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 
    )
    +
    +private
    +
    + +

    Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1299 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.js new file mode 100644 index 000000000..4482a3e0f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1u1lyb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1u1lyb = +[ + [ "U1LYB", "interfacepmat2_1_1u1lyb.html#a56892762cbe9e7e78262fd16517c3df1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.html new file mode 100644 index 000000000..42f71b3a8 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.html @@ -0,0 +1,250 @@ + + + + + + + +grid_tools: pmat2::udlb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlb Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 69 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ DUDLB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlb::DUDLB (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    integer(spi), intent(in) mah2,
    real(dp), dimension(m,-mah1:mah2), intent(inout) a 
    )
    +
    +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

    +
    Parameters
    + + + + + +
    [in]mnumber of rows of A
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in,out]aInput double precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 704 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlb::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 
    )
    +
    +private
    +
    + +

    [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

    +
    Parameters
    + + + + + +
    [in]mnumber of rows of A
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in,out]aInput single precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 683 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.js new file mode 100644 index 000000000..c1a4e7ced --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlb.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1udlb = +[ + [ "DUDLB", "interfacepmat2_1_1udlb.html#a312cae0e3431b93713f6f770e00dce89", null ], + [ "UDLB", "interfacepmat2_1_1udlb.html#a89587252aaed7cac7df22a261b756633", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.html new file mode 100644 index 000000000..f64aed3ad --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.html @@ -0,0 +1,266 @@ + + + + + + + +grid_tools: pmat2::udlbv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlbv Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine dudlbv (m, mah1, mah2, a, v)
     Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More...
     
    subroutine UDLBV (m, mah1, mah2, a, v)
     Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 70 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dudlbv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlbv::dudlbv (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    integer(spi), intent(in) mah2,
    real(dp), dimension(m,-mah1:mah2), intent(in) a,
    real(dp), dimension(m), intent(inout) v 
    )
    +
    +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

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in double precision
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 921 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLBV()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlbv::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 
    )
    +
    +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

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in single precision
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 892 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.js new file mode 100644 index 000000000..88ba777d5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbv.js @@ -0,0 +1,5 @@ +var interfacepmat2_1_1udlbv = +[ + [ "dudlbv", "interfacepmat2_1_1udlbv.html#ab38365f81aa10f5094ebdbc9646e6fd5", null ], + [ "UDLBV", "interfacepmat2_1_1udlbv.html#a6b1f964739b2fa8954459733f572753c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.html new file mode 100644 index 000000000..ea57b2a76 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::udlbx Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlbx Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine UDLBX (mx, mah1, mah2, my, a, v)
     Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 71 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ UDLBX()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlbx::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 
    )
    +
    +private
    +
    + +

    Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1011 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.js new file mode 100644 index 000000000..b86ccc63a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlbx.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1udlbx = +[ + [ "UDLBX", "interfacepmat2_1_1udlbx.html#a70856e4cca6382bcc75f5a4444e58684", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.html new file mode 100644 index 000000000..71540dff0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::udlby Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlby Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine UDLBY (my, mah1, mah2, mx, a, v)
     Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 72 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ UDLBY()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlby::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 
    )
    +
    +private
    +
    + +

    Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1040 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.js new file mode 100644 index 000000000..ef818d646 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlby.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1udlby = +[ + [ "UDLBY", "interfacepmat2_1_1udlby.html#a1de60658e9a954b6016508f277d5001e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.html new file mode 100644 index 000000000..a4e1eb682 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::udlvb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlvb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine UDLVB (m, mah1, mah2, v, a)
     Back-substitution step of linear inversion involving row-Vector and Banded matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 73 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ UDLVB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlvb::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 
    )
    +
    +private
    +
    + +

    Back-substitution step of linear inversion involving row-Vector and Banded matrix.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and columns for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]vinput as right-hand-side row-vector, output as solution vector
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1067 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.js new file mode 100644 index 000000000..f29f47c63 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlvb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1udlvb = +[ + [ "UDLVB", "interfacepmat2_1_1udlvb.html#a7e6d06999413052137202a76fcb4fa2e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.html new file mode 100644 index 000000000..086ca4530 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::udlxb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlxb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine UDLXB (mx, mah1, mah2, my, v, a)
     Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 74 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ UDLXB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlxb::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 
    )
    +
    +private
    +
    + +

    Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1099 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.js new file mode 100644 index 000000000..9f5798301 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlxb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1udlxb = +[ + [ "UDLXB", "interfacepmat2_1_1udlxb.html#a17d6ed2985c58e63aca41a575d52901b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.html new file mode 100644 index 000000000..d3d93a941 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat2::udlyb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::udlyb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine UDLYB (my, mah1, mah2, mx, v, a)
     BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 75 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ UDLYB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::udlyb::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 
    )
    +
    +private
    +
    + +

    BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1128 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.js new file mode 100644 index 000000000..73ec46ac0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1udlyb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1udlyb = +[ + [ "UDLYB", "interfacepmat2_1_1udlyb.html#a5806f6e87d5c570438c4ff0296d30f3c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.html b/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.html new file mode 100644 index 000000000..a8567f91d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: pmat2::wrtb Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2::wrtb Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine WRTB (m1, m2, mah1, mah2, a)
     Convenient routine for interactively writing out the real contents of a band matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 83 of file pmat2.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ WRTB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::wrtb::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 
    )
    +
    +private
    +
    + +

    Convenient routine for interactively writing out the real contents of a band matrix.

    +
    Parameters
    + + + + + + +
    [in]m1number of rows of full matrix
    [in]m2number of columns of full matrix
    [in]mah1number of sub-diagonals
    [in]mah2number of super-diagonals
    [in]acontents of single precision real band matrix.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 1341 of file pmat2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.js b/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.js new file mode 100644 index 000000000..524d59341 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat2_1_1wrtb.js @@ -0,0 +1,4 @@ +var interfacepmat2_1_1wrtb = +[ + [ "WRTB", "interfacepmat2_1_1wrtb.html#af16e1d62d14ccd82eeb805eb280e1578", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.html new file mode 100644 index 000000000..33894ad27 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pmat4::absv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::absv Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 60 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ absv_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::absv::absv_d (real(dp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the absolute magnitude of a double precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    s result, double precision real scalar
    +
    Author
    R. J. Purser
    + +

    Definition at line 131 of file pmat4.f90.

    + +
    +
    + +

    ◆ absv_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::absv::absv_s (real(sp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the absolute magnitude of a single precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    s result, single precision real scalar
    +
    Author
    R. J. Purser
    + +

    Definition at line 119 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.js new file mode 100644 index 000000000..d187473fc --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1absv.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1absv = +[ + [ "absv_d", "interfacepmat4_1_1absv.html#ad61e1f7682aeffa661af6ad859f7d2bb", null ], + [ "absv_s", "interfacepmat4_1_1absv.html#a1d066914e001461712300c0ff1442a90", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.html new file mode 100644 index 000000000..de7b3c453 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.html @@ -0,0 +1,282 @@ + + + + + + + +grid_tools: pmat4::axial Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::axial Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 73 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ axial33_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(3) pmat4::axial::axial33_d (real(dp), dimension(3,3), intent(in) b)
    +
    +private
    +
    + +

    Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence.

    +
    Parameters
    + + +
    [in]breal type input antisymmetric matrix "axial vector" B
    +
    +
    +
    Returns
    a result, 3-vector corresponding to B
    +
    Author
    R. J. Purser
    + +

    Definition at line 462 of file pmat4.f90.

    + +
    +
    + +

    ◆ axial33_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(3) pmat4::axial::axial33_s (real(sp), dimension(3,3), intent(in) b)
    +
    +private
    +
    + +

    Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence.

    +
    Parameters
    + + +
    [in]breal type input antisymmetric matrix "axial vector" B
    +
    +
    +
    Returns
    a result, 3-vector corresponding to B
    +
    Author
    R. J. Purser
    + +

    Definition at line 448 of file pmat4.f90.

    + +
    +
    + +

    ◆ axial3_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(3,3) pmat4::axial::axial3_d (real(dp), dimension(3), intent(in) a)
    +
    +private
    +
    + +

    Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence.

    +
    Parameters
    + + +
    [in]areal type input 3-vector A
    +
    +
    +
    Returns
    b result, antisymmetrix "axial vector" matrix corresponding to A
    +
    Author
    R. J. Purser
    + +

    Definition at line 434 of file pmat4.f90.

    + +
    +
    + +

    ◆ axial3_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(3,3) pmat4::axial::axial3_s (real(sp), dimension(3), intent(in) a)
    +
    +private
    +
    + +

    Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence.

    +
    Parameters
    + + +
    [in]areal type input 3-vector A
    +
    +
    +
    Returns
    b result, antisymmetrix "axial vector" matrix corresponding to A
    +
    Author
    R. J. Purser
    + +

    Definition at line 420 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.js new file mode 100644 index 000000000..434da3957 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axial.js @@ -0,0 +1,7 @@ +var interfacepmat4_1_1axial = +[ + [ "axial33_d", "interfacepmat4_1_1axial.html#adbc12f84fb241ef4318d8a4900ea83f9", null ], + [ "axial33_s", "interfacepmat4_1_1axial.html#ac9f242df29ed977669424142336a12a1", null ], + [ "axial3_d", "interfacepmat4_1_1axial.html#ab95014bb9b6e43cfccda873529eed272", null ], + [ "axial3_s", "interfacepmat4_1_1axial.html#a2518e84b302457403caf258ccc5a8f2a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.html new file mode 100644 index 000000000..f90c2d4b5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::axtoq Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::axtoq Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine axtoq (v, q)
     Go from an axial 3-vector to its equivalent quaternion. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 98 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ axtoq()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::axtoq::axtoq (real(dp), dimension(3), intent(in) v,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    +private
    +
    + +

    Go from an axial 3-vector to its equivalent quaternion.

    +
    Parameters
    + + + +
    [in]vaxial 3-vector
    [out]qquaternion
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1658 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.js new file mode 100644 index 000000000..f1e1d5dfb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtoq.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1axtoq = +[ + [ "axtoq", "interfacepmat4_1_1axtoq.html#a0c04b6458eeef33454c770e51850ce8c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.html new file mode 100644 index 000000000..3d1066b94 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.html @@ -0,0 +1,170 @@ + + + + + + + +grid_tools: pmat4::axtorot Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::axtorot Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine axtorot (ax3, orth33)
     Construct the 3*3 orthogonal matrix, orth33, that corresponds to the proper rotation encoded by the 3-vector, ax3. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 93 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ axtorot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::axtorot::axtorot (real(dp), dimension(3), intent(in) ax3,
    real(dp), dimension(3,3), intent(out) orth33 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + +
    [in]ax3axial 3-vector
    [out]orth333*3 orthogonal matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1548 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.js new file mode 100644 index 000000000..589c14da8 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1axtorot.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1axtorot = +[ + [ "axtorot", "interfacepmat4_1_1axtorot.html#a1ed5a1b7d621e3c7c19b145d62185dca", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.html new file mode 100644 index 000000000..72e93ed87 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.html @@ -0,0 +1,205 @@ + + + + + + + +grid_tools: pmat4::corral Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::corral Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 91 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ corral()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::corral::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of A
    [in]nnumber of columns of A
    [in]masklogical mask
    [in]areal rectangular matrix A
    [out]dpositive diagonal matrix of dimension m
    [in]aarescaled version of A
    [out]epositive diagonal matrix of dimension n
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1441 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.js new file mode 100644 index 000000000..977d97b85 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1corral.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1corral = +[ + [ "corral", "interfacepmat4_1_1corral.html#a0c6feac91e9c7063043ae92c5e824ac7", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.html new file mode 100644 index 000000000..4240cda25 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.html @@ -0,0 +1,340 @@ + + + + + + + +grid_tools: pmat4::cross_product Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::cross_product Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 64 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cross_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(3) pmat4::cross_product::cross_product_d (real(dp), dimension(3), intent(in) a,
    real(dp), dimension(3), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the cross product of two double precision real 3-vectors.

    +
    Parameters
    + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    +
    +
    +
    Returns
    c result, double precision real 3-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 215 of file pmat4.f90.

    + +
    +
    + +

    ◆ cross_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(3) pmat4::cross_product::cross_product_s (real(sp), dimension(3), intent(in) a,
    real(sp), dimension(3), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the cross product of two single precision real 3-vectors.

    +
    Parameters
    + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    +
    +
    +
    Returns
    c result, single precision real 3-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 202 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_cross_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(4) pmat4::cross_product::triple_cross_product_d (real(dp), dimension(4), intent(in) u,
    real(dp), dimension(4), intent(in) v,
    real(dp), dimension(4), intent(in) w 
    )
    +
    +private
    +
    + +

    Return the triple_cross_product for 4-vectors.

    +
    Parameters
    + + + + +
    [in]ureal type input 4-vector
    [in]vreal type input 4-vector
    [in]wreal type input 4-vector
    +
    +
    +
    Returns
    x result, triple-cross-product 4-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 253 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_cross_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(4) pmat4::cross_product::triple_cross_product_s (real(sp), dimension(4), intent(in) u,
    real(sp), dimension(4), intent(in) v,
    real(sp), dimension(4), intent(in) w 
    )
    +
    +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).

    +
    Parameters
    + + + + +
    [in]ureal type input 4-vector
    [in]vreal type input 4-vector
    [in]wreal type input 4-vector
    +
    +
    +
    Returns
    x result, triple-cross-product 4-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 232 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.js new file mode 100644 index 000000000..0c1c5d254 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1cross__product.js @@ -0,0 +1,7 @@ +var interfacepmat4_1_1cross__product = +[ + [ "cross_product_d", "interfacepmat4_1_1cross__product.html#a9b26d781992da02d206cb1b8b93dc467", null ], + [ "cross_product_s", "interfacepmat4_1_1cross__product.html#ab2c1dbadfbeda3cd9c20d67dd71e12b0", null ], + [ "triple_cross_product_d", "interfacepmat4_1_1cross__product.html#a8bf4a28ffffdcc76b2477bae48a3891c", null ], + [ "triple_cross_product_s", "interfacepmat4_1_1cross__product.html#a0569c6cff360d31c28ec3cc2272d695a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.html new file mode 100644 index 000000000..edffd897b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.html @@ -0,0 +1,182 @@ + + + + + + + +grid_tools: pmat4::ctoz Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::ctoz Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine ctoz (v, z, infz)
     Utility codes for various Mobius transformations. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 105 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ctoz()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::ctoz::ctoz (real(dp), dimension(3), intent(in) v,
    complex(dpc), intent(out) z,
    logical, intent(out) infz 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]vcartesian 3-vector representation of point on Riemann sphere
    [out]zcomplex point stereographically equivalent to v
    [out]infzlogical indicator for z being the point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2027 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.js new file mode 100644 index 000000000..950e2ea8f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1ctoz.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1ctoz = +[ + [ "ctoz", "interfacepmat4_1_1ctoz.html#ae980674157c37a8f668cf1a333aea194", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1det.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1det.html new file mode 100644 index 000000000..529937088 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1det.html @@ -0,0 +1,282 @@ + + + + + + + +grid_tools: pmat4::det Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::det Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 72 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ det_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::det::det_d (real(dp), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a double precision matrix.

    +
    Parameters
    + + +
    [in]areal type input matrix A
    +
    +
    +
    Returns
    det result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 369 of file pmat4.f90.

    + +
    +
    + +

    ◆ det_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function pmat4::det::det_i (integer(spi), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a single precision integer matrix.

    +
    Parameters
    + + +
    [in]ainteger type input matrix A
    +
    +
    +
    Returns
    idet result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 390 of file pmat4.f90.

    + +
    +
    + +

    ◆ det_id()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(dpi) function pmat4::det::det_id (integer(dpi), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a double precision integer matrix.

    +
    Parameters
    + + +
    [in]ainteger type input matrix A
    +
    +
    +
    Returns
    idet result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 404 of file pmat4.f90.

    + +
    +
    + +

    ◆ det_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::det::det_s (real(sp), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a single precision matrix.

    +
    Parameters
    + + +
    [in]areal type input matrix A
    +
    +
    +
    Returns
    det result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 348 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1det.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1det.js new file mode 100644 index 000000000..1b02c8433 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1det.js @@ -0,0 +1,7 @@ +var interfacepmat4_1_1det = +[ + [ "det_d", "interfacepmat4_1_1det.html#a3d00c1e98678483a595804bb103d8954", null ], + [ "det_i", "interfacepmat4_1_1det.html#a4edb8d9e7cc76b817b06eaa2ff88b3dc", null ], + [ "det_id", "interfacepmat4_1_1det.html#a65cc061d4d6f6183e9aab890a7c8fd1e", null ], + [ "det_s", "interfacepmat4_1_1det.html#a71930e999c0fe3fa0dcae0aa0be1834b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.html new file mode 100644 index 000000000..1dac6bc12 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.html @@ -0,0 +1,370 @@ + + + + + + + +grid_tools: pmat4::diag Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::diag Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 75 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ diagn_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(size(a),size(a)) pmat4::diag::diagn_d (real(dp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the diagonal matrix whose elements are the given vector.

    +

    Double precision version

    +
    Parameters
    + + +
    [in]areal type input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 492 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagn_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function, dimension(size(a),size(a)) pmat4::diag::diagn_i (integer(spi), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the diagonal matrix whose elements are the given vector.

    +

    Integer version.

    +
    Parameters
    + + +
    [in]ainteger input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 508 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagn_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(size(a),size(a)) pmat4::diag::diagn_s (real(sp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the diagonal matrix whose elements are the given vector.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in]areal type input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 476 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagnn_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(size(b,1)) pmat4::diag::diagnn_d (real(dp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in]breal type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 538 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagnn_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function, dimension(size(b,1)) pmat4::diag::diagnn_i (integer(spi), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Integer version.

    +
    Parameters
    + + +
    [in]binteger type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 553 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagnn_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(size(b,1)) pmat4::diag::diagnn_s (real(sp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in]breal type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 523 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.js new file mode 100644 index 000000000..4e5d5e41d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1diag.js @@ -0,0 +1,9 @@ +var interfacepmat4_1_1diag = +[ + [ "diagn_d", "interfacepmat4_1_1diag.html#a1f55d0ad7ab1625d3445b7a74f1a8c77", null ], + [ "diagn_i", "interfacepmat4_1_1diag.html#ac5fbc7f86d1f4ed361d714faa8b038aa", null ], + [ "diagn_s", "interfacepmat4_1_1diag.html#a4dd6db78976260e4249f2728ce19ea35", null ], + [ "diagnn_d", "interfacepmat4_1_1diag.html#aa485e86b81befb26a2389d74bfdda9ae", null ], + [ "diagnn_i", "interfacepmat4_1_1diag.html#a3144b17a1e8a1fa95e0f6276802c6019", null ], + [ "diagnn_s", "interfacepmat4_1_1diag.html#a24b47b48d57bdf6f694199d6a66e3077", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.html new file mode 100644 index 000000000..2b1bd4946 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.html @@ -0,0 +1,250 @@ + + + + + + + +grid_tools: pmat4::dlltoxy Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::dlltoxy Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 84 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dlltoxy_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::dlltoxy::dlltoxy_d (real(dp), intent(in) rlat,
    real(dp), intent(in) drlat,
    real(dp), intent(in) drlon,
    real(dp), dimension(2), intent(out) x2 
    )
    +
    +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.

    +

    Double precision version.

    +
    Parameters
    + + + + + +
    [in]rlatlatitude
    [in]drlatlatitude
    [in]drlonlongitudes
    [out]x2output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 936 of file pmat4.f90.

    + +
    +
    + +

    ◆ dlltoxy_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::dlltoxy::dlltoxy_s (real(sp), intent(in) rlat,
    real(sp), intent(in) drlat,
    real(sp), intent(in) drlon,
    real(sp), dimension(2), intent(out) x2 
    )
    +
    +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.

    +
    Parameters
    + + + + + +
    [in]rlatlatitude
    [in]drlatlatitude
    [in]drlonlongitudes
    [out]x2output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 916 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.js new file mode 100644 index 000000000..c43324270 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1dlltoxy.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1dlltoxy = +[ + [ "dlltoxy_d", "interfacepmat4_1_1dlltoxy.html#adaa9521f767a578f2d552e94359b1486", null ], + [ "dlltoxy_s", "interfacepmat4_1_1dlltoxy.html#a0ec2abbf63c29f2c3fb329353a13bde8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.html new file mode 100644 index 000000000..2192daba2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.html @@ -0,0 +1,357 @@ + + + + + + + +grid_tools: pmat4::expmat Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::expmat Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 102 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ expmat()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::expmat::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + +
    [in]norder of square matrix A
    [in]ainput matrix A
    [out]bmatrix B, the exponential of matrix A
    [out]detbdeterminant of matrix B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1729 of file pmat4.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ expmatd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::expmat::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 
    )
    +
    +private
    +
    + +

    Like expmat, but for the 1st derivatives also.

    +
    Parameters
    + + + + + + + +
    [in]norder of square matrix A
    [in]ainput matrix A
    [out]bmatrix B, the exponential of matrix A
    [out]bdderivative of B wrt elements of A
    [out]detbdeterminant of matrix B
    [out]detbdderivative of detb wrt elements of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1767 of file pmat4.f90.

    + +
    +
    + +

    ◆ expmatdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::expmat::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 
    )
    +
    +private
    +
    + +

    Like expmat, but for the 1st and 2nd derivatives also.

    +
    Parameters
    + + + + + + + + + +
    [in]norder of the matrix A
    [in]ainput matrix A
    [out]bmatrix B, exponential of matrix A
    [out]bdderivative of B wrt elements of A
    [out]bdd2nd derivative of B wrt elements of A
    [out]detbdeterminant of matrix B
    [out]detbdderivative of detb wrt elements of A
    [out]detbdd2nd derivative of detb wrt elements of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1834 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.js new file mode 100644 index 000000000..6be61c901 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1expmat.js @@ -0,0 +1,6 @@ +var interfacepmat4_1_1expmat = +[ + [ "expmat", "interfacepmat4_1_1expmat.html#abbd074f63d8c46aea50cbf6c2d0a1392", null ], + [ "expmatd", "interfacepmat4_1_1expmat.html#a89b12c97be6694f6cbdeec7552d2222c", null ], + [ "expmatdd", "interfacepmat4_1_1expmat.html#a821d8d28424ffda8eab61dc18e916b8a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.html new file mode 100644 index 000000000..eacc1fb2e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.html @@ -0,0 +1,514 @@ + + + + + + + +grid_tools: pmat4::gram Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::gram Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 87 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gram_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::gram_d (real(dp), dimension(:,:), intent(in) as,
    real(dp), dimension(:,:), intent(out) b,
    integer(spi), intent(out) nrank,
    real(dp), intent(out) det 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B containing nrank orthonormal column vectors
    [out]nrankrank of A
    [out]detdeterminant of projection of A into subspace of B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1078 of file pmat4.f90.

    + +
    +
    + +

    ◆ gram_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::gram_s (real(sp), dimension(:,:), intent(in) as,
    real(sp), dimension(:,:), intent(out) b,
    integer(spi), intent(out) nrank,
    real(sp), intent(out) det 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B containing nrank orthonormal column vectors
    [out]nrankrank of A
    [out]detdeterminant of projection of A into subspace of B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1007 of file pmat4.f90.

    + +
    +
    + +

    ◆ graml_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B of orthonormal columns
    [out]nrankrank of A
    [out]detsignsign of determinant
    [out]ldetlogarithm of absolute value of determinant
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1150 of file pmat4.f90.

    + +
    +
    + +

    ◆ plaingram_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::plaingram_d (real(dp), dimension(:,:), intent(inout) b,
    integer(spi), intent(out) nrank 
    )
    +
    +private
    +
    + +

    A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in,out]binput as given matrix, output as orthogonalized vectors
    [out]nrankeffective rank of given matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1263 of file pmat4.f90.

    + +
    +
    + +

    ◆ plaingram_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::plaingram_s (real(sp), dimension(:,:), intent(inout) b,
    integer(spi), intent(out) nrank 
    )
    +
    +private
    +
    + +

    A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]binput as given matrix, output as orthogonalized vectors
    [out]nrankeffective rank of given matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1227 of file pmat4.f90.

    + +
    +
    + +

    ◆ rowgram()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::gram::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of A
    [in]nnumber of columns of A
    [in]arectangular input matrix A
    [out]ipivpivoting sequence
    [out]ttrow-normalization
    [out]borthonormalized rows
    [in]rankeffective rank of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1315 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.js new file mode 100644 index 000000000..131771895 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1gram.js @@ -0,0 +1,9 @@ +var interfacepmat4_1_1gram = +[ + [ "gram_d", "interfacepmat4_1_1gram.html#ac99bc810d03adcde04de5082aa5d8ae6", null ], + [ "gram_s", "interfacepmat4_1_1gram.html#a3d5540c4a9a67523e3ef85b431b213a7", null ], + [ "graml_d", "interfacepmat4_1_1gram.html#a7bcd28377941ae9b77b1900ad6eed5ed", null ], + [ "plaingram_d", "interfacepmat4_1_1gram.html#a603138feb36a4852fb47805ed57b5936", null ], + [ "plaingram_s", "interfacepmat4_1_1gram.html#aa8d63ac5f26366320d83e91cd38ba0e6", null ], + [ "rowgram", "interfacepmat4_1_1gram.html#a908274e9676bb09bee522aefa6cef94a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.html new file mode 100644 index 000000000..49a56cfc0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pmat4::hav Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::hav Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    real(dp) function hav_d (t)
     Haversine function in double precision. More...
     
    real(sp) function hav_s (t)
     Haversine function in single precision. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 85 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ hav_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::hav::hav_d (real(dp), intent(in) t)
    +
    +private
    +
    + +

    Haversine function in double precision.

    +
    Parameters
    + + +
    [in]tinput argument
    +
    +
    +
    Returns
    a result
    +
    Author
    R. J. Purser
    + +

    Definition at line 964 of file pmat4.f90.

    + +
    +
    + +

    ◆ hav_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::hav::hav_s (real(sp), intent(in) t)
    +
    +private
    +
    + +

    Haversine function in single precision.

    +
    Parameters
    + + +
    [in]tinput argument
    +
    +
    +
    Returns
    a result
    +
    Author
    R. J. Purser
    + +

    Definition at line 951 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.js new file mode 100644 index 000000000..828ab65c1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1hav.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1hav = +[ + [ "hav_d", "interfacepmat4_1_1hav.html#a7fb964d0334ded97b401e4c1fb7c6d19", null ], + [ "hav_s", "interfacepmat4_1_1hav.html#a86d62599792a20c1369f057c9f9aeaf1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.html new file mode 100644 index 000000000..38a6d72ea --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.html @@ -0,0 +1,224 @@ + + + + + + + +grid_tools: pmat4::huarea Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::huarea Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 80 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ huarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::huarea::huarea_d (real(dp), intent(in) sa,
    real(dp), intent(in) sb 
    )
    +
    +private
    +
    + +

    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]saorthographic projection of triangle's side A
    [in]sborthographic projection of triangle's side B
    +
    +
    +
    Returns
    area (steradians) of the right-angle spherical triangle
    +
    Author
    R. J. Purser
    + +

    Definition at line 648 of file pmat4.f90.

    + +
    +
    + +

    ◆ huarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::huarea::huarea_s (real(sp), intent(in) sa,
    real(sp), intent(in) sb 
    )
    +
    +private
    +
    + +

    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]saorthographic projection of triangle's side A
    [in]sborthographic projection of triangle's side B
    +
    +
    +
    Returns
    area (steradians) of the right-angle spherical triangle
    +
    Author
    R. J. Purser
    + +

    Definition at line 630 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.js new file mode 100644 index 000000000..4fbcd20f1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1huarea.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1huarea = +[ + [ "huarea_d", "interfacepmat4_1_1huarea.html#aebe44782788b625f8e40564f01dfa2d9", null ], + [ "huarea_s", "interfacepmat4_1_1huarea.html#abb9f1f858de9338733356011b044e8fb", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.html new file mode 100644 index 000000000..d9a97d607 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.html @@ -0,0 +1,193 @@ + + + + + + + +grid_tools: pmat4::identity Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::identity Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 79 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ identity3_i()

    + +
    +
    + + + + + +
    + + + + + + + +
    integer(spi) function, dimension(3,3) pmat4::identity::identity3_i ()
    +
    +private
    +
    + +

    Return the 3-dimensional integer identity matrix.

    +
    Returns
    a result, identity matrix in 3 dimensions.
    +
    Author
    R. J. Purser
    + +

    Definition at line 615 of file pmat4.f90.

    + +
    +
    + +

    ◆ identity_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function, dimension(n,n) pmat4::identity::identity_i (integer(spi), intent(in) n)
    +
    +private
    +
    + +

    Return the integer identity matrix for a given dimensionality.

    +
    Parameters
    + + +
    [in]ninput integer dimensionality
    +
    +
    +
    Returns
    a result, identity matrix of the given dimensionality
    +
    Author
    R. J. Purser
    + +

    Definition at line 603 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.js new file mode 100644 index 000000000..e959a9dff --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1identity.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1identity = +[ + [ "identity3_i", "interfacepmat4_1_1identity.html#a491591cb27e0cdd6cce72ed2e867f21a", null ], + [ "identity_i", "interfacepmat4_1_1identity.html#aba77f6a7758d868a477b371356536884", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.html new file mode 100644 index 000000000..2ba0a1fda --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.html @@ -0,0 +1,291 @@ + + + + + + + +grid_tools: pmat4::mobius Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::mobius Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 108 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::mobius::cmobius (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    real(dp), dimension(3), intent(in) vz,
    real(dp), dimension(3), intent(out) vw 
    )
    +
    +private
    +
    + +

    Perform a complex Mobius transformation from cartesian vz to cartesian vw where the transformation coefficients are the standard aa,bb,cc,dd.

    +
    Parameters
    + + + + + + + +
    [in]aaMobius transformation coefficient
    [in]bbMobius transformation coefficient
    [in]ccMobius transformation coefficient
    [in]ddMobius transformation coefficient
    [in]vzCartesian unit 3-vector representation of input argument
    [out]vwCartesian unit 3-vector representation of output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2312 of file pmat4.f90.

    + +
    +
    + +

    ◆ zmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::mobius::zmobius (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    complex(dpc), intent(in) z,
    logical, intent(in) infz,
    complex(dpc), intent(out) w,
    logical, intent(out) infw 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + +
    [in]aaMobius transformation complex coefficient
    [in]bbMobius transformation complex coefficient
    [in]ccMobius transformation complex coefficient
    [in]ddMobius transformation complex coefficient
    [in]zcomplex input argument of the Mobius transformation
    [in]infzlogical indicator for z being a point at infinity
    [out]wcomplex output of the Mobius transformation
    [out]infwlogical indicator for w being a point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2277 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.js new file mode 100644 index 000000000..e781bca81 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobius.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1mobius = +[ + [ "cmobius", "interfacepmat4_1_1mobius.html#af12b8eed2959582693ddf40f7d18bb66", null ], + [ "zmobius", "interfacepmat4_1_1mobius.html#ab142f5f19ee3bf4d4c98afa00c7ff9c2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.html new file mode 100644 index 000000000..874506311 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.html @@ -0,0 +1,211 @@ + + + + + + + +grid_tools: pmat4::mobiusi Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::mobiusi Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine zmobiusi (aa, bb, cc, dd, zz, infz, zw, infw)
     Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 109 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ zmobiusi()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::mobiusi::zmobiusi (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    complex(dpc), intent(in) zz,
    logical, intent(in) infz,
    complex(dpc), intent(out) zw,
    logical, intent(out) infw 
    )
    +
    +private
    +
    + +

    Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}.

    +
    Parameters
    + + + + + + + + + +
    [in]aainverse Mobius transformation coefficient
    [in]bbinverse Mobius transformation coefficient
    [in]ccinverse Mobius transformation coefficient
    [in]ddinverse Mobius transformation coefficient
    [in]zzcomplex input argument
    [in]infzlogical indicator for zz the point at infinity
    [out]zwcomplex output argument
    [out]infwlogical indicator for zw the point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2336 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.js new file mode 100644 index 000000000..120105f8a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mobiusi.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1mobiusi = +[ + [ "zmobiusi", "interfacepmat4_1_1mobiusi.html#a049b78e6eebd7aff8ce07ee47e308317", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.html new file mode 100644 index 000000000..9bbcde98d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.html @@ -0,0 +1,170 @@ + + + + + + + +grid_tools: pmat4::mulqq Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::mulqq Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    real(dp) function, dimension(0:3) mulqq (a, b)
     Multiply quaternions, a*b, assuming operation performed from right to left. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 101 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ mulqq()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(0:3) pmat4::mulqq::mulqq (real(dp), dimension(0:3), intent(in) a,
    real(dp), dimension(0:3), intent(in) b 
    )
    +
    +private
    +
    + +

    Multiply quaternions, a*b, assuming operation performed from right to left.

    +
    Parameters
    + + + +
    [in]ainput quaternion
    [in]binput quaternion
    +
    +
    +
    Returns
    c result quaternion a*b
    +
    Author
    R. J. Purser
    + +

    Definition at line 1709 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.js new file mode 100644 index 000000000..e6db78876 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1mulqq.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1mulqq = +[ + [ "mulqq", "interfacepmat4_1_1mulqq.html#af65882e7f4bb1c82c72983fb478b5640", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.html new file mode 100644 index 000000000..fea4cbe78 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: pmat4::normalize Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::normalize Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine normalize_d (v)
     Normalize the given double precision real vector. More...
     
    subroutine normalize_s (v)
     Normalize the given single precision real vector. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 86 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ normalize_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat4::normalize::normalize_d (real(dp), dimension(:), intent(inout) v)
    +
    +private
    +
    + +

    Normalize the given double precision real vector.

    +
    Parameters
    + + +
    [in,out]vvector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 988 of file pmat4.f90.

    + +
    +
    + +

    ◆ normalize_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat4::normalize::normalize_s (real(sp), dimension(:), intent(inout) v)
    +
    +private
    +
    + +

    Normalize the given single precision real vector.

    +
    Parameters
    + + +
    [in,out]vvector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 976 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.js new file mode 100644 index 000000000..1f36a85e5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalize.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1normalize = +[ + [ "normalize_d", "interfacepmat4_1_1normalize.html#a0e97d1c0ce14237b2b2ac3f3ce908f4d", null ], + [ "normalize_s", "interfacepmat4_1_1normalize.html#a125e1f3f3574d5d7d8976ad4de3940dd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.html new file mode 100644 index 000000000..df02ce4eb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.html @@ -0,0 +1,200 @@ + + + + + + + +grid_tools: pmat4::normalized Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::normalized Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 61 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ normalized_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(size(a)) pmat4::normalized::normalized_d (real(dp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the normalized version of a double precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, double precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 157 of file pmat4.f90.

    + +
    +
    + +

    ◆ normalized_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(size(a)) pmat4::normalized::normalized_s (real(sp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the normalized version of a single precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, single precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 143 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.js new file mode 100644 index 000000000..9854459b6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1normalized.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1normalized = +[ + [ "normalized_d", "interfacepmat4_1_1normalized.html#a773f419aed5b10a11409eadce15b7c4d", null ], + [ "normalized_s", "interfacepmat4_1_1normalized.html#af3d523bbef3d04c373c308706c96668b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.html new file mode 100644 index 000000000..3ccfbc241 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.html @@ -0,0 +1,222 @@ + + + + + + + +grid_tools: pmat4::orthogonalized Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::orthogonalized Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 62 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ orthogonalized_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(size(u)) pmat4::orthogonalized::orthogonalized_d (real(dp), dimension(:), intent(in) u,
    real(dp), dimension(:), intent(in) a 
    )
    +
    +private
    +
    + +

    Return the part of vector a that is orthogonal to unit vector u.

    +
    Parameters
    + + + +
    [in]ureal type input unit vector
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, double precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 187 of file pmat4.f90.

    + +
    +
    + +

    ◆ orthogonalized_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(size(u)) pmat4::orthogonalized::orthogonalized_s (real(sp), dimension(:), intent(in) u,
    real(sp), dimension(:), intent(in) a 
    )
    +
    +private
    +
    + +

    Return the part of vector a that is orthogonal to unit vector u.

    +
    Parameters
    + + + +
    [in]ureal type input unit vector
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, single precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 172 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.js new file mode 100644 index 000000000..40b616562 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1orthogonalized.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1orthogonalized = +[ + [ "orthogonalized_d", "interfacepmat4_1_1orthogonalized.html#ac1115de7970e5376add791ed9be37378", null ], + [ "orthogonalized_s", "interfacepmat4_1_1orthogonalized.html#aae6dfe3f9e03838ab8b26685e7ba4142", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.html new file mode 100644 index 000000000..a35b8ff37 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.html @@ -0,0 +1,274 @@ + + + + + + + +grid_tools: pmat4::outer_product Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::outer_product Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 67 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ outer_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(size(a),size(b)) pmat4::outer_product::outer_product_d (real(dp), dimension(:), intent(in) a,
    real(dp), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two double precision real vectors.

    +
    Parameters
    + + + +
    [in]areal type input vector
    [in]breal type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 289 of file pmat4.f90.

    + +
    +
    + +

    ◆ outer_product_i()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    integer(spi) function, dimension(size(a),size(b)) pmat4::outer_product::outer_product_i (integer(spi), dimension(:), intent(in) a,
    integer(spi), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two integer vectors.

    +
    Parameters
    + + + +
    [in]ainteger type input vector
    [in]binteger type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 305 of file pmat4.f90.

    + +
    +
    + +

    ◆ outer_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(size(a),size(b)) pmat4::outer_product::outer_product_s (real(sp), dimension(:), intent(in) a,
    real(sp), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two single precision real vectors.

    +
    Parameters
    + + + +
    [in]areal type input vector
    [in]breal type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 273 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.js new file mode 100644 index 000000000..3d29a2896 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1outer__product.js @@ -0,0 +1,6 @@ +var interfacepmat4_1_1outer__product = +[ + [ "outer_product_d", "interfacepmat4_1_1outer__product.html#aa834bdb1756a4fe54ca51f210f57ea1e", null ], + [ "outer_product_i", "interfacepmat4_1_1outer__product.html#a6fc58c52c45a60a1c5ec7c75fbd1d8b9", null ], + [ "outer_product_s", "interfacepmat4_1_1outer__product.html#a5fd0b14dfe070404214360293b3c8545", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.html new file mode 100644 index 000000000..804c9c939 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::qtoax Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::qtoax Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine qtoax (q, v)
     Go from quaternion to axial 3-vector. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 99 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ qtoax()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::qtoax::qtoax (real(dp), dimension(0:3), intent(in) q,
    real(dp), dimension(3), intent(out) v 
    )
    +
    +private
    +
    + +

    Go from quaternion to axial 3-vector.

    +
    Parameters
    + + + +
    [in]qquaternion
    [in]vaxial 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1672 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.js new file mode 100644 index 000000000..d93da3c0e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtoax.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1qtoax = +[ + [ "qtoax", "interfacepmat4_1_1qtoax.html#a0896b667b401c8a30cd25b77f8bacc1a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.html new file mode 100644 index 000000000..0c5abd3a8 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::qtorot Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::qtorot Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine qtorot (q, rot)
     Go from quaternion to rotation matrix representations. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 97 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ qtorot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::qtorot::qtorot (real(dp), dimension(0:3), intent(in) q,
    real(dp), dimension(3,3), intent(out) rot 
    )
    +
    +private
    +
    + +

    Go from quaternion to rotation matrix representations.

    +
    Parameters
    + + + +
    [in]qquaternion representation
    [out]rotrotation matrix representations
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1646 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.js new file mode 100644 index 000000000..7a8e02245 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtorot.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1qtorot = +[ + [ "qtorot", "interfacepmat4_1_1qtorot.html#a2bddedc08d01eaca9153d5766e67d779", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.html new file mode 100644 index 000000000..b8bf26a80 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::qtospin Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::qtospin Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine qtospin (q, cspin)
     Go from the unit quaternion to the complex spinor representation. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 95 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ qtospin()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::qtospin::qtospin (real(dp), dimension(0:3), intent(in) q,
    complex(dpc), dimension(2,2), intent(out) cspin 
    )
    +
    +private
    +
    + +

    Go from the unit quaternion to the complex spinor representation.

    +
    Parameters
    + + + +
    [in]qgiven unit quaternion representation
    [out]cspinspinor representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1575 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.js new file mode 100644 index 000000000..c6fdcbf3a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1qtospin.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1qtospin = +[ + [ "qtospin", "interfacepmat4_1_1qtospin.html#abbef88d45c74716b3228ebadd2bbc995", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.html new file mode 100644 index 000000000..88522f42b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.html @@ -0,0 +1,170 @@ + + + + + + + +grid_tools: pmat4::rottoax Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::rottoax Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 92 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ rottoax()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::rottoax::rottoax (real(dp), dimension(3,3), intent(in) orth33,
    real(dp), dimension(3), intent(out) ax3 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + +
    [in]orth333*3 proper rotation matrix
    [out]ax3axial 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1518 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.js new file mode 100644 index 000000000..f0f4d6045 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoax.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1rottoax = +[ + [ "rottoax", "interfacepmat4_1_1rottoax.html#a845bc750f57ee0372724bd8efe85ccb3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.html new file mode 100644 index 000000000..39237afe2 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::rottoq Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::rottoq Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine rottoq (rot, q)
     Go from rotation matrix to a corresponding unit quaternion representation. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 96 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ rottoq()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::rottoq::rottoq (real(dp), dimension(3,3), intent(in) rot,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    +private
    +
    + +

    Go from rotation matrix to a corresponding unit quaternion representation.

    +
    Parameters
    + + + +
    [in]rotgiven rotation matrix
    [out]qquaternion representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1590 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.js new file mode 100644 index 000000000..a4c1a6935 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rottoq.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1rottoq = +[ + [ "rottoq", "interfacepmat4_1_1rottoq.html#a633827aeca9191e4a22aca3cf52fe7a1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.html new file mode 100644 index 000000000..63ef90ca6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.html @@ -0,0 +1,197 @@ + + + + + + + +grid_tools: pmat4::rowops Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::rowops Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 90 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ rowops()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::rowops::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 
    )
    +
    +private
    +
    + +

    Apply the row-operations, implied by ipiv and tt returned by rowgram, to the single column vector, v, to produce the transformed vector vv.

    +
    Parameters
    + + + + + + + +
    [in]mnumber of rows of matrix tt, dimension of vectors V and VV
    [in]nnumber of columns of matrix tt
    [in]ipivinteger vector encoding the pivoting sequence
    [in]ttrow-normalized matrix provided by subroutine rowgram
    [in]vinput single column vector
    [out]vvoutput column vector vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1400 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.js new file mode 100644 index 000000000..8c6892ec0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1rowops.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1rowops = +[ + [ "rowops", "interfacepmat4_1_1rowops.html#a24860f75f7fca741d4e7595661bacce3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.html new file mode 100644 index 000000000..fcd6746c3 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.html @@ -0,0 +1,560 @@ + + + + + + + +grid_tools: pmat4::sarea Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::sarea Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 81 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dqarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::sarea::dqarea_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,
    real(dp), intent(in) drlatc,
    real(dp), intent(in) drlonc 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of point A
    [in]drlonaincremental longitude of point A
    [in]drlatbincremental latitude of point B
    [in]drlonbincremental longitude of point B
    [in]drlatcincremental latitude of point C
    [in]drloncincremental longitude of point C
    +
    +
    +
    Returns
    area
    +
    Author
    R. J. Purser
    + +

    Definition at line 898 of file pmat4.f90.

    + +
    +
    + +

    ◆ dqarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::sarea::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 
    )
    +
    +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. Single precision version.

    +
    Parameters
    + + + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of point A
    [in]drlonaincremental longitude of point A
    [in]drlatbincremental latitude of point B
    [in]drlonbincremental longitude of point B
    [in]drlatcincremental latitude of point C
    [in]drloncincremental longitude of point C
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 869 of file pmat4.f90.

    + +
    +
    + +

    ◆ dtarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::sarea::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 
    )
    +
    +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. Double precision version.

    +
    Parameters
    + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of A
    [in]drlonaincremental longitude of A
    [in]drlatbincremental latitude of B
    [in]drlonbincremental longitude of B
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 825 of file pmat4.f90.

    + +
    +
    + +

    ◆ dtarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::sarea::dtarea_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 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of A
    [in]drlonaincremental longitude of A
    [in]drlatbincremental latitude of B
    [in]drlonbincremental longitude of B
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 786 of file pmat4.f90.

    + +
    +
    + +

    ◆ sarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::sarea::sarea_d (real(dp), dimension(3), intent(in) v1,
    real(dp), dimension(3), intent(in) v2,
    real(dp), dimension(3), intent(in) v3 
    )
    +
    +private
    +
    + +

    Compute the area of the spherical triangle, {v1,v2,v3}.

    +
    Parameters
    + + + + +
    [in]v1unit-3-vector vertex of the spherical triangle
    [in]v2unit-3-vector vertex of the spherical triangle
    [in]v3unit-3-vector vertex of the spherical triangle
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 723 of file pmat4.f90.

    + +
    +
    + +

    ◆ sarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::sarea::sarea_s (real(sp), dimension(3), intent(in) v1,
    real(sp), dimension(3), intent(in) v2,
    real(sp), dimension(3), intent(in) v3 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]v1area of the spherical triangle
    [in]v2area of the spherical triangle
    [in]v3area of the spherical triangle
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 668 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.js new file mode 100644 index 000000000..266148d21 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1sarea.js @@ -0,0 +1,9 @@ +var interfacepmat4_1_1sarea = +[ + [ "dqarea_d", "interfacepmat4_1_1sarea.html#a3ab1d3237c0e31432e8da680c59fd575", null ], + [ "dqarea_s", "interfacepmat4_1_1sarea.html#a8c800004aa4b350ab40463a8abc3b85a", null ], + [ "dtarea_d", "interfacepmat4_1_1sarea.html#a4362b81c866aa2319a5dc91dab11aeac", null ], + [ "dtarea_s", "interfacepmat4_1_1sarea.html#a364f46cd3d4a9bec95d18398b2eff92c", null ], + [ "sarea_d", "interfacepmat4_1_1sarea.html#a4209845703ee94e887eeaa958c71283e", null ], + [ "sarea_s", "interfacepmat4_1_1sarea.html#afa941100f8fab5668bd37a069e844725", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.html new file mode 100644 index 000000000..a0b685c5b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.html @@ -0,0 +1,190 @@ + + + + + + + +grid_tools: pmat4::setem Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::setem Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine setem (c, d, e, g, r)
     Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 100 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ setem()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::setem::setem (real(dp), intent(in) c,
    real(dp), intent(in) d,
    real(dp), intent(in) e,
    real(dp), intent(in) g,
    real(dp), dimension(3,3), intent(out) r 
    )
    +
    +private
    +
    + +

    Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix.

    +
    Parameters
    + + + + + + +
    [in]c0th component of given quaternion
    [in]d1st component of given quaternion
    [in]e2nd component of given quaternion
    [in]g3rd component of given quaternion
    [in]routput 3*3 real rotation matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1690 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.js new file mode 100644 index 000000000..67dd6dd0a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1setem.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1setem = +[ + [ "setem", "interfacepmat4_1_1setem.html#aebe672e27bf7de84d3568263017ed02c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.html new file mode 100644 index 000000000..66e2147eb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.html @@ -0,0 +1,313 @@ + + + + + + + +grid_tools: pmat4::setmobius Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::setmobius Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 107 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ setmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::setmobius::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 
    )
    +
    +private
    +
    + +

    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).

    +
    Parameters
    + + + + + + + + +
    [in]xc0cartesian point that will map to (0,0,1)
    [in]xc1cartesian point that will map to (1,0,0)
    [in]xc2cartesian point that will map to (0,0,-1)
    [out]aaMobius transformation complex coefficient
    [out]bbMobius transformation complex coefficient
    [out]ccMobius transformation complex coefficient
    [out]ddMobius transformation complex coefficient
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2123 of file pmat4.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ zsetmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::setmobius::zsetmobius (complex(dp), intent(in) z0,
    logical, intent(in) infz0,
    complex(dp), intent(in) z1,
    logical, intent(in) infz1,
    complex(dp), intent(in) z2,
    logical, intent(in) infz2,
    complex(dpc), intent(out) aa,
    complex(dpc), intent(out) bb,
    complex(dpc), intent(out) cc,
    complex(dpc), intent(out) dd 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + + + +
    [in]z0complex input point that will map to (0,0)
    [in]infz0logical indicator that z0 is the point at infinity
    [in]z1complex input point that will map to (1,0)
    [in]infz1logical indicator that z1 is the point at infinity
    [in]z2complex input point that will map to infinity
    [in]infz2logical indicator that z2 is the point at infinity
    [out]aaMobius transformation complex coefficient
    [out]bbMobius transformation complex coefficient
    [out]ccMobius transformation complex coefficient
    [out]ddMobius transformation complex coefficient
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2206 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.js new file mode 100644 index 000000000..f1c5cb384 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1setmobius.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1setmobius = +[ + [ "setmobius", "interfacepmat4_1_1setmobius.html#a5cde6d13f26ca88a19af53f6c13032a5", null ], + [ "zsetmobius", "interfacepmat4_1_1setmobius.html#a6bda0c568ebb0f01acdcd3a4532f6723", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.html new file mode 100644 index 000000000..d29790520 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.html @@ -0,0 +1,169 @@ + + + + + + + +grid_tools: pmat4::spintoq Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::spintoq Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine spintoq (cspin, q)
     Go from the complex spinor matrix to the unit quaternion representation. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 94 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ spintoq()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::spintoq::spintoq (complex(dpc), dimension(2,2), intent(in) cspin,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    +private
    +
    + +

    Go from the complex spinor matrix to the unit quaternion representation.

    +
    Parameters
    + + + +
    [in]cspincomplex spinor representation
    [out]qunit quaternion representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1562 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.js new file mode 100644 index 000000000..8fcd945ff --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1spintoq.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1spintoq = +[ + [ "spintoq", "interfacepmat4_1_1spintoq.html#a79dfd6a747071d2c21648fb4eab286bd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.html new file mode 100644 index 000000000..95116c187 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.html @@ -0,0 +1,241 @@ + + + + + + + +grid_tools: pmat4::trace Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::trace Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 78 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ trace_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::trace::trace_d (real(dp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given double precision real matrix.

    +
    Parameters
    + + +
    [in]breal type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 579 of file pmat4.f90.

    + +
    +
    + +

    ◆ trace_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function pmat4::trace::trace_i (integer(spi), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given integer matrix.

    +
    Parameters
    + + +
    [in]binteger type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 591 of file pmat4.f90.

    + +
    +
    + +

    ◆ trace_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::trace::trace_s (real(sp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given single precision real matrix.

    +
    Parameters
    + + +
    [in]breal type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 567 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.js new file mode 100644 index 000000000..b4834cf75 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1trace.js @@ -0,0 +1,6 @@ +var interfacepmat4_1_1trace = +[ + [ "trace_d", "interfacepmat4_1_1trace.html#aa2c2bbef4fa467ce9cd837a23862e9a2", null ], + [ "trace_i", "interfacepmat4_1_1trace.html#aea18e45962fa63aad5b4f9df7fdf82e8", null ], + [ "trace_s", "interfacepmat4_1_1trace.html#a42d7a5957636ec0a12cb0d63a66acd1d", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.html new file mode 100644 index 000000000..6e8ce564a --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.html @@ -0,0 +1,236 @@ + + + + + + + +grid_tools: pmat4::triple_product Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::triple_product Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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...
     
    +

    Detailed Description

    +
    +

    Definition at line 70 of file pmat4.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ triple_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::triple_product::triple_product_d (real(dp), dimension(3), intent(in) a,
    real(dp), dimension(3), intent(in) b,
    real(dp), dimension(3), intent(in) c 
    )
    +
    +private
    +
    + +

    Return the triple product of three double precision real 3-vectors.

    +
    Parameters
    + + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    [in]creal type input 3-vector
    +
    +
    +
    Returns
    tripleproduct result, scalar triple product
    +
    Author
    R. J. Purser
    + +

    Definition at line 336 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::triple_product::triple_product_s (real(sp), dimension(3), intent(in) a,
    real(sp), dimension(3), intent(in) b,
    real(sp), dimension(3), intent(in) c 
    )
    +
    +private
    +
    + +

    Return the triple product of three single precision real 3-vectors.

    +
    Parameters
    + + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    [in]creal type input 3-vector
    +
    +
    +
    Returns
    tripleproduct result, scalar triple product
    +
    Author
    R. J. Purser
    + +

    Definition at line 322 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.js new file mode 100644 index 000000000..cfd66eb09 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1triple__product.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1triple__product = +[ + [ "triple_product_d", "interfacepmat4_1_1triple__product.html#ac09bbaf5240d1a38792f158863387ddc", null ], + [ "triple_product_s", "interfacepmat4_1_1triple__product.html#a51410aa7f8cfc45bbd697ed4517ad5b0", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.html new file mode 100644 index 000000000..c497c7a0b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.html @@ -0,0 +1,197 @@ + + + + + + + +grid_tools: pmat4::znfun Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::znfun Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 104 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ znfun()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::znfun::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + +
    [in]ninteger order of the first of the returned derivatives of C.
    [in]zreal input argument in the function C(z)
    [out]znnth-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)
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1960 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.js new file mode 100644 index 000000000..f66bd2eb7 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1znfun.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1znfun = +[ + [ "znfun", "interfacepmat4_1_1znfun.html#af1af781fcc422c2aa4ca1dd1c8faab46", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.html new file mode 100644 index 000000000..18d6e5b4f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: pmat4::zntay Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::zntay Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 103 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ zntay()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::zntay::zntay (integer(spi), intent(in) n,
    real(dp), intent(in) z,
    real(dp), intent(out) zn 
    )
    +
    +private
    +
    + +

    Evaluate, by Taylor-Maclaurin expansion, the nth-derivative of the function, C(z)=cosh(sqrt(2z)), or equiavlently, of C(z)=cos(sqrt(-2z)).

    +
    Parameters
    + + + + +
    [in]ninteger order of the derivative
    [in]zreal argument
    [in]znreturned value of the nth derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1921 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.js new file mode 100644 index 000000000..765c577dd --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1zntay.js @@ -0,0 +1,4 @@ +var interfacepmat4_1_1zntay = +[ + [ "zntay", "interfacepmat4_1_1zntay.html#ad3e356698bbf2f8dcb481690b9ff180a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.html b/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.html new file mode 100644 index 000000000..ffdc6bc5f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.html @@ -0,0 +1,244 @@ + + + + + + + +grid_tools: pmat4::ztoc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4::ztoc Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 106 of file pmat4.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ztoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::ztoc::ztoc (complex(dpc), intent(in) z,
    logical, intent(in) infz,
    real(dp), dimension(3), intent(out) v 
    )
    +
    +private
    +
    + +

    Given a complex z, return the equivalent cartesian unit 3-vector associated by the polar stereographic projection.

    +
    Parameters
    + + + + +
    [in]zcomplex input argument
    [in]infzlogical indicator for z being the point at infinity
    [out]vcartesian unit 3-vector position equivalent to z
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2053 of file pmat4.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ ztocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::ztoc::ztocd (complex(dpc), intent(in) z,
    logical, intent(in) infz,
    real(dp), dimension(3), intent(out) v,
    complex(dpc), dimension(3), intent(out) vd 
    )
    +
    +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).

    +
    Note
    The derivative for the ideal point at infinity has not been coded yet.
    +
    Parameters
    + + + + + +
    [in]zcomplex input argument
    [in]infzlogical indicator for z being the point at infinity
    [out]vcartesian unit 3-vector position equivalent to z
    [out]vdderivative of cartesian v wrt z
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2083 of file pmat4.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.js b/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.js new file mode 100644 index 000000000..7f92bd55c --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat4_1_1ztoc.js @@ -0,0 +1,5 @@ +var interfacepmat4_1_1ztoc = +[ + [ "ztoc", "interfacepmat4_1_1ztoc.html#a941d83c0d2ab01d0061931077ff4fbf8", null ], + [ "ztocd", "interfacepmat4_1_1ztoc.html#ad7f8402a748411412a6f374b0e10056c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.html new file mode 100644 index 000000000..698775338 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.html @@ -0,0 +1,508 @@ + + + + + + + +grid_tools: pmat5::ctoc_schm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::ctoc_schm Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 47 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dctoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::dctoc (real(dp), intent(in) s,
    real(dp), dimension(3), intent(inout) xc1,
    real(dp), dimension(3), intent(inout) xc2 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.

    +
    Parameters
    + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 916 of file pmat5.f90.

    + +
    +
    + +

    ◆ dctocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::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 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.

    +
    Parameters
    + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 947 of file pmat5.f90.

    + +
    +
    + +

    ◆ dctocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::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 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    [out]ddxc22nd derivative, d^2(xc2)/(d(xc1)d(xc1)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 988 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::sctoc (real(sp), intent(in) s,
    real(sp), dimension(3), intent(inout) xc1,
    real(sp), dimension(3), intent(inout) xc2 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.

    +
    Parameters
    + + + + +
    [in]sSchmidt scaling parameter
    [in,out]xc1input cartesian 3-vector
    [in,out]xc2output cartesian unit 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 795 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::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 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.

    +
    Parameters
    + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 825 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctoc_schm::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 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in]xc1input cartesian 3-vector.
    [in]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    [out]ddxc22nd derivative, d^2(xc2)/(d(xc1)d(xc1)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 866 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.js new file mode 100644 index 000000000..0044cbedf --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctoc__schm.js @@ -0,0 +1,9 @@ +var interfacepmat5_1_1ctoc__schm = +[ + [ "dctoc", "interfacepmat5_1_1ctoc__schm.html#a311f99133c79c711c04bd4173d0de8d5", null ], + [ "dctocd", "interfacepmat5_1_1ctoc__schm.html#adbdfa6a3f889758f843c878a38bbcc1a", null ], + [ "dctocdd", "interfacepmat5_1_1ctoc__schm.html#afd7b5550f4af7b66058399e87b4e5c51", null ], + [ "sctoc", "interfacepmat5_1_1ctoc__schm.html#a1bd14814c1ce196e1fb1666d2c473168", null ], + [ "sctocd", "interfacepmat5_1_1ctoc__schm.html#a59976cc91d66baa6eaa8aaaa132cea31", null ], + [ "sctocdd", "interfacepmat5_1_1ctoc__schm.html#ad1519592ec41338f46f5e16811468796", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.html new file mode 100644 index 000000000..adc17fe7b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.html @@ -0,0 +1,237 @@ + + + + + + + +grid_tools: pmat5::ctog Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::ctog Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 40 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dctog()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctog::dctog (real(dp), dimension(3), intent(in) xe,
    real(dp), intent(out) dlat,
    real(dp), intent(out) dlon 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]dlatdegrees latitude.
    [out]dlondegrees longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 398 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctog()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctog::sctog (real(sp), dimension(3), intent(in) xe,
    real(sp), intent(out) dlat,
    real(sp), intent(out) dlon 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]dlatdegrees latitude.
    [out]dlondegrees longitude.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1994
    + +

    Definition at line 373 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.js new file mode 100644 index 000000000..7aadfe7f3 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctog.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1ctog = +[ + [ "dctog", "interfacepmat5_1_1ctog.html#ac755ba2fe18671bc2dee359168399282", null ], + [ "sctog", "interfacepmat5_1_1ctog.html#a37ef6420049a2fd2ebcda896b53d5339", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.html new file mode 100644 index 000000000..636b4b3f0 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.html @@ -0,0 +1,236 @@ + + + + + + + +grid_tools: pmat5::ctogr Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::ctogr Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 36 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dctogr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctogr::dctogr (real(dp), dimension(3), intent(in) xe,
    real(dp), intent(out) rlat,
    real(dp), intent(out) rlon 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]rlatradians latitude.
    [out]rlonradians longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 198 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctogr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ctogr::sctogr (real(sp), dimension(3), intent(in) xe,
    real(sp), intent(out) rlat,
    real(sp), intent(out) rlon 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]rlatradians latitude.
    [out]rlonradians longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 173 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.js new file mode 100644 index 000000000..2d3a05a3e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ctogr.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1ctogr = +[ + [ "dctogr", "interfacepmat5_1_1ctogr.html#a916a7f306cc4be4477a2aad997c1d3cc", null ], + [ "sctogr", "interfacepmat5_1_1ctogr.html#a0d2fb37c9fc083ced37ffd7967c95343", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.html new file mode 100644 index 000000000..9031ae5c8 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.html @@ -0,0 +1,293 @@ + + + + + + + +grid_tools: pmat5::frametwist Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::frametwist Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 46 of file pmat5.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ frametwist()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::frametwist::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]xpP-frame cartesian X-vector.
    [in]ypP-frame cartesian Y-vector.
    [in]zpP-frame cartesian Z-vector.
    [in]xvV-frame cartesian X-vector.
    [in]yvV-frame cartesian Y-vector.
    [in]zvV-frame cartesian Z-vector.
    [out]twistrelative rotation angle (radians) of frames.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 778 of file pmat5.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ sframetwist()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::frametwist::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + + +
    [in]sxpP-frame cartesian X-vector.
    [in]sypP-frame cartesian Y-vector.
    [in]szpP-frame cartesian Z-vector.
    [in]sxvV-frame cartesian X-vector.
    [in]syvV-frame cartesian Y-vector.
    [in]szvV-frame cartesian Z-vector.
    [out]stwistrelative rotation angle (radians) of frames.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 751 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.js new file mode 100644 index 000000000..481aa4f3c --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1frametwist.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1frametwist = +[ + [ "frametwist", "interfacepmat5_1_1frametwist.html#a1810c74f2b72abc08f36c26d20ee664c", null ], + [ "sframetwist", "interfacepmat5_1_1frametwist.html#a3a41677bae3596303c7e539f356595dd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.html new file mode 100644 index 000000000..e9d8f4806 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.html @@ -0,0 +1,570 @@ + + + + + + + +grid_tools: pmat5::grtoc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::grtoc Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 37 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dgrtoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::dgrtoc (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates.

    +

    Double proecision version.

    +
    Parameters
    + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 237 of file pmat5.f90.

    + +
    +
    + +

    ◆ dgrtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::dgrtocd (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.

    +

    Double precision version.

    +
    Parameters
    + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 280 of file pmat5.f90.

    + +
    +
    + +

    ◆ dgrtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::dgrtocdd (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon,
    real(dp), dimension(3), intent(out) ddxedlatdlat,
    real(dp), dimension(3), intent(out) ddxedlatdlon,
    real(dp), dimension(3), intent(out) ddxedlondlon 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude.

    +

    Double precision version.

    +
    Parameters
    + + + + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    [out]ddxedlatdlatDerivative, d^2(xe)/(d(rlat)d(rlat)).
    [out]ddxedlatdlonDerivative, d^2(xe)/(d(rlat)d(rlon)).
    [out]ddxedlondlonDerivative, d^2(xe)/(d(rlon)d(rlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 340 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgrtoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::sgrtoc (real(sp), intent(in) rlat,
    real(sp), intent(in) rlon,
    real(sp), dimension(3), intent(out) xe 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates.

    +

    Single proecision version.

    +
    Parameters
    + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 220 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgrtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::sgrtocd (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 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.

    +

    Single precision version.

    +
    Parameters
    + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 257 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgrtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::grtoc::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 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude.

    +

    Single precision version.

    +
    Parameters
    + + + + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    [out]ddxedlatdlatDerivative, d^2(xe)/(d(rlat)d(rlat)).
    [out]ddxedlatdlonDerivative, d^2(xe)/(d(rlat)d(rlon)).
    [out]ddxedlondlonDerivative, d^2(xe)/(d(rlon)d(rlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 307 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.js new file mode 100644 index 000000000..6c025e418 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1grtoc.js @@ -0,0 +1,9 @@ +var interfacepmat5_1_1grtoc = +[ + [ "dgrtoc", "interfacepmat5_1_1grtoc.html#ab41541e2ff5061658f10b4dc85dd6d41", null ], + [ "dgrtocd", "interfacepmat5_1_1grtoc.html#a72ddd04897b2bcb2afa988b9aa3a3951", null ], + [ "dgrtocdd", "interfacepmat5_1_1grtoc.html#a37bd8768b3cfe4d9d3fb35884cd7c22b", null ], + [ "sgrtoc", "interfacepmat5_1_1grtoc.html#a1b352ea961d84e67f2b691bde6329464", null ], + [ "sgrtocd", "interfacepmat5_1_1grtoc.html#a469b3c08267d7c7569cdf455ad00310d", null ], + [ "sgrtocdd", "interfacepmat5_1_1grtoc.html#a3b648bea2b96e7c8898e1a25e73c2637", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.html new file mode 100644 index 000000000..f11b95f59 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.html @@ -0,0 +1,571 @@ + + + + + + + +grid_tools: pmat5::gtoc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::gtoc Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 41 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dgtoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::dgtoc (real(dp), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(3), intent(out) xe 
    )
    +
    +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.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 445 of file pmat5.f90.

    + +
    +
    + +

    ◆ dgtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::dgtocd (real(dp), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 496 of file pmat5.f90.

    + +
    +
    + +

    ◆ dgtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::dgtocdd (real(dp), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon,
    real(dp), dimension(3), intent(out) ddxedlatdlat,
    real(dp), dimension(3), intent(out) ddxedlatdlon,
    real(dp), dimension(3), intent(out) ddxedlondlon 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatd(xe)/d(dlat).
    [out]dxedlond(xe)/d(dlon).
    [out]ddxedlatdlatderivative, d^2(xe)/(d(dlat)d(dlat)).
    [out]ddxedlatdlonderivative, d^2(xe)/(d(dlat)d(dlon)).
    [out]ddxedlondlonderivative, d^2(xe)/(d(dlon)d(dlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 565 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::sgtoc (real(sp), intent(in) dlat,
    real(sp), intent(in) dlon,
    real(sp), dimension(3), intent(out) xe 
    )
    +
    +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.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xeEarth-centered cartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1994
    + +

    Definition at line 423 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::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 
    )
    +
    +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. Single precision version.

    +
    Parameters
    + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 470 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoc::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 
    )
    +
    +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. Single precision version.

    +
    Parameters
    + + + + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    [out]ddxedlatdlatderivative, d^2(xe)/(d(dlat)d(dlat)).
    [out]ddxedlatdlonderivative, d^2(xe)/(d(dlat)d(dlon)).
    [out]ddxedlondlonderivative, d^2(xe)/(d(dlon)d(dlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 528 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.js new file mode 100644 index 000000000..fcd480691 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoc.js @@ -0,0 +1,9 @@ +var interfacepmat5_1_1gtoc = +[ + [ "dgtoc", "interfacepmat5_1_1gtoc.html#a252cff22deb3157eaa991c5d990202f9", null ], + [ "dgtocd", "interfacepmat5_1_1gtoc.html#a08c47f8989a501fd922e760cc610ffd2", null ], + [ "dgtocdd", "interfacepmat5_1_1gtoc.html#a721bdbf1c0add7f84e5e31e177356ea6", null ], + [ "sgtoc", "interfacepmat5_1_1gtoc.html#a35113c9ac6c87dc3467a8e951d547d9b", null ], + [ "sgtocd", "interfacepmat5_1_1gtoc.html#a820e349dffdd9a97b835d4f0ba09fa21", null ], + [ "sgtocdd", "interfacepmat5_1_1gtoc.html#a27afb017885869e9d62e4ca3a57d2bb3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.html new file mode 100644 index 000000000..98a909a99 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.html @@ -0,0 +1,382 @@ + + + + + + + +grid_tools: pmat5::gtoframe Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::gtoframe Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 43 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ gtoframem()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframe::gtoframem (real(dp), intent(in) plat,
    real(dp), intent(in) plon,
    real(dp), dimension(3,3), intent(out) orth 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]platlatitude (degrees) of point.
    [in]plonlongitude (degrees) of point.
    [out]orthorthonormal matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 617 of file pmat5.f90.

    + +
    +
    + +

    ◆ gtoframev()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframe::gtoframev (real(dp), intent(in) plat,
    real(dp), intent(in) plon,
    real(dp), dimension(3), intent(out) xp,
    real(dp), dimension(3), intent(out) yp,
    real(dp), dimension(3), intent(out) zp 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]platlatitude (degrees) of point.
    [in]plonlongitude (degrees) of point.
    [out]xpunit X-basis vector of cartesian frame.
    [out]ypunit Y-basis vector of cartesian frame.
    [out]zpunit Z-basis vector of cartesian frame.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 662 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtoframem()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframe::sgtoframem (real(sp), intent(in) splat,
    real(sp), intent(in) splon,
    real(sp), dimension(3,3), intent(out) sorth 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]splatlatitude (degrees) of point.
    [in]splonlongitude (degrees) of point.
    [out]sorthorthonormal matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 600 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtoframev()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframe::sgtoframev (real(sp), intent(in) splat,
    real(sp), intent(in) splon,
    real(sp), dimension(3), intent(out) sxp,
    real(sp), dimension(3), intent(out) syp,
    real(sp), dimension(3), intent(out) szp 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]splatlatitude (degrees) of point.
    [in]splonlongitude (degrees) of point.
    [out]sxpxp unit X-basis vector of cartesian frame.
    [out]sypyp unit Y-basis vector of cartesian frame.
    [out]szpzp unit Z-basis vector of cartesian frame.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 637 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.js new file mode 100644 index 000000000..1f112b809 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1gtoframe.js @@ -0,0 +1,7 @@ +var interfacepmat5_1_1gtoframe = +[ + [ "gtoframem", "interfacepmat5_1_1gtoframe.html#aecd5c543114ed58377e9c6dca455182d", null ], + [ "gtoframev", "interfacepmat5_1_1gtoframe.html#a916e166ff2a86a9d3888728aa6d364dc", null ], + [ "sgtoframem", "interfacepmat5_1_1gtoframe.html#a20da5d35d41f32559a35e546864405b0", null ], + [ "sgtoframev", "interfacepmat5_1_1gtoframe.html#a62ef0eb9d9bf3b4347490914ceae2a2d", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.html new file mode 100644 index 000000000..1773f3c3e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.html @@ -0,0 +1,237 @@ + + + + + + + +grid_tools: pmat5::ininmap Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::ininmap Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 34 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dininmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ininmap::dininmap (real(dp), intent(in) alon0,
    real(dp), intent(in) alat0,
    real(dp), dimension(3,3), intent(out) rot3 
    )
    +
    +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.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of projection center.
    [in]alat0geographical latitude (degrees) of projection center.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 86 of file pmat5.f90.

    + +
    +
    + +

    ◆ sininmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::ininmap::sininmap (real(sp), intent(in) alon0,
    real(sp), intent(in) alat0,
    real(sp), dimension(3,3), intent(out) rot3 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of projection center.
    [in]alat0geographical latitude (degrees) of projection center.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1995
    + +

    Definition at line 64 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.js new file mode 100644 index 000000000..789f0c457 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1ininmap.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1ininmap = +[ + [ "dininmap", "interfacepmat5_1_1ininmap.html#abf455bc6bd0c29b61754960b53e8fb30", null ], + [ "sininmap", "interfacepmat5_1_1ininmap.html#acfad2d8ddcde6ef47eaf59a1605218f1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.html new file mode 100644 index 000000000..03edf5877 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.html @@ -0,0 +1,237 @@ + + + + + + + +grid_tools: pmat5::inivmap Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::inivmap Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 35 of file pmat5.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dinivmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::inivmap::dinivmap (real(dp), intent(in) alon0,
    real(dp), intent(in) alat0,
    real(dp), dimension(3,3), intent(out) rot3 
    )
    +
    +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) at the viewing nadir.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of viewing nadir.
    [in]alat0geographical latitude (degrees) of viewing nadir.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 140 of file pmat5.f90.

    + +
    +
    + +

    ◆ sinivmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::inivmap::sinivmap (real(sp), intent(in) alon0,
    real(sp), intent(in) alat0,
    real(sp), dimension(3,3), intent(out) rot3 
    )
    +
    +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) at the viewing nadir.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of viewing nadir.
    [in]alat0geographical latitude (degrees) of viewing nadir.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1995
    + +

    Definition at line 108 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.js new file mode 100644 index 000000000..12e10bd70 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1inivmap.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1inivmap = +[ + [ "dinivmap", "interfacepmat5_1_1inivmap.html#ab6820f511d2a1cc1b5659c4815a5aa25", null ], + [ "sinivmap", "interfacepmat5_1_1inivmap.html#a252d4a4943465b8b99b71ec6f49a48c2", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.html new file mode 100644 index 000000000..b91302321 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.html @@ -0,0 +1,279 @@ + + + + + + + +grid_tools: pmat5::paraframe Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::paraframe Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 45 of file pmat5.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ paraframe()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::paraframe::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + +
    [in]xpreference orthonormal P-frame cartesian X-vector.
    [in]ypreference orthonormal P-frame cartesian Y-vector.
    [in]zpreference orthonormal P-frame cartesian Z-vector.
    [out]xvV-frame cartesian X-vector.
    [out]yvV-frame cartesian Y-vector.
    [in]zvdependent point zenith, V-frame cartesian Z-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 719 of file pmat5.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ sparaframe()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::paraframe::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 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + + + + +
    [in]sxpreference orthonormal P-frame cartesian X-vector.
    [in]sypreference orthonormal P-frame cartesian Y-vector.
    [in]szpreference orthonormal P-frame cartesian Z-vector.
    [out]sxvV-frame cartesian X-vector.
    [out]syvV-frame cartesian Y-vector.
    [in]szvdependent point zenith, V-frame cartesian Z-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 696 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.js new file mode 100644 index 000000000..33ac6c4ea --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1paraframe.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1paraframe = +[ + [ "paraframe", "interfacepmat5_1_1paraframe.html#a096376a6e5b873c7aa2d20a42128506e", null ], + [ "sparaframe", "interfacepmat5_1_1paraframe.html#a1c78f9db9ac3151983ce3fde3d7e05e4", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.html new file mode 100644 index 000000000..557f67390 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.html @@ -0,0 +1,190 @@ + + + + + + + +grid_tools: pmat5::plctoc Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::plctoc Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine plctoc (s, n, x, y, z)
     Perform Schmidt transformation with scaling parameter s to a polyline. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 51 of file pmat5.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ plctoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::plctoc::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 
    )
    +
    +private
    +
    + +

    Perform Schmidt transformation with scaling parameter s to a polyline.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1128 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.js new file mode 100644 index 000000000..3069bfa23 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plctoc.js @@ -0,0 +1,4 @@ +var interfacepmat5_1_1plctoc = +[ + [ "plctoc", "interfacepmat5_1_1plctoc.html#a68021c3029fa88132e844be08d4040cf", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.html new file mode 100644 index 000000000..d134dcf29 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.html @@ -0,0 +1,263 @@ + + + + + + + +grid_tools: pmat5::plrot Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::plrot Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine plrot (rot3, n, x, y, z)
     Apply a constant rotation to a three dimensional polyline. More...
     
    subroutine dplrot (rot3, n, x, y, z)
     Apply a constant rotation to a three dimensional polyline. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 49 of file pmat5.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ plrot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::plrot::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 
    )
    +
    +private
    +
    + +

    Apply a constant rotation to a three dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation matrix.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1040 of file pmat5.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ dplrot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::plrot::dplrot (real(dp), dimension(3,3), intent(in) rot3,
    integer, intent(in) n,
    real(dp), dimension(n), intent(inout) x,
    real(dp), dimension(n), intent(inout) y,
    real(dp), dimension(n), intent(inout) z 
    )
    +
    +private
    +
    + +

    Apply a constant rotation to a three dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation matrix.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1084 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.js new file mode 100644 index 000000000..eee8e4625 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plrot.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1plrot = +[ + [ "plrot", "interfacepmat5_1_1plrot.html#a8b2fdd45a529ed500bd71c219debfb45", null ], + [ "dplrot", "interfacepmat5_1_1plrot.html#a9947d2785405b248db1f652ebf4c2f3a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.html b/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.html new file mode 100644 index 000000000..c1fad8ae6 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.html @@ -0,0 +1,263 @@ + + + + + + + +grid_tools: pmat5::plroti Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5::plroti Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine plroti (rot3, n, x, y, z)
     Invert the rotation of a three-dimensional polyline. More...
     
    subroutine dplroti (rot3, n, x, y, z)
     Invert the rotation of a three-dimensional polyline. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 50 of file pmat5.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ plroti()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::plroti::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 
    )
    +
    +private
    +
    + +

    Invert the rotation of a three-dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation to be inverted.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1062 of file pmat5.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ dplroti()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::plroti::dplroti (real(dp), dimension(3,3), intent(in) rot3,
    integer, intent(in) n,
    real(dp), dimension(n), intent(inout) x,
    real(dp), dimension(n), intent(inout) y,
    real(dp), dimension(n), intent(inout) z 
    )
    +
    +private
    +
    + +

    Invert the rotation of a three-dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation to be inverted.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1106 of file pmat5.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.js b/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.js new file mode 100644 index 000000000..ac645e7c9 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat5_1_1plroti.js @@ -0,0 +1,5 @@ +var interfacepmat5_1_1plroti = +[ + [ "plroti", "interfacepmat5_1_1plroti.html#a6aa4b488c9d07d3549dab608e4f907a4", null ], + [ "dplroti", "interfacepmat5_1_1plroti.html#afefd1c1a61a6e0e64d7ff7e30c2581dc", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1inv.html b/ver-1.11.0/grid_tools/interfacepmat_1_1inv.html new file mode 100644 index 000000000..9ef4ee49b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1inv.html @@ -0,0 +1,1106 @@ + + + + + + + +grid_tools: pmat::inv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::inv Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    subroutine cinvmt (a)
     Invert complex matrix in place. More...
     
    subroutine cinvmtf (a, ff)
     Invert a complex matrix in place, or flag if process fails. More...
     
    subroutine clinmmt (a, b)
     Invert complex linear system with multiple right-hand side vectors. More...
     
    subroutine clinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine clinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine clinmvtf (a, b, ff)
     Invert complex linear system with single right-hand side vector. More...
     
    subroutine dinvmt (a)
     Invert double precision matrix in place. More...
     
    subroutine dinvmtf (a, ff)
     Invert a double precision matrix in place, or flag if process fails. More...
     
    subroutine dlinmmt (a, b)
     Invert linear system with multiple right-hand side vectors. More...
     
    subroutine dlinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine dlinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine dlinmvtf (a, b, ff)
     Invert linear system with single right-hand side vector. More...
     
    subroutine iinvf (imat, ff)
     Invert integer square matrix, imat, if possible, but flag ff=.true. More...
     
    subroutine sinvmt (a)
     Invert single precision matrix in place. More...
     
    subroutine sinvmtf (a, ff)
     Invert a single precision matrix in place, or flag if process fails. More...
     
    subroutine slinmmt (a, b)
     Invert linear system with multiple right-hand side vectors. More...
     
    subroutine slinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine slinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine slinmvtf (a, b, ff)
     Invert linear system with single right-hand side vector. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 31 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::inv::cinvmt (complex(dpc), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert complex matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 104 of file pmat.f90.

    + +
    +
    + +

    ◆ cinvmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::cinvmtf (complex(dpc), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert a complex matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 191 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmmt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::clinmmt (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert complex linear system with multiple right-hand side vectors.

    +

    Complex double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 256 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::clinmmtf (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Complex double precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 320 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::clinmvt (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Complex double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 372 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::clinmvtf (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert complex linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 430 of file pmat.f90.

    + +
    +
    + +

    ◆ dinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::inv::dinvmt (real(dp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert double precision matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 93 of file pmat.f90.

    + +
    +
    + +

    ◆ dinvmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::dinvmtf (real(dp), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert a double precision matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 154 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmmt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::dlinmmt (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors.

    +

    Double precision version

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 243 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::dlinmmtf (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 295 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::dlinmvt (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 358 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::dlinmvtf (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 408 of file pmat.f90.

    + +
    +
    + +

    ◆ iinvf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::iinvf (integer(spi), dimension(:,:), intent(inout) imat,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert integer square matrix, imat, if possible, but flag ff=.true.

    +

    if not possible. (Determinant of imat must be +1 or -1)

    +
    Parameters
    + + + +
    [in,out]imatinteger square matrix
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 452 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::inv::sinvmt (real(sp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert single precision matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 82 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::sinvmtf (real(sp), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert a single precision matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 116 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmmt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::slinmmt (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 230 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::slinmmtf (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 270 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::slinmvt (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 344 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::inv::slinmvtf (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 386 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1inv.js b/ver-1.11.0/grid_tools/interfacepmat_1_1inv.js new file mode 100644 index 000000000..48c0d82e1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1inv.js @@ -0,0 +1,22 @@ +var interfacepmat_1_1inv = +[ + [ "cinvmt", "interfacepmat_1_1inv.html#a986e4b50840bc8170e807503b74dfab5", null ], + [ "cinvmtf", "interfacepmat_1_1inv.html#a7f91b603923e7c8f326979a96f369cf6", null ], + [ "clinmmt", "interfacepmat_1_1inv.html#afee7b027ec0e78a0370824eca5cc8eaa", null ], + [ "clinmmtf", "interfacepmat_1_1inv.html#af225a1efb0329f70186a3ed2cca28015", null ], + [ "clinmvt", "interfacepmat_1_1inv.html#ae4602598857143b359475ca605e3a013", null ], + [ "clinmvtf", "interfacepmat_1_1inv.html#ab78dbc472c9f8068caa71cf6f1093e37", null ], + [ "dinvmt", "interfacepmat_1_1inv.html#ab4527e2ff672c675bced9f9c0d686a0b", null ], + [ "dinvmtf", "interfacepmat_1_1inv.html#a0e5af0717d280cd08ef53594d6162226", null ], + [ "dlinmmt", "interfacepmat_1_1inv.html#ac852f38632b6af926623aa6ecb032602", null ], + [ "dlinmmtf", "interfacepmat_1_1inv.html#ad33a2f9c64003ef70aeb939e756acb1c", null ], + [ "dlinmvt", "interfacepmat_1_1inv.html#ad7c18732c70e958492f16f40ef771ae0", null ], + [ "dlinmvtf", "interfacepmat_1_1inv.html#a50026fe3078497880c97c984ce7de96d", null ], + [ "iinvf", "interfacepmat_1_1inv.html#a1154ad662cfccc73ce167321b4d762df", null ], + [ "sinvmt", "interfacepmat_1_1inv.html#a42370b46ba87997e7fc39715a05c68a5", null ], + [ "sinvmtf", "interfacepmat_1_1inv.html#a3bc4f0ba9fbbc209c86622da648483e5", null ], + [ "slinmmt", "interfacepmat_1_1inv.html#a22f25e2fcfe2e6352e8d2a2eaa636d9c", null ], + [ "slinmmtf", "interfacepmat_1_1inv.html#a6c3368b428da394213d47bf5dfca0f29", null ], + [ "slinmvt", "interfacepmat_1_1inv.html#a44fa7dc12970f196eed1142e0933f409", null ], + [ "slinmvtf", "interfacepmat_1_1inv.html#a1a011af54e8f29e0eef44b5714d68e81", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1invl.html b/ver-1.11.0/grid_tools/interfacepmat_1_1invl.html new file mode 100644 index 000000000..501d5c0ee --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1invl.html @@ -0,0 +1,304 @@ + + + + + + + +grid_tools: pmat::invl Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::invl Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    subroutine dinvl (a)
     Invert lower triangular matrix in place. More...
     
    subroutine dlinlv (a, u)
     Solve linear system involving lower triangular system matrix. More...
     
    subroutine sinvl (a)
     Invert lower triangular matrix in place. More...
     
    subroutine slinlv (a, u)
     Solve linear system involving lower triangular system matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 39 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dinvl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::invl::dinvl (real(dp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert lower triangular matrix in place.

    +

    Double precision.

    +
    Parameters
    + + +
    [in,out]alower triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1154 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinlv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::invl::dlinlv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving lower triangular system matrix.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]alower triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1189 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::invl::sinvl (real(sp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert lower triangular matrix in place.

    +

    Single precision.

    +
    Parameters
    + + +
    [in,out]alower triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1136 of file pmat.f90.

    + +
    +
    + +

    ◆ slinlv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::invl::slinlv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving lower triangular system matrix.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]alower triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1174 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1invl.js b/ver-1.11.0/grid_tools/interfacepmat_1_1invl.js new file mode 100644 index 000000000..9ea0c14c7 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1invl.js @@ -0,0 +1,7 @@ +var interfacepmat_1_1invl = +[ + [ "dinvl", "interfacepmat_1_1invl.html#adaf7eeb7db25b49f54360d8154ed9ee3", null ], + [ "dlinlv", "interfacepmat_1_1invl.html#aa7e3ce03e5f8ab85ef0ab4ea76d99efa", null ], + [ "sinvl", "interfacepmat_1_1invl.html#abffb73fbc094035656ef45f729c83155", null ], + [ "slinlv", "interfacepmat_1_1invl.html#a15704d7a0c0e755249ba7381990d9165", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1invu.html b/ver-1.11.0/grid_tools/interfacepmat_1_1invu.html new file mode 100644 index 000000000..b8015a3be --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1invu.html @@ -0,0 +1,304 @@ + + + + + + + +grid_tools: pmat::invu Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::invu Interface Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Private Member Functions

    subroutine dinvu (a)
     Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
     
    subroutine dlinuv (a, u)
     Solve linear system involving upper triangular system matrix. More...
     
    subroutine sinvu (a)
     Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
     
    subroutine slinuv (a, u)
     Solve linear system involving upper triangular system matrix. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 40 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ dinvu()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::invu::dinvu (real(dp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

    +

    Double precision version.

    +
    Parameters
    + + +
    [in,out]aupper triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1127 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinuv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::invu::dlinuv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving upper triangular system matrix.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]aupper triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1219 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvu()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::invu::sinvu (real(sp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in,out]aupper triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1117 of file pmat.f90.

    + +
    +
    + +

    ◆ slinuv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::invu::slinuv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving upper triangular system matrix.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]aupper triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1204 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1invu.js b/ver-1.11.0/grid_tools/interfacepmat_1_1invu.js new file mode 100644 index 000000000..6d8f53954 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1invu.js @@ -0,0 +1,7 @@ +var interfacepmat_1_1invu = +[ + [ "dinvu", "interfacepmat_1_1invu.html#a6ee1bcd5ad53fb336ec333f55a7354a0", null ], + [ "dlinuv", "interfacepmat_1_1invu.html#a8633f57d3ce40c0ecd00ec72d4254068", null ], + [ "sinvu", "interfacepmat_1_1invu.html#a716a1d1dd2921f0646999a91e9622d0c", null ], + [ "slinuv", "interfacepmat_1_1invu.html#a2ba603d3176c8c84a912ac35f4f01b79", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.html b/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.html new file mode 100644 index 000000000..f2e8efe40 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.html @@ -0,0 +1,129 @@ + + + + + + + +grid_tools: pmat::l1lm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::l1lm Interface Reference
    +
    +
    + + + + + + + + + + +

    +Private Member Functions

    dL1Lm
     
    dL1Lmf
     
    sL1Lm
     
    sL1Lmf
     
    +

    Detailed Description

    +
    +

    Definition at line 37 of file pmat.f90.

    +

    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.js b/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.js new file mode 100644 index 000000000..ccd509a5f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1l1lm.js @@ -0,0 +1,7 @@ +var interfacepmat_1_1l1lm = +[ + [ "dL1Lm", "interfacepmat_1_1l1lm.html#a0e6f6f7f96ed071ce689b7097124f483", null ], + [ "dL1Lmf", "interfacepmat_1_1l1lm.html#aa830b0bb18aa0e75a4b5cae275b7faf8", null ], + [ "sL1Lm", "interfacepmat_1_1l1lm.html#a48cf0adb7201573678923049f651bc84", null ], + [ "sL1Lmf", "interfacepmat_1_1l1lm.html#a8dc6b585257ca702c43ab135cafd72b4", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.html b/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.html new file mode 100644 index 000000000..d1d464ba1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.html @@ -0,0 +1,129 @@ + + + + + + + +grid_tools: pmat::ldlm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::ldlm Interface Reference
    +
    +
    + + + + + + + + + + +

    +Private Member Functions

    dLdLm
     
    dLdLmf
     
    sLdLm
     
    sLdLmf
     
    +

    Detailed Description

    +
    +

    Definition at line 38 of file pmat.f90.

    +

    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.js b/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.js new file mode 100644 index 000000000..0b9f35b45 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1ldlm.js @@ -0,0 +1,7 @@ +var interfacepmat_1_1ldlm = +[ + [ "dLdLm", "interfacepmat_1_1ldlm.html#a2bc8c0424c0f52f1df12aa12ef428be2", null ], + [ "dLdLmf", "interfacepmat_1_1ldlm.html#a0c20ffa10062752fbba304d9e836e9d5", null ], + [ "sLdLm", "interfacepmat_1_1ldlm.html#a2cd213514d8ed051c63345c147d575eb", null ], + [ "sLdLmf", "interfacepmat_1_1ldlm.html#a95d74fb16ef6f974f129de4b7e51b8b0", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.html b/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.html new file mode 100644 index 000000000..b43b59fee --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.html @@ -0,0 +1,493 @@ + + + + + + + +grid_tools: pmat::ldum Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::ldum Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    subroutine cldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine cldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    subroutine dldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine dldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    subroutine sldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine sldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 27 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::cldum (complex(dpc), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    complex(dpc), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Complex double precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 509 of file pmat.f90.

    + +
    +
    + +

    ◆ cldumf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::cldumf (complex(dpc), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    complex(dpc), intent(out) d,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Complex double precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 660 of file pmat.f90.

    + +
    +
    + +

    ◆ dldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::dldum (real(dp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(dp), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 493 of file pmat.f90.

    + +
    +
    + +

    ◆ dldumf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::dldumf (real(dp), dimension(:,:), intent(inout) a,
    integer, dimension(:), intent(out) ipiv,
    real(dp), intent(out) d,
    logical(spi), intent(out) ff 
    )
    +
    +private
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Double precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 593 of file pmat.f90.

    + +
    +
    + +

    ◆ sldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::sldum (real(sp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(sp), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 477 of file pmat.f90.

    + +
    +
    + +

    ◆ sldumf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::ldum::sldumf (real(sp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(sp), intent(out) d,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Single precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 526 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.js b/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.js new file mode 100644 index 000000000..7c8437752 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1ldum.js @@ -0,0 +1,9 @@ +var interfacepmat_1_1ldum = +[ + [ "cldum", "interfacepmat_1_1ldum.html#a728a4a13d893dc4524a5387b826449e7", null ], + [ "cldumf", "interfacepmat_1_1ldum.html#a44eebdd9fa3544d08abae813114678f9", null ], + [ "dldum", "interfacepmat_1_1ldum.html#a6a216a04983cffae1ee410a9a20c80fe", null ], + [ "dldumf", "interfacepmat_1_1ldum.html#aa6f0f6dfba710cb16ff8263de6cfc1a8", null ], + [ "sldum", "interfacepmat_1_1ldum.html#a1fc1aa54e2c08e0310c651ac89280662", null ], + [ "sldumf", "interfacepmat_1_1ldum.html#acda336a41affe9b10011c8e06203557b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.html b/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.html new file mode 100644 index 000000000..a4448a3d4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.html @@ -0,0 +1,271 @@ + + + + + + + +grid_tools: pmat::swpvv Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::swpvv Interface Reference
    +
    +
    + + + + + + + + + + + +

    +Private Member Functions

    subroutine cswpvv (d, e)
     Swap a pair of complex vectors. More...
     
    subroutine dswpvv (d, e)
     Swap a pair of double precision vectors. More...
     
    subroutine sswpvv (d, e)
     Swap a pair of single precision vectors. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 26 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::swpvv::cswpvv (complex(dpc), dimension(:), intent(inout) d,
    complex(dpc), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of complex vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 72 of file pmat.f90.

    + +
    +
    + +

    ◆ dswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::swpvv::dswpvv (real(dp), dimension(:), intent(inout) d,
    real(dp), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of double precision vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 61 of file pmat.f90.

    + +
    +
    + +

    ◆ sswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::swpvv::sswpvv (real(sp), dimension(:), intent(inout) d,
    real(sp), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of single precision vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 50 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.js b/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.js new file mode 100644 index 000000000..db72f0835 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1swpvv.js @@ -0,0 +1,6 @@ +var interfacepmat_1_1swpvv = +[ + [ "cswpvv", "interfacepmat_1_1swpvv.html#a8cdf576cfc12bc6054e4b8613fe70eab", null ], + [ "dswpvv", "interfacepmat_1_1swpvv.html#a9773c2718b70d805c2bb3aac6b448930", null ], + [ "sswpvv", "interfacepmat_1_1swpvv.html#aa751eb31cea75bc4333f24c30ff45fc5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.html b/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.html new file mode 100644 index 000000000..0e757928d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.html @@ -0,0 +1,466 @@ + + + + + + + +grid_tools: pmat::udlmm Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat::udlmm Interface Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

    subroutine cudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine cudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine dudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine dudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine sudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine sudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 29 of file pmat.f90.

    +

    Member Function/Subroutine Documentation

    + +

    ◆ cudlmm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::cudlmm (complex(dpc), dimension(:,:), intent(in) a,
    complex(dpc), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 798 of file pmat.f90.

    + +
    +
    + +

    ◆ cudlmv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::cudlmv (complex(dpc), dimension(:,:), intent(in) a,
    complex(dpc), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]bright-hand side vector on input, corresponding solution on return
    [in]ipivarray encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 893 of file pmat.f90.

    + +
    +
    + +

    ◆ dudlmm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::dudlmm (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 764 of file pmat.f90.

    + +
    +
    + +

    ◆ dudlmv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::dudlmv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]bright-hand side vector on input, corresponding solution on return
    [in]ipivarray encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 862 of file pmat.f90.

    + +
    +
    + +

    ◆ sudlmm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::sudlmm (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]aL-D-U factorization of linear system matrux
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 730 of file pmat.f90.

    + +
    +
    + +

    ◆ sudlmv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::udlmm::sudlmv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    +private
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]aL-D-U factorization of linear system matrix
    [in,out]bright-hand-side vector on input, corresponding solution on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 831 of file pmat.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.js b/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.js new file mode 100644 index 000000000..7f24d2029 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepmat_1_1udlmm.js @@ -0,0 +1,9 @@ +var interfacepmat_1_1udlmm = +[ + [ "cudlmm", "interfacepmat_1_1udlmm.html#abd389e3bb09960c4a8e556cec4cc5a64", null ], + [ "cudlmv", "interfacepmat_1_1udlmm.html#aa39bea367e415eb7e798b3a6ed698ed1", null ], + [ "dudlmm", "interfacepmat_1_1udlmm.html#a73d9a8eea89f8091a7c37fcb058b47fa", null ], + [ "dudlmv", "interfacepmat_1_1udlmm.html#a4e2544a369ccd3c02e71f04f1daee2f3", null ], + [ "sudlmm", "interfacepmat_1_1udlmm.html#aa5f23a4cd06668ea6d0b23e1f2da406b", null ], + [ "sudlmv", "interfacepmat_1_1udlmm.html#a0d7cd9544bd3312cb16dc50cbec55fa7", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.html new file mode 100644 index 000000000..baa65183f --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: psym2::chol2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::chol2 Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 31 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ chol2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::chol2::chol2 (real(dp), dimension(2,2), intent(in) s,
    real(dp), dimension(2,2), intent(out) c,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    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.

    +
    Parameters
    + + + + +
    [in]s2X2 symmetric matrix
    [out]ccholesky lower triangular factor
    [out]ffraise the failure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 458 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.js new file mode 100644 index 000000000..e797825cc --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1chol2.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1chol2 = +[ + [ "chol2", "interfacepsym2_1_1chol2.html#a608222491243f89c60abc062b8cf832e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.html new file mode 100644 index 000000000..2593a45a5 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.html @@ -0,0 +1,257 @@ + + + + + + + +grid_tools: psym2::eigensym2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::eigensym2 Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 21 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ eigensym2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::eigensym2::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
    +
    + +

    Get the orthogonal eigenvectors, vv, and diagonal matrix of eigenvalues, oo, of the symmetric 2*2 matrix, em.

    +
    Parameters
    + + + + +
    [in]emsymmetric 2*2 matrix
    [out]vvorthogonal eigenvectors
    [out]oodiagonal matrix of eigenvalues
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 43 of file psym2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ eigensym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::eigensym2::eigensym2d (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) vv,
    real(dp), dimension(2,2), intent(out) oo,
    real(dp), dimension(2,2,2,2), intent(out) vvd,
    real(dp), dimension(2,2,2,2), intent(out) ood,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + +
    [in]emsymmetric 2*2 matrix
    [out]vvnormalized eigenvectors
    [out]oodiagonal matrix of eigenvalues
    [out]vvdvvd=d(vv)/d(em)
    [out]oodood=d(oo)/d(em)
    [out]fflogical failure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 76 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.js new file mode 100644 index 000000000..4e86f6aa7 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1eigensym2.js @@ -0,0 +1,5 @@ +var interfacepsym2_1_1eigensym2 = +[ + [ "eigensym2", "interfacepsym2_1_1eigensym2.html#a4fa5b26fc1796b8398f031756f62841c", null ], + [ "eigensym2d", "interfacepsym2_1_1eigensym2.html#aecba5ed0693b6f83b9eb553bfe9d01b5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.html new file mode 100644 index 000000000..c67b87ece --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.html @@ -0,0 +1,228 @@ + + + + + + + +grid_tools: psym2::expsym2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::expsym2 Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 26 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ expsym2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2::expsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) expem 
    )
    +
    +private
    +
    + +

    Get the exp of a symmetric 2*2 matrix.

    +
    Parameters
    + + + +
    [in]emsymmetric 2*2 matrix
    [out]expemexp of a symmetric 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 277 of file psym2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ expsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2::expsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Get the exp of a symmetric 2*2 matrix, and its symmetric derivative.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zexp of symmetric 2*2 matrix x
    [out]zdsymmetric derivative wrt x of exp of x
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 294 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.js new file mode 100644 index 000000000..d17d29e42 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2.js @@ -0,0 +1,5 @@ +var interfacepsym2_1_1expsym2 = +[ + [ "expsym2", "interfacepsym2_1_1expsym2.html#a0538fbed93ca5ebf63a98118812c2108", null ], + [ "expsym2d", "interfacepsym2_1_1expsym2.html#ac6c2a91a63d5c756abaa9e32c84009cd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.html new file mode 100644 index 000000000..77762b312 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: psym2::expsym2d_e Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::expsym2d_e Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine expsym2d_e (x, z, zd)
     Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 27 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ expsym2d_e()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2d_e::expsym2d_e (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zexp of symmetrix matrix x
    [out]zdsymmetric derivative of z wrt x
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 317 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.js new file mode 100644 index 000000000..981656a24 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__e.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1expsym2d__e = +[ + [ "expsym2d_e", "interfacepsym2_1_1expsym2d__e.html#a5cfc49bc53c06a47d49648bb401d4913", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.html new file mode 100644 index 000000000..a1e2444b3 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.html @@ -0,0 +1,177 @@ + + + + + + + +grid_tools: psym2::expsym2d_t Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::expsym2d_t Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine expsym2d_t (x, z, zd)
     Use the Taylor-series method (eigenvalues both fairly close to zero). More...
     
    +

    Detailed Description

    +
    +

    Definition at line 28 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ expsym2d_t()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2d_t::expsym2d_t (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zTaylor series expansion method exp(x)
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 347 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.js new file mode 100644 index 000000000..11f2ffea4 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1expsym2d__t.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1expsym2d__t = +[ + [ "expsym2d_t", "interfacepsym2_1_1expsym2d__t.html#a789a2d2a1d3aca671bf4de8997681ad3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.html new file mode 100644 index 000000000..3bef06a46 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.html @@ -0,0 +1,158 @@ + + + + + + + +grid_tools: psym2::id2222 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::id2222 Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine id2222 (em)
     General routine for a symmetrized 4th-rank tensor that acts as an effective identity for operations on symmetric matrices. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 30 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ id2222()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine psym2::id2222::id2222 (real(dp), dimension(2,2,2,2), intent(out) em)
    +
    +private
    +
    + +

    General routine for a symmetrized 4th-rank tensor that acts as an effective identity for operations on symmetric matrices.

    +
    Parameters
    + + +
    [out]emsymmetrized effective identity in space of symmetrix matrices.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 442 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.js new file mode 100644 index 000000000..de7b92913 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1id2222.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1id2222 = +[ + [ "id2222", "interfacepsym2_1_1id2222.html#aaec218b49c942a7f18acbad232a5bb4c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.html new file mode 100644 index 000000000..cb02c830d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.html @@ -0,0 +1,228 @@ + + + + + + + +grid_tools: psym2::invsym2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::invsym2 Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 22 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ invsym2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine psym2::invsym2::invsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z 
    )
    +
    +private
    +
    + +

    Get the inverse of a 2*2 matrix (need not be symmetric in this case).

    +
    Parameters
    + + + +
    [in]em2*2 matrix
    [out]zinverse of a 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 112 of file psym2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ invsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::invsym2::invsym2d (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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)
    Parameters
    + + + + +
    [in]em2*2 symmetric matrix
    [out]zinverse of a 2*2 symmetric matrix
    [out]zdderivative of the 2*2 symmetric matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 132 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.js new file mode 100644 index 000000000..98333822d --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1invsym2.js @@ -0,0 +1,5 @@ +var interfacepsym2_1_1invsym2 = +[ + [ "invsym2", "interfacepsym2_1_1invsym2.html#adddf4e696d07a189431ee07285d713d5", null ], + [ "invsym2d", "interfacepsym2_1_1invsym2.html#ad70d53880de5c19aa0147d40e7fd3b31", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.html new file mode 100644 index 000000000..7db1b1aeb --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.html @@ -0,0 +1,228 @@ + + + + + + + +grid_tools: psym2::logsym2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::logsym2 Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 29 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ logsym2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine psym2::logsym2::logsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) logem 
    )
    +
    +private
    +
    + +

    Get the log of a symmetric positive-definite 2*2 matrix.

    +
    Parameters
    + + + +
    [in]emsymmetric 2*2 matrix
    [out]logemlog of a symmetric positive-definite 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 387 of file psym2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ logsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::logsym2::logsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]zdthe symmetric derivative
    [out]xa symmetric 2*2 positive-definite matrix
    [out]zevaluate the logarithm log(x)
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 409 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.js new file mode 100644 index 000000000..476671e31 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1logsym2.js @@ -0,0 +1,5 @@ +var interfacepsym2_1_1logsym2 = +[ + [ "logsym2", "interfacepsym2_1_1logsym2.html#ad4cfa73f0dd05dc012dfa2c48e06f12a", null ], + [ "logsym2d", "interfacepsym2_1_1logsym2.html#a9f8f85214d8253acf9d4651c88e2ac1e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.html new file mode 100644 index 000000000..f97aec03b --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.html @@ -0,0 +1,229 @@ + + + + + + + +grid_tools: psym2::sqrtsym2 Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::sqrtsym2 Interface Reference
    +
    +
    + + + + + + + + +

    +Private Member Functions

    subroutine 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...
     
    +

    Detailed Description

    +
    +

    Definition at line 23 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ sqrtsym2()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2::sqrtsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z 
    )
    +
    +private
    +
    + +

    Get the sqrt of a symmetric positive-definite 2*2 matrix.

    +
    Parameters
    + + + +
    [in]em2*2 symmetric matrix
    [out]zsqrt of a symmetric positive-definite 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 150 of file psym2.f90.

    + +
    +
    +

    Member Function/Subroutine Documentation

    + +

    ◆ sqrtsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2::sqrtsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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).

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 177 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.js new file mode 100644 index 000000000..d16f7df53 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2.js @@ -0,0 +1,5 @@ +var interfacepsym2_1_1sqrtsym2 = +[ + [ "sqrtsym2", "interfacepsym2_1_1sqrtsym2.html#a91c2bfaca9b8d158c938f60906175714", null ], + [ "sqrtsym2d", "interfacepsym2_1_1sqrtsym2.html#a39dbfbe97fd5fdec432b13664005af5a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.html new file mode 100644 index 000000000..a6cb016e1 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: psym2::sqrtsym2d_e Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::sqrtsym2d_e Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine sqrtsym2d_e (x, z, zd)
     Eigen-method. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 24 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ sqrtsym2d_e()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2d_e::sqrtsym2d_e (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Eigen-method.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 203 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.js new file mode 100644 index 000000000..1c6d8fb61 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__e.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1sqrtsym2d__e = +[ + [ "sqrtsym2d_e", "interfacepsym2_1_1sqrtsym2d__e.html#a51ef15ca1dcebe6ff16b06b427712af8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.html b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.html new file mode 100644 index 000000000..10407ab33 --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.html @@ -0,0 +1,177 @@ + + + + + + + +grid_tools: psym2::sqrtsym2d_t Interface Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2::sqrtsym2d_t Interface Reference
    +
    +
    + + + + + +

    +Private Member Functions

    subroutine sqrtsym2d_t (x, z, zd)
     Use the Taylor-series method (eigenvalues both fairly close to unity). More...
     
    +

    Detailed Description

    +
    +

    Definition at line 25 of file psym2.f90.

    +

    Constructor & Destructor Documentation

    + +

    ◆ sqrtsym2d_t()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2d_t::sqrtsym2d_t (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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}
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 236 of file psym2.f90.

    + +
    +
    +
    The documentation for this interface was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.js b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.js new file mode 100644 index 000000000..0c2ca266e --- /dev/null +++ b/ver-1.11.0/grid_tools/interfacepsym2_1_1sqrtsym2d__t.js @@ -0,0 +1,4 @@ +var interfacepsym2_1_1sqrtsym2d__t = +[ + [ "sqrtsym2d_t", "interfacepsym2_1_1sqrtsym2d__t.html#ad9d2395c6e2d7a83870a40cac872b172", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/jquery.js b/ver-1.11.0/grid_tools/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/grid_tools/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    Utility programs for creating model grids.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/grid_tools/menu.js b/ver-1.11.0/grid_tools/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/grid_tools/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/grid_tools/menudata.js b/ver-1.11.0/grid_tools/menudata.js new file mode 100644 index 000000000..658175376 --- /dev/null +++ b/ver-1.11.0/grid_tools/menudata.js @@ -0,0 +1,165 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers_b.html#index_b"}, +{text:"c",url:"namespacemembers_c.html#index_c"}, +{text:"d",url:"namespacemembers_d.html#index_d"}, +{text:"e",url:"namespacemembers_e.html#index_e"}, +{text:"f",url:"namespacemembers_f.html#index_f"}, +{text:"g",url:"namespacemembers_g.html#index_g"}, +{text:"h",url:"namespacemembers_h.html#index_h"}, +{text:"i",url:"namespacemembers_i.html#index_i"}, +{text:"l",url:"namespacemembers_l.html#index_l"}, +{text:"m",url:"namespacemembers_m.html#index_m"}, +{text:"n",url:"namespacemembers_n.html#index_n"}, +{text:"o",url:"namespacemembers_o.html#index_o"}, +{text:"p",url:"namespacemembers_p.html#index_p"}, +{text:"q",url:"namespacemembers_q.html#index_q"}, +{text:"r",url:"namespacemembers_r.html#index_r"}, +{text:"s",url:"namespacemembers_s.html#index_s"}, +{text:"t",url:"namespacemembers_t.html#index_t"}, +{text:"u",url:"namespacemembers_u.html#index_u"}, +{text:"w",url:"namespacemembers_w.html#index_w"}, +{text:"x",url:"namespacemembers_x.html#index_x"}, +{text:"z",url:"namespacemembers_z.html#index_z"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html",children:[ +{text:"a",url:"namespacemembers_func.html#index_a"}, +{text:"b",url:"namespacemembers_func_b.html#index_b"}, +{text:"c",url:"namespacemembers_func_c.html#index_c"}, +{text:"d",url:"namespacemembers_func_d.html#index_d"}, +{text:"e",url:"namespacemembers_func_e.html#index_e"}, +{text:"f",url:"namespacemembers_func_f.html#index_f"}, +{text:"g",url:"namespacemembers_func_g.html#index_g"}, +{text:"h",url:"namespacemembers_func_h.html#index_h"}, +{text:"i",url:"namespacemembers_func_i.html#index_i"}, +{text:"l",url:"namespacemembers_func_l.html#index_l"}, +{text:"m",url:"namespacemembers_func_m.html#index_m"}, +{text:"n",url:"namespacemembers_func_n.html#index_n"}, +{text:"o",url:"namespacemembers_func_o.html#index_o"}, +{text:"p",url:"namespacemembers_func_p.html#index_p"}, +{text:"q",url:"namespacemembers_func_q.html#index_q"}, +{text:"r",url:"namespacemembers_func_r.html#index_r"}, +{text:"s",url:"namespacemembers_func_s.html#index_s"}, +{text:"t",url:"namespacemembers_func_t.html#index_t"}, +{text:"u",url:"namespacemembers_func_u.html#index_u"}, +{text:"w",url:"namespacemembers_func_w.html#index_w"}, +{text:"x",url:"namespacemembers_func_x.html#index_x"}, +{text:"z",url:"namespacemembers_func_z.html#index_z"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars_d.html#index_d"}, +{text:"e",url:"namespacemembers_vars_e.html#index_e"}, +{text:"f",url:"namespacemembers_vars_f.html#index_f"}, +{text:"g",url:"namespacemembers_vars_g.html#index_g"}, +{text:"i",url:"namespacemembers_vars_i.html#index_i"}, +{text:"m",url:"namespacemembers_vars_m.html#index_m"}, +{text:"n",url:"namespacemembers_vars_n.html#index_n"}, +{text:"o",url:"namespacemembers_vars_o.html#index_o"}, +{text:"p",url:"namespacemembers_vars_p.html#index_p"}, +{text:"r",url:"namespacemembers_vars_r.html#index_r"}, +{text:"s",url:"namespacemembers_vars_s.html#index_s"}, +{text:"t",url:"namespacemembers_vars_t.html#index_t"}, +{text:"u",url:"namespacemembers_vars_u.html#index_u"}, +{text:"z",url:"namespacemembers_vars_z.html#index_z"}]}]}]}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"z",url:"functions_z.html#index_z"}]}, +{text:"Functions/Subroutines",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"x",url:"functions_func_x.html#index_x"}, +{text:"z",url:"functions_func_z.html#index_z"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"f",url:"globals.html#index_f"}, +{text:"g",url:"globals.html#index_g"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"w",url:"globals.html#index_w"}]}, +{text:"Functions/Subroutines",url:"globals_func.html",children:[ +{text:"c",url:"globals_func.html#index_c"}, +{text:"d",url:"globals_func.html#index_d"}, +{text:"f",url:"globals_func.html#index_f"}, +{text:"g",url:"globals_func.html#index_g"}, +{text:"l",url:"globals_func.html#index_l"}, +{text:"m",url:"globals_func.html#index_m"}, +{text:"r",url:"globals_func.html#index_r"}, +{text:"s",url:"globals_func.html#index_s"}, +{text:"t",url:"globals_func.html#index_t"}, +{text:"w",url:"globals_func.html#index_w"}]}]}]}]} diff --git a/ver-1.11.0/grid_tools/namespacecstgeo.html b/ver-1.11.0/grid_tools/namespacecstgeo.html new file mode 100644 index 000000000..e1d4eff89 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacecstgeo.html @@ -0,0 +1,181 @@ + + + + + + + +grid_tools: cstgeo Module Reference + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cstgeo Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Constants for orientation and stretching of map.

    +
    Author
    R. J. Purser
    +

    Variable Documentation

    + +

    ◆ rotm

    + +
    +
    + + + + +
    real(sp), dimension(3,3) cstgeo::rotm
    +
    + +

    Orthogonal rotation matrix.

    + +

    Definition at line 10 of file pmat5.f90.

    + +
    +
    + +

    ◆ sc

    + +
    +
    + + + + +
    real(sp) cstgeo::sc
    +
    + +

    Schmidt stretching factor.

    + +

    Definition at line 11 of file pmat5.f90.

    + +
    +
    + +

    ◆ sci

    + +
    +
    + + + + +
    real(sp) cstgeo::sci
    +
    + +

    Schmidt inverse stretching factor.

    + +

    Definition at line 12 of file pmat5.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacedcstgeo.html b/ver-1.11.0/grid_tools/namespacedcstgeo.html new file mode 100644 index 000000000..3e261e166 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacedcstgeo.html @@ -0,0 +1,181 @@ + + + + + + + +grid_tools: dcstgeo Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    dcstgeo Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Constants for orientation and stretching of map.

    +
    Author
    R. J. Purser
    +

    Variable Documentation

    + +

    ◆ rotm

    + +
    +
    + + + + +
    real(dp), dimension(3,3) dcstgeo::rotm
    +
    + +

    Orthogonal rotation matrix.

    + +

    Definition at line 20 of file pmat5.f90.

    + +
    +
    + +

    ◆ sc

    + +
    +
    + + + + +
    real(dp) dcstgeo::sc
    +
    + +

    Schmidt stretching factor.

    + +

    Definition at line 21 of file pmat5.f90.

    + +
    +
    + +

    ◆ sci

    + +
    +
    + + + + +
    real(dp) dcstgeo::sci
    +
    + +

    Schmidt inverse stretching factor.

    + +

    Definition at line 22 of file pmat5.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers.html b/ver-1.11.0/grid_tools/namespacemembers.html new file mode 100644 index 000000000..9f9a7e262 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers.html @@ -0,0 +1,149 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - a -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_b.html b/ver-1.11.0/grid_tools/namespacemembers_b.html new file mode 100644 index 000000000..1e217c050 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_b.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - b -

      +
    • bestesg_geo() +: pesg +
    • +
    • bestesg_map() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_c.html b/ver-1.11.0/grid_tools/namespacemembers_c.html new file mode 100644 index 000000000..9f399a4f1 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_c.html @@ -0,0 +1,155 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - c -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_d.html b/ver-1.11.0/grid_tools/namespacemembers_d.html new file mode 100644 index 000000000..d2275e52f --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_d.html @@ -0,0 +1,245 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - d -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_dup.js b/ver-1.11.0/grid_tools/namespacemembers_dup.js new file mode 100644 index 000000000..75cf0dffc --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_dup.js @@ -0,0 +1,25 @@ +var namespacemembers_dup = +[ + [ "a", "namespacemembers.html", null ], + [ "b", "namespacemembers_b.html", null ], + [ "c", "namespacemembers_c.html", null ], + [ "d", "namespacemembers_d.html", null ], + [ "e", "namespacemembers_e.html", null ], + [ "f", "namespacemembers_f.html", null ], + [ "g", "namespacemembers_g.html", null ], + [ "h", "namespacemembers_h.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "l", "namespacemembers_l.html", null ], + [ "m", "namespacemembers_m.html", null ], + [ "n", "namespacemembers_n.html", null ], + [ "o", "namespacemembers_o.html", null ], + [ "p", "namespacemembers_p.html", null ], + [ "q", "namespacemembers_q.html", null ], + [ "r", "namespacemembers_r.html", null ], + [ "s", "namespacemembers_s.html", null ], + [ "t", "namespacemembers_t.html", null ], + [ "u", "namespacemembers_u.html", null ], + [ "w", "namespacemembers_w.html", null ], + [ "x", "namespacemembers_x.html", null ], + [ "z", "namespacemembers_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacemembers_e.html b/ver-1.11.0/grid_tools/namespacemembers_e.html new file mode 100644 index 000000000..edc14b481 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_e.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - e -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_f.html b/ver-1.11.0/grid_tools/namespacemembers_f.html new file mode 100644 index 000000000..87f40f77b --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_f.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - f -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func.html b/ver-1.11.0/grid_tools/namespacemembers_func.html new file mode 100644 index 000000000..7caa1d5be --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func.html @@ -0,0 +1,149 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func.js b/ver-1.11.0/grid_tools/namespacemembers_func.js new file mode 100644 index 000000000..a1a7b6be0 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func.js @@ -0,0 +1,25 @@ +var namespacemembers_func = +[ + [ "a", "namespacemembers_func.html", null ], + [ "b", "namespacemembers_func_b.html", null ], + [ "c", "namespacemembers_func_c.html", null ], + [ "d", "namespacemembers_func_d.html", null ], + [ "e", "namespacemembers_func_e.html", null ], + [ "f", "namespacemembers_func_f.html", null ], + [ "g", "namespacemembers_func_g.html", null ], + [ "h", "namespacemembers_func_h.html", null ], + [ "i", "namespacemembers_func_i.html", null ], + [ "l", "namespacemembers_func_l.html", null ], + [ "m", "namespacemembers_func_m.html", null ], + [ "n", "namespacemembers_func_n.html", null ], + [ "o", "namespacemembers_func_o.html", null ], + [ "p", "namespacemembers_func_p.html", null ], + [ "q", "namespacemembers_func_q.html", null ], + [ "r", "namespacemembers_func_r.html", null ], + [ "s", "namespacemembers_func_s.html", null ], + [ "t", "namespacemembers_func_t.html", null ], + [ "u", "namespacemembers_func_u.html", null ], + [ "w", "namespacemembers_func_w.html", null ], + [ "x", "namespacemembers_func_x.html", null ], + [ "z", "namespacemembers_func_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_b.html b/ver-1.11.0/grid_tools/namespacemembers_func_b.html new file mode 100644 index 000000000..fb08a7a1e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_b.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - b -

      +
    • bestesg_geo() +: pesg +
    • +
    • bestesg_map() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_c.html b/ver-1.11.0/grid_tools/namespacemembers_func_c.html new file mode 100644 index 000000000..b811ffacc --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_c.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_d.html b/ver-1.11.0/grid_tools/namespacemembers_func_d.html new file mode 100644 index 000000000..5516fc897 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_d.html @@ -0,0 +1,233 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_e.html b/ver-1.11.0/grid_tools/namespacemembers_func_e.html new file mode 100644 index 000000000..8fa0ad315 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_e.html @@ -0,0 +1,131 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_f.html b/ver-1.11.0/grid_tools/namespacemembers_func_f.html new file mode 100644 index 000000000..c3720a155 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_f.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - f -

      +
    • fill_regional_halo() +: utils +
    • +
    • frametwist() +: pmat5 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_g.html b/ver-1.11.0/grid_tools/namespacemembers_func_g.html new file mode 100644 index 000000000..ab4ccad20 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_g.html @@ -0,0 +1,176 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - g -

      +
    • gaulegh() +: pesg +
    • +
    • gd_d() +: pfun +
    • +
    • gd_s() +: pfun +
    • +
    • gdi_d() +: pfun +
    • +
    • gdi_s() +: pfun +
    • +
    • get_edges() +: pesg +
    • +
    • get_meanqd() +: pesg +
    • +
    • get_meanqs() +: pesg +
    • +
    • get_qofv() +: pesg +
    • +
    • get_qofvd() +: pesg +
    • +
    • get_qsofvs() +: pesg +
    • +
    • get_qx() +: pesg +
    • +
    • get_qxd() +: pesg +
    • +
    • gram_d() +: pmat4 +
    • +
    • gram_s() +: pmat4 +
    • +
    • graml_d() +: pmat4 +
    • +
    • gtoframem() +: pmat5 +
    • +
    • gtoframev() +: pmat5 +
    • +
    • gtoxm_ak_dd_g() +: pesg +
    • +
    • gtoxm_ak_dd_m() +: pesg +
    • +
    • gtoxm_ak_rr_g() +: pesg +
    • +
    • gtoxm_ak_rr_m() +: pesg +
    • +
    • guessak_geo() +: pesg +
    • +
    • guessak_map() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_h.html b/ver-1.11.0/grid_tools/namespacemembers_func_h.html new file mode 100644 index 000000000..65a004911 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_h.html @@ -0,0 +1,151 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - h -

      +
    • handle_err() +: utils +
    • +
    • hav_d() +: pfun +, pmat4 +
    • +
    • hav_s() +: pfun +, pmat4 +
    • +
    • havh_d() +: pfun +
    • +
    • havh_s() +: pfun +
    • +
    • hgrid_ak() +: pesg +
    • +
    • hgrid_ak_c() +: pesg +
    • +
    • hgrid_ak_dc() +: pesg +
    • +
    • hgrid_ak_dd() +: pesg +
    • +
    • hgrid_ak_dd_c() +: pesg +
    • +
    • hgrid_ak_rc() +: pesg +
    • +
    • hgrid_ak_rr() +: pesg +
    • +
    • hgrid_ak_rr_c() +: pesg +
    • +
    • huarea_d() +: pmat4 +
    • +
    • huarea_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_i.html b/ver-1.11.0/grid_tools/namespacemembers_func_i.html new file mode 100644 index 000000000..266cf6289 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_i.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_l.html b/ver-1.11.0/grid_tools/namespacemembers_func_l.html new file mode 100644 index 000000000..7e18d090e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_l.html @@ -0,0 +1,128 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - l -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_m.html b/ver-1.11.0/grid_tools/namespacemembers_func_m.html new file mode 100644 index 000000000..5bb26d77d --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_m.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_n.html b/ver-1.11.0/grid_tools/namespacemembers_func_n.html new file mode 100644 index 000000000..4f9765d7d --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_n.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - n -

      +
    • normalize_d() +: pmat4 +
    • +
    • normalize_s() +: pmat4 +
    • +
    • normalized_d() +: pmat4 +
    • +
    • normalized_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_o.html b/ver-1.11.0/grid_tools/namespacemembers_func_o.html new file mode 100644 index 000000000..6c1995155 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_o.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

      +
    • orthogonalized_d() +: pmat4 +
    • +
    • orthogonalized_s() +: pmat4 +
    • +
    • outer_product_d() +: pmat4 +
    • +
    • outer_product_i() +: pmat4 +
    • +
    • outer_product_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_p.html b/ver-1.11.0/grid_tools/namespacemembers_func_p.html new file mode 100644 index 000000000..10c6f0654 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_p.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_q.html b/ver-1.11.0/grid_tools/namespacemembers_func_q.html new file mode 100644 index 000000000..1da90e23d --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_q.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - q -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_r.html b/ver-1.11.0/grid_tools/namespacemembers_func_r.html new file mode 100644 index 000000000..3b63caf1a --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_r.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_s.html b/ver-1.11.0/grid_tools/namespacemembers_func_s.html new file mode 100644 index 000000000..53d84e7f9 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_s.html @@ -0,0 +1,206 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_t.html b/ver-1.11.0/grid_tools/namespacemembers_func_t.html new file mode 100644 index 000000000..ec6e23118 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_t.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - t -

      +
    • TAVCO() +: pmat2 +
    • +
    • TDFCO() +: pmat2 +
    • +
    • TDFCO2() +: pmat2 +
    • +
    • trace_d() +: pmat4 +
    • +
    • trace_i() +: pmat4 +
    • +
    • trace_s() +: pmat4 +
    • +
    • triple_cross_product_d() +: pmat4 +
    • +
    • triple_cross_product_s() +: pmat4 +
    • +
    • triple_product_d() +: pmat4 +
    • +
    • triple_product_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_u.html b/ver-1.11.0/grid_tools/namespacemembers_func_u.html new file mode 100644 index 000000000..45cb2ebfb --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_u.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_w.html b/ver-1.11.0/grid_tools/namespacemembers_func_w.html new file mode 100644 index 000000000..fb18161cc --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_w.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_x.html b/ver-1.11.0/grid_tools/namespacemembers_func_x.html new file mode 100644 index 000000000..6fded4838 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_x.html @@ -0,0 +1,155 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - x -

      +
    • xctoxm_ak() +: pesg +
    • +
    • xctoxs() +: pesg +
    • +
    • xmtog_ak_dd_g() +: pesg +
    • +
    • xmtog_ak_dd_m() +: pesg +
    • +
    • xmtog_ak_rr_g() +: pesg +
    • +
    • xmtog_ak_rr_m() +: pesg +
    • +
    • xmtoxc_ak() +: pesg +
    • +
    • xmtoxc_vak() +: pesg +
    • +
    • xmtoxc_vak1() +: pesg +
    • +
    • xmtoxt() +: pesg +
    • +
    • xmtoxt1() +: pesg +
    • +
    • xstoxc() +: pesg +
    • +
    • xstoxc1() +: pesg +
    • +
    • xstoxt() +: pesg +
    • +
    • xttoxm() +: pesg +
    • +
    • xttoxs() +: pesg +
    • +
    • xttoxs1() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_func_z.html b/ver-1.11.0/grid_tools/namespacemembers_func_z.html new file mode 100644 index 000000000..c85302e18 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_func_z.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - z -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_g.html b/ver-1.11.0/grid_tools/namespacemembers_g.html new file mode 100644 index 000000000..4999101d2 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_g.html @@ -0,0 +1,182 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - g -

      +
    • gaulegh() +: pesg +
    • +
    • gd_d() +: pfun +
    • +
    • gd_s() +: pfun +
    • +
    • gdi_d() +: pfun +
    • +
    • gdi_s() +: pfun +
    • +
    • get_edges() +: pesg +
    • +
    • get_meanqd() +: pesg +
    • +
    • get_meanqs() +: pesg +
    • +
    • get_qofv() +: pesg +
    • +
    • get_qofvd() +: pesg +
    • +
    • get_qsofvs() +: pesg +
    • +
    • get_qx() +: pesg +
    • +
    • get_qxd() +: pesg +
    • +
    • gram_d() +: pmat4 +
    • +
    • gram_s() +: pmat4 +
    • +
    • graml_d() +: pmat4 +
    • +
    • grid_file +: utils +
    • +
    • grid_type +: utils +
    • +
    • gtoframem() +: pmat5 +
    • +
    • gtoframev() +: pmat5 +
    • +
    • gtoxm_ak_dd_g() +: pesg +
    • +
    • gtoxm_ak_dd_m() +: pesg +
    • +
    • gtoxm_ak_rr_g() +: pesg +
    • +
    • gtoxm_ak_rr_m() +: pesg +
    • +
    • guessak_geo() +: pesg +
    • +
    • guessak_map() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_h.html b/ver-1.11.0/grid_tools/namespacemembers_h.html new file mode 100644 index 000000000..1bf478af0 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_h.html @@ -0,0 +1,151 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - h -

      +
    • handle_err() +: utils +
    • +
    • hav_d() +: pfun +, pmat4 +
    • +
    • hav_s() +: pfun +, pmat4 +
    • +
    • havh_d() +: pfun +
    • +
    • havh_s() +: pfun +
    • +
    • hgrid_ak() +: pesg +
    • +
    • hgrid_ak_c() +: pesg +
    • +
    • hgrid_ak_dc() +: pesg +
    • +
    • hgrid_ak_dd() +: pesg +
    • +
    • hgrid_ak_dd_c() +: pesg +
    • +
    • hgrid_ak_rc() +: pesg +
    • +
    • hgrid_ak_rr() +: pesg +
    • +
    • hgrid_ak_rr_c() +: pesg +
    • +
    • huarea_d() +: pmat4 +
    • +
    • huarea_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_i.html b/ver-1.11.0/grid_tools/namespacemembers_i.html new file mode 100644 index 000000000..1a8cc775f --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_i.html @@ -0,0 +1,122 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - i -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_l.html b/ver-1.11.0/grid_tools/namespacemembers_l.html new file mode 100644 index 000000000..77c816d6e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_l.html @@ -0,0 +1,128 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - l -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_m.html b/ver-1.11.0/grid_tools/namespacemembers_m.html new file mode 100644 index 000000000..39d64b270 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_m.html @@ -0,0 +1,230 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - m -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_n.html b/ver-1.11.0/grid_tools/namespacemembers_n.html new file mode 100644 index 000000000..5b989de7f --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_n.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - n -

      +
    • nested +: utils +
    • +
    • normalize_d() +: pmat4 +
    • +
    • normalize_s() +: pmat4 +
    • +
    • normalized_d() +: pmat4 +
    • +
    • normalized_s() +: pmat4 +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_o.html b/ver-1.11.0/grid_tools/namespacemembers_o.html new file mode 100644 index 000000000..be97dcfe4 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_o.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - o -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_p.html b/ver-1.11.0/grid_tools/namespacemembers_p.html new file mode 100644 index 000000000..310762337 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_p.html @@ -0,0 +1,134 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - p -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_q.html b/ver-1.11.0/grid_tools/namespacemembers_q.html new file mode 100644 index 000000000..474ab0b27 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_q.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - q -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_r.html b/ver-1.11.0/grid_tools/namespacemembers_r.html new file mode 100644 index 000000000..2938815fc --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_r.html @@ -0,0 +1,144 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_s.html b/ver-1.11.0/grid_tools/namespacemembers_s.html new file mode 100644 index 000000000..7c97ecef9 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_s.html @@ -0,0 +1,307 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - s -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_t.html b/ver-1.11.0/grid_tools/namespacemembers_t.html new file mode 100644 index 000000000..28befc683 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_t.html @@ -0,0 +1,143 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - t -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_u.html b/ver-1.11.0/grid_tools/namespacemembers_u.html new file mode 100644 index 000000000..64e989f7b --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_u.html @@ -0,0 +1,164 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars.html b/ver-1.11.0/grid_tools/namespacemembers_vars.html new file mode 100644 index 000000000..bc1ab6893 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars.js b/ver-1.11.0/grid_tools/namespacemembers_vars.js new file mode 100644 index 000000000..32de9a16e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars.js @@ -0,0 +1,18 @@ +var namespacemembers_vars = +[ + [ "c", "namespacemembers_vars.html", null ], + [ "d", "namespacemembers_vars_d.html", null ], + [ "e", "namespacemembers_vars_e.html", null ], + [ "f", "namespacemembers_vars_f.html", null ], + [ "g", "namespacemembers_vars_g.html", null ], + [ "i", "namespacemembers_vars_i.html", null ], + [ "m", "namespacemembers_vars_m.html", null ], + [ "n", "namespacemembers_vars_n.html", null ], + [ "o", "namespacemembers_vars_o.html", null ], + [ "p", "namespacemembers_vars_p.html", null ], + [ "r", "namespacemembers_vars_r.html", null ], + [ "s", "namespacemembers_vars_s.html", null ], + [ "t", "namespacemembers_vars_t.html", null ], + [ "u", "namespacemembers_vars_u.html", null ], + [ "z", "namespacemembers_vars_z.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_d.html b/ver-1.11.0/grid_tools/namespacemembers_vars_d.html new file mode 100644 index 000000000..2c6e15fb8 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_d.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_e.html b/ver-1.11.0/grid_tools/namespacemembers_vars_e.html new file mode 100644 index 000000000..2c3ee49fb --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_e.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_f.html b/ver-1.11.0/grid_tools/namespacemembers_vars_f.html new file mode 100644 index 000000000..5b4f7d092 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_f.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - f -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_g.html b/ver-1.11.0/grid_tools/namespacemembers_vars_g.html new file mode 100644 index 000000000..9ce140268 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_g.html @@ -0,0 +1,110 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - g -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_i.html b/ver-1.11.0/grid_tools/namespacemembers_vars_i.html new file mode 100644 index 000000000..8f7c9c031 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_i.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_m.html b/ver-1.11.0/grid_tools/namespacemembers_vars_m.html new file mode 100644 index 000000000..c695ebc7e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_m.html @@ -0,0 +1,227 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_n.html b/ver-1.11.0/grid_tools/namespacemembers_vars_n.html new file mode 100644 index 000000000..3c161dab7 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_n.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - n -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_o.html b/ver-1.11.0/grid_tools/namespacemembers_vars_o.html new file mode 100644 index 000000000..1c3bbe5cf --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_o.html @@ -0,0 +1,128 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_p.html b/ver-1.11.0/grid_tools/namespacemembers_vars_p.html new file mode 100644 index 000000000..60f1dade6 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_p.html @@ -0,0 +1,116 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_r.html b/ver-1.11.0/grid_tools/namespacemembers_vars_r.html new file mode 100644 index 000000000..99a195e59 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_r.html @@ -0,0 +1,129 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_s.html b/ver-1.11.0/grid_tools/namespacemembers_vars_s.html new file mode 100644 index 000000000..06cb14ed2 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_s.html @@ -0,0 +1,205 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_t.html b/ver-1.11.0/grid_tools/namespacemembers_vars_t.html new file mode 100644 index 000000000..21a2b5c1a --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_t.html @@ -0,0 +1,113 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - t -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_u.html b/ver-1.11.0/grid_tools/namespacemembers_vars_u.html new file mode 100644 index 000000000..0cef76080 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_u.html @@ -0,0 +1,125 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - u -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_vars_z.html b/ver-1.11.0/grid_tools/namespacemembers_vars_z.html new file mode 100644 index 000000000..5bbe2597e --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_vars_z.html @@ -0,0 +1,446 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - z -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_w.html b/ver-1.11.0/grid_tools/namespacemembers_w.html new file mode 100644 index 000000000..e89c4f8d8 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_w.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_x.html b/ver-1.11.0/grid_tools/namespacemembers_x.html new file mode 100644 index 000000000..79006c5b7 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_x.html @@ -0,0 +1,155 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - x -

      +
    • xctoxm_ak() +: pesg +
    • +
    • xctoxs() +: pesg +
    • +
    • xmtog_ak_dd_g() +: pesg +
    • +
    • xmtog_ak_dd_m() +: pesg +
    • +
    • xmtog_ak_rr_g() +: pesg +
    • +
    • xmtog_ak_rr_m() +: pesg +
    • +
    • xmtoxc_ak() +: pesg +
    • +
    • xmtoxc_vak() +: pesg +
    • +
    • xmtoxc_vak1() +: pesg +
    • +
    • xmtoxt() +: pesg +
    • +
    • xmtoxt1() +: pesg +
    • +
    • xstoxc() +: pesg +
    • +
    • xstoxc1() +: pesg +
    • +
    • xstoxt() +: pesg +
    • +
    • xttoxm() +: pesg +
    • +
    • xttoxs() +: pesg +
    • +
    • xttoxs1() +: pesg +
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacemembers_z.html b/ver-1.11.0/grid_tools/namespacemembers_z.html new file mode 100644 index 000000000..c3ecacbaa --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacemembers_z.html @@ -0,0 +1,476 @@ + + + + + + + +grid_tools: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - z -

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepesg.html b/ver-1.11.0/grid_tools/namespacepesg.html new file mode 100644 index 000000000..2786b29f3 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepesg.html @@ -0,0 +1,4494 @@ + + + + + + + +grid_tools: pesg Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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.

    +
    Author
    R. J. Purser
    +

    Function/Subroutine Documentation

    + +

    ◆ bestesg_geo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + +
    [in]lam
    [in]garcxmap-space half-spans
    [in]garcymap-space half-spans
    [out]aExtended Schmidt Gnomonic parameter
    [out]kExtended Schmidt Gnomonic parameter
    [out]marcx
    [out]marcy
    [out]q
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    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.

    + +
    +
    + +

    ◆ bestesg_map()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + +
    [in]lam
    [in]marcxmap-coordinate half-spans
    [in]marcymap-coordinate half-spans
    [out]aExtended Schmidt Gnomonic parameter
    [out]kExtended Schmidt Gnomonic parameter
    [out]garcxgeographical half-spans
    [out]garcygeographical half-spans
    [out]q
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    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.

    + +
    +
    + +

    ◆ gaulegh()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gaulegh (integer(spi), intent(in) m,
    real(dp), dimension(m), intent(out) x,
    real(dp), dimension(m), intent(out) w 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    mnumber of nodes in half-interval
    xnodes and weights
    wnodes and weights
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1852 of file pesg.f90.

    + +

    References pietc::pih, pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ get_edges()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]arcxCenter-relative angle (degrees) of edge midpoint in +x
    [in]arcyCenter-relative angle (degrees) of edge midpoint in +y
    [out]edgexregion's +x edge midpoint as cartesian unit 3-vector
    [out]edgeyregion's +y edge midpoint as cartesian unit 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 489 of file pesg.f90.

    + +

    References pietc::dtor, and pietc::u0.

    + +
    +
    + +

    ◆ get_meanqd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]ngh
    [in]lamLambda
    [in]xg
    [in]wg
    [in]akparameter vector
    [in]mamap-space domain-parameter vector
    [out]qlambda-parameterized quality diagnostic
    [out]qdakderivatives value
    [out]qdmaderivatives value
    [out]gageographic domain-parameter vector
    [out]gadak
    [out]gadma
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 604 of file pesg.f90.

    + +

    References pietc::rtod, and pietc::u0.

    + +
    +
    + +

    ◆ get_meanqs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_meanqs (integer(spi), intent(in) n,
    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,n), intent(in) aks,
    real(dp), dimension(2,n), intent(in) mas,
    real(dp), dimension(n), intent(out) qs,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like getmeanqd, except for n different values, aks, of ak and n different values, mas of ma, and without any of the derivatives.

    +
    Parameters
    + + + + + + + + + + +
    [in]n
    [in]ngh
    [in]lam
    [in]xg
    [in]wg
    [in]aks
    [in]mas
    [out]qs
    [out]ff
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 682 of file pesg.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ get_qofv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qofv (real(dp), intent(in) lam,
    real(dp), intent(in) v1,
    real(dp), intent(in) v2,
    real(dp), intent(in) v3,
    real(dp), intent(in) v4,
    real(dp), intent(out) q 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + +
    [in]lam
    [in]v1quadratic diagnostics of EL
    [in]v2linear diagnostics of EL
    [in]v3linear diagnostics of EL
    [in]v4quadratic diagnostics of EL
    [out]qquadratic quantity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 729 of file pesg.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ get_qofvd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qofvd (real(dp), intent(in) lam,
    real(dp), intent(in) v2,
    real(dp), intent(in) v3,
    real(dp), dimension(2), intent(in) v1d,
    real(dp), dimension(2), intent(in) v2d,
    real(dp), dimension(2), intent(in) v3d,
    real(dp), dimension(2), intent(in) v4d,
    real(dp), dimension(2), intent(out) qd 
    )
    +
    +private
    +
    + +

    Like get_qofv, but for (only) the 2-vector derivatives of Q.

    +

    Note that the quadratic diagnostics v1 and v4 do not participate in this formula.

    +
    Parameters
    + + + + + + + + + +
    [in]lam
    [in]v2
    [in]v3
    [in]v1d
    [in]v2d
    [in]v3d
    [in]v4d
    [out]qd
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 751 of file pesg.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ get_qsofvs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qsofvs (integer(spi), intent(in) n,
    real(dp), intent(in) lam,
    real(dp), dimension(n), intent(in) v1s,
    real(dp), dimension(n), intent(in) v2s,
    real(dp), dimension(n), intent(in) v3s,
    real(dp), dimension(n), intent(in) v4s,
    real(dp), dimension(n), intent(out) qs 
    )
    +
    +private
    +
    + +

    General util to convert value.

    +
    Parameters
    + + + + + + + + +
    [in]n
    [in]lam
    [in]v1s
    [in]v2s
    [in]v3s
    [in]v4s
    [out]qs
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 771 of file pesg.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ get_qx()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::get_qx (real(dp), dimension(3,2), intent(in) j0,
    real(dp), intent(out) v1,
    real(dp), intent(out) v2,
    real(dp), intent(out) v3,
    real(dp), intent(out) v4 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]j0jacobian matrix
    [out]v1quadratic diagnostics of EL
    [out]v2linear diagnostics of EL
    [out]v3linear diagnostics of EL
    [out]v4quadratic diagnostics of EL
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 512 of file pesg.f90.

    + +

    References pietc::o2, and pietc::u2.

    + +
    +
    + +

    ◆ get_qxd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + +
    [in]j0jacobian matrix
    [in]j0dderivative of j0
    [in]v1
    [in]v2
    [in]v3
    [in]v4
    [in]v1d
    [in]v2d
    [in]v3d
    [in]v4d
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 542 of file pesg.f90.

    + +

    References pietc::o2, pietc::u0, and pietc::u2.

    + +
    +
    + +

    ◆ gtoxm_ak_dd_g()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_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), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like gtoxm_ak_rr_g, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]pdlatdegrees latitude defining mapping projection center
    [in]pdlondegrees longitude defining mapping projection center
    [in]pdaziAzimuth of mapping orientation at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]dlatdegrees latitude of a point to be mapped
    [in]dlondegrees longitude of a point to be mapped
    [out]xm2-vector image of the point in center-relative grid units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1984 of file pesg.f90.

    + +

    References pietc::dtor, and gtoxm_ak_rr_g().

    + +
    +
    + +

    ◆ gtoxm_ak_dd_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_dd_m (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) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like gtoxm_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]pdlatdegrees latitude defining mapping center
    [in]pdlondegrees longitude defining mapping center
    [in]pdaziAzimuth of mapping orientation at its center
    [in]dlatdegrees latitude of point to be mapped
    [in]dlondegrees longitude of point to be mapped
    [out]xm2-vector center-relative map space image of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1955 of file pesg.f90.

    + +

    References pietc::dtor, and gtoxm_ak_rr_m().

    + +
    +
    + +

    ◆ gtoxm_ak_rr_g()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameter of the ESG mapping
    [in]kparameter of the ESG mapping
    [in]platradians latitude defining mapping projection center
    [in]plonradians longitude defining mapping projection center
    [in]paziAzimuth of mapping orientation at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]latradians latitude of a point to be mapped
    [in]lonradians longitude of a point to be mapped
    [out]xm2-vector map space image in center-relative grid units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1933 of file pesg.f90.

    + +

    References gtoxm_ak_rr_m().

    + +

    Referenced by gtoxm_ak_dd_g().

    + +
    +
    + +

    ◆ gtoxm_ak_rr_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::gtoxm_ak_rr_m (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) lat,
    real(dp), intent(in) lon,
    real(dp), dimension(2), intent(out) xm,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]platradians latitude defining mapping projection center
    [in]plonradians longitude defining mapping projection center
    [in]paziAximuth of mapping orientation at its center
    [in]latradians latitude of a point to be mapped
    [in]lonradians longitude of a point to be mapped
    [out]xm2-vector center-relative map-space image of mapped point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    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().

    + +
    +
    + +

    ◆ guessak_geo()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::guessak_geo (real(dp), intent(in) asp,
    real(dp), intent(in) arc,
    real(dp), dimension(2), intent(out) ak 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    aspaspect ratio of intended domain
    arcmajor semi-axis angle in degrees for intended domain
    akfirst guess of the parameter vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 809 of file pesg.f90.

    + +
    +
    + +

    ◆ guessak_map()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::guessak_map (real(dp), intent(in) asp,
    real(dp), intent(in) tmarcx,
    real(dp), dimension(2), intent(out) ak 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]aspaspect ratio
    [in]tmarcx
    [out]akfirst guess for the parameter vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 791 of file pesg.f90.

    + +

    References pietc::rtod.

    + +
    +
    + +

    ◆ hgrid_ak()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of map orientation at its center
    [in]reearth radius
    [in]delxremap-space grid increments in the dimensional units
    [in]delyremap-space grid increments in the dimensional units
    [out]glatgrid points for latitude
    [out]glongrid points for longitude
    [out]gareaarray of grid-cell areas in dimensional units
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1766 of file pesg.f90.

    + +
    +
    + +

    ◆ hgrid_ak_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_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) 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,
    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) dangle_dx,
    real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) dangle_dy,
    logical, intent(out) ff 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumber of grid spaces in x
    [in]nynumber of grid spaces in y
    [in]aExtended Schmidt Gnomonic parameter
    [in]kExtended Schmidt Gnomonic parameter
    [in]platlatitude of projection center of the mapping (radians)
    [in]plonlongitude of projection center of the mapping (radians)
    [in]paziAzimuth of map orientation at its center (radians)
    [in]reearth radius in dimensional length units
    [in]delxremap-space grid increments in the dimensional units
    [in]delyremap-space grid increments in the dimensional units
    [out]glatgridded lats (radians)
    [out]glongridded lons (radians)
    [out]gareagrid cell areas in dimensional units
    [out]dxx- grid steps in dimensional units
    [out]dyy- grid steps in dimensional units
    [out]dangle_dxazimuth rotations of the steps dx (in degrees)
    [out]dangle_dyazimuth rotations of the steps dy (in degrees)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1818 of file pesg.f90.

    + +

    References hgrid_ak_rr_c(), and pietc::rtod.

    + +
    +
    + +

    ◆ hgrid_ak_dc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatdegrees latitude of the projection center of the mapping
    [in]pdlondegrees longitude of the projection center of the mapping
    [in]pdaziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [out]xcgrid points' earth-centered unit cartesians
    [out]xcdJacobian matrices, d(xc)/d(xm)
    [out]gareaarray of grid-cell areas (steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1724 of file pesg.f90.

    + +

    References pietc::dtor.

    + +
    +
    + +

    ◆ hgrid_ak_dd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumber of the grid spaces in x
    [in]nynumber of the grid spaces in y
    [in]aparameter of an ESG mapping
    [in]kparameter of an ESG mapping
    [in]pdlatdegrees latitude of the projection center of mapping
    [in]pdlondegrees longitude of the projection center of mapping
    [in]pdazidegrees azimuth of orientation of mapping at its center
    [in]delxcentral x-spacing of the grid (in radians)
    [in]delycentral y-spacing of the grid (in radians)
    [out]gdlatarray of grid point latitudes (in degrees)
    [out]gdlonarray of grid point longitudes (in dgrees)
    [out]gareaarray of grid cell areas (in steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1630 of file pesg.f90.

    + +

    References pietc::dtor, and pietc::rtod.

    + +
    +
    + +

    ◆ hgrid_ak_dd_c()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::hgrid_ak_dd_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) 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,
    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) dangle_dx,
    real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) dangle_dy,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like hgrid_ak_rr_c, except all the angle arguments (but not delx,dely) are in degrees instead of radians.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatlatitude defining projection center of the mapping
    [in]pdlonlongitude defining projection center of the mapping
    [in]pdaziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid (in radians)
    [in]delycentral y-spacing of the grid (in radians)
    [out]gdlatarray of grid point degree-latitudes
    [out]gdlonarray of grid point degree-longitudes
    [out]gareaarray of grid-cell areas (steradians)
    [out]dxstep sizes of the grid-cell edges in x (earth radius=1 unit)
    [out]dystep sizes of the grid-cell edges in y (earth radius=1 unit)
    [out]dangle_dxazimuth rotation of the x grid steps, dx (degrees)
    [out]dangle_dyazimuth rotation of the y grid steps, dy (degrees)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1673 of file pesg.f90.

    + +

    References pietc::dtor, hgrid_ak_rr_c(), and pietc::rtod.

    + +
    +
    + +

    ◆ hgrid_ak_rc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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. .

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    lxcenter-relative x grid index for left edge of the domain
    lycenter-relative y grid index for lower edge of the domain
    nxnumbers of the grid spaces in x
    nynumbers of the grid spaces in y
    aparameters of the ESG mapping centered at (plat,plon)
    kparameters of the ESG mapping centered at (plat,plon)
    platlatitude of the projection center of the mapping (radians)
    plonlongitude of the projection center of the mapping (radians)
    paziazimuth of orientation of mapping at its center
    delxcentral x-spacing of the grid (in radians)
    delycentral y-spacing of the grid (in radians)
    xcEarth-centered unit cartesian 3-vectors at each grid point
    xcdJacobian matrices, d(xc)/d(xm), at each grid point
    garearectangular array of grid-cell areas (steradians)
    fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1541 of file pesg.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ hgrid_ak_rr()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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. .

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative grid index in x of left edge of the domain
    [in]lycenter-relative grid index in y of lower edge of the domain
    [in]nxnumber of grid spaces in x
    [in]nynumber of grid spaces in y
    [in]Aparameter of the ESG mapping centered at (plat,plon)
    [in]Kparameter of the ESG mapping centered at (plat,plon)
    [in]platlatitude of projection center of mapping (radians)
    [in]plonlongitude of projection center of mapping (radians)
    [in]paziazimuth of orientation of mapping at its center
    [in]delxcentral x-spacing of the grid (radians)
    [in]delycentral y-spacing of the grid (radians)
    [out]glatgrid points' latitudes
    [out]glongrid points' longitudes
    [out]gareaarray of grid-cell areas (steradians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1221 of file pesg.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ hgrid_ak_rr_c()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + +
    [in]lxcenter-relative x grid index for left edge of the domain
    [in]lycenter-relative y grid index for lower edge of the domain
    [in]nxnumbers of the grid spaces in x
    [in]nynumbers of the grid spaces in y
    [in]aExtended Schmidt Gnomonic parameter
    [in]kExtended Schmidt Gnomonic parameter
    [in]platlatitude of the projection center of the mapping (radians)
    [in]plonlongitude of the projection center of the mapping (radians)
    [in]paziazimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid (radians)
    [in]delycentral y-spacing of the grid (radians)
    [out]glatgrid points' latitudes (radians)
    [out]glongrid points' longitudes (radians)
    [out]gareaarray of grid-cell areas (steradians)
    [out]dxgrid steps in x at grid cell edges (radians)
    [out]dygrid steps in y at grid cell edges (radians)
    [out]angle_dxx angles relative to local east (radians)
    [out]angle_dyy angles relative to local north (radians)
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1338 of file pesg.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +

    Referenced by hgrid_ak_c(), and hgrid_ak_dd_c().

    + +
    +
    + +

    ◆ xctoxm_ak()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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).

    +
    Parameters
    + + + + + + +
    [in]aESG mapping parameter for line spacing profile
    [in]kESG mapping parameter for Gauss curvature in Schmidt mapping
    [in]xcEarth-centered cartesian unit 3-vector
    [out]xm2-vector map coordinate
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 466 of file pesg.f90.

    + +

    References pietc::f.

    + +
    +
    + +

    ◆ xctoxs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xctoxs (real(dp), dimension(3), intent(in) xc,
    real(dp), dimension(2), intent(out) xs 
    )
    +
    +private
    +
    + +

    Inverse of xstoxc.

    +

    I.e., cartesians to stereographic.

    +
    Parameters
    + + + +
    [in]xcEarth-centered cartesian unit 3-vector
    [out]xsStereographic map coordinates
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 68 of file pesg.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ xmtog_ak_dd_g()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameters of an ESG mapping
    [in]kparameters of an ESG mapping
    [in]pdlatdegrees latitude of projection center of the mapping
    [in]pdlondegrees longitude of projection center of the mapping
    [in]pdaziAzimuth of the mapping orientation about its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing of the grid in radians
    [in]xmmap coordinates, in grid units, of a point to be mapped
    [out]dlatdegrees latitude of the point
    [out]dlondegrees longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2118 of file pesg.f90.

    + +

    References pietc::dtor, pietc::rtod, and xmtog_ak_rr_m().

    + +
    +
    + +

    ◆ xmtog_ak_dd_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_dd_m (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), dimension(2), intent(in) xm,
    real(dp), intent(out) dlat,
    real(dp), intent(out) dlon,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like xmtog_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameters of the ESG mapping
    [in]kparameters of the ESG mapping
    [in]pdlatdegrees latitude of the projection center of the mapping
    [in]pdlondegrees longitude of the projection center of the mapping
    [in]pdaziAzimuth of the orientation of the mapping at its center
    [in]xmmap space 2-vector coordinates of a point
    [out]dlatdegrees latitude of the point
    [out]dlondegrees longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2087 of file pesg.f90.

    + +

    References pietc::dtor, pietc::rtod, and xmtog_ak_rr_m().

    + +
    +
    + +

    ◆ xmtog_ak_rr_g()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + + + + +
    [in]aparameters of the ESG mapping
    [in]kparameters of the ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of the orientation of the mapping at its center
    [in]delxcentral x-spacing of the grid in radians
    [in]delycentral y-spacing grid point in radians
    [in]xmgrid-space 2-vector coordinates of a point to be mapped
    [out]latradians latitude of the point
    [out]lonradians longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2063 of file pesg.f90.

    + +

    References xmtog_ak_rr_m().

    + +
    +
    + +

    ◆ xmtog_ak_rr_m()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtog_ak_rr_m (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), dimension(2), intent(in) xm,
    real(dp), intent(out) lat,
    real(dp), intent(out) lon,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + + +
    [in]aparameter of an ESG mapping
    [in]kparameter of an ESG mapping
    [in]platradians latitude of the projection center of the mapping
    [in]plonradians longitude of the projection center of the mapping
    [in]paziAzimuth of orientation of the mapping at its center
    [in]xmcenter-relative 2-vector map space coordinates of a point
    [out]latradians latitude of the point
    [out]lonradians longitude of the point
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    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().

    + +
    +
    + +

    ◆ xmtoxc_ak()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]aESG mapping parameter for line spacing profile
    [in]kESG mapping parameter for Gauss curvature in Schmidt mapping
    [in]xmmap-space 2-vector
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian matrix, d(xc)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 440 of file pesg.f90.

    + +
    +
    + +

    ◆ xmtoxc_vak()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    Parameters
    + + + + + + +
    [in]ak2-vector parameterization of the ESG mapping
    [in]xm2-vector of map plane coordinates
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian, d(xc)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 381 of file pesg.f90.

    + +
    +
    + +

    ◆ xmtoxc_vak1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxc_vak1 (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,
    real(dp), dimension(3,2), intent(out) xc1,
    real(dp), dimension(3,2,2), intent(out) xcd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like xmtoxc_vak, _ak, but also return derivatives wrt ak.

    +
    Parameters
    + + + + + + + + +
    [in]ak2-vector parameterization of the ESG mapping
    [in]xm2-vector of map plane coordinates
    [out]xcEarth-centered cartesian unit 3-vector
    [out]xcdJacobian of xc wrt xm, d(xc)/d(xm)
    [out]xc1Partial derivatives wrt ak of xc, d(xc)/d(ak)
    [out]xcd1Second derivative wrt xm and ak of xc, d^2(xc)/(d(xm)d(ak))
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 400 of file pesg.f90.

    + +

    References xmtoxt1(), and xttoxs1().

    + +
    +
    + +

    ◆ xmtoxt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxt (real(dp), intent(in) a,
    real(dp), dimension(2), intent(in) xm,
    real(dp), dimension(2), intent(out) xt,
    real(dp), dimension(2,2), intent(out) xtd,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd.

    +
    Parameters
    + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]xmVector value of map coordinates
    [out]xtVector value of gnomonic plane coordinates
    [out]xtd2*2 diagonal Jacobian, d(xt)/d(xm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 254 of file pesg.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ xmtoxt1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xmtoxt1 (real(dp), intent(in) a,
    real(dp), dimension(2), intent(in) xm,
    real(dp), dimension(2), intent(out) xt,
    real(dp), dimension(2,2), intent(out) xtd,
    real(dp), dimension(2), intent(out) xt1,
    real(dp), dimension(2,2), intent(out) xtd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt1, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd Also, the derivatives, wrt a, of these quantities.

    +
    Parameters
    + + + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]xmVector value of map plane coordinates
    [out]xtVector value of gnomonic plane coordinates
    [out]xtd2*2 diagonal Jacobian, d(xt)/d(xm)
    [out]xt1Derivative wrt a of xt, d(xt)/da
    [out]xtd1Derivative wrt a of Jacobian xtd, d^2(xt)/(d(xm)da)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 276 of file pesg.f90.

    + +

    References pietc::u0, and zmtozt1().

    + +

    Referenced by xmtoxc_vak1().

    + +
    +
    + +

    ◆ xstoxc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xstoxc (real(dp), dimension(2), intent(in) xs,
    real(dp), dimension(3), intent(out) xc,
    real(dp), dimension(3,2), intent(out) xcd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]xsStereographic map coordinates
    [out]xcCartesian earth-centered 3-vector
    [out]xcdValue of jacobian matrix, encoding distortion and metric
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 85 of file pesg.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ xstoxc1()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]xsStereographic map coordinates
    [out]xcCartesian earth-centered 3-vector
    [out]xcdJacobian matrix, encoding distortion and metric
    [out]xcddFurther derivative, wrt xs, of xcd
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 107 of file pesg.f90.

    + +

    References pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ xstoxt()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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 
    )
    +
    + +

    Inverse of xttoxs.

    +
    Parameters
    + + + + + +
    [in]kGaussian curvature parameter of Schmidt mapping
    [in]xsStereographic plane coordinates
    [out]xtScaled gnomonic plane coordinates
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 139 of file pesg.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ xttoxm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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 
    )
    +
    + +

    Inverse of xmtoxt.

    +
    Parameters
    + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    +
    [in]xtGnomonic plane coordinates
    +
    [out]xmMap coordinates
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 235 of file pesg.f90.

    + +
    +
    + +

    ◆ xttoxs()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::xttoxs (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,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Scaled gnomonic plane xt to standard stereographic plane xs.

    +
    Parameters
    + + + + + + +
    [in]kGaussian curvature parameter of Schmidt mapping
    [in]xtScaled gnomonic plane
    [out]xsStandard stereographic plane
    [out]xsdJacobian matrix, d(xs)/d(xt).
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 159 of file pesg.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ xttoxs1()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + +
    [in]kGaussian curvature parameter of the Schmidt mapping
    [in]xtScaled gnomonic plane
    [out]xsStandard stereographic plane
    [out]xsdJacobian matrix, d(xs)/d(xt)
    [out]xsddSecond partial derivatives, d^2(xs)/(d(xt)d(xt))
    [out]xs1Derivative of xs wrt mapping parameter, d(xs)/dk
    [out]xsd1Derivative of Jacobian wrt k: d^2(xs)/(d(xt)dk)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 193 of file pesg.f90.

    + +

    References pietc::o2, pietc::u0, pietc::u1, and pietc::u2.

    + +

    Referenced by xmtoxc_vak1().

    + +
    +
    + +

    ◆ zmtozt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zmtozt (real(dp), intent(in) a,
    real(dp), intent(in) zm,
    real(dp), intent(out) zt,
    real(dp), intent(out) ztd,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]zmScalar value of single map plane coordinate
    [out]ztScalar value of single gnomonic plane coordinate
    [out]ztdDerivative of gnomonic coordinate, d(zt)/d(zm)
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 323 of file pesg.f90.

    + +

    References pietc::f, pietc::pih, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ zmtozt1()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zmtozt1 (real(dp), intent(in) a,
    real(dp), intent(in) zm,
    real(dp), intent(out) zt,
    real(dp), intent(out) ztd,
    real(dp), intent(out) zt1,
    real(dp), intent(out) ztd1,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Like zmtozt, but also, get the derivative with respect to a, zt1 of zt, and ztd1 of ztd.

    +
    Parameters
    + + + + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]zmSingle map plane coordinate
    [in]ztSingle gnomonic plane coordinate
    [in]ztdDerivative wrt zm of zt, d(zt)/d(zm)
    [in]zt1Derivative wrt a of zt, d(zt)/da
    [in]ztd1Derivative wrt a of ztd, d^2(zt)/(d(zm)da)
    [in]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 348 of file pesg.f90.

    + +

    References pietc::o3.

    + +

    Referenced by xmtoxt1().

    + +
    +
    + +

    ◆ zttozm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pesg::zttozm (real(dp), intent(in) a,
    real(dp), intent(in) zt,
    real(dp), intent(out) zm,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Inverse of zmtozt.

    +
    Parameters
    + + + + + +
    [in]aMapping parameter controlling grid line spacing profile
    [in]ztScalar value of single gnomonic plane coordinate
    [out]zmScalar value of single map plane coordinate
    [out]ffFailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 299 of file pesg.f90.

    + +

    References pietc::f, pietc::u0, and pietc::u1.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepesg.js b/ver-1.11.0/grid_tools/namespacepesg.js new file mode 100644 index 000000000..e4d414dd0 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepesg.js @@ -0,0 +1,31 @@ +var namespacepesg = +[ + [ "bestesg_geo", "interfacepesg_1_1bestesg__geo.html", "interfacepesg_1_1bestesg__geo" ], + [ "bestesg_map", "interfacepesg_1_1bestesg__map.html", "interfacepesg_1_1bestesg__map" ], + [ "gaulegh", "interfacepesg_1_1gaulegh.html", "interfacepesg_1_1gaulegh" ], + [ "get_edges", "interfacepesg_1_1get__edges.html", "interfacepesg_1_1get__edges" ], + [ "get_meanq", "interfacepesg_1_1get__meanq.html", "interfacepesg_1_1get__meanq" ], + [ "get_qofv", "interfacepesg_1_1get__qofv.html", "interfacepesg_1_1get__qofv" ], + [ "get_qx", "interfacepesg_1_1get__qx.html", "interfacepesg_1_1get__qx" ], + [ "gtoxm_ak_dd", "interfacepesg_1_1gtoxm__ak__dd.html", "interfacepesg_1_1gtoxm__ak__dd" ], + [ "gtoxm_ak_rr", "interfacepesg_1_1gtoxm__ak__rr.html", "interfacepesg_1_1gtoxm__ak__rr" ], + [ "guessak_geo", "interfacepesg_1_1guessak__geo.html", "interfacepesg_1_1guessak__geo" ], + [ "guessak_map", "interfacepesg_1_1guessak__map.html", "interfacepesg_1_1guessak__map" ], + [ "hgrid_ak", "interfacepesg_1_1hgrid__ak.html", "interfacepesg_1_1hgrid__ak" ], + [ "hgrid_ak_dc", "interfacepesg_1_1hgrid__ak__dc.html", "interfacepesg_1_1hgrid__ak__dc" ], + [ "hgrid_ak_dd", "interfacepesg_1_1hgrid__ak__dd.html", "interfacepesg_1_1hgrid__ak__dd" ], + [ "hgrid_ak_rc", "interfacepesg_1_1hgrid__ak__rc.html", "interfacepesg_1_1hgrid__ak__rc" ], + [ "hgrid_ak_rr", "interfacepesg_1_1hgrid__ak__rr.html", "interfacepesg_1_1hgrid__ak__rr" ], + [ "xctoxm_ak", "interfacepesg_1_1xctoxm__ak.html", "interfacepesg_1_1xctoxm__ak" ], + [ "xctoxs", "interfacepesg_1_1xctoxs.html", "interfacepesg_1_1xctoxs" ], + [ "xmtog_ak_dd", "interfacepesg_1_1xmtog__ak__dd.html", "interfacepesg_1_1xmtog__ak__dd" ], + [ "xmtog_ak_rr", "interfacepesg_1_1xmtog__ak__rr.html", "interfacepesg_1_1xmtog__ak__rr" ], + [ "xmtoxc_ak", "interfacepesg_1_1xmtoxc__ak.html", "interfacepesg_1_1xmtoxc__ak" ], + [ "xmtoxt", "interfacepesg_1_1xmtoxt.html", "interfacepesg_1_1xmtoxt" ], + [ "xstoxc", "interfacepesg_1_1xstoxc.html", "interfacepesg_1_1xstoxc" ], + [ "xstoxt", "interfacepesg_1_1xstoxt.html", "interfacepesg_1_1xstoxt" ], + [ "xttoxm", "interfacepesg_1_1xttoxm.html", "interfacepesg_1_1xttoxm" ], + [ "xttoxs", "interfacepesg_1_1xttoxs.html", "interfacepesg_1_1xttoxs" ], + [ "zmtozt", "interfacepesg_1_1zmtozt.html", "interfacepesg_1_1zmtozt" ], + [ "zttozm", "interfacepesg_1_1zttozm.html", "interfacepesg_1_1zttozm" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacepfun.html b/ver-1.11.0/grid_tools/namespacepfun.html new file mode 100644 index 000000000..b3c5244d1 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepfun.html @@ -0,0 +1,967 @@ + + + + + + + +grid_tools: pfun Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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.

    +
    Author
    R. J. Purser
    +

    Function/Subroutine Documentation

    + +

    ◆ ahav_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::ahav_d (real(dp), intent(in) a)
    +
    + +

    Arc-haversine function for double precision real.

    +
    Parameters
    + + +
    [in]adouble precision real argument
    +
    +
    +
    Returns
    t arc-haversine function of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 157 of file pfun.f90.

    + +

    References pietc::u2.

    + +
    +
    + +

    ◆ ahav_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::ahav_s (real(sp), intent(in) a)
    +
    + +

    Arc-haversine function for single precision real.

    +
    Parameters
    + + +
    [in]asingle precision real argument
    +
    +
    +
    Returns
    t arc-haversine function of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 144 of file pfun.f90.

    + +

    References pietc::t, and pietc::u2.

    + +
    +
    + +

    ◆ ahavh_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::ahavh_d (real(dp), intent(in) a)
    +
    + +

    Hyperbolic arc-haversine for double precision real.

    +
    Parameters
    + + +
    [in]adouble precision real argument
    +
    +
    +
    Returns
    t hyperbolic arc-haversine of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 185 of file pfun.f90.

    + +

    References pietc::u2.

    + +
    +
    + +

    ◆ ahavh_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::ahavh_s (real(sp), intent(in) a)
    +
    + +

    Hyperbolic arc-haversine for single precision real.

    +
    Note
    The minus sign in the hyperbolic arc-haversine definition.
    +
    Parameters
    + + +
    [in]asingle precision real argument
    +
    +
    +
    Returns
    t hyperbolic arc-haversine of a
    +
    Author
    R. J. Purser
    + +

    Definition at line 172 of file pfun.f90.

    + +

    References pietc::t, and pietc::u2.

    + +
    +
    + +

    ◆ atanh_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::atanh_d (real(dp), intent(in) t)
    +
    + +

    Hyperbolic arc-tangent for double precision real.

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a hyperbolic arc-tangent of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 216 of file pfun.f90.

    + +

    References pietc::o2, pietc::o3, pietc::o5, and pietc::u1.

    + +
    +
    + +

    ◆ atanh_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::atanh_s (real(sp), intent(in) t)
    +
    + +

    Hyperbolic arc-tangent for single precision real.

    +

    (compilers now have this)

    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a hyperbolic arc-tangent of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 198 of file pfun.f90.

    + +

    References pietc::o2, pietc::t, and pietc::u1.

    + +
    +
    + +

    ◆ gd_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::gd_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Gudermannian function (related to Mercator map projections)

    +
    Parameters
    + + +
    [in]xdouble precision real argument of function
    +
    +
    +
    Returns
    y Gudermannian function of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 54 of file pfun.f90.

    + +
    +
    + +

    ◆ gd_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::gd_s (real(sp), intent(in) x)
    +
    +private
    +
    + +

    Gudermannian function (related to Mercator map projections)

    +
    Parameters
    + + +
    [in]xsingle precision real argument of function
    +
    +
    +
    Returns
    y Gudermannian function of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 41 of file pfun.f90.

    + +
    +
    + +

    ◆ gdi_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::gdi_d (real(dp), intent(in) y)
    +
    +private
    +
    + +

    Inverse Gudermannian function for double precision real.

    +
    Parameters
    + + +
    [in]ydouble precision real argument
    +
    +
    +
    Returns
    x inverse Gudermannian function of y
    +
    Author
    R. J. Purser
    + +

    Definition at line 78 of file pfun.f90.

    + +
    +
    + +

    ◆ gdi_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::gdi_s (real(sp), intent(in) y)
    +
    +private
    +
    + +

    Inverse Gudermannian function for single precision real.

    +
    Parameters
    + + +
    [in]ysingle precision real argument
    +
    +
    +
    Returns
    x inverse Gudermannian function of y
    +
    Author
    R. J. Purser
    + +

    Definition at line 66 of file pfun.f90.

    + +
    +
    + +

    ◆ hav_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::hav_d (real(dp), intent(in) t)
    +
    + +

    Haversine function for double precision real (for geometry on the sphere).

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 103 of file pfun.f90.

    + +

    References pietc::o2.

    + +
    +
    + +

    ◆ hav_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pfun::hav_s (real(sp), intent(in) t)
    +
    +private
    +
    + +

    Haversine function for single precision real (for geometry on the sphere).

    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 90 of file pfun.f90.

    + +

    References pietc::o2, and pietc::t.

    + +
    +
    + +

    ◆ havh_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::havh_d (real(dp), intent(in) t)
    +
    + +

    Hyperbolic-haversine for double precision real (for pseudosphere geometry).

    +
    Parameters
    + + +
    [in]tdouble precision real argument
    +
    +
    +
    Returns
    a hyperbolic-haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 131 of file pfun.f90.

    + +

    References pietc::o2.

    + +
    +
    + +

    ◆ havh_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::havh_s (real(sp), intent(in) t)
    +
    + +

    Hyperbolic-haversine for single precision real (for pseudosphere geometry).

    +
    Note
    The minus sign in the hyperbolic-haversine definition.
    +
    Parameters
    + + +
    [in]tsingle precision real argument
    +
    +
    +
    Returns
    a hyperbolic-haversine function of t
    +
    Author
    R. J. Purser
    + +

    Definition at line 118 of file pfun.f90.

    + +

    References pietc::o2, and pietc::t.

    + +
    +
    + +

    ◆ sech_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::sech_d (real(dp), intent(in) x)
    +
    + +

    Hyperbolic secant for double precision real.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r hyperbolic secant of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 251 of file pfun.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ sech_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::sech_s (real(sp), intent(in) x)
    +
    + +

    Hyperbolic secant for single precision real.

    +
    Parameters
    + + +
    [in]xsingle precision real argument
    +
    +
    +
    Returns
    r hyperbolic secant of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 234 of file pfun.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ sechs_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sechs_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Hyperbolic secant-squared function (logistic distribution).

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sech-squared of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 279 of file pfun.f90.

    + +
    +
    + +

    ◆ sechs_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pfun::sechs_s (real(sp), intent(in) x)
    +
    + +

    Hyperbolic secant-squared function (logistic distribution).

    +
    Parameters
    + + +
    [in]xsingle precision real argument
    +
    +
    +
    Returns
    r sech-squared of x
    +
    Author
    R. J. Purser
    + +

    Definition at line 267 of file pfun.f90.

    + +
    +
    + +

    ◆ sinhox_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::sinhox_d (real(dp), intent(in) x)
    +
    + +

    Evaluate the symmetric real function sinh(x)/x.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sinh(x)/x
    +
    Author
    R. J. Purser
    + +

    Definition at line 345 of file pfun.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ sinhoxm_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::sinhoxm_d (real(dp), intent(in) x)
    +
    + +

    Evaluate the symmetric real function sinh(x)/x-1.

    +

    still accurate near x=0.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sinh(x)-1
    +
    Author
    R. J. Purser
    + +

    Definition at line 325 of file pfun.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ sinox_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pfun::sinox_d (real(dp), intent(in) x)
    +
    + +

    Evaluate the symmetric real function sin(x)/x.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sin(x)/x
    +
    Author
    R. J. Purser
    + +

    Definition at line 311 of file pfun.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ sinoxm_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pfun::sinoxm_d (real(dp), intent(in) x)
    +
    +private
    +
    + +

    Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0.

    +
    Parameters
    + + +
    [in]xdouble precision real argument
    +
    +
    +
    Returns
    r sin(x)/x-1
    +
    Author
    R. J. Purser
    + +

    Definition at line 291 of file pfun.f90.

    + +

    References pietc::u1.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepfun.js b/ver-1.11.0/grid_tools/namespacepfun.js new file mode 100644 index 000000000..84ff5e939 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepfun.js @@ -0,0 +1,16 @@ +var namespacepfun = +[ + [ "ahav", "interfacepfun_1_1ahav.html", "interfacepfun_1_1ahav" ], + [ "ahavh", "interfacepfun_1_1ahavh.html", "interfacepfun_1_1ahavh" ], + [ "atanh", "interfacepfun_1_1atanh.html", "interfacepfun_1_1atanh" ], + [ "gd", "interfacepfun_1_1gd.html", "interfacepfun_1_1gd" ], + [ "gdi", "interfacepfun_1_1gdi.html", "interfacepfun_1_1gdi" ], + [ "hav", "interfacepfun_1_1hav.html", "interfacepfun_1_1hav" ], + [ "havh", "interfacepfun_1_1havh.html", "interfacepfun_1_1havh" ], + [ "sech", "interfacepfun_1_1sech.html", "interfacepfun_1_1sech" ], + [ "sechs", "interfacepfun_1_1sechs.html", "interfacepfun_1_1sechs" ], + [ "sinhox", "interfacepfun_1_1sinhox.html", "interfacepfun_1_1sinhox" ], + [ "sinhoxm", "interfacepfun_1_1sinhoxm.html", "interfacepfun_1_1sinhoxm" ], + [ "sinox", "interfacepfun_1_1sinox.html", "interfacepfun_1_1sinox" ], + [ "sinoxm", "interfacepfun_1_1sinoxm.html", "interfacepfun_1_1sinoxm" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacepietc.html b/ver-1.11.0/grid_tools/namespacepietc.html new file mode 100644 index 000000000..f82e9b8c2 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepietc.html @@ -0,0 +1,4600 @@ + + + + + + + +grid_tools: pietc Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pietc Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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.

    +
    Author
    R. J. Purser
    +
    Date
    2014
    +

    Variable Documentation

    + +

    ◆ c0

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::c0 =(u0, u0)
    +
    + +

    complex zero

    + +

    Definition at line 112 of file pietc.f90.

    + +

    Referenced by pmat::cldumf(), and pmat2::clib_c().

    + +
    +
    + +

    ◆ c1

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::c1 =(u1, u0)
    +
    + +

    complex one

    + +

    Definition at line 113 of file pietc.f90.

    + +

    Referenced by pmat::cinvmtf(), pmat::cldumf(), pmat::cudlmm(), and pmat::cudlmv().

    + +
    +
    + +

    ◆ ci

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::ci =(u0, u1)
    +
    + +

    complex i=sqrt(-1)

    + +

    Definition at line 115 of file pietc.f90.

    + +
    +
    + +

    ◆ cipi

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::cipi =ci*pi
    +
    + +

    complex i*pi

    + +

    Definition at line 117 of file pietc.f90.

    + +
    +
    + +

    ◆ dtor

    + + + +

    ◆ euler

    + +
    +
    + + + + +
    real(dp), parameter pietc::euler =0.57721566490153286060651209008240243104215933593992359880e0_dp
    +
    + +

    Euler-Mascheroni constant.

    + +

    Definition at line 53 of file pietc.f90.

    + +
    +
    + +

    ◆ f

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ mc1

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::mc1 =-c1
    +
    + +

    complex minus-one

    + +

    Definition at line 114 of file pietc.f90.

    + +
    +
    + +

    ◆ mci

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::mci =-ci
    +
    + +

    complex minus-i

    + +

    Definition at line 116 of file pietc.f90.

    + +
    +
    + +

    ◆ mo2

    + +
    +
    + + + + +
    real(dp), parameter pietc::mo2 =-o2
    +
    + +

    minus-half

    + +

    Definition at line 37 of file pietc.f90.

    + +
    +
    + +

    ◆ mo3

    + +
    +
    + + + + +
    real(dp), parameter pietc::mo3 =-o3
    +
    + +

    minus-third

    + +

    Definition at line 38 of file pietc.f90.

    + +
    +
    + +

    ◆ mo4

    + +
    +
    + + + + +
    real(dp), parameter pietc::mo4 =-o4
    +
    + +

    minus-fourth

    + +

    Definition at line 39 of file pietc.f90.

    + +
    +
    + +

    ◆ mo5

    + +
    +
    + + + + +
    real(dp), parameter pietc::mo5 =-o5
    +
    + +

    minus-fifth

    + +

    Definition at line 40 of file pietc.f90.

    + +
    +
    + +

    ◆ mo6

    + +
    +
    + + + + +
    real(dp), parameter pietc::mo6 =-o6
    +
    + +

    minus-sixth

    + +

    Definition at line 41 of file pietc.f90.

    + +
    +
    + +

    ◆ ms10

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms10 =-s10
    +
    + +

    minus-sine(10 deg)

    + +

    Definition at line 85 of file pietc.f90.

    + +
    +
    + +

    ◆ ms11

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms11 =-s11
    +
    + +

    minus-sine(90/8 deg)

    + +

    Definition at line 86 of file pietc.f90.

    + +
    +
    + +

    ◆ ms13

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms13 =-s13
    +
    + +

    minus-sine(90/7 deg)

    + +

    Definition at line 87 of file pietc.f90.

    + +
    +
    + +

    ◆ ms15

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms15 =-s15
    +
    + +

    minus-sine(15 deg)

    + +

    Definition at line 88 of file pietc.f90.

    + +
    +
    + +

    ◆ ms18

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ms20

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms20 =-s20
    +
    + +

    minus-sine(20 deg)

    + +

    Definition at line 90 of file pietc.f90.

    + +
    +
    + +

    ◆ ms22

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms22 =-s22
    +
    + +

    minus-sine(22.5 deg)

    + +

    Definition at line 91 of file pietc.f90.

    + +
    +
    + +

    ◆ ms26

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms26 =-s26
    +
    + +

    minus-sine(90*2/7 deg)

    + +

    Definition at line 92 of file pietc.f90.

    + +
    +
    + +

    ◆ ms30

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms30 =-s30
    +
    + +

    minus-sine(30 deg)

    + +

    Definition at line 93 of file pietc.f90.

    + +
    +
    + +

    ◆ ms34

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms34 =-s34
    +
    + +

    minus-sine(90*3/8 deg)

    + +

    Definition at line 94 of file pietc.f90.

    + +
    +
    + +

    ◆ ms36

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ms39

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms39 =-s39
    +
    + +

    minus-sine(90*3/7 deg)

    + +

    Definition at line 96 of file pietc.f90.

    + +
    +
    + +

    ◆ ms40

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms40 =-s40
    +
    + +

    minus-sine(40 deg)

    + +

    Definition at line 97 of file pietc.f90.

    + +
    +
    + +

    ◆ ms45

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms45 =-s45
    +
    + +

    minus-sine(45 deg)

    + +

    Definition at line 98 of file pietc.f90.

    + +
    +
    + +

    ◆ ms50

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms50 =-s50
    +
    + +

    minus-sine(50 deg)

    + +

    Definition at line 99 of file pietc.f90.

    + +
    +
    + +

    ◆ ms51

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms51 =-s51
    +
    + +

    minus-sine(90*4/7 deg)

    + +

    Definition at line 100 of file pietc.f90.

    + +
    +
    + +

    ◆ ms54

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ms56

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms56 =-s56
    +
    + +

    minus-sine(90*5/8 deg)

    + +

    Definition at line 102 of file pietc.f90.

    + +
    +
    + +

    ◆ ms60

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms60 =-s60
    +
    + +

    minus-sine(60 deg)

    + +

    Definition at line 103 of file pietc.f90.

    + +
    +
    + +

    ◆ ms64

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms64 =-s64
    +
    + +

    minus-sine(90*5/7 deg)

    + +

    Definition at line 104 of file pietc.f90.

    + +
    +
    + +

    ◆ ms68

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms68 =-s68
    +
    + +

    minus-sine(67.5 deg)

    + +

    Definition at line 105 of file pietc.f90.

    + +
    +
    + +

    ◆ ms70

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms70 =-s70
    +
    + +

    minus-sine(70 deg)

    + +

    Definition at line 106 of file pietc.f90.

    + +
    +
    + +

    ◆ ms72

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ ms75

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms75 =-s75
    +
    + +

    minus-sine(75 deg)

    + +

    Definition at line 108 of file pietc.f90.

    + +
    +
    + +

    ◆ ms77

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms77 =-s77
    +
    + +

    minus-sine(90*6/7 deg)

    + +

    Definition at line 109 of file pietc.f90.

    + +
    +
    + +

    ◆ ms79

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms79 =-s79
    +
    + +

    minus-sine(90*7/8 deg)

    + +

    Definition at line 110 of file pietc.f90.

    + +
    +
    + +

    ◆ ms80

    + +
    +
    + + + + +
    real(dp), parameter pietc::ms80 =-s80
    +
    + +

    minus-sine(80 deg)

    + +

    Definition at line 111 of file pietc.f90.

    + +
    +
    + +

    ◆ mu1

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu1 =-u1
    +
    + +

    minus-one

    + +

    Definition at line 21 of file pietc.f90.

    + +
    +
    + +

    ◆ mu2

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu2 =-u2
    +
    + +

    minus-two

    + +

    Definition at line 23 of file pietc.f90.

    + +
    +
    + +

    ◆ mu3

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu3 =-u3
    +
    + +

    minus-three

    + +

    Definition at line 25 of file pietc.f90.

    + +
    +
    + +

    ◆ mu4

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu4 =-u4
    +
    + +

    minus-four

    + +

    Definition at line 27 of file pietc.f90.

    + +
    +
    + +

    ◆ mu5

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu5 =-u5
    +
    + +

    minus-five

    + +

    Definition at line 29 of file pietc.f90.

    + +
    +
    + +

    ◆ mu6

    + +
    +
    + + + + +
    real(dp), parameter pietc::mu6 =-u6
    +
    + +

    minus-six

    + +

    Definition at line 31 of file pietc.f90.

    + +
    +
    + +

    ◆ o2

    + + + +

    ◆ o3

    + +
    +
    + + + + +
    real(dp), parameter pietc::o3 =u1/u3
    +
    + +

    third

    + +

    Definition at line 33 of file pietc.f90.

    + +

    Referenced by pfun::atanh_d(), and pesg::zmtozt1().

    + +
    +
    + +

    ◆ o4

    + +
    +
    + + + + +
    real(dp), parameter pietc::o4 =u1/u4
    +
    + +

    fourth

    + +

    Definition at line 34 of file pietc.f90.

    + +
    +
    + +

    ◆ o5

    + +
    +
    + + + + +
    real(dp), parameter pietc::o5 =u1/u5
    +
    + +

    fifth

    + +

    Definition at line 35 of file pietc.f90.

    + +

    Referenced by pfun::atanh_d(), pesg::bestesg_geo(), and pesg::bestesg_map().

    + +
    +
    + +

    ◆ o6

    + +
    +
    + + + + +
    real(dp), parameter pietc::o6 =u1/u6
    +
    + +

    sixth

    + +

    Definition at line 36 of file pietc.f90.

    + +
    +
    + +

    ◆ or2

    + +
    +
    + + + + +
    real(dp), parameter pietc::or2 =u1/r2
    +
    + +

    1.

    +

    /root of two

    + +

    Definition at line 49 of file pietc.f90.

    + +
    +
    + +

    ◆ or3

    + +
    +
    + + + + +
    real(dp), parameter pietc::or3 =u1/r3
    +
    + +

    1.

    +

    /root of three

    + +

    Definition at line 50 of file pietc.f90.

    + +
    +
    + +

    ◆ or5

    + +
    +
    + + + + +
    real(dp), parameter pietc::or5 =u1/r5
    +
    + +

    1.

    +

    /root of five

    + +

    Definition at line 51 of file pietc.f90.

    + +
    +
    + +

    ◆ phi

    + +
    +
    + + + + +
    real(dp), parameter pietc::phi =1.6180339887498948482045868343656381177203091798057628621354e0_dp
    +
    + +

    Golden number.

    + +

    Definition at line 52 of file pietc.f90.

    + +
    +
    + +

    ◆ pi

    + +
    +
    + + + + +
    real(dp), parameter pietc::pi =3.1415926535897932384626433832795028841971693993751058209749e0_dp
    +
    + +

    Pi.

    + +

    Definition at line 42 of file pietc.f90.

    + +
    +
    + +

    ◆ pi2

    + +
    +
    + + + + +
    real(dp), parameter pietc::pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_dp
    +
    + +

    Pi*2.

    + +

    Definition at line 43 of file pietc.f90.

    + +
    +
    + +

    ◆ pih

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ r2

    + +
    +
    + + + + +
    real(dp), parameter pietc::r2 =1.4142135623730950488016887242096980785696718753769480731766e0_dp
    +
    + +

    Square root of 2.

    + +

    Definition at line 46 of file pietc.f90.

    + +
    +
    + +

    ◆ r3

    + +
    +
    + + + + +
    real(dp), parameter pietc::r3 =1.7320508075688772935274463415058723669428052538103806280558e0_dp
    +
    + +

    Square root of 3.

    + +

    Definition at line 47 of file pietc.f90.

    + +
    +
    + +

    ◆ r5

    + +
    +
    + + + + +
    real(dp), parameter pietc::r5 =2.2360679774997896964091736687312762354406183596115257242708e0_dp
    +
    + +

    Square root of 5.

    + +

    Definition at line 48 of file pietc.f90.

    + +
    +
    + +

    ◆ rpi

    + +
    +
    + + + + +
    real(dp), parameter pietc::rpi =1.7724538509055160272981674833411451827975494561223871282138e0_dp
    +
    + +

    square root of pi

    + +

    Definition at line 45 of file pietc.f90.

    + +
    +
    + +

    ◆ rtod

    + +
    +
    + + + + +
    real(dp), parameter pietc::rtod =180/pi
    +
    +
    + +

    ◆ s10

    + +
    +
    + + + + +
    real(dp), parameter pietc::s10 =.173648177666930348851716626769314796000375677184069387236241e0_dp
    +
    + +

    sine(10 deg)

    + +

    Definition at line 57 of file pietc.f90.

    + +
    +
    + +

    ◆ s11

    + +
    +
    + + + + +
    real(dp), parameter pietc::s11 =.195090322016128267848284868477022240927691617751954807754502e0_dp
    +
    + +

    sine(90/8 deg)

    + +

    Definition at line 58 of file pietc.f90.

    + +
    +
    + +

    ◆ s13

    + +
    +
    + + + + +
    real(dp), parameter pietc::s13 =.222520933956314404288902564496794759466355568764544955311987e0_dp
    +
    + +

    sine(90/7 deg)

    + +

    Definition at line 59 of file pietc.f90.

    + +
    +
    + +

    ◆ s15

    + +
    +
    + + + + +
    real(dp), parameter pietc::s15 =.258819045102520762348898837624048328349068901319930513814003e0_dp
    +
    + +

    sine(15 deg)

    + +

    Definition at line 60 of file pietc.f90.

    + +
    +
    + +

    ◆ s18

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ s20

    + +
    +
    + + + + +
    real(dp), parameter pietc::s20 =.342020143325668733044099614682259580763083367514160628465048e0_dp
    +
    + +

    sine(20 deg)

    + +

    Definition at line 62 of file pietc.f90.

    + +
    +
    + +

    ◆ s22

    + +
    +
    + + + + +
    real(dp), parameter pietc::s22 =.382683432365089771728459984030398866761344562485627041433800e0_dp
    +
    + +

    sine(22.5 deg)

    + +

    Definition at line 63 of file pietc.f90.

    + +
    +
    + +

    ◆ s26

    + +
    +
    + + + + +
    real(dp), parameter pietc::s26 =.433883739117558120475768332848358754609990727787459876444547e0_dp
    +
    + +

    sine(90*2/7 deg)

    + +

    Definition at line 64 of file pietc.f90.

    + +
    +
    + +

    ◆ s30

    + +
    +
    + + + + +
    real(dp), parameter pietc::s30 =o2
    +
    + +

    sine(30 deg)

    + +

    Definition at line 65 of file pietc.f90.

    + +
    +
    + +

    ◆ s34

    + +
    +
    + + + + +
    real(dp), parameter pietc::s34 =.555570233019602224742830813948532874374937190754804045924153e0_dp
    +
    + +

    sine(90*3/8 deg)

    + +

    Definition at line 66 of file pietc.f90.

    + +
    +
    + +

    ◆ s36

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ s39

    + +
    +
    + + + + +
    real(dp), parameter pietc::s39 =.623489801858733530525004884004239810632274730896402105365549e0_dp
    +
    + +

    sine(90*3/7 deg)

    + +

    Definition at line 68 of file pietc.f90.

    + +
    +
    + +

    ◆ s40

    + +
    +
    + + + + +
    real(dp), parameter pietc::s40 =.642787609686539326322643409907263432907559884205681790324977e0_dp
    +
    + +

    sine(40 deg)

    + +

    Definition at line 69 of file pietc.f90.

    + +
    +
    + +

    ◆ s45

    + +
    +
    + + + + +
    real(dp), parameter pietc::s45 =or2
    +
    + +

    sine(45 deg)

    + +

    Definition at line 70 of file pietc.f90.

    + +
    +
    + +

    ◆ s50

    + +
    +
    + + + + +
    real(dp), parameter pietc::s50 =.766044443118978035202392650555416673935832457080395245854045e0_dp
    +
    + +

    sine(50 deg)

    + +

    Definition at line 71 of file pietc.f90.

    + +
    +
    + +

    ◆ s51

    + +
    +
    + + + + +
    real(dp), parameter pietc::s51 =.781831482468029808708444526674057750232334518708687528980634e0_dp
    +
    + +

    sine(90*4/7 deg)

    + +

    Definition at line 72 of file pietc.f90.

    + +
    +
    + +

    ◆ s54

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ s56

    + +
    +
    + + + + +
    real(dp), parameter pietc::s56 =.831469612302545237078788377617905756738560811987249963446124e0_dp
    +
    + +

    sine(90*5/8 deg)

    + +

    Definition at line 74 of file pietc.f90.

    + +
    +
    + +

    ◆ s60

    + +
    +
    + + + + +
    real(dp), parameter pietc::s60 =r3*o2
    +
    + +

    sine(60 deg)

    + +

    Definition at line 75 of file pietc.f90.

    + +
    +
    + +

    ◆ s64

    + +
    +
    + + + + +
    real(dp), parameter pietc::s64 =.900968867902419126236102319507445051165919162131857150053562e0_dp
    +
    + +

    sine(90*5/7 deg)

    + +

    Definition at line 76 of file pietc.f90.

    + +
    +
    + +

    ◆ s68

    + +
    +
    + + + + +
    real(dp), parameter pietc::s68 =.923879532511286756128183189396788286822416625863642486115097e0_dp
    +
    + +

    sine(67.5 deg)

    + +

    Definition at line 77 of file pietc.f90.

    + +
    +
    + +

    ◆ s70

    + +
    +
    + + + + +
    real(dp), parameter pietc::s70 =.939692620785908384054109277324731469936208134264464633090286e0_dp
    +
    + +

    sine(70 deg)

    + +

    Definition at line 78 of file pietc.f90.

    + +
    +
    + +

    ◆ s72

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ s75

    + +
    +
    + + + + +
    real(dp), parameter pietc::s75 =.965925826289068286749743199728897367633904839008404550402343e0_dp
    +
    + +

    sine(75 deg)

    + +

    Definition at line 80 of file pietc.f90.

    + +
    +
    + +

    ◆ s77

    + +
    +
    + + + + +
    real(dp), parameter pietc::s77 =.974927912181823607018131682993931217232785800619997437648079e0_dp
    +
    + +

    sine(90*6/7 deg)

    + +

    Definition at line 81 of file pietc.f90.

    + +
    +
    + +

    ◆ s79

    + +
    +
    + + + + +
    real(dp), parameter pietc::s79 =.980785280403230449126182236134239036973933730893336095002916e0_dp
    +
    + +

    sine(90*7/8 deg)

    + +

    Definition at line 82 of file pietc.f90.

    + +
    +
    + +

    ◆ s80

    + +
    +
    + + + + +
    real(dp), parameter pietc::s80 =.984807753012208059366743024589523013670643251719842418790025e0_dp
    +
    + +

    sine(80 deg)

    + +

    Definition at line 83 of file pietc.f90.

    + +
    +
    + +

    ◆ t

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ u0

    + + + +

    ◆ u1

    + + + +

    ◆ u2

    + + + +

    ◆ u3

    + +
    +
    + + + + +
    real(dp), parameter pietc::u3 =3_dp
    +
    + +

    three

    + +

    Definition at line 24 of file pietc.f90.

    + +

    Referenced by pmat4::znfun().

    + +
    +
    + +

    ◆ u4

    + +
    +
    + + + + +
    real(dp), parameter pietc::u4 =4_dp
    +
    + +

    four

    + +

    Definition at line 26 of file pietc.f90.

    + +
    +
    + +

    ◆ u5

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ u6

    + +
    +
    + + + + +
    real(dp), parameter pietc::u6 =6_dp
    +
    + +

    six

    + +

    Definition at line 30 of file pietc.f90.

    + +
    +
    + +

    ◆ z000

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z000 =c1
    +
    + +

    exp(2*pi*i*0)

    + +

    Definition at line 119 of file pietc.f90.

    + +
    +
    + +

    ◆ z010

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z010 =( s80, s10)
    +
    + +

    exp(2*pi*i/36)

    + +

    Definition at line 120 of file pietc.f90.

    + +
    +
    + +

    ◆ z011

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z011 =( s79, s11)
    +
    + +

    exp(2*pi*i/32)

    + +

    Definition at line 121 of file pietc.f90.

    + +
    +
    + +

    ◆ z013

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z013 =( s77, s13)
    +
    + +

    exp(2*pi*i/28)

    + +

    Definition at line 122 of file pietc.f90.

    + +
    +
    + +

    ◆ z015

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z015 =( s75, s15)
    +
    + +

    exp(2*pi*i/24)

    + +

    Definition at line 123 of file pietc.f90.

    + +
    +
    + +

    ◆ z018

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z018 =( s72, s18)
    +
    + +

    exp(2*pi*i/20)

    + +

    Definition at line 124 of file pietc.f90.

    + +
    +
    + +

    ◆ z020

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z020 =( s70, s20)
    +
    + +

    exp(2*pi*i/18)

    + +

    Definition at line 125 of file pietc.f90.

    + +
    +
    + +

    ◆ z022

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z022 =( s68, s22)
    +
    + +

    exp(2*pi*i/16)

    + +

    Definition at line 126 of file pietc.f90.

    + +
    +
    + +

    ◆ z026

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z026 =( s64, s26)
    +
    + +

    exp(2*pi*i/14)

    + +

    Definition at line 127 of file pietc.f90.

    + +
    +
    + +

    ◆ z030

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z030 =( s60, s30)
    +
    + +

    exp(2*pi*i/12)

    + +

    Definition at line 128 of file pietc.f90.

    + +
    +
    + +

    ◆ z034

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z034 =( s56, s34)
    +
    + +

    exp(2*pi*i*3/32)

    + +

    Definition at line 129 of file pietc.f90.

    + +
    +
    + +

    ◆ z036

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z036 =( s54, s36)
    +
    + +

    exp(2*pi*i/10)

    + +

    Definition at line 130 of file pietc.f90.

    + +
    +
    + +

    ◆ z039

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z039 =( s51, s39)
    +
    + +

    exp(2*pi*i*3/28)

    + +

    Definition at line 131 of file pietc.f90.

    + +
    +
    + +

    ◆ z040

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z040 =( s50, s40)
    +
    + +

    exp(2*pi*i/9)

    + +

    Definition at line 132 of file pietc.f90.

    + +
    +
    + +

    ◆ z045

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z045 =( s45, s45)
    +
    + +

    exp(2*pi*i/8)

    + +

    Definition at line 133 of file pietc.f90.

    + +
    +
    + +

    ◆ z050

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z050 =( s40, s50)
    +
    + +

    exp(2*pi*i*5/36)

    + +

    Definition at line 134 of file pietc.f90.

    + +
    +
    + +

    ◆ z051

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z051 =( s39, s51)
    +
    + +

    exp(2*pi*i/7)

    + +

    Definition at line 135 of file pietc.f90.

    + +
    +
    + +

    ◆ z054

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z054 =( s36, s54)
    +
    + +

    exp(2*pi*i*3/20)

    + +

    Definition at line 136 of file pietc.f90.

    + +
    +
    + +

    ◆ z056

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z056 =( s34, s56)
    +
    + +

    exp(2*pi*i*5/32)

    + +

    Definition at line 137 of file pietc.f90.

    + +
    +
    + +

    ◆ z060

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z060 =( s30, s60)
    +
    + +

    exp(2*pi*i/6)

    + +

    Definition at line 138 of file pietc.f90.

    + +
    +
    + +

    ◆ z064

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z064 =( s26, s64)
    +
    + +

    exp(2*pi*i*5/28)

    + +

    Definition at line 139 of file pietc.f90.

    + +
    +
    + +

    ◆ z068

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z068 =( s22, s68)
    +
    + +

    exp(2*pi*i*3/16)

    + +

    Definition at line 140 of file pietc.f90.

    + +
    +
    + +

    ◆ z070

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z070 =( s20, s70)
    +
    + +

    exp(2*pi*i*7/36)

    + +

    Definition at line 141 of file pietc.f90.

    + +
    +
    + +

    ◆ z072

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z072 =( s18, s72)
    +
    + +

    exp(2*pi*i/5)

    + +

    Definition at line 142 of file pietc.f90.

    + +
    +
    + +

    ◆ z075

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z075 =( s15, s75)
    +
    + +

    exp(2*pi*i*5/24)

    + +

    Definition at line 143 of file pietc.f90.

    + +
    +
    + +

    ◆ z077

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z077 =( s13, s77)
    +
    + +

    exp(2*pi*i*3/14)

    + +

    Definition at line 144 of file pietc.f90.

    + +
    +
    + +

    ◆ z079

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z079 =( s11, s79)
    +
    + +

    exp(2*pi*i*7/32)

    + +

    Definition at line 145 of file pietc.f90.

    + +
    +
    + +

    ◆ z080

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z080 =( s10, s80)
    +
    + +

    exp(2*pi*i*2/9)

    + +

    Definition at line 146 of file pietc.f90.

    + +
    +
    + +

    ◆ z090

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z090 =ci
    +
    + +

    exp(2*pi*i/4)

    + +

    Definition at line 147 of file pietc.f90.

    + +
    +
    + +

    ◆ z100

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z100 =(ms10, s80)
    +
    + +

    exp(2*pi*i*5/18)

    + +

    Definition at line 148 of file pietc.f90.

    + +
    +
    + +

    ◆ z101

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z101 =(ms11, s79)
    +
    + +

    exp(2*pi*i*9/32)

    + +

    Definition at line 149 of file pietc.f90.

    + +
    +
    + +

    ◆ z103

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z103 =(ms13, s77)
    +
    + +

    exp(2*pi*i*2/7)

    + +

    Definition at line 150 of file pietc.f90.

    + +
    +
    + +

    ◆ z105

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z105 =(ms15, s75)
    +
    + +

    exp(2*pi*i*7/24)

    + +

    Definition at line 151 of file pietc.f90.

    + +
    +
    + +

    ◆ z108

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z108 =(ms18, s72)
    +
    + +

    exp(2*pi*i*3/10)

    + +

    Definition at line 152 of file pietc.f90.

    + +
    +
    + +

    ◆ z110

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z110 =(ms20, s70)
    +
    + +

    exp(2*pi*i*11/36)

    + +

    Definition at line 153 of file pietc.f90.

    + +
    +
    + +

    ◆ z112

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z112 =(ms22, s68)
    +
    + +

    exp(2*pi*i*5/16)

    + +

    Definition at line 154 of file pietc.f90.

    + +
    +
    + +

    ◆ z116

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z116 =(ms26, s64)
    +
    + +

    exp(2*pi*i*9/28)

    + +

    Definition at line 155 of file pietc.f90.

    + +
    +
    + +

    ◆ z120

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z120 =(ms30, s60)
    +
    + +

    exp(2*pi*i/3)

    + +

    Definition at line 156 of file pietc.f90.

    + +
    +
    + +

    ◆ z124

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z124 =(ms34, s56)
    +
    + +

    exp(2*pi*i*11/32)

    + +

    Definition at line 157 of file pietc.f90.

    + +
    +
    + +

    ◆ z126

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z126 =(ms36, s54)
    +
    + +

    exp(2*pi*i*7/20)

    + +

    Definition at line 158 of file pietc.f90.

    + +
    +
    + +

    ◆ z129

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z129 =(ms39, s51)
    +
    + +

    exp(2*pi*i*5/14)

    + +

    Definition at line 159 of file pietc.f90.

    + +
    +
    + +

    ◆ z130

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z130 =(ms40, s50)
    +
    + +

    exp(2*pi*i*13/36)

    + +

    Definition at line 160 of file pietc.f90.

    + +
    +
    + +

    ◆ z135

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z135 =(ms45, s45)
    +
    + +

    exp(2*pi*i*3/8)

    + +

    Definition at line 161 of file pietc.f90.

    + +
    +
    + +

    ◆ z140

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z140 =(ms50, s40)
    +
    + +

    exp(2*pi*i*7/18)

    + +

    Definition at line 162 of file pietc.f90.

    + +
    +
    + +

    ◆ z141

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z141 =(ms51, s39)
    +
    + +

    exp(2*pi*i*11/28)

    + +

    Definition at line 163 of file pietc.f90.

    + +
    +
    + +

    ◆ z144

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z144 =(ms54, s36)
    +
    + +

    exp(2*pi*i*2/5)

    + +

    Definition at line 164 of file pietc.f90.

    + +
    +
    + +

    ◆ z146

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z146 =(ms56, s34)
    +
    + +

    exp(2*pi*i*13/32)

    + +

    Definition at line 165 of file pietc.f90.

    + +
    +
    + +

    ◆ z150

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z150 =(ms60, s30)
    +
    + +

    exp(2*pi*i*5/12)

    + +

    Definition at line 166 of file pietc.f90.

    + +
    +
    + +

    ◆ z154

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z154 =(ms64, s26)
    +
    + +

    exp(2*pi*i*3/7)

    + +

    Definition at line 167 of file pietc.f90.

    + +
    +
    + +

    ◆ z158

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z158 =(ms68, s22)
    +
    + +

    exp(2*pi*i*7/16)

    + +

    Definition at line 168 of file pietc.f90.

    + +
    +
    + +

    ◆ z160

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z160 =(ms70, s20)
    +
    + +

    exp(2*pi*i*4/9)

    + +

    Definition at line 169 of file pietc.f90.

    + +
    +
    + +

    ◆ z162

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z162 =(ms72, s18)
    +
    + +

    exp(2*pi*i*9/20)

    + +

    Definition at line 170 of file pietc.f90.

    + +
    +
    + +

    ◆ z165

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z165 =(ms75, s15)
    +
    + +

    exp(2*pi*i*11/24)

    + +

    Definition at line 171 of file pietc.f90.

    + +
    +
    + +

    ◆ z167

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z167 =(ms77, s13)
    +
    + +

    exp(2*pi*i*13/28)

    + +

    Definition at line 172 of file pietc.f90.

    + +
    +
    + +

    ◆ z169

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z169 =(ms79, s11)
    +
    + +

    exp(2*pi*i*15/32)

    + +

    Definition at line 173 of file pietc.f90.

    + +
    +
    + +

    ◆ z170

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z170 =(ms80, s10)
    +
    + +

    exp(2*pi*i*17/36)

    + +

    Definition at line 174 of file pietc.f90.

    + +
    +
    + +

    ◆ z180

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z180 =-z000
    +
    + +

    exp(2*pi*i/2)

    + +

    Definition at line 175 of file pietc.f90.

    + +
    +
    + +

    ◆ z190

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z190 =-z010
    +
    + +

    exp(2*pi*i*19/36)

    + +

    Definition at line 176 of file pietc.f90.

    + +
    +
    + +

    ◆ z191

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z191 =-z011
    +
    + +

    exp(2*pi*i*17/32)

    + +

    Definition at line 177 of file pietc.f90.

    + +
    +
    + +

    ◆ z193

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z193 =-z013
    +
    + +

    exp(2*pi*i*15/28)

    + +

    Definition at line 178 of file pietc.f90.

    + +
    +
    + +

    ◆ z195

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z195 =-z015
    +
    + +

    exp(2*pi*i*13/24)

    + +

    Definition at line 179 of file pietc.f90.

    + +
    +
    + +

    ◆ z198

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z198 =-z018
    +
    + +

    exp(2*pi*i*11/20)

    + +

    Definition at line 180 of file pietc.f90.

    + +
    +
    + +

    ◆ z200

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z200 =-z020
    +
    + +

    exp(2*pi*i*5/9)

    + +

    Definition at line 181 of file pietc.f90.

    + +
    +
    + +

    ◆ z202

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z202 =-z022
    +
    + +

    exp(2*pi*i*9/16)

    + +

    Definition at line 182 of file pietc.f90.

    + +
    +
    + +

    ◆ z206

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z206 =-z026
    +
    + +

    exp(2*pi*i*4/7)

    + +

    Definition at line 183 of file pietc.f90.

    + +
    +
    + +

    ◆ z210

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z210 =-z030
    +
    + +

    exp(2*pi*i*7/12)

    + +

    Definition at line 184 of file pietc.f90.

    + +
    +
    + +

    ◆ z214

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z214 =-z034
    +
    + +

    exp(2*pi*i*19/32)

    + +

    Definition at line 185 of file pietc.f90.

    + +
    +
    + +

    ◆ z216

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z216 =-z036
    +
    + +

    exp(2*pi*i*3/5)

    + +

    Definition at line 186 of file pietc.f90.

    + +
    +
    + +

    ◆ z219

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z219 =-z039
    +
    + +

    exp(2*pi*i*17/28)

    + +

    Definition at line 187 of file pietc.f90.

    + +
    +
    + +

    ◆ z220

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z220 =-z040
    +
    + +

    exp(2*pi*i*11/18)

    + +

    Definition at line 188 of file pietc.f90.

    + +
    +
    + +

    ◆ z225

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z225 =-z045
    +
    + +

    exp(2*pi*i*5/8)

    + +

    Definition at line 189 of file pietc.f90.

    + +
    +
    + +

    ◆ z230

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z230 =-z050
    +
    + +

    exp(2*pi*i*23/36)

    + +

    Definition at line 190 of file pietc.f90.

    + +
    +
    + +

    ◆ z231

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z231 =-z051
    +
    + +

    exp(2*pi*i*9/14)

    + +

    Definition at line 191 of file pietc.f90.

    + +
    +
    + +

    ◆ z234

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z234 =-z054
    +
    + +

    exp(2*pi*i*13/20)

    + +

    Definition at line 192 of file pietc.f90.

    + +
    +
    + +

    ◆ z236

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z236 =-z056
    +
    + +

    exp(2*pi*i*21/32)

    + +

    Definition at line 193 of file pietc.f90.

    + +
    +
    + +

    ◆ z240

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z240 =-z060
    +
    + +

    exp(2*pi*i*2/3)

    + +

    Definition at line 194 of file pietc.f90.

    + +
    +
    + +

    ◆ z244

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z244 =-z064
    +
    + +

    exp(2*pi*i*19/28)

    + +

    Definition at line 195 of file pietc.f90.

    + +
    +
    + +

    ◆ z248

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z248 =-z068
    +
    + +

    exp(2*pi*i*11/16)

    + +

    Definition at line 196 of file pietc.f90.

    + +
    +
    + +

    ◆ z250

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z250 =-z070
    +
    + +

    exp(2*pi*i*25/36)

    + +

    Definition at line 197 of file pietc.f90.

    + +
    +
    + +

    ◆ z252

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z252 =-z072
    +
    + +

    exp(2*pi*i*7/10)

    + +

    Definition at line 198 of file pietc.f90.

    + +
    +
    + +

    ◆ z255

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z255 =-z075
    +
    + +

    exp(2*pi*i*17/24)

    + +

    Definition at line 199 of file pietc.f90.

    + +
    +
    + +

    ◆ z257

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z257 =-z077
    +
    + +

    exp(2*pi*i*5/7)

    + +

    Definition at line 200 of file pietc.f90.

    + +
    +
    + +

    ◆ z259

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z259 =-z079
    +
    + +

    exp(2*pi*i*23/32)

    + +

    Definition at line 201 of file pietc.f90.

    + +
    +
    + +

    ◆ z260

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z260 =-z080
    +
    + +

    exp(2*pi*i*13/18)

    + +

    Definition at line 202 of file pietc.f90.

    + +
    +
    + +

    ◆ z270

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z270 =-z090
    +
    + +

    exp(2*pi*i*3/4)

    + +

    Definition at line 203 of file pietc.f90.

    + +
    +
    + +

    ◆ z280

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z280 =-z100
    +
    + +

    exp(2*pi*i*7/9)

    + +

    Definition at line 204 of file pietc.f90.

    + +
    +
    + +

    ◆ z281

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z281 =-z101
    +
    + +

    exp(2*pi*i*25/32)

    + +

    Definition at line 205 of file pietc.f90.

    + +
    +
    + +

    ◆ z283

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z283 =-z103
    +
    + +

    exp(2*pi*i*11/14)

    + +

    Definition at line 206 of file pietc.f90.

    + +
    +
    + +

    ◆ z285

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z285 =-z105
    +
    + +

    exp(2*pi*i*19/24)

    + +

    Definition at line 207 of file pietc.f90.

    + +
    +
    + +

    ◆ z288

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z288 =-z108
    +
    + +

    exp(2*pi*i*4/5)

    + +

    Definition at line 208 of file pietc.f90.

    + +
    +
    + +

    ◆ z290

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z290 =-z110
    +
    + +

    exp(2*pi*i*29/36)

    + +

    Definition at line 209 of file pietc.f90.

    + +
    +
    + +

    ◆ z292

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z292 =-z112
    +
    + +

    exp(2*pi*i*13/16)

    + +

    Definition at line 210 of file pietc.f90.

    + +
    +
    + +

    ◆ z296

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z296 =-z116
    +
    + +

    exp(2*pi*i*23/28)

    + +

    Definition at line 211 of file pietc.f90.

    + +
    +
    + +

    ◆ z300

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z300 =-z120
    +
    + +

    exp(2*pi*i*5/6)

    + +

    Definition at line 212 of file pietc.f90.

    + +
    +
    + +

    ◆ z304

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z304 =-z124
    +
    + +

    exp(2*pi*i*27/32)

    + +

    Definition at line 213 of file pietc.f90.

    + +
    +
    + +

    ◆ z306

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z306 =-z126
    +
    + +

    exp(2*pi*i*17/20)

    + +

    Definition at line 214 of file pietc.f90.

    + +
    +
    + +

    ◆ z309

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z309 =-z129
    +
    + +

    exp(2*pi*i*6/7)

    + +

    Definition at line 215 of file pietc.f90.

    + +
    +
    + +

    ◆ z310

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z310 =-z130
    +
    + +

    exp(2*pi*i*31/36)

    + +

    Definition at line 216 of file pietc.f90.

    + +
    +
    + +

    ◆ z315

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z315 =-z135
    +
    + +

    exp(2*pi*i*7/8)

    + +

    Definition at line 217 of file pietc.f90.

    + +
    +
    + +

    ◆ z320

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z320 =-z140
    +
    + +

    exp(2*pi*i*8/9)

    + +

    Definition at line 218 of file pietc.f90.

    + +
    +
    + +

    ◆ z321

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z321 =-z141
    +
    + +

    exp(2*pi*i*25/28)

    + +

    Definition at line 219 of file pietc.f90.

    + +
    +
    + +

    ◆ z324

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z324 =-z144
    +
    + +

    exp(2*pi*i*9/10)

    + +

    Definition at line 220 of file pietc.f90.

    + +
    +
    + +

    ◆ z326

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z326 =-z146
    +
    + +

    exp(2*pi*i*29/32)

    + +

    Definition at line 221 of file pietc.f90.

    + +
    +
    + +

    ◆ z330

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z330 =-z150
    +
    + +

    exp(2*pi*i*11/12)

    + +

    Definition at line 222 of file pietc.f90.

    + +
    +
    + +

    ◆ z334

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z334 =-z154
    +
    + +

    exp(2*pi*i*13/14)

    + +

    Definition at line 223 of file pietc.f90.

    + +
    +
    + +

    ◆ z338

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z338 =-z158
    +
    + +

    exp(2*pi*i*15/16)

    + +

    Definition at line 224 of file pietc.f90.

    + +
    +
    + +

    ◆ z340

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z340 =-z160
    +
    + +

    exp(2*pi*i*17/18)

    + +

    Definition at line 225 of file pietc.f90.

    + +
    +
    + +

    ◆ z342

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z342 =-z162
    +
    + +

    exp(2*pi*i*19/20)

    + +

    Definition at line 226 of file pietc.f90.

    + +
    +
    + +

    ◆ z345

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z345 =-z165
    +
    + +

    exp(2*pi*i*23/24)

    + +

    Definition at line 227 of file pietc.f90.

    + +
    +
    + +

    ◆ z347

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z347 =-z167
    +
    + +

    exp(2*pi*i*27/28)

    + +

    Definition at line 228 of file pietc.f90.

    + +
    +
    + +

    ◆ z349

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z349 =-z169
    +
    + +

    exp(2*pi*i*31/32)

    + +

    Definition at line 229 of file pietc.f90.

    + +
    +
    + +

    ◆ z350

    + +
    +
    + + + + +
    complex(dpc), parameter pietc::z350 =-z170
    +
    + +

    exp(2*pi*i*35/36)

    + +

    Definition at line 230 of file pietc.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepkind.html b/ver-1.11.0/grid_tools/namespacepkind.html new file mode 100644 index 000000000..550828d12 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepkind.html @@ -0,0 +1,250 @@ + + + + + + + +grid_tools: pkind Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pkind Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Standard integer, real, and complex single and double precision kinds.

    +
    Author
    R. J. Purser
    +

    Variable Documentation

    + +

    ◆ dp

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ dpc

    + +
    +
    + + + + +
    integer, parameter pkind::dpc =dp
    +
    + +

    Double precision real kind.

    + +

    Definition at line 13 of file pkind.f90.

    + +

    Referenced by pmat4::ctoz(), and pmat4::ztocd().

    + +
    +
    + +

    ◆ dpi

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ sp

    + +
    +
    + + + + +
    integer, parameter pkind::sp =selected_real_kind(6, 30)
    +
    + +

    Single precision real kind.

    + +

    Definition at line 10 of file pkind.f90.

    + +
    +
    + +

    ◆ spc

    + +
    +
    + + + + +
    integer, parameter pkind::spc =sp
    +
    + +

    Single precision real kind.

    + +

    Definition at line 12 of file pkind.f90.

    + +
    +
    + +

    ◆ spi

    + +
    +
    + + + + +
    integer, parameter pkind::spi =selected_int_kind(6)
    +
    + +

    Single precision integer kind.

    + +

    Definition at line 8 of file pkind.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepmat2.html b/ver-1.11.0/grid_tools/namespacepmat2.html new file mode 100644 index 000000000..3835467d8 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat2.html @@ -0,0 +1,3198 @@ + + + + + + + +grid_tools: pmat2 Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2 Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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:

      +
    • avco() Averaging, or interpolating;
    • +
    • dfco() Differentiating (once);
    • +
    • dfco2() Differentiating (twice).
    • +
    +

    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.

    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994/1999
    +

    Function/Subroutine Documentation

    + +

    ◆ AVCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of t-points operated on by this row of the A of (*)
    [in]nbnumber of s-points operated on by this row of the B of (*)
    [in]zacoordinates of t-points used in this row of (*)
    [in]zbcoordinates of s-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [out]athe NA coefficients A for this scheme
    [out]bthe NB coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 100 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ CAD1B()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]m1Size of implied full matrix
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-1 operand element.
    [in,out]aInput 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.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 426 of file pmat2.f90.

    + +
    +
    + +

    ◆ CAD2B()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]m1Number of rows of full matrix A
    [in]m2Number of columns of implied full matrix A
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-2 operand element.
    [in,out]aInput operator, output as symmetrized and clipped at end-2.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 477 of file pmat2.f90.

    + +
    +
    + +

    ◆ CLIB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pure subroutine pmat2::CLIB (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(inout) a 
    )
    +
    +private
    +
    + +

    Clip (set to zero) the unused values in a banded matrix representation.

    +
    Parameters
    + + + + + + +
    [in]m1number of matrix rows
    [in]m2number of matrix columns
    [in]mah1number of subdiagonals
    [in]mah2number of superdiagonals
    [in,out]asingle precision matrix elements, stored compactly as rows
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 370 of file pmat2.f90.

    + +
    +
    + +

    ◆ clib_c()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]m1number of matrix rows
    [in]m2number of matrix columns
    [in]mah1number of subdiagonals
    [in]mah2number of superdiagonals
    [in]acomplex matrix elements, stored compactly as rows
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 406 of file pmat2.f90.

    + +

    References pietc::c0.

    + +
    +
    + +

    ◆ clib_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]m1number of matrix rows
    [in]m2number of matrix columns
    [in]mah1number of subdiagonals
    [in]mah2number of superdiagonals
    [in]adouble precision matrix elements, stored compactly as rows
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 388 of file pmat2.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ CSB1B()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]m1Size of implied full matrix
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-1 operand element.
    [in,out]aInput operator, output as clipped antisymmetric at end-1.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 451 of file pmat2.f90.

    + +
    +
    + +

    ◆ CSB2B()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]m1Number of rows of matrix A
    [in]m2Number of columns of matrix A
    [in]mah1Left semi-bandwidths (subdiagonals) of A.
    [in]mah2Right semi-bandwidths (superdiagonals) of A.
    [in]mirror22*location of symmetry axis relative to end-2 operand element.
    [in,out]aInput operator, output as antisymmetrized and clipped at end-2.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 504 of file pmat2.f90.

    + +
    +
    + +

    ◆ DAVCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of target points involved in formula
    [in]nbnumber of source points involved in formula
    [in]zacoordinates of target points
    [in]zbcoordinates of source points
    [in]z0nominal point of application of compact interpolation formula
    [out]athe coefficients A for this scheme
    [out]bthe coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 134 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DDFCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of A coefficients multiplying derivatives
    [in]nbnumber of B coefficients multiplying cumulatives
    [in]zacoordinates of the density (d) points
    [in]zbcoordinates of the cumulative (c) points
    [in]z0nominal point of application of the compact formula
    [in]athe A-coefficients for this scheme
    [in]bthe B-coefficients for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 225 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DDFCO2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of 2nd-derivative (d) points in compact formula
    [in]nbnumber of source points (c)
    [in]zacoordinates of 2nd-derivative points
    [in]zbcoordinates of source points
    [in]z0nominal coordinate of application
    [in]acoefficients A for derivative points
    [in]bcoefficients B for source points
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 318 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DFCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of d-points operated on by this row of the A of (*)
    [in]nbnumber of c-points operated on by this row of the B of (*)
    [in]zacoordinates of d-points used in this row of (*)
    [in]zbcoordinates of c-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [in]Athe A-coefficients for this scheme
    [in]Bthe B-coefficients for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 190 of file pmat2.f90.

    + +
    +
    + +

    ◆ DFCO2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]nanumber of d-points operated on by this row of the A of (*)
    [in]nbnumber of c-points operated on by this row of the B of (*)
    [in]zacoordinates of d-points used in this row of (*)
    [in]zbcoordinates of c-points used in this row of (*)
    [in]z0nominal point of application of this row of (*)
    [in]athe NA coefficients A for this scheme
    [in]bthe NB coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 283 of file pmat2.f90.

    + +
    +
    + +

    ◆ DL1UBB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]mNumber of rows of A and B
    [in]mah1left half-width of fortran array A
    [in]mah2right half-width of fortran array A
    [in]mbh1left half-width of fortran array B
    [in]mbh2left half-width of fortran array B
    [in,out]aInput double precision band matrix A; output factors encoded as [D**-1 * L * D]+[U-I]
    [in,out]bInput double precision band matrix B; output [D**-1 B]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 771 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DL1UEB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of band matrices A and B
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in]mbh1number of subdiagonals of B
    [in]mbh2number of superdiagonals of B
    [in,out]aInput matrix A; output encoded L, D, U, factors
    [in,out]bInput matrix B; output D**-1 * B
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 855 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DLDLTB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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

    Parameters
    + + + + +
    [in]msize of symmetric matrix A
    [in]mah1semi-bandwidth of matrix A
    [in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 645 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ DLDUB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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

    Parameters
    + + + + + +
    [in]mThe number of rows of array A
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 571 of file pmat2.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dltdlbv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dltdlbv (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    real(dp), dimension(m,-mah1:0), intent(in) a,
    real(dp), dimension(m), intent(inout) v 
    )
    +
    +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)

    +
    Parameters
    + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in,out]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 980 of file pmat2.f90.

    + +
    +
    + +

    ◆ DUDLB()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::DUDLB (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    integer(spi), intent(in) mah2,
    real(dp), dimension(m,-mah1:mah2), intent(inout) a 
    )
    +
    +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

    +
    Parameters
    + + + + + +
    [in]mnumber of rows of A
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in,out]aInput double precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 704 of file pmat2.f90.

    + +
    +
    + +

    ◆ dudlbv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat2::dudlbv (integer(spi), intent(in) m,
    integer(spi), intent(in) mah1,
    integer(spi), intent(in) mah2,
    real(dp), dimension(m,-mah1:mah2), intent(in) a,
    real(dp), dimension(m), intent(inout) v 
    )
    +
    +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

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in double precision
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 921 of file pmat2.f90.

    + +
    +
    + +

    ◆ L1UBB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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].

    +
    Parameters
    + + + + + + + + +
    [in]mNumber of rows of A and B
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in]mbh1number of subdiagonals of B
    [in]mbh2number of superdiagonals of B
    [in,out]ainput 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]bInput single precision band matrix B; output [D**-1 B]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 733 of file pmat2.f90.

    + +
    +
    + +

    ◆ L1UEB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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).

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of B, one less than the rows of A (which has "row 0")
    [in]mah1left half-width of fortran array A
    [in]mah2right half-width of fortran array A
    [in]mbh1left half-width of fortran array B
    [in]mbh2right half-width of fortran array B
    [in,out]ainput 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]bin as band matrix, out as same but premultiplied by diagonal [D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1998
    + +

    Definition at line 818 of file pmat2.f90.

    + +
    +
    + +

    ◆ LDLTB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]msize of symmetric matrix A
    [in]mah1semi-bandwidth of matrix A
    [in,out]ainput lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 609 of file pmat2.f90.

    + +
    +
    + +

    ◆ LDUB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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

    Parameters
    + + + + + +
    [in]mThe number of rows of array A
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]ainput as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 532 of file pmat2.f90.

    + +
    +
    + +

    ◆ LINBV()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]morder of matrix A
    [in]mah1left half-bandwidth of A
    [in]mah2right half-bandwidth of A
    [in,out]asystem matrix on input, its [L]*[D**-1]*[U] factorization on exit
    [in,out]vvector of right-hand-sides on input, solution vector on exit
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1323 of file pmat2.f90.

    + +
    +
    + +

    ◆ ltdlbv()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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)

    +
    Parameters
    + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]aencodes the L*D*L^T factorization of the linear-system matrix, as supplied by subroutine LDLTB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 950 of file pmat2.f90.

    + +
    +
    + +

    ◆ TAVCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]xacoordinates of target points relative to point of application
    [in]xbcoordinates of source points relative to point of application
    [out]athe coefficients A for this scheme
    [out]bthe coefficients B for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 165 of file pmat2.f90.

    + +

    References zero.

    + +
    +
    + +

    ◆ TDFCO()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]xacoordinates, relative to point of application, of d values
    [in]xbcoordinates, relatuve to point of application, of c values
    [in]athe coefficients, A, for this scheme
    [in]bthe coefficients, B, for this scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 258 of file pmat2.f90.

    + +

    References zero.

    + +
    +
    + +

    ◆ TDFCO2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]xaRelative coordinates of derivatives
    [in]xbRelative coordinates of source points
    [out]acoefficients A for the derivatives in compact scheme
    [out]bcoefficients B for source values in the compact scheme
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 350 of file pmat2.f90.

    + +

    References zero.

    + +
    +
    + +

    ◆ U1LBV()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1155 of file pmat2.f90.

    + +
    +
    + +

    ◆ U1LBX()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1186 of file pmat2.f90.

    + +
    +
    + +

    ◆ U1LBY()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1214 of file pmat2.f90.

    + +
    +
    + +

    ◆ U1LVB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and columns for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]vinput as right-hand-side row-vector, output as solution vector
    [in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1240 of file pmat2.f90.

    + +
    +
    + +

    ◆ U1LXB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1271 of file pmat2.f90.

    + +
    +
    + +

    ◆ U1LYB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1996
    + +

    Definition at line 1299 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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

    +
    Parameters
    + + + + + +
    [in]mnumber of rows of A
    [in]mah1number of subdiagonals of A
    [in]mah2number of superdiagonals of A
    [in,out]aInput single precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I]
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 683 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLBV()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]aencodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in single precision
    [in,out]vinput as right-hand-side vector, output as solution vector
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 892 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLBX()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1011 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLBY()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1040 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLVB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]mthe number of rows assumed for A and columns for V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in,out]vinput as right-hand-side row-vector, output as solution vector
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1067 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLXB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mxthe number of rows assumed for A and length of X-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mynumber of parallel X-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1099 of file pmat2.f90.

    + +
    +
    + +

    ◆ UDLYB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mythe number of rows assumed for A and length of Y-vectors stored in V
    [in]mah1the left half-bandwidth of fortran array A
    [in]mah2the right half-bandwidth of fortran array A
    [in]mxnumber of parallel Y-vectors inverted
    [in,out]vinput as right-hand-side vectors, output as solution vectors
    [in]aencodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994
    + +

    Definition at line 1128 of file pmat2.f90.

    + +
    +
    + +

    ◆ WRTB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]m1number of rows of full matrix
    [in]m2number of columns of full matrix
    [in]mah1number of sub-diagonals
    [in]mah2number of super-diagonals
    [in]acontents of single precision real band matrix.
    +
    +
    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1999
    + +

    Definition at line 1341 of file pmat2.f90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ zero

    + +
    +
    + + + + + +
    + + + + +
    real(dp), parameter pmat2::zero =0
    +
    +private
    +
    + +

    Double precision real zero.

    + +

    Definition at line 54 of file pmat2.f90.

    + +

    Referenced by TAVCO(), TDFCO(), and TDFCO2().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepmat2.js b/ver-1.11.0/grid_tools/namespacepmat2.js new file mode 100644 index 000000000..29448eecb --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat2.js @@ -0,0 +1,31 @@ +var namespacepmat2 = +[ + [ "avco", "interfacepmat2_1_1avco.html", "interfacepmat2_1_1avco" ], + [ "cad1b", "interfacepmat2_1_1cad1b.html", "interfacepmat2_1_1cad1b" ], + [ "cad2b", "interfacepmat2_1_1cad2b.html", "interfacepmat2_1_1cad2b" ], + [ "clipb", "interfacepmat2_1_1clipb.html", "interfacepmat2_1_1clipb" ], + [ "csb1b", "interfacepmat2_1_1csb1b.html", "interfacepmat2_1_1csb1b" ], + [ "csb2b", "interfacepmat2_1_1csb2b.html", "interfacepmat2_1_1csb2b" ], + [ "dfco", "interfacepmat2_1_1dfco.html", "interfacepmat2_1_1dfco" ], + [ "dfco2", "interfacepmat2_1_1dfco2.html", "interfacepmat2_1_1dfco2" ], + [ "l1ubb", "interfacepmat2_1_1l1ubb.html", "interfacepmat2_1_1l1ubb" ], + [ "l1ueb", "interfacepmat2_1_1l1ueb.html", "interfacepmat2_1_1l1ueb" ], + [ "ldltb", "interfacepmat2_1_1ldltb.html", "interfacepmat2_1_1ldltb" ], + [ "ldub", "interfacepmat2_1_1ldub.html", "interfacepmat2_1_1ldub" ], + [ "linbv", "interfacepmat2_1_1linbv.html", "interfacepmat2_1_1linbv" ], + [ "ltdlbv", "interfacepmat2_1_1ltdlbv.html", "interfacepmat2_1_1ltdlbv" ], + [ "u1lbv", "interfacepmat2_1_1u1lbv.html", "interfacepmat2_1_1u1lbv" ], + [ "u1lbx", "interfacepmat2_1_1u1lbx.html", "interfacepmat2_1_1u1lbx" ], + [ "u1lby", "interfacepmat2_1_1u1lby.html", "interfacepmat2_1_1u1lby" ], + [ "u1lvb", "interfacepmat2_1_1u1lvb.html", "interfacepmat2_1_1u1lvb" ], + [ "u1lxb", "interfacepmat2_1_1u1lxb.html", "interfacepmat2_1_1u1lxb" ], + [ "u1lyb", "interfacepmat2_1_1u1lyb.html", "interfacepmat2_1_1u1lyb" ], + [ "udlb", "interfacepmat2_1_1udlb.html", "interfacepmat2_1_1udlb" ], + [ "udlbv", "interfacepmat2_1_1udlbv.html", "interfacepmat2_1_1udlbv" ], + [ "udlbx", "interfacepmat2_1_1udlbx.html", "interfacepmat2_1_1udlbx" ], + [ "udlby", "interfacepmat2_1_1udlby.html", "interfacepmat2_1_1udlby" ], + [ "udlvb", "interfacepmat2_1_1udlvb.html", "interfacepmat2_1_1udlvb" ], + [ "udlxb", "interfacepmat2_1_1udlxb.html", "interfacepmat2_1_1udlxb" ], + [ "udlyb", "interfacepmat2_1_1udlyb.html", "interfacepmat2_1_1udlyb" ], + [ "wrtb", "interfacepmat2_1_1wrtb.html", "interfacepmat2_1_1wrtb" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacepmat4.html b/ver-1.11.0/grid_tools/namespacepmat4.html new file mode 100644 index 000000000..1c0b44938 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat4.html @@ -0,0 +1,4441 @@ + + + + + + + +grid_tools: pmat4 Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4 Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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:

      +
    • absv: Absolute magnitude of vector as its euclidean length
    • +
    • Normalized: Normalized version of given real vector
    • +
    • Orthogonalized: Orthogonalized version of second vector rel. to first unit v.
    • +
    • Cross_product: Vector cross-product of the given 2 vectors
    • +
    • Outer_product: outer-product matrix of the given 2 vectors
    • +
    • Triple_product: Scalar triple product of given 3 vectors
    • +
    • Det: Determinant of given matrix
    • +
    • Axial: Convert axial-vector <–> 2-form (antisymmetric matrix)
    • +
    • Diag: Diagnl of given matrix, or diagonal matrix of given elements
    • +
    • Trace: Trace of given matrix
    • +
    • Identity: Identity 3*3 matrix, or identity n*n matrix for a given n
    • +
    • Sarea: Spherical area subtended by three vectors, or by lat-lon increments forming a triangle or quadrilateral
    • +
    • Huarea: Spherical area subtended by right-angled spherical triangle SUBROUTINE:
    • +
    • 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.

      +
      Author
      R. J. Purser
      +
    • +
    +

    Function/Subroutine Documentation

    + +

    ◆ absv_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::absv_d (real(dp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the absolute magnitude of a double precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    s result, double precision real scalar
    +
    Author
    R. J. Purser
    + +

    Definition at line 131 of file pmat4.f90.

    + +

    Referenced by normalized_d().

    + +
    +
    + +

    ◆ absv_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::absv_s (real(sp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the absolute magnitude of a single precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    s result, single precision real scalar
    +
    Author
    R. J. Purser
    + +

    Definition at line 119 of file pmat4.f90.

    + +

    Referenced by normalized_s().

    + +
    +
    + +

    ◆ axial33_d()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]breal type input antisymmetric matrix "axial vector" B
    +
    +
    +
    Returns
    a result, 3-vector corresponding to B
    +
    Author
    R. J. Purser
    + +

    Definition at line 462 of file pmat4.f90.

    + +

    References pietc::o2.

    + +
    +
    + +

    ◆ axial33_s()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]breal type input antisymmetric matrix "axial vector" B
    +
    +
    +
    Returns
    a result, 3-vector corresponding to B
    +
    Author
    R. J. Purser
    + +

    Definition at line 448 of file pmat4.f90.

    + +
    +
    + +

    ◆ axial3_d()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]areal type input 3-vector A
    +
    +
    +
    Returns
    b result, antisymmetrix "axial vector" matrix corresponding to A
    +
    Author
    R. J. Purser
    + +

    Definition at line 434 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ axial3_s()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]areal type input 3-vector A
    +
    +
    +
    Returns
    b result, antisymmetrix "axial vector" matrix corresponding to A
    +
    Author
    R. J. Purser
    + +

    Definition at line 420 of file pmat4.f90.

    + +
    +
    + +

    ◆ axtoq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::axtoq (real(dp), dimension(3), intent(in) v,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    + +

    Go from an axial 3-vector to its equivalent quaternion.

    +
    Parameters
    + + + +
    [in]vaxial 3-vector
    [out]qquaternion
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1658 of file pmat4.f90.

    + +
    +
    + +

    ◆ axtorot()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]ax3axial 3-vector
    [out]orth333*3 orthogonal matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1548 of file pmat4.f90.

    + +
    +
    + +

    ◆ cmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::cmobius (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    real(dp), dimension(3), intent(in) vz,
    real(dp), dimension(3), intent(out) vw 
    )
    +
    +private
    +
    + +

    Perform a complex Mobius transformation from cartesian vz to cartesian vw where the transformation coefficients are the standard aa,bb,cc,dd.

    +
    Parameters
    + + + + + + + +
    [in]aaMobius transformation coefficient
    [in]bbMobius transformation coefficient
    [in]ccMobius transformation coefficient
    [in]ddMobius transformation coefficient
    [in]vzCartesian unit 3-vector representation of input argument
    [out]vwCartesian unit 3-vector representation of output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2312 of file pmat4.f90.

    + +

    References zmobius().

    + +
    +
    + +

    ◆ corral()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of A
    [in]nnumber of columns of A
    [in]masklogical mask
    [in]areal rectangular matrix A
    [out]dpositive diagonal matrix of dimension m
    [in]aarescaled version of A
    [out]epositive diagonal matrix of dimension n
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1441 of file pmat4.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ cross_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(3) pmat4::cross_product_d (real(dp), dimension(3), intent(in) a,
    real(dp), dimension(3), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the cross product of two double precision real 3-vectors.

    +
    Parameters
    + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    +
    +
    +
    Returns
    c result, double precision real 3-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 215 of file pmat4.f90.

    + +
    +
    + +

    ◆ cross_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(3) pmat4::cross_product_s (real(sp), dimension(3), intent(in) a,
    real(sp), dimension(3), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the cross product of two single precision real 3-vectors.

    +
    Parameters
    + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    +
    +
    +
    Returns
    c result, single precision real 3-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 202 of file pmat4.f90.

    + +
    +
    + +

    ◆ ctoz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]vcartesian 3-vector representation of point on Riemann sphere
    [out]zcomplex point stereographically equivalent to v
    [out]infzlogical indicator for z being the point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2027 of file pmat4.f90.

    + +

    References pkind::dpc, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ det_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pmat4::det_d (real(dp), dimension(:,:), intent(in) a)
    +
    + +

    Return the determinant of a double precision matrix.

    +
    Parameters
    + + +
    [in]areal type input matrix A
    +
    +
    +
    Returns
    det result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 369 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ det_i()

    + +
    +
    + + + + + + + + +
    integer(spi) function pmat4::det_i (integer(spi), dimension(:,:), intent(in) a)
    +
    + +

    Return the determinant of a single precision integer matrix.

    +
    Parameters
    + + +
    [in]ainteger type input matrix A
    +
    +
    +
    Returns
    idet result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 390 of file pmat4.f90.

    + +
    +
    + +

    ◆ det_id()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(dpi) function pmat4::det_id (integer(dpi), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a double precision integer matrix.

    +
    Parameters
    + + +
    [in]ainteger type input matrix A
    +
    +
    +
    Returns
    idet result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 404 of file pmat4.f90.

    + +

    References pkind::dp, and pkind::dpi.

    + +
    +
    + +

    ◆ det_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::det_s (real(sp), dimension(:,:), intent(in) a)
    +
    +private
    +
    + +

    Return the determinant of a single precision matrix.

    +
    Parameters
    + + +
    [in]areal type input matrix A
    +
    +
    +
    Returns
    det result, determinant of matrix A
    +
    Author
    R. J. Purser
    + +

    Definition at line 348 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagn_d()

    + +
    +
    + + + + + + + + +
    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

    +
    Parameters
    + + +
    [in]areal type input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 492 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ diagn_i()

    + +
    +
    + + + + + + + + +
    integer(spi) function, dimension(size(a),size(a)) pmat4::diagn_i (integer(spi), dimension(:), intent(in) a)
    +
    + +

    Return the diagonal matrix whose elements are the given vector.

    +

    Integer version.

    +
    Parameters
    + + +
    [in]ainteger input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 508 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagn_s()

    + +
    +
    + + + + + + + + +
    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.

    +
    Parameters
    + + +
    [in]areal type input vector A listing the diagonal elements
    +
    +
    +
    Returns
    b result, diagonal matrix with the elements of A
    +
    Author
    R. J. Purser
    + +

    Definition at line 476 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ diagnn_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function, dimension(size(b,1)) pmat4::diagnn_d (real(dp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in]breal type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 538 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagnn_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function, dimension(size(b,1)) pmat4::diagnn_i (integer(spi), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Integer version.

    +
    Parameters
    + + +
    [in]binteger type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 553 of file pmat4.f90.

    + +
    +
    + +

    ◆ diagnn_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(size(b,1)) pmat4::diagnn_s (real(sp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the vector whose elements are the diagonal ones of a given matrix.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in]breal type input matrix
    +
    +
    +
    Returns
    a result, vector listing the diagonal elements of the given matrix.
    +
    Author
    R. J. Purser
    + +

    Definition at line 523 of file pmat4.f90.

    + +
    +
    + +

    ◆ dlltoxy_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]rlatlatitude
    [in]drlatlatitude
    [in]drlonlongitudes
    [out]x2output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 936 of file pmat4.f90.

    + +

    References pietc::u2.

    + +
    +
    + +

    ◆ dlltoxy_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::dlltoxy_s (real(sp), intent(in) rlat,
    real(sp), intent(in) drlat,
    real(sp), intent(in) drlon,
    real(sp), dimension(2), intent(out) x2 
    )
    +
    +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.

    +
    Parameters
    + + + + + +
    [in]rlatlatitude
    [in]drlatlatitude
    [in]drlonlongitudes
    [out]x2output
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 916 of file pmat4.f90.

    + +
    +
    + +

    ◆ dqarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::dqarea_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,
    real(dp), intent(in) drlatc,
    real(dp), intent(in) drlonc 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of point A
    [in]drlonaincremental longitude of point A
    [in]drlatbincremental latitude of point B
    [in]drlonbincremental longitude of point B
    [in]drlatcincremental latitude of point C
    [in]drloncincremental longitude of point C
    +
    +
    +
    Returns
    area
    +
    Author
    R. J. Purser
    + +

    Definition at line 898 of file pmat4.f90.

    + +
    +
    + +

    ◆ dqarea_s()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of point A
    [in]drlonaincremental longitude of point A
    [in]drlatbincremental latitude of point B
    [in]drlonbincremental longitude of point B
    [in]drlatcincremental latitude of point C
    [in]drloncincremental longitude of point C
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 869 of file pmat4.f90.

    + +
    +
    + +

    ◆ dtarea_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of A
    [in]drlonaincremental longitude of A
    [in]drlatbincremental latitude of B
    [in]drlonbincremental longitude of B
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 825 of file pmat4.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dtarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::dtarea_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 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]rlatlatitude of reference point
    [in]drlataincremental latitude of A
    [in]drlonaincremental longitude of A
    [in]drlatbincremental latitude of B
    [in]drlonbincremental longitude of B
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 786 of file pmat4.f90.

    + +
    +
    + +

    ◆ expmat()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]norder of square matrix A
    [in]ainput matrix A
    [out]bmatrix B, the exponential of matrix A
    [out]detbdeterminant of matrix B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1729 of file pmat4.f90.

    + +

    References pietc::o2, pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ expmatd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]norder of square matrix A
    [in]ainput matrix A
    [out]bmatrix B, the exponential of matrix A
    [out]bdderivative of B wrt elements of A
    [out]detbdeterminant of matrix B
    [out]detbdderivative of detb wrt elements of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1767 of file pmat4.f90.

    + +

    References pietc::o2, pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ expmatdd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + +
    [in]norder of the matrix A
    [in]ainput matrix A
    [out]bmatrix B, exponential of matrix A
    [out]bdderivative of B wrt elements of A
    [out]bdd2nd derivative of B wrt elements of A
    [out]detbdeterminant of matrix B
    [out]detbdderivative of detb wrt elements of A
    [out]detbdd2nd derivative of detb wrt elements of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1834 of file pmat4.f90.

    + +

    References pietc::o2, pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ gram_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B containing nrank orthonormal column vectors
    [out]nrankrank of A
    [out]detdeterminant of projection of A into subspace of B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1078 of file pmat4.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ gram_s()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B containing nrank orthonormal column vectors
    [out]nrankrank of A
    [out]detdeterminant of projection of A into subspace of B
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1007 of file pmat4.f90.

    + +
    +
    + +

    ◆ graml_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]asgiven matrix A
    [out]bmatrix B of orthonormal columns
    [out]nrankrank of A
    [out]detsignsign of determinant
    [out]ldetlogarithm of absolute value of determinant
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1150 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ hav_d()

    + +
    +
    + + + + + + + + +
    real(dp) function pmat4::hav_d (real(dp), intent(in) t)
    +
    + +

    Haversine function in double precision.

    +
    Parameters
    + + +
    [in]tinput argument
    +
    +
    +
    Returns
    a result
    +
    Author
    R. J. Purser
    + +

    Definition at line 964 of file pmat4.f90.

    + +

    References pietc::o2.

    + +
    +
    + +

    ◆ hav_s()

    + +
    +
    + + + + + + + + +
    real(sp) function pmat4::hav_s (real(sp), intent(in) t)
    +
    + +

    Haversine function in single precision.

    +
    Parameters
    + + +
    [in]tinput argument
    +
    +
    +
    Returns
    a result
    +
    Author
    R. J. Purser
    + +

    Definition at line 951 of file pmat4.f90.

    + +

    References pietc::t.

    + +
    +
    + +

    ◆ huarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::huarea_d (real(dp), intent(in) sa,
    real(dp), intent(in) sb 
    )
    +
    +private
    +
    + +

    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]saorthographic projection of triangle's side A
    [in]sborthographic projection of triangle's side B
    +
    +
    +
    Returns
    area (steradians) of the right-angle spherical triangle
    +
    Author
    R. J. Purser
    + +

    Definition at line 648 of file pmat4.f90.

    + +
    +
    + +

    ◆ huarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::huarea_s (real(sp), intent(in) sa,
    real(sp), intent(in) sb 
    )
    +
    +private
    +
    + +

    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]saorthographic projection of triangle's side A
    [in]sborthographic projection of triangle's side B
    +
    +
    +
    Returns
    area (steradians) of the right-angle spherical triangle
    +
    Author
    R. J. Purser
    + +

    Definition at line 630 of file pmat4.f90.

    + +
    +
    + +

    ◆ identity3_i()

    + +
    +
    + + + + + +
    + + + + + + + +
    integer(spi) function, dimension(3,3) pmat4::identity3_i ()
    +
    +private
    +
    + +

    Return the 3-dimensional integer identity matrix.

    +
    Returns
    a result, identity matrix in 3 dimensions.
    +
    Author
    R. J. Purser
    + +

    Definition at line 615 of file pmat4.f90.

    + +
    +
    + +

    ◆ identity_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function, dimension(n,n) pmat4::identity_i (integer(spi), intent(in) n)
    +
    +private
    +
    + +

    Return the integer identity matrix for a given dimensionality.

    +
    Parameters
    + + +
    [in]ninput integer dimensionality
    +
    +
    +
    Returns
    a result, identity matrix of the given dimensionality
    +
    Author
    R. J. Purser
    + +

    Definition at line 603 of file pmat4.f90.

    + +
    +
    + +

    ◆ mulqq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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 
    )
    +
    + +

    Multiply quaternions, a*b, assuming operation performed from right to left.

    +
    Parameters
    + + + +
    [in]ainput quaternion
    [in]binput quaternion
    +
    +
    +
    Returns
    c result quaternion a*b
    +
    Author
    R. J. Purser
    + +

    Definition at line 1709 of file pmat4.f90.

    + +
    +
    + +

    ◆ normalize_d()

    + +
    +
    + + + + + + + + +
    subroutine pmat4::normalize_d (real(dp), dimension(:), intent(inout) v)
    +
    + +

    Normalize the given double precision real vector.

    +
    Parameters
    + + +
    [in,out]vvector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 988 of file pmat4.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ normalize_s()

    + +
    +
    + + + + + + + + +
    subroutine pmat4::normalize_s (real(sp), dimension(:), intent(inout) v)
    +
    + +

    Normalize the given single precision real vector.

    +
    Parameters
    + + +
    [in,out]vvector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 976 of file pmat4.f90.

    + +
    +
    + +

    ◆ normalized_d()

    + +
    +
    + + + + + + + + +
    real(dp) function, dimension(size(a)) pmat4::normalized_d (real(dp), dimension(:), intent(in) a)
    +
    + +

    Return the normalized version of a double precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, double precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 157 of file pmat4.f90.

    + +

    References absv_d(), and pietc::u0.

    + +
    +
    + +

    ◆ normalized_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function, dimension(size(a)) pmat4::normalized_s (real(sp), dimension(:), intent(in) a)
    +
    +private
    +
    + +

    Return the normalized version of a single precision real vector.

    +
    Parameters
    + + +
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, single precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 143 of file pmat4.f90.

    + +

    References absv_s().

    + +
    +
    + +

    ◆ orthogonalized_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(size(u)) pmat4::orthogonalized_d (real(dp), dimension(:), intent(in) u,
    real(dp), dimension(:), intent(in) a 
    )
    +
    +private
    +
    + +

    Return the part of vector a that is orthogonal to unit vector u.

    +
    Parameters
    + + + +
    [in]ureal type input unit vector
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, double precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 187 of file pmat4.f90.

    + +
    +
    + +

    ◆ orthogonalized_s()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(size(u)) pmat4::orthogonalized_s (real(sp), dimension(:), intent(in) u,
    real(sp), dimension(:), intent(in) a 
    )
    +
    + +

    Return the part of vector a that is orthogonal to unit vector u.

    +
    Parameters
    + + + +
    [in]ureal type input unit vector
    [in]areal type input vector
    +
    +
    +
    Returns
    b result, single precision real vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 172 of file pmat4.f90.

    + +
    +
    + +

    ◆ outer_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(size(a),size(b)) pmat4::outer_product_d (real(dp), dimension(:), intent(in) a,
    real(dp), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two double precision real vectors.

    +
    Parameters
    + + + +
    [in]areal type input vector
    [in]breal type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 289 of file pmat4.f90.

    + +
    +
    + +

    ◆ outer_product_i()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    integer(spi) function, dimension(size(a),size(b)) pmat4::outer_product_i (integer(spi), dimension(:), intent(in) a,
    integer(spi), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two integer vectors.

    +
    Parameters
    + + + +
    [in]ainteger type input vector
    [in]binteger type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 305 of file pmat4.f90.

    + +
    +
    + +

    ◆ outer_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(size(a),size(b)) pmat4::outer_product_s (real(sp), dimension(:), intent(in) a,
    real(sp), dimension(:), intent(in) b 
    )
    +
    +private
    +
    + +

    Return the outer product matrix of two single precision real vectors.

    +
    Parameters
    + + + +
    [in]areal type input vector
    [in]breal type input vector
    +
    +
    +
    Returns
    c result, rank-1 matrix outer product
    +
    Author
    R. J. Purser
    + +

    Definition at line 273 of file pmat4.f90.

    + +
    +
    + +

    ◆ plaingram_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in,out]binput as given matrix, output as orthogonalized vectors
    [out]nrankeffective rank of given matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1263 of file pmat4.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ plaingram_s()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::plaingram_s (real(sp), dimension(:,:), intent(inout) b,
    integer(spi), intent(out) nrank 
    )
    +
    + +

    A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]binput as given matrix, output as orthogonalized vectors
    [out]nrankeffective rank of given matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1227 of file pmat4.f90.

    + +
    +
    + +

    ◆ qtoax()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::qtoax (real(dp), dimension(0:3), intent(in) q,
    real(dp), dimension(3), intent(out) v 
    )
    +
    + +

    Go from quaternion to axial 3-vector.

    +
    Parameters
    + + + +
    [in]qquaternion
    [in]vaxial 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1672 of file pmat4.f90.

    + +
    +
    + +

    ◆ qtorot()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::qtorot (real(dp), dimension(0:3), intent(in) q,
    real(dp), dimension(3,3), intent(out) rot 
    )
    +
    + +

    Go from quaternion to rotation matrix representations.

    +
    Parameters
    + + + +
    [in]qquaternion representation
    [out]rotrotation matrix representations
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1646 of file pmat4.f90.

    + +
    +
    + +

    ◆ qtospin()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::qtospin (real(dp), dimension(0:3), intent(in) q,
    complex(dpc), dimension(2,2), intent(out) cspin 
    )
    +
    + +

    Go from the unit quaternion to the complex spinor representation.

    +
    Parameters
    + + + +
    [in]qgiven unit quaternion representation
    [out]cspinspinor representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1575 of file pmat4.f90.

    + +
    +
    + +

    ◆ rottoax()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]orth333*3 proper rotation matrix
    [out]ax3axial 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1518 of file pmat4.f90.

    + +
    +
    + +

    ◆ rottoq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::rottoq (real(dp), dimension(3,3), intent(in) rot,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    + +

    Go from rotation matrix to a corresponding unit quaternion representation.

    +
    Parameters
    + + + +
    [in]rotgiven rotation matrix
    [out]qquaternion representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1590 of file pmat4.f90.

    + +

    References pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ rowgram()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]mnumber of rows of A
    [in]nnumber of columns of A
    [in]arectangular input matrix A
    [out]ipivpivoting sequence
    [out]ttrow-normalization
    [out]borthonormalized rows
    [in]rankeffective rank of A
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1315 of file pmat4.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ rowops()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]mnumber of rows of matrix tt, dimension of vectors V and VV
    [in]nnumber of columns of matrix tt
    [in]ipivinteger vector encoding the pivoting sequence
    [in]ttrow-normalized matrix provided by subroutine rowgram
    [in]vinput single column vector
    [out]vvoutput column vector vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1400 of file pmat4.f90.

    + +
    +
    + +

    ◆ sarea_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::sarea_d (real(dp), dimension(3), intent(in) v1,
    real(dp), dimension(3), intent(in) v2,
    real(dp), dimension(3), intent(in) v3 
    )
    +
    +private
    +
    + +

    Compute the area of the spherical triangle, {v1,v2,v3}.

    +
    Parameters
    + + + + +
    [in]v1unit-3-vector vertex of the spherical triangle
    [in]v2unit-3-vector vertex of the spherical triangle
    [in]v3unit-3-vector vertex of the spherical triangle
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 723 of file pmat4.f90.

    + +

    References cyclic(), and pietc::u0.

    + +
    +
    + +

    ◆ sarea_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::sarea_s (real(sp), dimension(3), intent(in) v1,
    real(sp), dimension(3), intent(in) v2,
    real(sp), dimension(3), intent(in) v3 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]v1area of the spherical triangle
    [in]v2area of the spherical triangle
    [in]v3area of the spherical triangle
    +
    +
    +
    Returns
    area result
    +
    Author
    R. J. Purser
    + +

    Definition at line 668 of file pmat4.f90.

    + +

    References cyclic().

    + +
    +
    + +

    ◆ setem()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::setem (real(dp), intent(in) c,
    real(dp), intent(in) d,
    real(dp), intent(in) e,
    real(dp), intent(in) g,
    real(dp), dimension(3,3), intent(out) r 
    )
    +
    +private
    +
    + +

    Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix.

    +
    Parameters
    + + + + + + +
    [in]c0th component of given quaternion
    [in]d1st component of given quaternion
    [in]e2nd component of given quaternion
    [in]g3rd component of given quaternion
    [in]routput 3*3 real rotation matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1690 of file pmat4.f90.

    + +
    +
    + +

    ◆ setmobius()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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).

    +
    Parameters
    + + + + + + + + +
    [in]xc0cartesian point that will map to (0,0,1)
    [in]xc1cartesian point that will map to (1,0,0)
    [in]xc2cartesian point that will map to (0,0,-1)
    [out]aaMobius transformation complex coefficient
    [out]bbMobius transformation complex coefficient
    [out]ccMobius transformation complex coefficient
    [out]ddMobius transformation complex coefficient
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2123 of file pmat4.f90.

    + +
    +
    + +

    ◆ spintoq()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public pmat4::spintoq (complex(dpc), dimension(2,2), intent(in) cspin,
    real(dp), dimension(0:3), intent(out) q 
    )
    +
    + +

    Go from the complex spinor matrix to the unit quaternion representation.

    +
    Parameters
    + + + +
    [in]cspincomplex spinor representation
    [out]qunit quaternion representation
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1562 of file pmat4.f90.

    + +
    +
    + +

    ◆ trace_d()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(dp) function pmat4::trace_d (real(dp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given double precision real matrix.

    +
    Parameters
    + + +
    [in]breal type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 579 of file pmat4.f90.

    + +
    +
    + +

    ◆ trace_i()

    + +
    +
    + + + + + +
    + + + + + + + + +
    integer(spi) function pmat4::trace_i (integer(spi), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given integer matrix.

    +
    Parameters
    + + +
    [in]binteger type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 591 of file pmat4.f90.

    + +
    +
    + +

    ◆ trace_s()

    + +
    +
    + + + + + +
    + + + + + + + + +
    real(sp) function pmat4::trace_s (real(sp), dimension(:,:), intent(in) b)
    +
    +private
    +
    + +

    Return the trace of a given single precision real matrix.

    +
    Parameters
    + + +
    [in]breal type input matrix B
    +
    +
    +
    Returns
    s result, trace, or sum of diagonal elements, of B
    +
    Author
    R. J. Purser
    + +

    Definition at line 567 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_cross_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function, dimension(4) pmat4::triple_cross_product_d (real(dp), dimension(4), intent(in) u,
    real(dp), dimension(4), intent(in) v,
    real(dp), dimension(4), intent(in) w 
    )
    +
    +private
    +
    + +

    Return the triple_cross_product for 4-vectors.

    +
    Parameters
    + + + + +
    [in]ureal type input 4-vector
    [in]vreal type input 4-vector
    [in]wreal type input 4-vector
    +
    +
    +
    Returns
    x result, triple-cross-product 4-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 253 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_cross_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function, dimension(4) pmat4::triple_cross_product_s (real(sp), dimension(4), intent(in) u,
    real(sp), dimension(4), intent(in) v,
    real(sp), dimension(4), intent(in) w 
    )
    +
    +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).

    +
    Parameters
    + + + + +
    [in]ureal type input 4-vector
    [in]vreal type input 4-vector
    [in]wreal type input 4-vector
    +
    +
    +
    Returns
    x result, triple-cross-product 4-vector
    +
    Author
    R. J. Purser
    + +

    Definition at line 232 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_product_d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(dp) function pmat4::triple_product_d (real(dp), dimension(3), intent(in) a,
    real(dp), dimension(3), intent(in) b,
    real(dp), dimension(3), intent(in) c 
    )
    +
    +private
    +
    + +

    Return the triple product of three double precision real 3-vectors.

    +
    Parameters
    + + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    [in]creal type input 3-vector
    +
    +
    +
    Returns
    tripleproduct result, scalar triple product
    +
    Author
    R. J. Purser
    + +

    Definition at line 336 of file pmat4.f90.

    + +
    +
    + +

    ◆ triple_product_s()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real(sp) function pmat4::triple_product_s (real(sp), dimension(3), intent(in) a,
    real(sp), dimension(3), intent(in) b,
    real(sp), dimension(3), intent(in) c 
    )
    +
    +private
    +
    + +

    Return the triple product of three single precision real 3-vectors.

    +
    Parameters
    + + + + +
    [in]areal type input 3-vector
    [in]breal type input 3-vector
    [in]creal type input 3-vector
    +
    +
    +
    Returns
    tripleproduct result, scalar triple product
    +
    Author
    R. J. Purser
    + +

    Definition at line 322 of file pmat4.f90.

    + +
    +
    + +

    ◆ zmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::zmobius (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    complex(dpc), intent(in) z,
    logical, intent(in) infz,
    complex(dpc), intent(out) w,
    logical, intent(out) infw 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + +
    [in]aaMobius transformation complex coefficient
    [in]bbMobius transformation complex coefficient
    [in]ccMobius transformation complex coefficient
    [in]ddMobius transformation complex coefficient
    [in]zcomplex input argument of the Mobius transformation
    [in]infzlogical indicator for z being a point at infinity
    [out]wcomplex output of the Mobius transformation
    [out]infwlogical indicator for w being a point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2277 of file pmat4.f90.

    + +

    Referenced by cmobius(), and zmobiusi().

    + +
    +
    + +

    ◆ zmobiusi()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::zmobiusi (complex(dpc), intent(in) aa,
    complex(dpc), intent(in) bb,
    complex(dpc), intent(in) cc,
    complex(dpc), intent(in) dd,
    complex(dpc), intent(in) zz,
    logical, intent(in) infz,
    complex(dpc), intent(out) zw,
    logical, intent(out) infw 
    )
    +
    +private
    +
    + +

    Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}.

    +
    Parameters
    + + + + + + + + + +
    [in]aainverse Mobius transformation coefficient
    [in]bbinverse Mobius transformation coefficient
    [in]ccinverse Mobius transformation coefficient
    [in]ddinverse Mobius transformation coefficient
    [in]zzcomplex input argument
    [in]infzlogical indicator for zz the point at infinity
    [out]zwcomplex output argument
    [out]infwlogical indicator for zw the point at infinity
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2336 of file pmat4.f90.

    + +

    References zmobius().

    + +
    +
    + +

    ◆ znfun()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]ninteger order of the first of the returned derivatives of C.
    [in]zreal input argument in the function C(z)
    [out]znnth-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)
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1960 of file pmat4.f90.

    + +

    References pietc::u0, pietc::u2, and pietc::u3.

    + +
    +
    + +

    ◆ zntay()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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)).

    +
    Parameters
    + + + + +
    [in]ninteger order of the derivative
    [in]zreal argument
    [in]znreturned value of the nth derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1921 of file pmat4.f90.

    + +

    References pietc::u2.

    + +
    +
    + +

    ◆ zsetmobius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::zsetmobius (complex(dp), intent(in) z0,
    logical, intent(in) infz0,
    complex(dp), intent(in) z1,
    logical, intent(in) infz1,
    complex(dp), intent(in) z2,
    logical, intent(in) infz2,
    complex(dpc), intent(out) aa,
    complex(dpc), intent(out) bb,
    complex(dpc), intent(out) cc,
    complex(dpc), intent(out) dd 
    )
    +
    +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).

    +
    Parameters
    + + + + + + + + + + + +
    [in]z0complex input point that will map to (0,0)
    [in]infz0logical indicator that z0 is the point at infinity
    [in]z1complex input point that will map to (1,0)
    [in]infz1logical indicator that z1 is the point at infinity
    [in]z2complex input point that will map to infinity
    [in]infz2logical indicator that z2 is the point at infinity
    [out]aaMobius transformation complex coefficient
    [out]bbMobius transformation complex coefficient
    [out]ccMobius transformation complex coefficient
    [out]ddMobius transformation complex coefficient
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2206 of file pmat4.f90.

    + +
    +
    + +

    ◆ ztoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]zcomplex input argument
    [in]infzlogical indicator for z being the point at infinity
    [out]vcartesian unit 3-vector position equivalent to z
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2053 of file pmat4.f90.

    + +
    +
    + +

    ◆ ztocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat4::ztocd (complex(dpc), intent(in) z,
    logical, intent(in) infz,
    real(dp), dimension(3), intent(out) v,
    complex(dpc), dimension(3), intent(out) vd 
    )
    +
    +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).

    +
    Note
    The derivative for the ideal point at infinity has not been coded yet.
    +
    Parameters
    + + + + + +
    [in]zcomplex input argument
    [in]infzlogical indicator for z being the point at infinity
    [out]vcartesian unit 3-vector position equivalent to z
    [out]vdderivative of cartesian v wrt z
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 2083 of file pmat4.f90.

    + +

    References pkind::dpc.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepmat4.js b/ver-1.11.0/grid_tools/namespacepmat4.js new file mode 100644 index 000000000..aa1655530 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat4.js @@ -0,0 +1,40 @@ +var namespacepmat4 = +[ + [ "absv", "interfacepmat4_1_1absv.html", "interfacepmat4_1_1absv" ], + [ "axial", "interfacepmat4_1_1axial.html", "interfacepmat4_1_1axial" ], + [ "axtoq", "interfacepmat4_1_1axtoq.html", "interfacepmat4_1_1axtoq" ], + [ "axtorot", "interfacepmat4_1_1axtorot.html", "interfacepmat4_1_1axtorot" ], + [ "corral", "interfacepmat4_1_1corral.html", "interfacepmat4_1_1corral" ], + [ "cross_product", "interfacepmat4_1_1cross__product.html", "interfacepmat4_1_1cross__product" ], + [ "ctoz", "interfacepmat4_1_1ctoz.html", "interfacepmat4_1_1ctoz" ], + [ "det", "interfacepmat4_1_1det.html", "interfacepmat4_1_1det" ], + [ "diag", "interfacepmat4_1_1diag.html", "interfacepmat4_1_1diag" ], + [ "dlltoxy", "interfacepmat4_1_1dlltoxy.html", "interfacepmat4_1_1dlltoxy" ], + [ "expmat", "interfacepmat4_1_1expmat.html", "interfacepmat4_1_1expmat" ], + [ "gram", "interfacepmat4_1_1gram.html", "interfacepmat4_1_1gram" ], + [ "hav", "interfacepmat4_1_1hav.html", "interfacepmat4_1_1hav" ], + [ "huarea", "interfacepmat4_1_1huarea.html", "interfacepmat4_1_1huarea" ], + [ "identity", "interfacepmat4_1_1identity.html", "interfacepmat4_1_1identity" ], + [ "mobius", "interfacepmat4_1_1mobius.html", "interfacepmat4_1_1mobius" ], + [ "mobiusi", "interfacepmat4_1_1mobiusi.html", "interfacepmat4_1_1mobiusi" ], + [ "mulqq", "interfacepmat4_1_1mulqq.html", "interfacepmat4_1_1mulqq" ], + [ "normalize", "interfacepmat4_1_1normalize.html", "interfacepmat4_1_1normalize" ], + [ "normalized", "interfacepmat4_1_1normalized.html", "interfacepmat4_1_1normalized" ], + [ "orthogonalized", "interfacepmat4_1_1orthogonalized.html", "interfacepmat4_1_1orthogonalized" ], + [ "outer_product", "interfacepmat4_1_1outer__product.html", "interfacepmat4_1_1outer__product" ], + [ "qtoax", "interfacepmat4_1_1qtoax.html", "interfacepmat4_1_1qtoax" ], + [ "qtorot", "interfacepmat4_1_1qtorot.html", "interfacepmat4_1_1qtorot" ], + [ "qtospin", "interfacepmat4_1_1qtospin.html", "interfacepmat4_1_1qtospin" ], + [ "rottoax", "interfacepmat4_1_1rottoax.html", "interfacepmat4_1_1rottoax" ], + [ "rottoq", "interfacepmat4_1_1rottoq.html", "interfacepmat4_1_1rottoq" ], + [ "rowops", "interfacepmat4_1_1rowops.html", "interfacepmat4_1_1rowops" ], + [ "sarea", "interfacepmat4_1_1sarea.html", "interfacepmat4_1_1sarea" ], + [ "setem", "interfacepmat4_1_1setem.html", "interfacepmat4_1_1setem" ], + [ "setmobius", "interfacepmat4_1_1setmobius.html", "interfacepmat4_1_1setmobius" ], + [ "spintoq", "interfacepmat4_1_1spintoq.html", "interfacepmat4_1_1spintoq" ], + [ "trace", "interfacepmat4_1_1trace.html", "interfacepmat4_1_1trace" ], + [ "triple_product", "interfacepmat4_1_1triple__product.html", "interfacepmat4_1_1triple__product" ], + [ "znfun", "interfacepmat4_1_1znfun.html", "interfacepmat4_1_1znfun" ], + [ "zntay", "interfacepmat4_1_1zntay.html", "interfacepmat4_1_1zntay" ], + [ "ztoc", "interfacepmat4_1_1ztoc.html", "interfacepmat4_1_1ztoc" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacepmat5.html b/ver-1.11.0/grid_tools/namespacepmat5.html new file mode 100644 index 000000000..d3b24a3c5 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat5.html @@ -0,0 +1,2722 @@ + + + + + + + +grid_tools: pmat5 Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5 Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Utility routines for orienting the globe and basic geographical mappings.

    +
    Author
    R. J. Purser
    +

    Function/Subroutine Documentation

    + +

    ◆ dctoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dctoc (real(dp), intent(in) s,
    real(dp), dimension(3), intent(inout) xc1,
    real(dp), dimension(3), intent(inout) xc2 
    )
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.

    +
    Parameters
    + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 916 of file pmat5.f90.

    + +

    References pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ dctocd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 947 of file pmat5.f90.

    + +

    References pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ dctocdd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    [out]ddxc22nd derivative, d^2(xc2)/(d(xc1)d(xc1)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 988 of file pmat5.f90.

    + +

    References pietc::u0, pietc::u1, and pietc::u2.

    + +
    +
    + +

    ◆ dctog()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]dlatdegrees latitude.
    [out]dlondegrees longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 398 of file pmat5.f90.

    + +

    References pietc::rtod, and pietc::u0.

    + +
    +
    + +

    ◆ dctogr()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]rlatradians latitude.
    [out]rlonradians longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 198 of file pmat5.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ dgrtoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dgrtoc (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates.

    +

    Double proecision version.

    +
    Parameters
    + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 237 of file pmat5.f90.

    + +
    +
    + +

    ◆ dgrtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dgrtocd (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.

    +

    Double precision version.

    +
    Parameters
    + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 280 of file pmat5.f90.

    + +

    References pietc::u0.

    + +

    Referenced by sgrtocd().

    + +
    +
    + +

    ◆ dgrtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dgrtocdd (real(dp), intent(in) rlat,
    real(dp), intent(in) rlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon,
    real(dp), dimension(3), intent(out) ddxedlatdlat,
    real(dp), dimension(3), intent(out) ddxedlatdlon,
    real(dp), dimension(3), intent(out) ddxedlondlon 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude.

    +

    Double precision version.

    +
    Parameters
    + + + + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    [out]ddxedlatdlatDerivative, d^2(xe)/(d(rlat)d(rlat)).
    [out]ddxedlatdlonDerivative, d^2(xe)/(d(rlat)d(rlon)).
    [out]ddxedlondlonDerivative, d^2(xe)/(d(rlon)d(rlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 340 of file pmat5.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ dgtoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 445 of file pmat5.f90.

    + +

    References pietc::dtor.

    + +
    +
    + +

    ◆ dgtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dgtocd (real(dp), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 496 of file pmat5.f90.

    + +

    References pietc::dtor, and pietc::u0.

    + +

    Referenced by sgtocd().

    + +
    +
    + +

    ◆ dgtocdd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dgtocdd (real(dp), intent(in) dlat,
    real(dp), intent(in) dlon,
    real(dp), dimension(3), intent(out) xe,
    real(dp), dimension(3), intent(out) dxedlat,
    real(dp), dimension(3), intent(out) dxedlon,
    real(dp), dimension(3), intent(out) ddxedlatdlat,
    real(dp), dimension(3), intent(out) ddxedlatdlon,
    real(dp), dimension(3), intent(out) ddxedlondlon 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatd(xe)/d(dlat).
    [out]dxedlond(xe)/d(dlon).
    [out]ddxedlatdlatderivative, d^2(xe)/(d(dlat)d(dlat)).
    [out]ddxedlatdlonderivative, d^2(xe)/(d(dlat)d(dlon)).
    [out]ddxedlondlonderivative, d^2(xe)/(d(dlon)d(dlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 565 of file pmat5.f90.

    + +

    References pietc::dtor, and pietc::u0.

    + +

    Referenced by sgrtocdd(), and sgtocdd().

    + +
    +
    + +

    ◆ dininmap()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of projection center.
    [in]alat0geographical latitude (degrees) of projection center.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 86 of file pmat5.f90.

    + +

    References pietc::dtor, and pietc::u0.

    + +
    +
    + +

    ◆ dinivmap()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of viewing nadir.
    [in]alat0geographical latitude (degrees) of viewing nadir.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 140 of file pmat5.f90.

    + +

    References pietc::dtor, and pietc::u0.

    + +
    +
    + +

    ◆ dplrot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dplrot (real(dp), dimension(3,3), intent(in) rot3,
    integer, intent(in) n,
    real(dp), dimension(n), intent(inout) x,
    real(dp), dimension(n), intent(inout) y,
    real(dp), dimension(n), intent(inout) z 
    )
    +
    +private
    +
    + +

    Apply a constant rotation to a three dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation matrix.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1084 of file pmat5.f90.

    + +
    +
    + +

    ◆ dplroti()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::dplroti (real(dp), dimension(3,3), intent(in) rot3,
    integer, intent(in) n,
    real(dp), dimension(n), intent(inout) x,
    real(dp), dimension(n), intent(inout) y,
    real(dp), dimension(n), intent(inout) z 
    )
    +
    +private
    +
    + +

    Invert the rotation of a three-dimensional polyline.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation to be inverted.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1106 of file pmat5.f90.

    + +
    +
    + +

    ◆ frametwist()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]xpP-frame cartesian X-vector.
    [in]ypP-frame cartesian Y-vector.
    [in]zpP-frame cartesian Z-vector.
    [in]xvV-frame cartesian X-vector.
    [in]yvV-frame cartesian Y-vector.
    [in]zvV-frame cartesian Z-vector.
    [out]twistrelative rotation angle (radians) of frames.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 778 of file pmat5.f90.

    + +
    +
    + +

    ◆ gtoframem()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframem (real(dp), intent(in) plat,
    real(dp), intent(in) plon,
    real(dp), dimension(3,3), intent(out) orth 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]platlatitude (degrees) of point.
    [in]plonlongitude (degrees) of point.
    [out]orthorthonormal matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 617 of file pmat5.f90.

    + +

    References gtoframev().

    + +

    Referenced by sgtoframem().

    + +
    +
    + +

    ◆ gtoframev()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::gtoframev (real(dp), intent(in) plat,
    real(dp), intent(in) plon,
    real(dp), dimension(3), intent(out) xp,
    real(dp), dimension(3), intent(out) yp,
    real(dp), dimension(3), intent(out) zp 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]platlatitude (degrees) of point.
    [in]plonlongitude (degrees) of point.
    [out]xpunit X-basis vector of cartesian frame.
    [out]ypunit Y-basis vector of cartesian frame.
    [out]zpunit Z-basis vector of cartesian frame.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 662 of file pmat5.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +

    Referenced by gtoframem(), and sgtoframev().

    + +
    +
    + +

    ◆ paraframe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]xpreference orthonormal P-frame cartesian X-vector.
    [in]ypreference orthonormal P-frame cartesian Y-vector.
    [in]zpreference orthonormal P-frame cartesian Z-vector.
    [out]xvV-frame cartesian X-vector.
    [out]yvV-frame cartesian Y-vector.
    [in]zvdependent point zenith, V-frame cartesian Z-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 719 of file pmat5.f90.

    + +
    +
    + +

    ◆ plctoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1128 of file pmat5.f90.

    + +
    +
    + +

    ◆ plrot()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation matrix.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1040 of file pmat5.f90.

    + +

    References pietc::t.

    + +
    +
    + +

    ◆ plroti()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]rot3rotation to be inverted.
    [in]nnumber of points in the polyline.
    [in,out]xcartesian components of the three dimensional polyline.
    [in,out]ycartesian components of the three dimensional polyline.
    [in,out]zcartesian components of the three dimensional polyline.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1062 of file pmat5.f90.

    + +

    References pietc::t.

    + +
    +
    + +

    ◆ sctoc()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::sctoc (real(sp), intent(in) s,
    real(sp), dimension(3), intent(inout) xc1,
    real(sp), dimension(3), intent(inout) xc2 
    )
    +
    +private
    +
    + +

    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.

    +
    Parameters
    + + + + +
    [in]sSchmidt scaling parameter
    [in,out]xc1input cartesian 3-vector
    [in,out]xc2output cartesian unit 3-vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 795 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctocd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + +
    [in]sSchmidt scaling parameter.
    [in,out]xc1input cartesian 3-vector.
    [in,out]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 825 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctocdd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]sSchmidt scaling parameter.
    [in]xc1input cartesian 3-vector.
    [in]xc2output cartesian unit 3-vector.
    [out]dxc2jacobian 1st derivative, d(xc2)/d(xc1).
    [out]ddxc22nd derivative, d^2(xc2)/(d(xc1)d(xc1)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 866 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctog()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]dlatdegrees latitude.
    [out]dlondegrees longitude.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1994
    + +

    Definition at line 373 of file pmat5.f90.

    + +
    +
    + +

    ◆ sctogr()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]xeEarth-centered cartesian unit 3-vector.
    [out]rlatradians latitude.
    [out]rlonradians longitude.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 173 of file pmat5.f90.

    + +
    +
    + +

    ◆ sframetwist()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + +
    [in]sxpP-frame cartesian X-vector.
    [in]sypP-frame cartesian Y-vector.
    [in]szpP-frame cartesian Z-vector.
    [in]sxvV-frame cartesian X-vector.
    [in]syvV-frame cartesian Y-vector.
    [in]szvV-frame cartesian Z-vector.
    [out]stwistrelative rotation angle (radians) of frames.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 751 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgrtoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::sgrtoc (real(sp), intent(in) rlat,
    real(sp), intent(in) rlon,
    real(sp), dimension(3), intent(out) xe 
    )
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates.

    +

    Single proecision version.

    +
    Parameters
    + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 220 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgrtocd()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::sgrtocd (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 
    )
    +
    +private
    +
    + +

    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.

    +

    Single precision version.

    +
    Parameters
    + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 257 of file pmat5.f90.

    + +

    References dgrtocd().

    + +
    +
    + +

    ◆ sgrtocdd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + +
    [in]rlatLatitude (radians) of point.
    [in]rlonLongitude (radians) of point.
    [out]xeEarth-centered cartesian unit 3-vector of point.
    [out]dxedlatDerivative, d(xe)/d(rlat).
    [out]dxedlonDerivative, d(xe)/d(rlon).
    [out]ddxedlatdlatDerivative, d^2(xe)/(d(rlat)d(rlat)).
    [out]ddxedlatdlonDerivative, d^2(xe)/(d(rlat)d(rlon)).
    [out]ddxedlondlonDerivative, d^2(xe)/(d(rlon)d(rlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 307 of file pmat5.f90.

    + +

    References dgtocdd().

    + +
    +
    + +

    ◆ sgtoc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xeEarth-centered cartesian unit 3-vector.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1994
    + +

    Definition at line 423 of file pmat5.f90.

    + +
    +
    + +

    ◆ sgtocd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 470 of file pmat5.f90.

    + +

    References dgtocd().

    + +
    +
    + +

    ◆ sgtocdd()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + + + +
    [in]dlatdegrees latitude.
    [in]dlondegrees longitude.
    [out]xecartesian unit 3-vector.
    [out]dxedlatderivative, d(xe)/d(dlat).
    [out]dxedlonderivative, d(xe)/d(dlon).
    [out]ddxedlatdlatderivative, d^2(xe)/(d(dlat)d(dlat)).
    [out]ddxedlatdlonderivative, d^2(xe)/(d(dlat)d(dlon)).
    [out]ddxedlondlonderivative, d^2(xe)/(d(dlon)d(dlon)).
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 528 of file pmat5.f90.

    + +

    References dgtocdd().

    + +
    +
    + +

    ◆ sgtoframem()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]splatlatitude (degrees) of point.
    [in]splonlongitude (degrees) of point.
    [out]sorthorthonormal matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 600 of file pmat5.f90.

    + +

    References gtoframem().

    + +
    +
    + +

    ◆ sgtoframev()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::sgtoframev (real(sp), intent(in) splat,
    real(sp), intent(in) splon,
    real(sp), dimension(3), intent(out) sxp,
    real(sp), dimension(3), intent(out) syp,
    real(sp), dimension(3), intent(out) szp 
    )
    +
    +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.

    +
    Parameters
    + + + + + + +
    [in]splatlatitude (degrees) of point.
    [in]splonlongitude (degrees) of point.
    [out]sxpxp unit X-basis vector of cartesian frame.
    [out]sypyp unit Y-basis vector of cartesian frame.
    [out]szpzp unit Z-basis vector of cartesian frame.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 637 of file pmat5.f90.

    + +

    References gtoframev().

    + +
    +
    + +

    ◆ sininmap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat5::sininmap (real(sp), intent(in) alon0,
    real(sp), intent(in) alat0,
    real(sp), dimension(3,3), intent(out) rot3 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of projection center.
    [in]alat0geographical latitude (degrees) of projection center.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1995
    + +

    Definition at line 64 of file pmat5.f90.

    + +
    +
    + +

    ◆ sinivmap()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]alon0geographical longitude (degrees) of viewing nadir.
    [in]alat0geographical latitude (degrees) of viewing nadir.
    [out]rot3rotation matrix.
    +
    +
    +
    Author
    R. J. Purser
    +
    Date
    1995
    + +

    Definition at line 108 of file pmat5.f90.

    + +
    +
    + +

    ◆ sparaframe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + + + + +
    [in]sxpreference orthonormal P-frame cartesian X-vector.
    [in]sypreference orthonormal P-frame cartesian Y-vector.
    [in]szpreference orthonormal P-frame cartesian Z-vector.
    [out]sxvV-frame cartesian X-vector.
    [out]syvV-frame cartesian Y-vector.
    [in]szvdependent point zenith, V-frame cartesian Z-vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 696 of file pmat5.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepmat5.js b/ver-1.11.0/grid_tools/namespacepmat5.js new file mode 100644 index 000000000..7867096bb --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepmat5.js @@ -0,0 +1,16 @@ +var namespacepmat5 = +[ + [ "ctoc_schm", "interfacepmat5_1_1ctoc__schm.html", "interfacepmat5_1_1ctoc__schm" ], + [ "ctog", "interfacepmat5_1_1ctog.html", "interfacepmat5_1_1ctog" ], + [ "ctogr", "interfacepmat5_1_1ctogr.html", "interfacepmat5_1_1ctogr" ], + [ "frametwist", "interfacepmat5_1_1frametwist.html", "interfacepmat5_1_1frametwist" ], + [ "grtoc", "interfacepmat5_1_1grtoc.html", "interfacepmat5_1_1grtoc" ], + [ "gtoc", "interfacepmat5_1_1gtoc.html", "interfacepmat5_1_1gtoc" ], + [ "gtoframe", "interfacepmat5_1_1gtoframe.html", "interfacepmat5_1_1gtoframe" ], + [ "ininmap", "interfacepmat5_1_1ininmap.html", "interfacepmat5_1_1ininmap" ], + [ "inivmap", "interfacepmat5_1_1inivmap.html", "interfacepmat5_1_1inivmap" ], + [ "paraframe", "interfacepmat5_1_1paraframe.html", "interfacepmat5_1_1paraframe" ], + [ "plctoc", "interfacepmat5_1_1plctoc.html", "interfacepmat5_1_1plctoc" ], + [ "plrot", "interfacepmat5_1_1plrot.html", "interfacepmat5_1_1plrot" ], + [ "plroti", "interfacepmat5_1_1plroti.html", "interfacepmat5_1_1plroti" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespacepsym2.html b/ver-1.11.0/grid_tools/namespacepsym2.html new file mode 100644 index 000000000..1e0bfa71d --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepsym2.html @@ -0,0 +1,1056 @@ + + + + + + + +grid_tools: psym2 Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2 Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    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.

    +
    Author
    R. J. Purser
    +

    Function/Subroutine Documentation

    + +

    ◆ chol2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + + +
    [in]s2X2 symmetric matrix
    [out]ccholesky lower triangular factor
    [out]ffraise the failure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 458 of file psym2.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ eigensym2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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 
    )
    +
    + +

    Get the orthogonal eigenvectors, vv, and diagonal matrix of eigenvalues, oo, of the symmetric 2*2 matrix, em.

    +
    Parameters
    + + + + +
    [in]emsymmetric 2*2 matrix
    [out]vvorthogonal eigenvectors
    [out]oodiagonal matrix of eigenvalues
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 43 of file psym2.f90.

    + +

    References pietc::o2, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ eigensym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::eigensym2d (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) vv,
    real(dp), dimension(2,2), intent(out) oo,
    real(dp), dimension(2,2,2,2), intent(out) vvd,
    real(dp), dimension(2,2,2,2), intent(out) ood,
    logical, intent(out) ff 
    )
    +
    +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.

    +
    Parameters
    + + + + + + + +
    [in]emsymmetric 2*2 matrix
    [out]vvnormalized eigenvectors
    [out]oodiagonal matrix of eigenvalues
    [out]vvdvvd=d(vv)/d(em)
    [out]oodood=d(oo)/d(em)
    [out]fflogical failure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 76 of file psym2.f90.

    + +

    References pietc::o2, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ expsym2()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public psym2::expsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) expem 
    )
    +
    + +

    Get the exp of a symmetric 2*2 matrix.

    +
    Parameters
    + + + +
    [in]emsymmetric 2*2 matrix
    [out]expemexp of a symmetric 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 277 of file psym2.f90.

    + +
    +
    + +

    ◆ expsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Get the exp of a symmetric 2*2 matrix, and its symmetric derivative.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zexp of symmetric 2*2 matrix x
    [out]zdsymmetric derivative wrt x of exp of x
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 294 of file psym2.f90.

    + +

    References pietc::o2.

    + +
    +
    + +

    ◆ expsym2d_e()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2d_e (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zexp of symmetrix matrix x
    [out]zdsymmetric derivative of z wrt x
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 317 of file psym2.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ expsym2d_t()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::expsym2d_t (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zTaylor series expansion method exp(x)
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 347 of file psym2.f90.

    + +

    References id, and pietc::u1.

    + +
    +
    + +

    ◆ id2222()

    + +
    +
    + + + + + + + + +
    subroutine, public psym2::id2222 (real(dp), dimension(2,2,2,2), intent(out) em)
    +
    + +

    General routine for a symmetrized 4th-rank tensor that acts as an effective identity for operations on symmetric matrices.

    +
    Parameters
    + + +
    [out]emsymmetrized effective identity in space of symmetrix matrices.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 442 of file psym2.f90.

    + +

    References id.

    + +
    +
    + +

    ◆ invsym2()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public psym2::invsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z 
    )
    +
    + +

    Get the inverse of a 2*2 matrix (need not be symmetric in this case).

    +
    Parameters
    + + + +
    [in]em2*2 matrix
    [out]zinverse of a 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 112 of file psym2.f90.

    + +
    +
    + +

    ◆ invsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::invsym2d (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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)
    Parameters
    + + + + +
    [in]em2*2 symmetric matrix
    [out]zinverse of a 2*2 symmetric matrix
    [out]zdderivative of the 2*2 symmetric matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 132 of file psym2.f90.

    + +
    +
    + +

    ◆ logsym2()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public psym2::logsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) logem 
    )
    +
    + +

    Get the log of a symmetric positive-definite 2*2 matrix.

    +
    Parameters
    + + + +
    [in]emsymmetric 2*2 matrix
    [out]logemlog of a symmetric positive-definite 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 387 of file psym2.f90.

    + +

    References pietc::u0.

    + +
    +
    + +

    ◆ logsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::logsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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.

    +
    Parameters
    + + + + +
    [in]zdthe symmetric derivative
    [out]xa symmetric 2*2 positive-definite matrix
    [out]zevaluate the logarithm log(x)
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 409 of file psym2.f90.

    + +

    References pietc::o2, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ sqrtsym2()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public psym2::sqrtsym2 (real(dp), dimension(2,2), intent(in) em,
    real(dp), dimension(2,2), intent(out) z 
    )
    +
    + +

    Get the sqrt of a symmetric positive-definite 2*2 matrix.

    +
    Parameters
    + + + +
    [in]em2*2 symmetric matrix
    [out]zsqrt of a symmetric positive-definite 2*2 matrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 150 of file psym2.f90.

    + +
    +
    + +

    ◆ sqrtsym2d()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2d (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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).

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 177 of file psym2.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ sqrtsym2d_e()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2d_e (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +private
    +
    + +

    Eigen-method.

    +
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 203 of file psym2.f90.

    + +

    References pietc::o2, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ sqrtsym2d_t()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine psym2::sqrtsym2d_t (real(dp), dimension(2,2), intent(in) x,
    real(dp), dimension(2,2), intent(out) z,
    real(dp), dimension(2,2,2,2), intent(out) zd 
    )
    +
    +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}
    Parameters
    + + + + +
    [in]xsymmetric 2*2 positive-definite matrix
    [out]zsqrt(x) result
    [out]zdsymmetric derivative
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 236 of file psym2.f90.

    + +

    References id, pietc::o2, pietc::u0, and pietc::u1.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ id

    + +
    +
    + + + + + +
    + + + + +
    real(dp), dimension(2,2,2,2) psym2::id
    +
    +private
    +
    + +

    ID.

    + +

    Definition at line 18 of file psym2.f90.

    + +

    Referenced by expsym2d_t(), id2222(), and sqrtsym2d_t().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespacepsym2.js b/ver-1.11.0/grid_tools/namespacepsym2.js new file mode 100644 index 000000000..8a1ec4971 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespacepsym2.js @@ -0,0 +1,14 @@ +var namespacepsym2 = +[ + [ "chol2", "interfacepsym2_1_1chol2.html", "interfacepsym2_1_1chol2" ], + [ "eigensym2", "interfacepsym2_1_1eigensym2.html", "interfacepsym2_1_1eigensym2" ], + [ "expsym2", "interfacepsym2_1_1expsym2.html", "interfacepsym2_1_1expsym2" ], + [ "expsym2d_e", "interfacepsym2_1_1expsym2d__e.html", "interfacepsym2_1_1expsym2d__e" ], + [ "expsym2d_t", "interfacepsym2_1_1expsym2d__t.html", "interfacepsym2_1_1expsym2d__t" ], + [ "id2222", "interfacepsym2_1_1id2222.html", "interfacepsym2_1_1id2222" ], + [ "invsym2", "interfacepsym2_1_1invsym2.html", "interfacepsym2_1_1invsym2" ], + [ "logsym2", "interfacepsym2_1_1logsym2.html", "interfacepsym2_1_1logsym2" ], + [ "sqrtsym2", "interfacepsym2_1_1sqrtsym2.html", "interfacepsym2_1_1sqrtsym2" ], + [ "sqrtsym2d_e", "interfacepsym2_1_1sqrtsym2d__e.html", "interfacepsym2_1_1sqrtsym2d__e" ], + [ "sqrtsym2d_t", "interfacepsym2_1_1sqrtsym2d__t.html", "interfacepsym2_1_1sqrtsym2d__t" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespaces.html b/ver-1.11.0/grid_tools/namespaces.html new file mode 100644 index 000000000..f6218d2e8 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespaces.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + + + + + + + + + + + +
     NcstgeoConstants for orientation and stretching of map
     NdcstgeoConstants for orientation and stretching of map
     NpesgSuite 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
     NpfunThis module is for evaluating several useful real-valued functions that are not always available in Fortran compilers
     NpietcSome of the commonly used constants (pi etc) mainly for double-precision subroutines
     NpkindStandard integer, real, and complex single and double precision kinds
     Npmat2Routines dealing with the operations of banded matrices
     Npmat4Module for handy vector and matrix operations in Euclidean geometry
     Npmat5Utility routines for orienting the globe and basic geographical mappings
     Npsym2A 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
     NutilsModule that contains general utility routines
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/namespaces_dup.js b/ver-1.11.0/grid_tools/namespaces_dup.js new file mode 100644 index 000000000..ac805de05 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespaces_dup.js @@ -0,0 +1,14 @@ +var namespaces_dup = +[ + [ "cstgeo", "namespacecstgeo.html", null ], + [ "dcstgeo", "namespacedcstgeo.html", null ], + [ "pesg", "namespacepesg.html", null ], + [ "pfun", "namespacepfun.html", null ], + [ "pietc", "namespacepietc.html", null ], + [ "pkind", "namespacepkind.html", null ], + [ "pmat2", "namespacepmat2.html", null ], + [ "pmat4", "namespacepmat4.html", null ], + [ "pmat5", "namespacepmat5.html", null ], + [ "psym2", "namespacepsym2.html", null ], + [ "utils", "namespaceutils.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/namespaceutils.html b/ver-1.11.0/grid_tools/namespaceutils.html new file mode 100644 index 000000000..d1b0d7e74 --- /dev/null +++ b/ver-1.11.0/grid_tools/namespaceutils.html @@ -0,0 +1,475 @@ + + + + + + + +grid_tools: utils Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils Module Reference
    +
    +
    + +

    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...
     
    +

    Detailed Description

    +

    Module that contains general utility routines.

    +
    Author
    GFDL programmer
    +

    Function/Subroutine Documentation

    + +

    ◆ fill_regional_halo()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in,out]data- field to be extrapolated
    [in]halo- number of halo rows/columns
    +
    +
    +
    Author
    Ratko Vasic (NCEP/EMC)
    + +

    Definition at line 71 of file utils.F90.

    + +

    Referenced by read_grid_file().

    + +
    +
    + +

    ◆ handle_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    [in]statusError status code.
    [in]stringError message.
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 107 of file utils.F90.

    + +

    Referenced by read_grid_file(), and read_namelist().

    + +
    +
    + +

    ◆ read_namelist()

    + +
    +
    + + + + + + + +
    subroutine utils::read_namelist ()
    +
    + +

    Read the program namelist file.

    +

    Then, write the namelist variables to standard output.

    +
    Author
    GFDL Programmer
    + +

    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().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ grid_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ grid_type

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ mask_field

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ nested

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ regional

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ res

    + +
    +
    + + + + +
    real utils::res = 48.
    +
    + +

    The 'CRES' resolution.

    + +

    Definition at line 28 of file utils.F90.

    + +

    Referenced by read_namelist().

    + +
    +
    + +

    ◆ stretch_fac

    + +
    +
    + + + + +
    real utils::stretch_fac = 1.0
    +
    + +

    Grid stretching factor.

    + +

    Definition at line 27 of file utils.F90.

    + +

    Referenced by filter_topo(), and read_namelist().

    + +
    +
    + +

    ◆ topo_field

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ topo_file

    + +
    +
    + + + + +
    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().

    + +
    +
    + +

    ◆ zero_ocean

    + +
    +
    + + + + +
    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().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/nav_f.png b/ver-1.11.0/grid_tools/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/nav_g.png b/ver-1.11.0/grid_tools/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +grid_tools: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pesg_8f90.html b/ver-1.11.0/grid_tools/pesg_8f90.html new file mode 100644 index 000000000..32b82a0c8 --- /dev/null +++ b/ver-1.11.0/grid_tools/pesg_8f90.html @@ -0,0 +1,324 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pesg.f90 File Reference
    +
    +
    + +

    Routines to perform ESG regional grid mappings. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pesg::bestesg_geo
     
    interface  pesg::bestesg_map
     
    interface  pesg::gaulegh
     
    interface  pesg::get_edges
     
    interface  pesg::get_meanq
     
    interface  pesg::get_qofv
     
    interface  pesg::get_qx
     
    interface  pesg::gtoxm_ak_dd
     
    interface  pesg::gtoxm_ak_rr
     
    interface  pesg::guessak_geo
     
    interface  pesg::guessak_map
     
    interface  pesg::hgrid_ak
     
    interface  pesg::hgrid_ak_dc
     
    interface  pesg::hgrid_ak_dd
     
    interface  pesg::hgrid_ak_rc
     
    interface  pesg::hgrid_ak_rr
     
    interface  pesg::xctoxm_ak
     
    interface  pesg::xctoxs
     
    interface  pesg::xmtog_ak_dd
     
    interface  pesg::xmtog_ak_rr
     
    interface  pesg::xmtoxc_ak
     
    interface  pesg::xmtoxt
     
    interface  pesg::xstoxc
     
    interface  pesg::xstoxt
     
    interface  pesg::xttoxm
     
    interface  pesg::xttoxs
     
    interface  pesg::zmtozt
     
    interface  pesg::zttozm
     
    + + + + +

    +Modules

    module  pesg
     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.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::get_qofvd (lam, v2, v3, v1d, v2d, v3d, v4d, qd)
     Like get_qofv, but for (only) the 2-vector derivatives of Q. More...
     
    subroutine pesg::get_qsofvs (n, lam, v1s, v2s, v3s, v4s, qs)
     General util to convert value. More...
     
    subroutine pesg::get_qx (j0, v1, v2, v3, v4)
     From a jacobian matrix, j0, get a sufficient set of v. More...
     
    subroutine pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::xctoxm_ak (a, k, xc, xm, ff)
     Inverse mapping of xmtoxc_ak. More...
     
    subroutine pesg::xctoxs (xc, xs)
     Inverse of xstoxc. More...
     
    subroutine pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::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 pesg::xmtoxc_vak1 (ak, xm, xc, xcd, xc1, xcd1, ff)
     Like xmtoxc_vak, _ak, but also return derivatives wrt ak. More...
     
    subroutine pesg::xmtoxt (a, xm, xt, xtd, ff)
     Like zmtozt, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd. More...
     
    subroutine pesg::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 pesg::xstoxc (xs, xc, xcd)
     Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar. More...
     
    subroutine pesg::xstoxc1 (xs, xc, xcd, xcdd)
     Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar. More...
     
    subroutine pesg::xstoxt (k, xs, xt, ff)
     Inverse of xttoxs. More...
     
    subroutine pesg::xttoxm (a, xt, xm, ff)
     Inverse of xmtoxt. More...
     
    subroutine pesg::xttoxs (k, xt, xs, xsd, ff)
     Scaled gnomonic plane xt to standard stereographic plane xs. More...
     
    subroutine pesg::xttoxs1 (k, xt, xs, xsd, xsdd, xs1, xsd1, ff)
     Like xttoxs, but also, return the derivatives, wrt K, of xs and xsd. More...
     
    subroutine pesg::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 pesg::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 pesg::zttozm (a, zt, zm, ff)
     Inverse of zmtozt. More...
     
    +

    Detailed Description

    +

    Routines to perform ESG regional grid mappings.

    +
    Author
    R. J. Purser
    +
    Date
    May 2020
    + +

    Definition in file pesg.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pesg_8f90.js b/ver-1.11.0/grid_tools/pesg_8f90.js new file mode 100644 index 000000000..15558096f --- /dev/null +++ b/ver-1.11.0/grid_tools/pesg_8f90.js @@ -0,0 +1,76 @@ +var pesg_8f90 = +[ + [ "bestesg_geo", "interfacepesg_1_1bestesg__geo.html", "interfacepesg_1_1bestesg__geo" ], + [ "bestesg_map", "interfacepesg_1_1bestesg__map.html", "interfacepesg_1_1bestesg__map" ], + [ "gaulegh", "interfacepesg_1_1gaulegh.html", "interfacepesg_1_1gaulegh" ], + [ "get_edges", "interfacepesg_1_1get__edges.html", "interfacepesg_1_1get__edges" ], + [ "get_meanq", "interfacepesg_1_1get__meanq.html", "interfacepesg_1_1get__meanq" ], + [ "get_qofv", "interfacepesg_1_1get__qofv.html", "interfacepesg_1_1get__qofv" ], + [ "get_qx", "interfacepesg_1_1get__qx.html", "interfacepesg_1_1get__qx" ], + [ "gtoxm_ak_dd", "interfacepesg_1_1gtoxm__ak__dd.html", "interfacepesg_1_1gtoxm__ak__dd" ], + [ "gtoxm_ak_rr", "interfacepesg_1_1gtoxm__ak__rr.html", "interfacepesg_1_1gtoxm__ak__rr" ], + [ "guessak_geo", "interfacepesg_1_1guessak__geo.html", "interfacepesg_1_1guessak__geo" ], + [ "guessak_map", "interfacepesg_1_1guessak__map.html", "interfacepesg_1_1guessak__map" ], + [ "hgrid_ak", "interfacepesg_1_1hgrid__ak.html", "interfacepesg_1_1hgrid__ak" ], + [ "hgrid_ak_dc", "interfacepesg_1_1hgrid__ak__dc.html", "interfacepesg_1_1hgrid__ak__dc" ], + [ "hgrid_ak_dd", "interfacepesg_1_1hgrid__ak__dd.html", "interfacepesg_1_1hgrid__ak__dd" ], + [ "hgrid_ak_rc", "interfacepesg_1_1hgrid__ak__rc.html", "interfacepesg_1_1hgrid__ak__rc" ], + [ "hgrid_ak_rr", "interfacepesg_1_1hgrid__ak__rr.html", "interfacepesg_1_1hgrid__ak__rr" ], + [ "xctoxm_ak", "interfacepesg_1_1xctoxm__ak.html", "interfacepesg_1_1xctoxm__ak" ], + [ "xctoxs", "interfacepesg_1_1xctoxs.html", "interfacepesg_1_1xctoxs" ], + [ "xmtog_ak_dd", "interfacepesg_1_1xmtog__ak__dd.html", "interfacepesg_1_1xmtog__ak__dd" ], + [ "xmtog_ak_rr", "interfacepesg_1_1xmtog__ak__rr.html", "interfacepesg_1_1xmtog__ak__rr" ], + [ "xmtoxc_ak", "interfacepesg_1_1xmtoxc__ak.html", "interfacepesg_1_1xmtoxc__ak" ], + [ "xmtoxt", "interfacepesg_1_1xmtoxt.html", "interfacepesg_1_1xmtoxt" ], + [ "xstoxc", "interfacepesg_1_1xstoxc.html", "interfacepesg_1_1xstoxc" ], + [ "xstoxt", "interfacepesg_1_1xstoxt.html", "interfacepesg_1_1xstoxt" ], + [ "xttoxm", "interfacepesg_1_1xttoxm.html", "interfacepesg_1_1xttoxm" ], + [ "xttoxs", "interfacepesg_1_1xttoxs.html", "interfacepesg_1_1xttoxs" ], + [ "zmtozt", "interfacepesg_1_1zmtozt.html", "interfacepesg_1_1zmtozt" ], + [ "zttozm", "interfacepesg_1_1zttozm.html", "interfacepesg_1_1zttozm" ], + [ "bestesg_geo", "pesg_8f90.html#abb391d45295581c1b15c7cb6d5c9afb6", null ], + [ "bestesg_map", "pesg_8f90.html#a5c9f36282d23e5297d6a5ae71d60d6bf", null ], + [ "gaulegh", "pesg_8f90.html#a746e360a259db39d63e1158569a9fbb8", null ], + [ "get_edges", "pesg_8f90.html#ac2d1049cd6301974935cf9ffa9486616", null ], + [ "get_meanqd", "pesg_8f90.html#a0c2a93c3e3635de61d57ad3edd719a4c", null ], + [ "get_meanqs", "pesg_8f90.html#af356d7aa00db9deeaaf2223e2b9cf23f", null ], + [ "get_qofv", "pesg_8f90.html#a2d1f5bfe4e8ff8520662549860fb0048", null ], + [ "get_qofvd", "pesg_8f90.html#abd812e3b4e112502db1eefbc27687452", null ], + [ "get_qsofvs", "pesg_8f90.html#a1ce5f976f4e335f7c3711c8262e0a7d7", null ], + [ "get_qx", "pesg_8f90.html#af9c7f9dfc44f9638a3832c39cb87bf62", null ], + [ "get_qxd", "pesg_8f90.html#a6c51ec9c9b6f0396f6811afaf053003c", null ], + [ "gtoxm_ak_dd_g", "pesg_8f90.html#aa65c5b5e54a03ce01b07070022dda5f5", null ], + [ "gtoxm_ak_dd_m", "pesg_8f90.html#ab803ad3d6f3cbf8858804822ffac2ac7", null ], + [ "gtoxm_ak_rr_g", "pesg_8f90.html#a50c059ec290acbbd18d3be0a0a873517", null ], + [ "gtoxm_ak_rr_m", "pesg_8f90.html#ac0a284cc4ec645ebfe7ef4c01c18b930", null ], + [ "guessak_geo", "pesg_8f90.html#ae76f750095dd1ba202e985abe4e487e8", null ], + [ "guessak_map", "pesg_8f90.html#a475335b2f115cf7ddde8854249f4aaba", null ], + [ "hgrid_ak", "pesg_8f90.html#a0c7f1e64257cb704378e12591faf895d", null ], + [ "hgrid_ak_c", "pesg_8f90.html#acf47d02792cc2e34cee6e20da25ee212", null ], + [ "hgrid_ak_dc", "pesg_8f90.html#a41d995a58d366d36942a51e0e88e9987", null ], + [ "hgrid_ak_dd", "pesg_8f90.html#a8b4abffb6f22a026c43a960a524e711c", null ], + [ "hgrid_ak_dd_c", "pesg_8f90.html#a8c7cd32a349e41308d43ccb10f47a5e9", null ], + [ "hgrid_ak_rc", "pesg_8f90.html#afae7d39e7d0315a7b11db90f68231096", null ], + [ "hgrid_ak_rr", "pesg_8f90.html#ad431931d2cd387f284d9fd7175d66a84", null ], + [ "hgrid_ak_rr_c", "pesg_8f90.html#a2a47e8a580093c4d81d1c413235dba5a", null ], + [ "xctoxm_ak", "pesg_8f90.html#a7fa7090c8dad76b177fa350019faaed6", null ], + [ "xctoxs", "pesg_8f90.html#a13e4b5afc81f452f403a419f5dc407ea", null ], + [ "xmtog_ak_dd_g", "pesg_8f90.html#a5145974b344b9ed001bc1849ac33a947", null ], + [ "xmtog_ak_dd_m", "pesg_8f90.html#a167d85418627ade97bf4cebfc26f5909", null ], + [ "xmtog_ak_rr_g", "pesg_8f90.html#a4fc7233669c1c84c4e6aa7b9bf8b988d", null ], + [ "xmtog_ak_rr_m", "pesg_8f90.html#a07c56831f84286a46dcaa68a930145db", null ], + [ "xmtoxc_ak", "pesg_8f90.html#a386bd317b37c41032e6e3c4a701f3e29", null ], + [ "xmtoxc_vak", "pesg_8f90.html#a9efb048fa84ed3d734f02efc2df0d98a", null ], + [ "xmtoxc_vak1", "pesg_8f90.html#aabb2932ac60546b36581f2e56bc8e317", null ], + [ "xmtoxt", "pesg_8f90.html#ad7a183e207dcfdd23ae9f575806c5482", null ], + [ "xmtoxt1", "pesg_8f90.html#af5737842678069610c479dd77d46c452", null ], + [ "xstoxc", "pesg_8f90.html#a336ba536d749c69bd169318933b6f56a", null ], + [ "xstoxc1", "pesg_8f90.html#a57ee40cd1877be7af503b57f3fab92ae", null ], + [ "xstoxt", "pesg_8f90.html#af3889ea46137e9a7dd0393fb320530f8", null ], + [ "xttoxm", "pesg_8f90.html#a51ba9dc122f12506dbf2386650d68442", null ], + [ "xttoxs", "pesg_8f90.html#a6d36430c0f064b067b79091386780ef5", null ], + [ "xttoxs1", "pesg_8f90.html#aaae81439717abc3303a0d6deda4f931f", null ], + [ "zmtozt", "pesg_8f90.html#a5805b6899bde8316ee20d3a6cc762c51", null ], + [ "zmtozt1", "pesg_8f90.html#ae345af666f4c293be9d141003a6ac74d", null ], + [ "zttozm", "pesg_8f90.html#a9afca8c158609078be9a18b3bad46400", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pesg_8f90_source.html b/ver-1.11.0/grid_tools/pesg_8f90_source.html new file mode 100644 index 000000000..dae070ea8 --- /dev/null +++ b/ver-1.11.0/grid_tools/pesg_8f90_source.html @@ -0,0 +1,198 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pesg.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pesg.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    15 module pesg
    16 !=============================================================================
    17 use pkind, only: spi,dp
    18 use pietc, only: f,t,u0,u1,u2,o2,rtod,dtor,pih,pi2
    19 implicit none
    20 private
    24 
    25 interface xctoxs; module procedure xctoxs; end interface
    26 interface xstoxc; module procedure xstoxc,xstoxc1; end interface
    27 interface xstoxt; module procedure xstoxt; end interface
    28 interface xttoxs; module procedure xttoxs,xttoxs1; end interface
    29 interface xttoxm; module procedure xttoxm; end interface
    30 interface zttozm; module procedure zttozm; end interface
    31 interface xmtoxt; module procedure xmtoxt,xmtoxt1; end interface
    32 interface zmtozt; module procedure zmtozt,zmtozt1; end interface
    33 interface xctoxm_ak; module procedure xctoxm_ak; end interface
    34 interface xmtoxc_ak
    35  module procedure xmtoxc_ak,xmtoxc_vak,xmtoxc_vak1; end interface
    36 interface get_edges; module procedure get_edges; end interface
    37 interface get_qx; module procedure get_qx,get_qxd; end interface
    38 interface get_qofv;module procedure get_qofv,get_qofvd,get_qsofvs;end interface
    39 interface get_meanq; module procedure get_meanqd,get_meanqs; end interface
    40 interface guessak_map; module procedure guessak_map; end interface
    41 interface guessak_geo; module procedure guessak_geo; end interface
    42 interface bestesg_geo; module procedure bestesg_geo; end interface
    43 interface bestesg_map; module procedure bestesg_map; end interface
    44 interface hgrid_ak_rr;module procedure hgrid_ak_rr,hgrid_ak_rr_c; end interface
    45 interface hgrid_ak_rc; module procedure hgrid_ak_rc; end interface
    46 interface hgrid_ak_dd;module procedure hgrid_ak_dd,hgrid_ak_dd_c; end interface
    47 interface hgrid_ak_dc; module procedure hgrid_ak_dc; end interface
    48 interface hgrid_ak; module procedure hgrid_ak,hgrid_ak_c; end interface
    49 interface gtoxm_ak_rr
    50  module procedure gtoxm_ak_rr_m,gtoxm_ak_rr_g; end interface
    51 interface gtoxm_ak_dd
    52  module procedure gtoxm_ak_dd_m,gtoxm_ak_dd_g; end interface
    53 interface xmtog_ak_rr
    54  module procedure xmtog_ak_rr_m,xmtog_ak_rr_g; end interface
    55 interface xmtog_ak_dd
    56  module procedure xmtog_ak_dd_m,xmtog_ak_dd_g; end interface
    57 
    58 interface gaulegh; module procedure gaulegh; end interface
    59 
    60 contains
    61 
    67 subroutine xctoxs(xc,xs)! [xctoxs]
    68 implicit none
    69 real(dp),dimension(3),intent(in ):: xc
    70 real(dp),dimension(2),intent(out):: xs
    71 real(dp):: zp
    72 zp=u1+xc(3); xs=xc(1:2)/zp
    73 end subroutine xctoxs
    74 
    84 subroutine xstoxc(xs,xc,xcd)! [xstoxc]
    85 use pmat4, only: outer_product
    86 implicit none
    87 real(dp),dimension(2), intent(in ):: xs
    88 real(dp),dimension(3), intent(out):: xc
    89 real(dp),dimension(3,2),intent(out):: xcd
    90 real(dp):: zp
    91 zp=u2/(u1+dot_product(xs,xs)); xc(1:2)=xs*zp; xc(3)=zp
    92 xcd=-outer_product(xc,xs)*zp; xcd(1,1)=xcd(1,1)+zp; xcd(2,2)=xcd(2,2)+zp
    93 xc(3)=xc(3)-u1
    94 end subroutine xstoxc
    95 
    106 subroutine xstoxc1(xs,xc,xcd,xcdd)! [xstoxc]
    108 implicit none
    109 real(dp),dimension(2), intent(in ):: xs
    110 real(dp),dimension(3), intent(out):: xc
    111 real(dp),dimension(3,2), intent(out):: xcd
    112 real(dp),dimension(3,2,2),intent(out):: xcdd
    113 real(dp),dimension(3,2):: zpxcdxs
    114 real(dp),dimension(3) :: zpxc
    115 real(dp) :: zp
    116 integer(spi) :: i
    117 zp=u2/(u1+dot_product(xs,xs)); xc(1:2)=xs*zp; xc(3)=zp
    118 xcd=-outer_product(xc,xs)*zp
    119 zpxc=zp*xc; xc(3)=xc(3)-u1; xcdd=u0
    120 do i=1,2
    121  zpxcdxs=xcd*xc(i)
    122  xcdd(:,i,i)=xcdd(:,i,i)-zpxc
    123  xcdd(:,i,:)=xcdd(:,i,:)-zpxcdxs
    124  xcdd(:,:,i)=xcdd(:,:,i)-zpxcdxs
    125  xcdd(i,:,i)=xcdd(i,:,i)-zpxc(1:2)
    126  xcdd(i,i,:)=xcdd(i,i,:)-zpxc(1:2)
    127 enddo
    128 do i=1,2; xcd(i,i)=xcd(i,i)+zp; enddo
    129 end subroutine xstoxc1
    130 
    138 subroutine xstoxt(k,xs,xt,ff)! [xstoxt]
    139 implicit none
    140 real(dp), intent(in ):: k
    141 real(dp),dimension(2),intent(in ):: xs
    142 real(dp),dimension(2),intent(out):: xt
    143 logical, intent(out):: ff
    144 real(dp):: s,sc
    145 s=k*(xs(1)*xs(1)+xs(2)*xs(2)); sc=u1-s
    146 ff=abs(s)>=u1; if(ff)return
    147 xt=u2*xs/sc
    148 end subroutine xstoxt
    149 
    158 subroutine xttoxs(k,xt,xs,xsd,ff)! [xttoxs
    160 implicit none
    161 real(dp), intent(in ):: k
    162 real(dp),dimension(2), intent(in ):: xt
    163 real(dp),dimension(2), intent(out):: xs
    164 real(dp),dimension(2,2),intent(out):: xsd
    165 logical, intent(out):: ff
    166 real(dp),dimension(2):: rspd
    167 real(dp) :: s,sp,rsp,rsppi,rsppis
    168 integer(spi) :: i
    169 s=k*dot_product(xt,xt); sp=u1+s
    170 ff=(sp<=u0); if(ff)return
    171 rsp=sqrt(sp)
    172 rsppi=u1/(u1+rsp)
    173 rsppis=rsppi**2
    174 xs=xt*rsppi
    175 rspd=k*xt/rsp
    176 xsd=-outer_product(xt,rspd)*rsppis
    177 do i=1,2; xsd(i,i)=xsd(i,i)+rsppi; enddo
    178 end subroutine xttoxs
    179 
    192 subroutine xttoxs1(k,xt,xs,xsd,xsdd,xs1,xsd1,ff)! [xttoxs]
    194 implicit none
    195 real(dp), intent(in ):: k
    196 real(dp),dimension(2), intent(in ):: xt
    197 real(dp),dimension(2), intent(out):: xs ,xs1
    198 real(dp),dimension(2,2), intent(out):: xsd,xsd1
    199 real(dp),dimension(2,2,2),intent(out):: xsdd
    200 logical, intent(out):: ff
    201 real(dp),dimension(2,2):: rspdd
    202 real(dp),dimension(2) :: rspd,rspd1,rsppid
    203 real(dp) :: s,sp,rsp,rsppi,rsppis,s1,rsp1
    204 integer(spi) :: i
    205 s1=dot_product(xt,xt); s=k*s1; sp=u1+s
    206 ff=(sp<=u0); if(ff)return
    207 rsp=sqrt(sp); rsp1=o2*s1/rsp
    208 rsppi=u1/(u1+rsp); rsppis=rsppi**2
    209 xs=xt*rsppi; xs1=-xt*rsp1*rsppis
    210 rspd=k*xt/rsp; rspd1=(xt*rsp-k*xt*rsp1)/sp
    211 rsppid=-rspd*rsppis
    212 xsd1=-outer_product(xt,rspd1-u2*rspd*rsp1*rsppi)
    213 do i=1,2; xsd1(i,i)=xsd1(i,i)-rsp1; enddo; xsd1=xsd1*rsppis
    214 
    215 xsd=-outer_product(xt,rspd)*rsppis
    216 do i=1,2; xsd(i,i)=xsd(i,i)+rsppi; enddo
    217 
    218 rspdd=-outer_product(xt,rspd)*rsppi
    219 xsdd=u0
    220 do i=1,2; xsdd(i,:,i)= rsppid; enddo
    221 do i=1,2; xsdd(i,i,:)=xsdd(i,i,:)+rsppid; enddo
    222 do i=1,2; xsdd(:,:,i)=xsdd(:,:,i)+u2*rspdd*rsppid(i); enddo
    223 do i=1,2; rspdd(i,i)=rspdd(i,i)+rsp*rsppi; enddo
    224 do i=1,2; xsdd(i,:,:)=xsdd(i,:,:)-xt(i)*rspdd*rsppi*k/sp; enddo
    225 end subroutine xttoxs1
    226 
    234 subroutine xttoxm(a,xt,xm,ff)! [xttoxm]
    235 implicit none
    236 real(dp), intent(in ):: a
    237 real(dp),dimension(2),intent(in ):: xt
    238 real(dp),dimension(2),intent(out):: xm
    239 logical ,intent(out):: ff
    240 integer(spi):: i
    241 do i=1,2; call zttozm(a,xt(i),xm(i),ff); if(ff)return; enddo
    242 end subroutine xttoxm
    243 
    253 subroutine xmtoxt(a,xm,xt,xtd,ff)! [xmtoxt]
    254 implicit none
    255 real(dp), intent(in ):: a
    256 real(dp),dimension(2), intent(in ):: xm
    257 real(dp),dimension(2), intent(out):: xt
    258 real(dp),dimension(2,2),intent(out):: xtd
    259 logical, intent(out):: ff
    260 integer(spi):: i
    261 xtd=u0; do i=1,2; call zmtozt(a,xm(i),xt(i),xtd(i,i),ff); if(ff)return; enddo
    262 end subroutine xmtoxt
    263 
    275 subroutine xmtoxt1(a,xm,xt,xtd,xt1,xtd1,ff)! [xmtoxt]
    276 implicit none
    277 real(dp), intent(in ):: a
    278 real(dp),dimension(2), intent(in ):: xm
    279 real(dp),dimension(2), intent(out):: xt,xt1
    280 real(dp),dimension(2,2), intent(out):: xtd,xtd1
    281 logical, intent(out):: ff
    282 integer(spi):: i
    283 xtd=u0
    284 xtd1=u0
    285 do i=1,2
    286  call zmtozt1(a,xm(i),xt(i),xtd(i,i),xt1(i),xtd1(i,i),ff)
    287  if(ff)return
    288 enddo
    289 end subroutine xmtoxt1
    290 
    298 subroutine zttozm(a,zt,zm,ff)! [zttozm]
    299 implicit none
    300 real(dp),intent(in ):: a,zt
    301 real(dp),intent(out):: zm
    302 logical, intent(out):: ff
    303 real(dp):: ra,razt
    304 ff=f
    305 if (a>u0)then; ra=sqrt( a); razt=ra*zt; zm=atan(razt)/ra
    306 elseif(a<u0)then; ra=sqrt(-a); razt=ra*zt; ff=abs(razt)>=u1; if(ff)return
    307  zm=atanh(razt)/ra
    308 else ; zm=zt
    309 endif
    310 end subroutine zttozm
    311 
    322 subroutine zmtozt(a,zm,zt,ztd,ff)! [zmtozt]
    323 implicit none
    324 real(dp),intent(in ):: a,zm
    325 real(dp),intent(out):: zt,ztd
    326 logical, intent(out):: ff
    327 real(dp):: ra
    328 ff=f
    329 if (a>u0)then; ra=sqrt( a); zt=tan(ra*zm)/ra; ff=abs(ra*zm)>=pih
    330 elseif(a<u0)then; ra=sqrt(-a); zt=tanh(ra*zm)/ra
    331 else ; zt=zm
    332 endif
    333 ztd=u1+a*zt*zt
    334 end subroutine zmtozt
    335 
    347 subroutine zmtozt1(a,zm,zt,ztd,zt1,ztd1,ff)! [zmtozt]
    348 use pietc, only: o3
    349 use pfun, only: sinoxm,sinox,sinhoxm,sinhox
    350 implicit none
    351 real(dp),intent(in ):: a,zm
    352 real(dp),intent(out):: zt,ztd,zt1,ztd1
    353 logical, intent(out):: ff
    354 real(dp):: ra,rad,razm
    355 ff=f
    356 if (a>u0)then;ra=sqrt( a);razm=ra*zm; zt=tan(razm)/ra; ff=abs(razm)>=pih
    357 rad=o2/ra
    358 zt1=(rad*zm/ra)*((-u2*sin(razm*o2)**2-sinoxm(razm))/cos(razm)+(tan(razm))**2)
    359 elseif(a<u0)then;ra=sqrt(-a);razm=ra*zm; zt=tanh(razm)/ra
    360 rad=-o2/ra
    361 zt1=(rad*zm/ra)*((u2*sinh(razm*o2)**2-sinhoxm(razm))/cosh(razm)-(tanh(razm))**2)
    362 else ;zt=zm; zt1=zm**3*o3
    363 endif
    364 ztd=u1+a*zt*zt
    365 ztd1=zt*zt +u2*a*zt*zt1
    366 end subroutine zmtozt1
    367 
    380 subroutine xmtoxc_vak(ak,xm,xc,xcd,ff)! [xmtoxc_ak]
    381 implicit none
    382 real(dp),dimension(2), intent(in ):: ak,xm
    383 real(dp),dimension(3), intent(out):: xc
    384 real(dp),dimension(3,2),intent(out):: xcd
    385 logical, intent(out):: ff
    386 call xmtoxc_ak(ak(1),ak(2),xm,xc,xcd,ff)
    387 end subroutine xmtoxc_vak
    388 
    399 subroutine xmtoxc_vak1(ak,xm,xc,xcd,xc1,xcd1,ff)! [xmtoxc_ak]
    400 implicit none
    401 real(dp),dimension(2), intent(in ):: ak,xm
    402 real(dp),dimension(3), intent(out):: xc
    403 real(dp),dimension(3,2), intent(out):: xcd
    404 real(dp),dimension(3,2), intent(out):: xc1
    405 real(dp),dimension(3,2,2),intent(out):: xcd1
    406 logical, intent(out):: ff
    407 real(dp),dimension(3,2,2):: xcdd
    408 real(dp),dimension(2,2,2):: xsd1,xsdd
    409 real(dp),dimension(2,2) :: xtd,xsd,xs1,xtd1,xsdk,mat22
    410 real(dp),dimension(2) :: xt,xt1,xs,xsk
    411 integer(spi) :: i
    412 call xmtoxt1(ak(1),xm,xt,xtd,xt1,xtd1,ff); if(ff)return
    413 call xttoxs1(ak(2),xt,xs,xsd,xsdd,xsk,xsdk,ff); if(ff)return
    414 xs1(:,2)=xsk; xs1(:,1)=matmul(xsd,xt1)
    415 mat22=xsdd(:,:,1)*xt1(1)+xsdd(:,:,2)*xt1(2)
    416 xsd1(:,:,1)=matmul(xsd,xtd1)+matmul(mat22,xtd)
    417 xsd1(:,:,2)=matmul(xsdk,xtd)
    418 xsd=matmul(xsd,xtd)
    419 call xstoxc(xs,xc,xcd,xcdd)
    420 xc1=matmul(xcd,xs1)
    421 do i=1,3; xcd1(i,:,:)=matmul(transpose(xsd),matmul(xcdd(i,:,:),xs1)); enddo
    422 do i=1,2; xcd1(:,:,i)=xcd1(:,:,i)+matmul(xcd,xsd1(:,:,i)); enddo
    423 xcd=matmul(xcd,xsd)
    424 end subroutine xmtoxc_vak1
    425 
    439 subroutine xmtoxc_ak(a,k,xm,xc,xcd,ff)! [xmtoxc_ak]
    440 implicit none
    441 real(dp), intent(in ):: a,k
    442 real(dp),dimension(2), intent(in ):: xm
    443 real(dp),dimension(3), intent(out):: xc
    444 real(dp),dimension(3,2),intent(out):: xcd
    445 logical, intent(out):: ff
    446 real(dp),dimension(2,2):: xtd,xsd
    447 real(dp),dimension(2) :: xt,xs
    448 call xmtoxt(a,xm,xt,xtd,ff); if(ff)return
    449 call xttoxs(k,xt,xs,xsd,ff); if(ff)return
    450 xsd=matmul(xsd,xtd)
    451 call xstoxc(xs,xc,xcd)
    452 xcd=matmul(xcd,xsd)
    453 end subroutine xmtoxc_ak
    454 
    465 subroutine xctoxm_ak(a,k,xc,xm,ff)! [xctoxm_ak]
    466 implicit none
    467 real(dp), intent(in ):: a,k
    468 real(dp),dimension(3),intent(in ):: xc
    469 real(dp),dimension(2),intent(out):: xm
    470 logical, intent(out):: ff
    471 real(dp),dimension(2):: xs,xt
    472 ff=f
    473 call xctoxs(xc,xs)
    474 call xstoxt(k,xs,xt,ff); if(ff)return
    475 call xttoxm(a,xt,xm,ff)
    476 end subroutine xctoxm_ak
    477 
    488 subroutine get_edges(arcx,arcy,edgex,edgey)! [get_edges]
    489 implicit none
    490 real(dp), intent(in ):: arcx,arcy
    491 real(dp),dimension(3),intent(out):: edgex,edgey
    492 real(dp):: cx,sx,cy,sy,rarcx,rarcy
    493 rarcx=arcx*dtor; rarcy=arcy*dtor
    494 cx=cos(rarcx); sx=sin(rarcx)
    495 cy=cos(rarcy); sy=sin(rarcy)
    496 edgex=(/sx,u0,cx/); edgey=(/u0,sy,cy/)
    497 end subroutine get_edges
    498 
    511 subroutine get_qx(j0, v1,v2,v3,v4)! [get_qx]
    512 use psym2, only: logsym2
    513 implicit none
    514 real(dp),dimension(3,2),intent(in ):: j0
    515 real(dp), intent(out):: v1,v2,v3,v4
    516 real(dp),dimension(2,2):: el,g
    517 g=matmul(transpose(j0),j0)
    518 call logsym2(g,el); el=el*o2
    519 v1=el(1,1)**2+u2*el(1,2)**2+el(2,2)**2
    520 v2=el(1,1)
    521 v3=el(2,2)
    522 v4=(el(1,1)+el(2,2))**2
    523 end subroutine get_qx
    524 
    541 subroutine get_qxd(j0,j0d, v1,v2,v3,v4,v1d,v2d,v3d,v4d)! [get_qx]
    542 use psym2, only: logsym2
    543 implicit none
    544 real(dp),dimension(3,2), intent(in ):: j0
    545 real(dp),dimension(3,2,2),intent(in ):: j0d
    546 real(dp), intent(out):: v1,v2,v3,v4
    547 real(dp),dimension(2), intent(out):: v1d,v2d,v3d,v4d
    548 real(dp),dimension(2,2,2,2):: deldg
    549 real(dp),dimension(2,2,2) :: eld,gd
    550 real(dp),dimension(2,2) :: el,g
    551 integer(spi) :: i,j,k
    552 g=matmul(transpose(j0),j0)
    553 do i=1,2
    554  gd(:,:,i)=matmul(transpose(j0d(:,:,i)),j0)+matmul(transpose(j0),j0d(:,:,i))
    555 enddo
    556 call logsym2(g,el,deldg); el=el*o2; deldg=deldg*o2
    557 eld=u0
    558 do i=1,2; do j=1,2; do k=1,2
    559  eld(:,:,k)=eld(:,:,k)+deldg(:,:,i,j)*gd(i,j,k)
    560 enddo ; enddo ; enddo
    561 v1=el(1,1)**2+u2*el(1,2)**2+el(2,2)**2
    562 v2=el(1,1)
    563 v3=el(2,2)
    564 v4=(el(1,1)+el(2,2))**2
    565 v1d=u2*(el(1,1)*eld(1,1,:)+u2*el(1,2)*eld(1,2,:)+el(2,2)*eld(2,2,:))
    566 v2d=eld(1,1,:)
    567 v3d=eld(2,2,:)
    568 v4d=u2*(el(1,1)+el(2,2))*(eld(1,1,:)+eld(2,2,:))
    569 end subroutine get_qxd
    570 
    602 subroutine get_meanqd(ngh,lam,xg,wg,ak,ma, q,qdak,qdma, & ! [get_meanq]
    603  ga,gadak,gadma, ff)
    604 implicit none
    605 integer(spi), intent(in ):: ngh
    606 real(dp), intent(in ):: lam
    607 real(dp),dimension(ngh),intent(in ):: xg,wg
    608 real(dp),dimension(2) ,intent(in ):: ak,ma
    609 real(dp), intent(out):: q
    610 real(dp),dimension(2), intent(out):: qdak,qdma
    611 real(dp),dimension(2), intent(out):: ga
    612 real(dp),dimension(2,2),intent(out):: gadak,gadma
    613 logical, intent(out):: ff
    614 real(dp),dimension(3,2,2):: xcd1
    615 real(dp),dimension(3,2) :: xcd,xc1
    616 real(dp),dimension(3) :: xc
    617 real(dp),dimension(2) :: xm, v1dxy,v2dxy,v3dxy,v4dxy, &
    618  v1dL,v2dL,v3dL,v4dL, v1d,v2d,v3d,v4d
    619 real(dp) :: wx,wy, &
    620  v1xy,v2xy,v3xy,v4xy, v1L,v2L,v3L,v4L, v1,v2,v3,v4
    621 integer(spi) :: i,ic,ix,iy
    622 v1 =u0; v2 =u0; v3 =u0; v4 =u0
    623 v1d=u0; v2d=u0; v3d=u0; v4d=u0
    624 do iy=1,ngh
    625  wy=wg(iy)
    626  xm(2)=ma(2)*xg(iy)
    627  v1l =u0; v2l =u0; v3l =u0; v4l =u0
    628  v1dl=u0; v2dl=u0; v3dl=u0; v4dl=u0
    629  do ix=1,ngh
    630  wx=wg(ix)
    631  xm(1)=ma(1)*xg(ix)
    632  call xmtoxc_ak(ak,xm,xc,xcd,xc1,xcd1,ff); if(ff)return
    633  call get_qx(xcd,xcd1, v1xy,v2xy,v3xy,v4xy, v1dxy,v2dxy,v3dxy,v4dxy)
    634  v1l =v1l +wx*v1xy; v2l =v2l +wx*v2xy
    635  v3l =v3l +wx*v3xy; v4l =v4l +wx*v4xy
    636  v1dl=v1dl+wx*v1dxy;v2dl=v2dl+wx*v2dxy
    637  v3dl=v3dl+wx*v3dxy;v4dl=v4dl+wx*v4dxy
    638  enddo
    639  v1 =v1 +wy*v1l; v2 =v2 +wy*v2l; v3 =v3 +wy*v3l; v4 =v4 +wy*v4l
    640  v1d=v1d+wy*v1dl; v2d=v2d+wy*v2dl; v3d=v3d+wy*v3dl; v4d=v4d+wy*v4dl
    641 enddo
    642 call get_qofv(lam,v1,v2,v3,v4, q)! <- Q(lam) based on the v1,v2,v3,v4
    643 call get_qofv(lam,v2,v3, v1d,v2d,v3d,v4d, qdak)! <- Derivative of Q wrt ak
    644 ! Derivatives of ga wrt ak, and of q and ga wrt ma:
    645 gadma=u0! <- needed because only diagonal elements are filled
    646 do i=1,2
    647  ic=3-i
    648  xm=0; xm(i)=ma(i)
    649  call xmtoxc_ak(ak,xm,xc,xcd,xc1,xcd1,ff); if(ff)return
    650  ga(i)=atan2(xc(i),xc(3))*rtod
    651  gadak(i,:)=(xc(3)*xc1(i,:)-xc(i)*xc1(3,:))*rtod
    652  gadma(i,i)=(xc(3)*xcd(i,i)-xc(i)*xcd(3,i))*rtod
    653 
    654  v1l=u0; v2l=u0; v3l=u0; v4l=u0
    655  do iy=1,ngh
    656  wy=wg(iy)
    657  xm(ic)=ma(ic)*xg(iy)
    658  call xmtoxc_ak(ak,xm,xc,xcd,ff); if(ff)return
    659  call get_qx(xcd, v1xy,v2xy,v3xy,v4xy)
    660  v1l=v1l+wy*v1xy; v2l=v2l+wy*v2xy; v3l=v3l+wy*v3xy; v4l=v4l+wy*v4xy
    661  enddo
    662  v1d(i)=(v1l-v1)/ma(i); v2d(i)=(v2l-v2)/ma(i)
    663  v3d(i)=(v3l-v3)/ma(i); v4d(i)=(v4l-v4)/ma(i)
    664 enddo
    665 call get_qofv(lam,v2,v3, v1d,v2d,v3d,v4d, qdma)
    666 end subroutine get_meanqd
    667 
    681 subroutine get_meanqs(n,ngh,lam,xg,wg,aks,mas, qs,ff)! [get_meanq]
    682 implicit none
    683 integer(spi), intent(in ):: n,ngh
    684 real(dp),dimension(ngh),intent(in ):: xg,wg
    685 real(dp), intent(in ):: lam
    686 real(dp),dimension(2,n),intent(in ):: aks,mas
    687 real(dp),dimension(n), intent(out):: qs
    688 logical, intent(out):: ff
    689 real(dp),dimension(n) :: v1s,v2s,v3s,v4s
    690 real(dp),dimension(n) :: v1sL,v2sL,v3sL,v4sL
    691 real(dp),dimension(3,2):: xcd
    692 real(dp),dimension(3) :: xc
    693 real(dp),dimension(2) :: xm,xgs
    694 real(dp) :: wx,wy, v1xy,v2xy,v3xy,v4xy
    695 integer(spi) :: i,ix,iy
    696 v1s=u0; v2s=u0; v3s=u0; v4s=u0
    697 do iy=1,ngh
    698  wy=wg(iy)
    699  v1sl=u0; v2sl=u0; v3sl=u0; v4sl=u0
    700  do ix=1,ngh
    701  wx=wg(ix)
    702  xgs=(/xg(ix),xg(iy)/)
    703  do i=1,n
    704  xm=mas(:,i)*xgs
    705  call xmtoxc_ak(aks(:,i),xm,xc,xcd,ff); if(ff)return
    706  call get_qx(xcd,v1xy,v2xy,v3xy,v4xy)
    707  v1sl(i)=v1sl(i)+wx*v1xy; v2sl(i)=v2sl(i)+wx*v2xy
    708  v3sl(i)=v3sl(i)+wx*v3xy; v4sl(i)=v4sl(i)+wx*v4xy
    709  enddo
    710  enddo
    711  v1s=v1s+wy*v1sl; v2s=v2s+wy*v2sl; v3s=v3s+wy*v3sl; v4s=v4s+wy*v4sl
    712 enddo
    713 call get_qofv(n,lam,v1s,v2s,v3s,v4s, qs)
    714 end subroutine get_meanqs
    715 
    728 subroutine get_qofv(lam,v1,v2,v3,v4, q)! [get_qofv]
    729 implicit none
    730 real(dp),intent(in ):: lam,v1,v2,v3,v4
    731 real(dp),intent(out):: q
    732 real(dp):: lamc
    733 lamc=u1-lam
    734 q=lamc*(v1-(v2**2+v3**2)) +lam*(v4 -(v2+v3)**2)
    735 end subroutine get_qofv
    736 
    750 subroutine get_qofvd(lam, v2,v3, v1d,v2d,v3d,v4d, qd)! [get_qofv]
    751 implicit none
    752 real(dp), intent(in ):: lam,v2,v3
    753 real(dp),dimension(2),intent(in ):: v1d,v2d,v3d,v4d
    754 real(dp),dimension(2),intent(out):: qd
    755 real(dp):: lamc
    756 lamc=u1-lam
    757 qd=lamc*(v1d-u2*(v2d*v2+v3d*v3))+lam*(v4d-u2*(v2d+v3d)*(v2+v3))
    758 end subroutine get_qofvd
    759 
    770 subroutine get_qsofvs(n,lam,v1s,v2s,v3s,v4s, qs)! [get_qofv]
    771 implicit none
    772 integer(spi), intent(in ):: n
    773 real(dp), intent(in ):: lam
    774 real(dp),dimension(n),intent(in ):: v1s,v2s,v3s,v4s
    775 real(dp),dimension(n),intent(out):: qs
    776 real(dp):: lamc
    777 lamc=u1-lam
    778 qs=lamc*(v1s-(v2s**2+v3s**2)) +lam*(v4s -(v2s+v3s)**2)
    779 end subroutine get_qsofvs
    780 
    790 subroutine guessak_map(asp,tmarcx,ak)! [guessak_map]
    791 implicit none
    792 real(dp), intent(in ):: asp,tmarcx
    793 real(dp),dimension(2),intent(out):: ak
    794 real(dp):: gmarcx
    795 gmarcx=tmarcx*rtod
    796 call guessak_geo(asp,gmarcx,ak)
    797 end subroutine guessak_map
    798 
    808 subroutine guessak_geo(asp,arc,ak)! [guessak_geo]
    809 implicit none
    810 real(dp), intent(in ):: asp,arc
    811 real(dp),dimension(2),intent(out):: ak
    812 integer(spi),parameter :: narc=11,nasp=10! <- Table index bounds
    813 real(dp), parameter :: eps=1.e-7_dp,darc=10._dp+eps,dasp=.1_dp+eps
    814 real(dp),dimension(nasp,0:narc):: adarc,kdarc
    815 real(dp) :: sasp,sarc,wx0,wx1,wa0,wa1
    816 integer(spi) :: iasp0,iasp1,iarc0,iarc1
    817 !------------------------
    818 ! Tables of approximate A (adarc) and K (kdarc), valid for lam=0.8, for aspect ratio,
    819 ! asp, at .1, .2, .3, .4, .5, .6, .7, .8, 1. and major semi-arc, arcx, at values,
    820 ! 0 (nominally), 10., ..., 100. degrees (where the nominal "0" angle is actually
    821 ! from a computation at 3 degrees, since zero would not make sense).
    822 ! The 100 degree rows are repeated as the 110 degree entries deliberately to pad the
    823 ! table into the partly forbidden parameter space to allow skinny domains of up to
    824 ! 110 degree semi-length to be validly endowed with optimal A and K:
    825 data adarc/ &
    826 -.450_dp,-.328_dp,-.185_dp,-.059_dp,0.038_dp,0.107_dp,0.153_dp,0.180_dp,0.195_dp,0.199_dp,&
    827 -.452_dp,-.327_dp,-.184_dp,-.058_dp,0.039_dp,0.108_dp,0.154_dp,0.182_dp,0.196_dp,0.200_dp,&
    828 -.457_dp,-.327_dp,-.180_dp,-.054_dp,0.043_dp,0.112_dp,0.158_dp,0.186_dp,0.200_dp,0.205_dp,&
    829 -.464_dp,-.323_dp,-.173_dp,-.047_dp,0.050_dp,0.118_dp,0.164_dp,0.192_dp,0.208_dp,0.213_dp,&
    830 -.465_dp,-.313_dp,-.160_dp,-.035_dp,0.060_dp,0.127_dp,0.173_dp,0.202_dp,0.217_dp,0.224_dp,&
    831 -.448_dp,-.288_dp,-.138_dp,-.017_dp,0.074_dp,0.140_dp,0.184_dp,0.213_dp,0.230_dp,0.237_dp,&
    832 -.395_dp,-.244_dp,-.104_dp,0.008_dp,0.093_dp,0.156_dp,0.199_dp,0.227_dp,0.244_dp,0.252_dp,&
    833 -.301_dp,-.177_dp,-.057_dp,0.042_dp,0.119_dp,0.175_dp,0.215_dp,0.242_dp,0.259_dp,0.269_dp,&
    834 -.185_dp,-.094_dp,0.001_dp,0.084_dp,0.150_dp,0.199_dp,0.235_dp,0.260_dp,0.277_dp,0.287_dp,&
    835 -.069_dp,-.006_dp,0.066_dp,0.132_dp,0.186_dp,0.227_dp,0.257_dp,0.280_dp,0.296_dp,0.308_dp,&
    836 0.038_dp,0.081_dp,0.134_dp,0.185_dp,0.226_dp,0.258_dp,0.283_dp,0.303_dp,0.319_dp,0.333_dp,&
    837 0.038_dp,0.081_dp,0.134_dp,0.185_dp,0.226_dp,0.258_dp,0.283_dp,0.303_dp,0.319_dp,0.333_dp/
    838 
    839 data kdarc/ &
    840 -.947_dp,-.818_dp,-.668_dp,-.535_dp,-.433_dp,-.361_dp,-.313_dp,-.284_dp,-.269_dp,-.264_dp,&
    841 -.946_dp,-.816_dp,-.665_dp,-.533_dp,-.431_dp,-.359_dp,-.311_dp,-.282_dp,-.267_dp,-.262_dp,&
    842 -.942_dp,-.806_dp,-.655_dp,-.524_dp,-.424_dp,-.353_dp,-.305_dp,-.276_dp,-.261_dp,-.255_dp,&
    843 -.932_dp,-.789_dp,-.637_dp,-.509_dp,-.412_dp,-.343_dp,-.296_dp,-.266_dp,-.250_dp,-.244_dp,&
    844 -.909_dp,-.759_dp,-.609_dp,-.486_dp,-.394_dp,-.328_dp,-.283_dp,-.254_dp,-.237_dp,-.230_dp,&
    845 -.863_dp,-.711_dp,-.569_dp,-.456_dp,-.372_dp,-.310_dp,-.266_dp,-.238_dp,-.220_dp,-.212_dp,&
    846 -.779_dp,-.642_dp,-.518_dp,-.419_dp,-.343_dp,-.287_dp,-.247_dp,-.220_dp,-.202_dp,-.192_dp,&
    847 -.661_dp,-.556_dp,-.456_dp,-.374_dp,-.310_dp,-.262_dp,-.226_dp,-.200_dp,-.182_dp,-.171_dp,&
    848 -.533_dp,-.462_dp,-.388_dp,-.325_dp,-.274_dp,-.234_dp,-.203_dp,-.179_dp,-.161_dp,-.150_dp,&
    849 -.418_dp,-.373_dp,-.322_dp,-.275_dp,-.236_dp,-.204_dp,-.178_dp,-.156_dp,-.139_dp,-.127_dp,&
    850 -.324_dp,-.296_dp,-.261_dp,-.229_dp,-.200_dp,-.174_dp,-.152_dp,-.133_dp,-.117_dp,-.104_dp,&
    851 -.324_dp,-.296_dp,-.261_dp,-.229_dp,-.200_dp,-.174_dp,-.152_dp,-.133_dp,-.117_dp,-.104_dp/
    852 !=============================================================================
    853 sasp=asp/dasp
    854 iasp0=floor(sasp); wa1=sasp-iasp0
    855 iasp1=iasp0+1; wa0=iasp1-sasp
    856 sarc=arc/darc
    857 iarc0=floor(sarc); wx1=sarc-iarc0
    858 iarc1=iarc0+1; wx0=iarc1-sarc
    859 if(iasp0<1 .or. iasp1>nasp)stop 'Guessak_geo; Aspect ratio out of range'
    860 if(iarc0<0 .or. iarc1>narc)stop 'Guessak_geo; Major semi-arc is out of range'
    861 
    862 ! Bilinearly interpolate A and K from crude table into a 2-vector:
    863 ak=(/wx0*(wa0*adarc(iasp0,iarc0)+wa1*adarc(iasp1,iarc0))+ &
    864  wx1*(wa0*adarc(iasp0,iarc1)+wa1*adarc(iasp1,iarc1)), &
    865  wx0*(wa0*kdarc(iasp0,iarc0)+wa1*kdarc(iasp1,iarc0))+ &
    866  wx1*(wa0*kdarc(iasp0,iarc1)+wa1*kdarc(iasp1,iarc1))/)
    867 end subroutine guessak_geo
    868 
    902 subroutine bestesg_geo(lam,garcx,garcy, a,k,marcx,marcy,q,ff)! [bestesg_geo]
    904 use pmat, only: inv
    905 use psym2, only: chol2
    906 implicit none
    907 real(dp),intent(in ):: lam,garcx,garcy
    908 real(dp),intent(out):: a,k,marcx,marcy,q
    909 logical ,intent(out):: ff
    910 integer(spi),parameter :: nit=200,mit=20,ngh=25
    911 real(dp) ,parameter :: u2o5=u2*o5,&
    912  f18=u2o5*s18,f36=u2o5*s36,f54=u2o5*s54,&
    913  f72=u2o5*s72,mf18=-f18,mf36=-f36,mf54=-f54,&
    914  mf72=-f72,&
    915  r=0.001_dp,rr=r*r,dang=pi2*o5,crit=1.e-14_dp
    916 real(dp),dimension(ngh) :: wg,xg
    917 real(dp),dimension(0:4,0:4):: em5 ! <- Fourier matrix for 5 points
    918 real(dp),dimension(0:4) :: qs
    919 real(dp),dimension(2,0:4) :: aks,mas
    920 real(dp),dimension(2,2) :: basis0,basis,hess,el,gadak,gadma,madga,madak
    921 real(dp),dimension(2) :: ak,dak,dma,vec2,grad,qdak,qdma,ga,ma,gat
    922 real(dp) :: s,tgarcx,tgarcy,asp,ang
    923 integer(spi) :: i,it
    924 logical :: flip
    925 data em5/o5,u2o5, u0,u2o5, u0,& ! <-The Fourier matrix for 5 points. Applied
    926  o5, f18, f72,mf54, f36,& ! to the five 72-degree spaced values in a
    927  o5,mf54, f36, f18,mf72,& ! column-vector, the product vector has the
    928  o5,mf54,mf36, f18, f72,& ! components, wave-0, cos and sin wave-1,
    929  o5, f18,mf72,mf54,mf36/ ! cos and sin wave-2.
    930 ! First guess upper-triangular basis regularizing the samples used to
    931 ! estimate the Hessian of q by finite differencing:
    932 data basis0/0.1_dp,u0, 0.3_dp,0.3_dp/
    933 ff=lam<u0 .or. lam>=u1
    934 if(ff)then; print'("In bestesg_geo; lam out of range")';return; endif
    935 ff= garcx<=u0 .or. garcy<=u0
    936 if(ff)then
    937  print'("In bestesg_geo; a nonpositive domain parameter, garcx or garcy")'
    938  return
    939 endif
    940 call gaulegh(ngh,xg,wg)! <- Prepare Gauss-Legendre nodes xg and weights wg
    941 flip=garcy>garcx
    942 if(flip)then; tgarcx=garcy; tgarcy=garcx! <- Switch
    943 else ; tgarcx=garcx; tgarcy=garcy! <- Don't switch
    944 endif
    945 ga=(/tgarcx,tgarcy/)
    946 asp=tgarcy/tgarcx
    947 basis=basis0
    948 
    949 call guessak_geo(asp,tgarcx,ak)
    950 ma=ga*dtor*0.9_dp ! Shrink first estimate, to start always within bounds
    951 
    952 ! Perform a Newton iteration (except with imperfect Hessian) to find the
    953 ! parameter vector, ak, at which the derivative of Q at constant geographical
    954 ! semi-axes, ga, as given, goes to zero. The direct evaluation of the
    955 ! Q-derivative at constant ma (which is what is actually computed in
    956 ! get_meanq) therefore needs modification to obtain Q-derivarive at constant
    957 ! ga:
    958 ! dQ/d(ak)|_ga = dQ/d(ak)|_ma - dQ/d(ma)|_ak*d(ma)/d(ga)|_ak*d(ga)/d(ak)|_ma
    959 !
    960 ! Since the Hessian evaluation is only carried out at constant map-space
    961 ! semi-axes, ma, it is not ideal for this problem; consequently, the allowance
    962 ! of newton iterations, nit, is much more liberal than we allow for the
    963 ! companion routine, bestesg_map, where the constant ma condition WAS
    964 ! appropriate.
    965 do it=1,nit
    966  call get_meanq(ngh,lam,xg,wg,ak,ma,q,qdak,qdma,gat,gadak,gadma,ff)
    967  if(ff)return
    968  madga=gadma; call inv(madga)! <- d(ma)/d(ga)|_ak ("at constant ak")
    969  madak=-matmul(madga,gadak)
    970  qdak=qdak+matmul(qdma,madak)! dQ/d(ak)|_ga
    971  if(it<=mit)then ! <- Only recompute aks if the basis is new
    972 ! Place five additional sample points around the stencil-ellipse:
    973  do i=0,4
    974  ang=i*dang ! steps of 72 degrees
    975  vec2=(/cos(ang),sin(ang)/)*r ! points on a circle of radius r ...
    976  dak=matmul(basis,vec2)
    977  dma=matmul(madak,dak)
    978  aks(:,i)=ak+dak ! ... become points on an ellipse.
    979  mas(:,i)=ma+dma
    980  enddo
    981  call get_meanq(5,ngh,lam,xg,wg,aks,mas, qs,ff)
    982  endif
    983  grad=matmul(qdak,basis)/q ! <- New grad estimate, accurate to near roundoff
    984  if(it<mit)then ! Assume the hessian will have significantly changed
    985 ! Recover an approximate Hessian estimate, normalized by q, from all
    986 ! 6 samples, q, qs. These are wrt the basis, not (a,k) directly. Note that
    987 ! this finite-difference Hessian is wrt q at constant ak, which is roughly
    988 ! approximating the desired Hessian wrt q at constant ga; the disparity
    989 ! is the reason that we allow more iterations in this routine than in
    990 ! companion routine bestesg_map, since we cannot achieve superlinear
    991 ! convergence in the present case.
    992 ! Make qs the 5-pt discrete Fourier coefficients of the ellipse pts:
    993  qs=matmul(em5,qs)/q
    994 ! grad=qs(1:2)/r ! Old finite difference estimate is inferior to new grad
    995  qs(0)=qs(0)-u1! <- cos(2*ang) coefficient relative to the central value.
    996  hess(1,1)=qs(0)+qs(3)! <- combine cos(0*ang) and cos(2*ang) coefficients
    997  hess(1,2)=qs(4) ! <- sin(2*ang) coefficient
    998  hess(2,1)=qs(4) !
    999  hess(2,2)=qs(0)-qs(3)! <- combine cos(0*ang) and cos(2*ang) coefficients
    1000  hess=hess*u2/rr ! <- rr is r**2
    1001 
    1002 ! Perform a Cholesky decomposition of the hessian:
    1003  call chol2(hess,el,ff)
    1004  if(ff)then
    1005  print'(" In bestESG_geo, Hessian is not positive; cholesky fails")'
    1006  return
    1007  endif
    1008 ! Invert the cholesky factor in place:
    1009  el(1,1)=u1/el(1,1); el(2,2)=u1/el(2,2); el(2,1)=-el(2,1)*el(1,1)*el(2,2)
    1010  endif
    1011 ! Estimate a Newton step towards the minimum of function Q(a,k):
    1012  vec2=-matmul(transpose(el),matmul(el,grad))
    1013  dak=matmul(basis,vec2)
    1014  gat=gat+matmul(gadak,dak)! <- increment ga
    1015  ak=ak+dak! <- increment the parameter vector estimate
    1016  dma=-matmul(madga,gat-ga)
    1017  ma=ma+dma
    1018 
    1019 ! Use the inverse cholesky factor to re-condition the basis. This is to make
    1020 ! the next stencil-ellipse more closely share the shape of the elliptical
    1021 ! contours of Q near its minumum -- essentially a preconditioning of the
    1022 ! numerical optimization:
    1023  if(it<mit)basis=matmul(basis,transpose(el))
    1024 
    1025  s=sqrt(dot_product(dak,dak))
    1026  if(s<crit)exit ! <-Sufficient convergence of the Newton iteration
    1027 enddo
    1028 if(it>nit)print'("WARNING; Relatively inferior convergence in bestesg_geo")'
    1029 a=ak(1)
    1030 k=ak(2)
    1031 if(flip)then; marcx=ma(2); marcy=ma(1)! Remember to switch back
    1032 else ; marcx=ma(1); marcy=ma(2)! don't switch
    1033 endif
    1034 end subroutine bestesg_geo
    1035 
    1072 subroutine bestesg_map(lam,marcx,marcy, a,k,garcx,garcy,q,ff) ![bestesg_map]
    1074 use psym2, only: chol2
    1075 implicit none
    1076 real(dp),intent(in ):: lam,marcx,marcy
    1077 real(dp),intent(out):: a,k,garcx,garcy,q
    1078 logical ,intent(out):: ff
    1079 integer(spi),parameter :: nit=25,mit=7,ngh=25
    1080 real(dp),parameter :: u2o5=u2*o5, &
    1081  f18=u2o5*s18,f36=u2o5*s36,f54=u2o5*s54, &
    1082  f72=u2o5*s72,mf18=-f18,mf36=-f36,mf54=-f54,&
    1083  mf72=-f72,&
    1084  r=0.001_dp,rr=r*r,dang=pi2*o5,crit=1.e-12_dp
    1085 real(dp),dimension(ngh) :: wg,xg
    1086 real(dp),dimension(0:4,0:4):: em5 ! <- Fourier matrix for 5 points
    1087 real(dp),dimension(0:4) :: qs ! <-Sampled q, its Fourier coefficients
    1088 real(dp),dimension(2,0:4) :: aks,mas! <- tiny elliptical array of ak
    1089 real(dp),dimension(2,2) :: basis0,basis,hess,el,gadak,gadma
    1090 real(dp),dimension(2) :: ak,dak,vec2,grad,qdak,qdma,ga,ma
    1091 real(dp) :: s,tmarcx,tmarcy,asp,ang
    1092 integer(spi) :: i,it
    1093 logical :: flip
    1094 data em5/o5,u2o5, u0,u2o5, u0,& ! <-The Fourier matrix for 5 points. Applied
    1095  o5, f18, f72,mf54, f36,& ! to the five 72-degree spaced values in a
    1096  o5,mf54, f36, f18,mf72,& ! column-vector, the product vector has the
    1097  o5,mf54,mf36, f18, f72,& ! components, wave-0, cos and sin wave-1,
    1098  o5, f18,mf72,mf54,mf36/ ! cos and sin wave-2.
    1099 ! First guess upper-triangular basis regularizing the samples used to
    1100 ! estimate the Hessian of q by finite differencing:
    1101 data basis0/0.1_dp,u0, 0.3_dp,0.3_dp/
    1102 ff=lam<u0 .or. lam>=u1
    1103 if(ff)then; print'("In bestesg_map; lam out of range")';return; endif
    1104 ff= marcx<=u0 .or. marcy<=u0
    1105 if(ff)then
    1106  print'("In bestesg_map; a nonpositive domain parameter, marcx or marcy")'
    1107  return
    1108 endif
    1109 call gaulegh(ngh,xg,wg)
    1110 flip=marcy>marcx
    1111 if(flip)then; tmarcx=marcy; tmarcy=marcx! <- Switch
    1112 else ; tmarcx=marcx; tmarcy=marcy! <- Don't switch
    1113 endif
    1114 ma=(/tmarcx,tmarcy/); do i=0,4; mas(:,i)=ma; enddo
    1115 asp=tmarcy/tmarcx
    1116 basis=basis0
    1117 
    1118 call guessak_map(asp,tmarcx,ak)
    1119 
    1120 do it=1,nit
    1121  call get_meanq(ngh,lam,xg,wg,ak,ma,q,qdak,qdma,ga,gadak,gadma,ff)
    1122  if(ff)return
    1123  if(it<=mit)then
    1124 ! Place five additional sample points around the stencil-ellipse:
    1125  do i=0,4
    1126  ang=i*dang ! steps of 72 degrees
    1127  vec2=(/cos(ang),sin(ang)/)*r ! points on a circle of radius r ...
    1128  aks(:,i)=ak+matmul(basis,vec2) ! ... become points on an ellipse.
    1129  enddo
    1130  call get_meanq(5,ngh,lam,xg,wg,aks,mas, qs,ff)
    1131  endif
    1132  grad=matmul(qdak,basis)/q ! <- New grad estimate, accurate to near roundoff
    1133  if(it<mit)then
    1134 ! Recover Hessian estimate, normalized by q, from all
    1135 ! 6 samples, q, qs. These are wrt the basis, not (a,k) directly.
    1136 ! The Hessian estimate uses a careful finite method, which is accurate
    1137 ! enough. The gradient is NOT estimated by finite differences because we
    1138 ! need the gradient to be accurate to near roundoff levels in order that
    1139 ! the converged Newton iteration is a precise solution.
    1140 ! Make qs the 5-pt discrete Fourier coefficients of the ellipse pts:
    1141  qs=matmul(em5,qs)/q
    1142 ! grad=qs(1:2)/r ! Old finite difference estimate is inferior to new grad
    1143  qs(0)=qs(0)-u1
    1144  hess(1,1)=qs(0)+qs(3)! <- combine cos(0*ang) and cos(2*ang) coefficients
    1145  hess(1,2)=qs(4) ! <- sin(2*ang) coefficient
    1146  hess(2,1)=qs(4) !
    1147  hess(2,2)=qs(0)-qs(3)! <- combine cos(0*ang) and cos(2*ang) coefficients
    1148  hess=hess*u2/rr ! <- rr is r**2
    1149 
    1150 ! Perform a Cholesky decomposition of the hessian:
    1151  call chol2(hess,el,ff)
    1152  if(ff)then
    1153  print'(" In bestESG_map, hessian is not positive; cholesky fails")'
    1154  return
    1155  endif
    1156 ! Invert the cholesky factor in place:
    1157  el(1,1)=u1/el(1,1); el(2,2)=u1/el(2,2); el(2,1)=-el(2,1)*el(1,1)*el(2,2)
    1158  endif
    1159 ! Estimate a Newton step towards the minimum of function Q(a,k):
    1160  vec2=-matmul(transpose(el),matmul(el,grad))
    1161  dak=matmul(basis,vec2)
    1162  ga=ga+matmul(gadak,dak)! <- increment ga
    1163  ak=ak+dak! <- increment the parameter vector estimate
    1164 
    1165 ! Use the inverse cholesky factor to re-condition the basis. This is to make
    1166 ! the next stencil-ellipse more closely share the shape of the elliptical
    1167 ! contours of Q near its minumum -- essentially a preconditioning of the
    1168 ! numerical optimization:
    1169  if(it<mit)basis=matmul(basis,transpose(el))
    1170 
    1171  s=sqrt(dot_product(dak,dak))
    1172  if(s<crit)exit ! <-Sufficient convergence of the Newton iteration
    1173 enddo
    1174 if(it>nit)print'("WARNING; Relatively inferior convergence in bestesg_map")'
    1175 a=ak(1)
    1176 k=ak(2)
    1177 if(flip)then; garcx=ga(2); garcy=ga(1)! Remember to switch back
    1178 else ; garcx=ga(1); garcy=ga(2)! don't switch
    1179 endif
    1180 end subroutine bestesg_map
    1181 
    1219 subroutine hgrid_ak_rr(lx,ly,nx,ny,A,K,plat,plon,pazi, & ! [hgrid_ak_rr]
    1220  delx,dely, glat,glon,garea, ff)
    1221 use pmat4, only: sarea
    1222 use pmat5, only: ctogr
    1223 implicit none
    1224 integer(spi), intent(in ):: lx,ly,nx,ny
    1225 real(dp), intent(in ):: a,k,plat,plon,pazi, &
    1226  delx,dely
    1227 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: glat,glon
    1228 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1229 logical, intent(out):: ff
    1230 real(dp),dimension(3,3):: prot,azirot
    1231 real(dp),dimension(3,2):: xcd
    1232 real(dp),dimension(3) :: xc
    1233 real(dp),dimension(2) :: xm
    1234 real(dp) :: clat,slat,clon,slon,cazi,sazi,&
    1235  rlat,drlata,drlatb,drlatc, &
    1236  rlon,drlona,drlonb,drlonc
    1237 integer(spi) :: ix,iy,mx,my
    1238 clat=cos(plat); slat=sin(plat)
    1239 clon=cos(plon); slon=sin(plon)
    1240 cazi=cos(pazi); sazi=sin(pazi)
    1241 
    1242 azirot(:,1)=(/ cazi, sazi, u0/)
    1243 azirot(:,2)=(/-sazi, cazi, u0/)
    1244 azirot(:,3)=(/ u0, u0, u1/)
    1245 
    1246 prot(:,1)=(/ -slon, clon, u0/)
    1247 prot(:,2)=(/-slat*clon, -slat*slon, clat/)
    1248 prot(:,3)=(/ clat*clon, clat*slon, slat/)
    1249 prot=matmul(prot,azirot)
    1250 mx=lx+nx ! Index of the 'right' edge of the rectangular grid
    1251 my=ly+ny ! Index of the 'top' edge of the rectangular grid
    1252 do iy=ly,my
    1253  xm(2)=iy*dely
    1254  do ix=lx,mx
    1255  xm(1)=ix*delx
    1256  call xmtoxc_ak(a,k,xm,xc,xcd,ff)
    1257  if(ff)return
    1258  xcd=matmul(prot,xcd)
    1259  xc =matmul(prot,xc )
    1260  call ctogr(xc,glat(ix,iy),glon(ix,iy))
    1261  enddo
    1262 enddo
    1263 
    1264 ! Compute the areas of the quadrilateral grid cells:
    1265 do iy=ly,my-1
    1266  do ix=lx,mx-1
    1267  rlat =glat(ix ,iy )
    1268  drlata=glat(ix+1,iy )-rlat
    1269  drlatb=glat(ix+1,iy+1)-rlat
    1270  drlatc=glat(ix ,iy+1)-rlat
    1271  rlon =glon(ix ,iy )
    1272  drlona=glon(ix+1,iy )-rlon
    1273  drlonb=glon(ix+1,iy+1)-rlon
    1274  drlonc=glon(ix ,iy+1)-rlon
    1275 ! If 'I' is the grid point (ix,iy), 'A' is (ix+1,iy); 'B' is (ix+1,iy+1)
    1276 ! and 'C' is (ix,iy+1), then the area of the grid cell IABC is the sum of
    1277 ! the areas of the traingles, IAB and IBC (the latter being the negative
    1278 ! of the signed area of triangle, ICB):
    1279  garea(ix,iy)=sarea(rlat, drlata,drlona, drlatb,drlonb) &
    1280  -sarea(rlat, drlatc,drlonc, drlatb,drlonb)
    1281  enddo
    1282 enddo
    1283 end subroutine hgrid_ak_rr
    1284 
    1336 subroutine hgrid_ak_rr_c(lx,ly,nx,ny,a,k,plat,plon,pazi, & ! [hgrid_ak_rr]
    1337  delx,dely, glat,glon,garea,dx,dy,angle_dx,angle_dy, ff)
    1339 use pmat5, only: ctogr
    1340 implicit none
    1341 integer(spi), intent(in ):: lx,ly,nx,ny
    1342 real(dp), intent(in ):: a,k,plat,plon,pazi, &
    1343  delx,dely
    1344 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: glat,glon
    1345 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1346 real(dp),dimension(lx:lx+nx-1,ly:ly+ny ),intent(out):: dx
    1347 real(dp),dimension(lx:lx+nx ,ly:ly+ny-1),intent(out):: dy
    1348 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: angle_dx,angle_dy
    1349 logical, intent(out):: ff
    1350 real(dp),dimension(lx-1:lx+nx+1,ly-1:ly+ny+1):: gat ! Temporary area array
    1351 real(dp),dimension(lx-1:lx+nx+1,ly :ly+ny ):: dxt ! Temporary dx array
    1352 real(dp),dimension(lx :lx+nx ,ly-1:ly+ny+1):: dyt ! Temporary dy array
    1353 real(dp),dimension(3,3):: prot,azirot
    1354 real(dp),dimension(3,2):: xcd,eano
    1355 real(dp),dimension(2,2):: xcd2
    1356 real(dp),dimension(3) :: xc,east,north
    1357 real(dp),dimension(2) :: xm
    1358 real(dp) :: clat,slat,clon,slon,cazi,sazi,delxy
    1359 integer(spi) :: ix,iy,mx,my,lxm,lym,mxp,myp
    1360 delxy=delx*dely
    1361 clat=cos(plat); slat=sin(plat)
    1362 clon=cos(plon); slon=sin(plon)
    1363 cazi=cos(pazi); sazi=sin(pazi)
    1364 
    1365 azirot(:,1)=(/ cazi, sazi, u0/)
    1366 azirot(:,2)=(/-sazi, cazi, u0/)
    1367 azirot(:,3)=(/ u0, u0, u1/)
    1368 
    1369 prot(:,1)=(/ -slon, clon, u0/)
    1370 prot(:,2)=(/-slat*clon, -slat*slon, clat/)
    1371 prot(:,3)=(/ clat*clon, clat*slon, slat/)
    1372 prot=matmul(prot,azirot)
    1373 
    1374 mx=lx+nx ! Index of the 'right' edge of the rectangular grid
    1375 my=ly+ny ! Index of the 'top' edge of the rectangular grid
    1376 lxm=lx-1; mxp=mx+1 ! Indices of extra left and right edges
    1377 lym=ly-1; myp=my+1 ! Indices of extra bottom and top edges
    1378 
    1379 !-- main body of horizontal grid:
    1380 do iy=ly,my
    1381  xm(2)=iy*dely
    1382  do ix=lx,mx
    1383  xm(1)=ix*delx
    1384  call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1385  xcd=matmul(prot,xcd)
    1386  xc =matmul(prot,xc )
    1387  call ctogr(xc,glat(ix,iy),glon(ix,iy))
    1388  east=(/-xc(2),xc(1),u0/); east=east/sqrt(dot_product(east,east))
    1389  north=cross_product(xc,east)
    1390  eano(:,1)=east; eano(:,2)=north
    1391  xcd2=matmul(transpose(eano),xcd)
    1392  angle_dx(ix,iy)=atan2( xcd2(2,1),xcd2(1,1))
    1393  angle_dy(ix,iy)=atan2(-xcd2(1,2),xcd2(2,2))
    1394  dxt(ix,iy)=sqrt(dot_product(xcd2(:,1),xcd2(:,1)))*delx
    1395  dyt(ix,iy)=sqrt(dot_product(xcd2(:,2),xcd2(:,2)))*dely
    1396  gat(ix,iy)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1397  enddo
    1398 enddo
    1399 
    1400 !-- extra left edge, gat, dxt only:
    1401 xm(1)=lxm*delx
    1402 do iy=ly,my
    1403  xm(2)=iy*dely
    1404  call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1405  xcd=matmul(prot,xcd)
    1406  xc =matmul(prot,xc )
    1407  east=(/-xc(2),xc(1),u0/); east=east/sqrt(dot_product(east,east))
    1408  north=cross_product(xc,east)
    1409  eano(:,1)=east; eano(:,2)=north
    1410  xcd2=matmul(transpose(eano),xcd)
    1411  dxt(lxm,iy)=sqrt(dot_product(xcd2(:,1),xcd2(:,1)))*delx
    1412  gat(lxm,iy)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1413 enddo
    1414 
    1415 !-- extra right edge, gat, dxt only:
    1416 xm(1)=mxp*delx
    1417 do iy=ly,my
    1418  xm(2)=iy*dely
    1419  call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1420  xcd=matmul(prot,xcd)
    1421  xc =matmul(prot,xc )
    1422  east=(/-xc(2),xc(1),u0/); east=east/sqrt(dot_product(east,east))
    1423  north=cross_product(xc,east)
    1424  eano(:,1)=east; eano(:,2)=north
    1425  xcd2=matmul(transpose(eano),xcd)
    1426  dxt(mxp,iy)=sqrt(dot_product(xcd2(:,1),xcd2(:,1)))*delx
    1427  gat(mxp,iy)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1428 enddo
    1429 
    1430 !-- extra bottom edge, gat, dyt only:
    1431 xm(2)=lym*dely
    1432 do ix=lx,mx
    1433  xm(1)=ix*delx
    1434  call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1435  xcd=matmul(prot,xcd)
    1436  xc =matmul(prot,xc )
    1437  east=(/-xc(2),xc(1),u0/); east=east/sqrt(dot_product(east,east))
    1438  north=cross_product(xc,east)
    1439  eano(:,1)=east; eano(:,2)=north
    1440  xcd2=matmul(transpose(eano),xcd)
    1441  dyt(ix,lym)=sqrt(dot_product(xcd2(:,2),xcd2(:,2)))*dely
    1442  gat(ix,lym)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1443 enddo
    1444 
    1445 !-- extra top edge, gat, dyt only:
    1446 xm(2)=myp*dely
    1447 do ix=lx,mx
    1448  xm(1)=ix*delx
    1449  call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1450  xcd=matmul(prot,xcd)
    1451  xc =matmul(prot,xc )
    1452  east=(/-xc(2),xc(1),u0/); east=east/sqrt(dot_product(east,east))
    1453  north=cross_product(xc,east)
    1454  eano(:,1)=east; eano(:,2)=north
    1455  xcd2=matmul(transpose(eano),xcd)
    1456  dyt(ix,myp)=sqrt(dot_product(xcd2(:,2),xcd2(:,2)))*dely
    1457  gat(ix,myp)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1458 enddo
    1459 
    1460 ! Extra four corners, gat only:
    1461 xm(2)=lym*dely
    1462 !-- extra bottom left corner:
    1463 xm(1)=lxm*delx
    1464 call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1465 xcd=matmul(prot,xcd)
    1466 xc =matmul(prot,xc )
    1467 gat(lxm,lym)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1468 
    1469 !-- extra bottom right corner:
    1470 xm(1)=mxp*delx
    1471 call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1472 xcd=matmul(prot,xcd)
    1473 xc =matmul(prot,xc )
    1474 gat(mxp,lym)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1475 
    1476 xm(2)=myp*dely
    1477 !-- extra top left corner:
    1478 xm(1)=lxm*delx
    1479 call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1480 xcd=matmul(prot,xcd)
    1481 xc =matmul(prot,xc )
    1482 gat(lxm,myp)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1483 
    1484 !-- extra top right corner:
    1485 xm(1)=mxp*delx
    1486 call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    1487 xcd=matmul(prot,xcd)
    1488 xc =matmul(prot,xc )
    1489 gat(mxp,myp)=triple_product(xc,xcd(:,1),xcd(:,2))*delxy
    1490 
    1491 !-- 4th-order averaging over each central interval using 4-pt. stencils:
    1492 dx =(13_dp*(dxt(lx :mx-1,:)+dxt(lx+1:mx ,:)) &
    1493  -(dxt(lxm:mx-2,:)+dxt(lx+2:mxp,:)))/24_dp
    1494 dy =(13_dp*(dyt(:,ly :my-1)+dyt(:,ly+1:my )) &
    1495  -(dyt(:,lym:my-2)+dyt(:,ly+2:myp)))/24_dp
    1496 gat(lx:mx-1,:)=(13_dp*(gat(lx :mx-1,:)+gat(lx+1:mx ,:)) &
    1497  -(gat(lxm:mx-2,:)+gat(lx+2:mxp,:)))/24_dp
    1498 garea =(13_dp*(gat(lx:mx-1,ly :my-1)+gat(lx:mx-1,ly+1:my )) &
    1499  -(gat(lx:mx-1,lym:my-2)+gat(lx:mx-1,ly+2:myp)))/24_dp
    1500 end subroutine hgrid_ak_rr_c
    1501 
    1539 subroutine hgrid_ak_rc(lx,ly,nx,ny,A,K,plat,plon,pazi, & ! [hgrid_ak_rc]
    1540  delx,dely, xc,xcd,garea, ff)
    1541 use pmat4, only: sarea
    1542 use pmat5, only: ctogr
    1543 implicit none
    1544 integer(spi),intent(in ):: lx,ly,nx,ny
    1545 real(dp), intent(in ):: a,k,plat,plon,pazi,delx,dely
    1546 real(dp),dimension(3, lx:lx+nx ,ly:ly+ny ),intent(out):: xc
    1547 real(dp),dimension(3,2,lx:lx+nx ,ly:ly+ny ),intent(out):: xcd
    1548 real(dp),dimension( lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1549 logical, intent(out):: ff
    1550 real(dp),dimension(3,3):: prot,azirot
    1551 real(dp),dimension(2) :: xm
    1552 real(dp) :: clat,slat,clon,slon,cazi,sazi, &
    1553  rlat,rlata,rlatb,rlatc,drlata,drlatb,drlatc, &
    1554  rlon,rlona,rlonb,rlonc,drlona,drlonb,drlonc
    1555 integer(spi) :: ix,iy,mx,my
    1556 clat=cos(plat); slat=sin(plat)
    1557 clon=cos(plon); slon=sin(plon)
    1558 cazi=cos(pazi); sazi=sin(pazi)
    1559 
    1560 azirot(:,1)=(/ cazi, sazi, u0/)
    1561 azirot(:,2)=(/-sazi, cazi, u0/)
    1562 azirot(:,3)=(/ u0, u0, u1/)
    1563 
    1564 prot(:,1)=(/ -slon, clon, u0/)
    1565 prot(:,2)=(/-slat*clon, -slat*slon, clat/)
    1566 prot(:,3)=(/ clat*clon, clat*slon, slat/)
    1567 prot=matmul(prot,azirot)
    1568 mx=lx+nx ! Index of the 'right' edge of the rectangular grid
    1569 my=ly+ny ! Index of the 'top' edge of the rectangular grid
    1570 do iy=ly,my
    1571  xm(2)=iy*dely
    1572  do ix=lx,mx
    1573  xm(1)=ix*delx
    1574  call xmtoxc_ak(a,k,xm,xc(:,ix,iy),xcd(:,:,ix,iy),ff)
    1575  if(ff)return
    1576  xcd(:,:,ix,iy)=matmul(prot,xcd(:,:,ix,iy))
    1577  xc(:, ix,iy)=matmul(prot,xc(:, ix,iy))
    1578  enddo
    1579 enddo
    1580 
    1581 ! Compute the areas of the quadrilateral grid cells:
    1582 do iy=ly,my-1
    1583  do ix=lx,mx-1
    1584  call ctogr(xc(:,ix ,iy ),rlat ,rlon )
    1585  call ctogr(xc(:,ix+1,iy ),rlata,rlona)
    1586  call ctogr(xc(:,ix+1,iy+1),rlatb,rlonb)
    1587  call ctogr(xc(:,ix ,iy+1),rlatc,rlonc)
    1588  drlata=rlata-rlat; drlona=rlona-rlon
    1589  drlatb=rlatb-rlat; drlonb=rlonb-rlon
    1590  drlatc=rlatc-rlat; drlonc=rlonc-rlon
    1591 
    1592 ! If 'I' is the grid point (ix,iy), 'A' is (ix+1,iy); 'B' is (ix+1,iy+1)
    1593 ! and 'C' is (ix,iy+1), then the area of the grid cell IABC is the sum of
    1594 ! the areas of the triangles, IAB and IBC (the latter being the negative
    1595 ! of the signed area of triangle, ICB):
    1596  garea(ix,iy)=sarea(rlat, drlata,drlona, drlatb,drlonb) &
    1597  -sarea(rlat, drlatc,drlonc, drlatb,drlonb)
    1598  enddo
    1599 enddo
    1600 end subroutine hgrid_ak_rc
    1601 
    1628 subroutine hgrid_ak_dd(lx,ly,nx,ny,a,k,pdlat,pdlon,pdazi, & ! [hgrid_ak_dd]
    1629  delx,dely, gdlat,gdlon,garea, ff)
    1630 implicit none
    1631 integer(spi), intent(in ):: lx,ly,nx,ny
    1632 real(dp), intent(in ):: a,k,pdlat,pdlon,&
    1633  pdazi,delx,dely
    1634 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: gdlat,gdlon
    1635 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1636 logical, intent(out):: ff
    1637 real(dp):: plat,plon,pazi
    1638 plat=pdlat*dtor ! Convert these angles from degrees to radians
    1639 plon=pdlon*dtor !
    1640 pazi=pdazi*dtor !
    1641 call hgrid_ak_rr(lx,ly,nx,ny,a,k,plat,plon,pazi, &
    1642  delx,dely, gdlat,gdlon,garea, ff)
    1643 if(ff)return
    1644 gdlat=gdlat*rtod ! Convert these angles from radians to degrees
    1645 gdlon=gdlon*rtod !
    1646 end subroutine hgrid_ak_dd
    1647 
    1671 subroutine hgrid_ak_dd_c(lx,ly,nx,ny,a,k,pdlat,pdlon,pdazi, &! [hgrid_ak_dd]
    1672  delx,dely, gdlat,gdlon,garea,dx,dy,dangle_dx,dangle_dy, ff)
    1673 implicit none
    1674 integer(spi), intent(in ):: lx,ly,nx,ny
    1675 real(dp), intent(in ):: a,k,pdlat,pdlon,&
    1676  pdazi,delx,dely
    1677 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: gdlat,gdlon
    1678 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1679 real(dp),dimension(lx:lx+nx-1,ly:ly+ny ),intent(out):: dx
    1680 real(dp),dimension(lx:lx+nx ,ly:ly+ny-1),intent(out):: dy
    1681 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: dangle_dx,dangle_dy
    1682 logical, intent(out):: ff
    1683 real(dp):: plat,plon,pazi
    1684 plat=pdlat*dtor ! Convert these angles from degrees to radians
    1685 plon=pdlon*dtor !
    1686 pazi=pdazi*dtor !
    1687 call hgrid_ak_rr_c(lx,ly,nx,ny,a,k,plat,plon,pazi, &
    1688  delx,dely, gdlat,gdlon,garea,dx,dy,dangle_dx,dangle_dy, ff)
    1689 if(ff)return
    1690 gdlat =gdlat *rtod ! Convert these angles from radians to degrees
    1691 gdlon =gdlon *rtod !
    1692 dangle_dx=dangle_dx*rtod !
    1693 dangle_dy=dangle_dy*rtod !
    1694 end subroutine hgrid_ak_dd_c
    1695 
    1722 subroutine hgrid_ak_dc(lx,ly,nx,ny,a,k,pdlat,pdlon,pdazi, & ! [hgrid_ak_dc]
    1723  delx,dely, xc,xcd,garea, ff)
    1724 implicit none
    1725 integer(spi),intent(in ):: lx,ly,nx,ny
    1726 real(dp), intent(in ):: a,k,pdlat,pdlon,pdazi,delx,dely
    1727 real(dp),dimension(3, lx:lx+nx ,ly:ly+ny ),intent(out):: xc
    1728 real(dp),dimension(3,2,lx:lx+nx ,ly:ly+ny ),intent(out):: xcd
    1729 real(dp),dimension( lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1730 logical, intent(out):: ff
    1731 real(dp):: plat,plon,pazi
    1732 plat=pdlat*dtor
    1733 plon=pdlon*dtor
    1734 pazi=pdazi*dtor
    1735 call hgrid_ak_rc(lx,ly,nx,ny,a,k,plat,plon,pazi, &
    1736  delx,dely, xc,xcd,garea, ff)
    1737 end subroutine hgrid_ak_dc
    1738 
    1764 subroutine hgrid_ak(lx,ly,nx,ny,a,k,plat,plon,pazi, & ! [hgrid_ak]
    1765  re,delxre,delyre, glat,glon,garea, ff)
    1766 implicit none
    1767 integer(spi), intent(in ):: lx,ly,nx,ny
    1768 real(dp), intent(in ):: a,k,plat,plon,pazi, &
    1769  re,delxre,delyre
    1770 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: glat,glon
    1771 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1772 logical, intent(out):: ff
    1773 real(dp):: delx,dely,rere
    1774 delx=delxre/re ! <- set nondimensional grid step delx
    1775 dely=delyre/re ! <- set nondimensional grid step dely
    1776 call hgrid_ak_rr(lx,ly,nx,ny,a,k,plat,plon,pazi, &
    1777  delx,dely, glat,glon,garea, ff)
    1778 if(ff)return
    1779 rere=re*re
    1780 garea=garea*rere ! <- Convert from steradians to physical area units.
    1781 end subroutine hgrid_ak
    1782 
    1816 subroutine hgrid_ak_c(lx,ly,nx,ny,a,k,plat,plon,pazi, & ! [hgrid_ak]
    1817  re,delxre,delyre, glat,glon,garea,dx,dy,dangle_dx,dangle_dy, ff)
    1818 implicit none
    1819 integer(spi), intent(in ):: lx,ly,nx,ny
    1820 real(dp), intent(in ):: a,k,plat,plon,pazi, &
    1821  re,delxre,delyre
    1822 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: glat,glon
    1823 real(dp),dimension(lx:lx+nx-1,ly:ly+ny-1),intent(out):: garea
    1824 real(dp),dimension(lx:lx+nx-1,ly:ly+ny ),intent(out):: dx
    1825 real(dp),dimension(lx:lx+nx ,ly:ly+ny-1),intent(out):: dy
    1826 real(dp),dimension(lx:lx+nx ,ly:ly+ny ),intent(out):: dangle_dx,dangle_dy
    1827 logical, intent(out):: ff
    1828 real(dp):: delx,dely,rere
    1829 delx=delxre/re ! <- set nondimensional grid step delx
    1830 dely=delyre/re ! <- set nondimensional grid step dely
    1831 call hgrid_ak_rr_c(lx,ly,nx,ny,a,k,plat,plon,pazi, &
    1832  delx,dely, glat,glon,garea,dx,dy,dangle_dx,dangle_dy, ff)
    1833 if(ff)return
    1834 rere=re*re
    1835 garea=garea*rere ! <- Convert from steradians to physical area units.
    1836 dx=dx*re ! <- Convert from nondimensional to physical length units.
    1837 dy=dy*re ! <-
    1838 dangle_dx=dangle_dx*rtod ! <-Convert from radians to degrees
    1839 dangle_dy=dangle_dy*rtod ! <-Convert from radians to degrees
    1840 end subroutine hgrid_ak_c
    1841 
    1851 subroutine gaulegh(m,x,w)! [gaulegh]
    1852 implicit none
    1853 integer(spi), intent(IN ):: m ! <- number of nodes in half-interval
    1854 real(dp),dimension(m),intent(OUT):: x,w ! <- nodes and weights
    1855 integer(spi),parameter:: nit=8
    1856 real(dp), parameter:: eps=3.e-14_dp
    1857 integer(spi) :: i,ic,j,jm,it,m2,m4p,m4p3
    1858 real(dp) :: z,zzm,p1,p2,p3,pp,z1
    1859 m2=m*2; m4p=m*4+1; m4p3=m4p+2
    1860 do i=1,m; ic=m4p3-4*i
    1861  z=cos(pih*ic/m4p); zzm=z*z-u1
    1862  do it=1,nit
    1863  p1=u1; p2=u0
    1864  do j=1,m2; jm=j-1; p3=p2; p2=p1; p1=((j+jm)*z*p2-jm*p3)/j; enddo
    1865  pp=m2*(z*p1-p2)/zzm; z1=z; z=z1-p1/pp; zzm=z*z-u1
    1866  if(abs(z-z1) <= eps)exit
    1867  enddo
    1868  x(i)=z; w(i)=-u2/(zzm*pp*pp)
    1869 enddo
    1870 end subroutine gaulegh
    1871 
    1887 subroutine gtoxm_ak_rr_m(A,K,plat,plon,pazi,lat,lon,xm,ff)! [gtoxm_ak_rr]
    1888 use pmat5, only: grtoc
    1889 implicit none
    1890 real(dp), intent(in ):: a,k,plat,plon,pazi,lat,lon
    1891 real(dp),dimension(2),intent(out):: xm
    1892 logical, intent(out):: ff
    1893 real(dp),dimension(3,3):: prot,azirot
    1894 real(dp) :: clat,slat,clon,slon,cazi,sazi
    1895 real(dp),dimension(3) :: xc
    1896 clat=cos(plat); slat=sin(plat)
    1897 clon=cos(plon); slon=sin(plon)
    1898 cazi=cos(pazi); sazi=sin(pazi)
    1899 
    1900 azirot(:,1)=(/ cazi, sazi, u0/)
    1901 azirot(:,2)=(/-sazi, cazi, u0/)
    1902 azirot(:,3)=(/ u0, u0, u1/)
    1903 
    1904 prot(:,1)=(/ -slon, clon, u0/)
    1905 prot(:,2)=(/-slat*clon, -slat*slon, clat/)
    1906 prot(:,3)=(/ clat*clon, clat*slon, slat/)
    1907 prot=matmul(prot,azirot)
    1908 
    1909 call grtoc(lat,lon,xc)
    1910 xc=matmul(transpose(prot),xc)
    1911 call xctoxm_ak(a,k,xc,xm,ff)
    1912 end subroutine gtoxm_ak_rr_m
    1913 
    1931 subroutine gtoxm_ak_rr_g(A,K,plat,plon,pazi,delx,dely,lat,lon,&! [gtoxm_ak_rr]
    1932  xm,ff)
    1933 implicit none
    1934 real(dp), intent(in ):: a,k,plat,plon,pazi,delx,dely,lat,lon
    1935 real(dp),dimension(2),intent(out):: xm
    1936 logical, intent(out):: ff
    1937 call gtoxm_ak_rr_m(a,k,plat,plon,pazi,lat,lon,xm,ff); if(ff)return
    1938 xm(1)=xm(1)/delx; xm(2)=xm(2)/dely
    1939 end subroutine gtoxm_ak_rr_g
    1940 
    1953 subroutine gtoxm_ak_dd_m(A,K,pdlat,pdlon,pdazi,dlat,dlon,&! [gtoxm_ak_dd]
    1954  xm,ff)
    1955 implicit none
    1956 real(dp), intent(in ):: a,k,pdlat,pdlon,pdazi,dlat,dlon
    1957 real(dp),dimension(2),intent(out):: xm
    1958 logical, intent(out):: ff
    1959 real(dp):: plat,plon,pazi,lat,lon
    1960 plat=pdlat*dtor ! Convert these angles from degrees to radians
    1961 plon=pdlon*dtor !
    1962 pazi=pdazi*dtor !
    1963 lat=dlat*dtor
    1964 lon=dlon*dtor
    1965 call gtoxm_ak_rr_m(a,k,plat,plon,pazi,lat,lon,xm,ff)
    1966 end subroutine gtoxm_ak_dd_m
    1967 
    1982 subroutine gtoxm_ak_dd_g(A,K,pdlat,pdlon,pdazi,delx,dely,&! [gtoxm_ak_dd]
    1983 dlat,dlon, xm,ff)
    1984 implicit none
    1985 real(dp), intent(in ):: a,k,pdlat,pdlon,pdazi,delx,dely,dlat,dlon
    1986 real(dp),dimension(2),intent(out):: xm
    1987 logical, intent(out):: ff
    1988 real(dp):: plat,plon,pazi,lat,lon
    1989 plat=pdlat*dtor ! Convert these angles from degrees to radians
    1990 plon=pdlon*dtor !
    1991 pazi=pdazi*dtor !
    1992 lat=dlat*dtor
    1993 lon=dlon*dtor
    1994 call gtoxm_ak_rr_g(a,k,plat,plon,pazi,delx,dely,lat,lon,xm,ff)
    1995 end subroutine gtoxm_ak_dd_g
    1996 
    2014 subroutine xmtog_ak_rr_m(A,K,plat,plon,pazi,xm,lat,lon,ff)! [xmtog_ak_rr]
    2015 use pmat5, only: ctogr
    2016 implicit none
    2017 real(dp), intent(in ):: a,k,plat,plon,pazi
    2018 real(dp),dimension(2),intent(in ):: xm
    2019 real(dp), intent(out):: lat,lon
    2020 logical, intent(out):: ff
    2021 real(dp),dimension(3,2):: xcd
    2022 real(dp),dimension(3,3):: prot,azirot
    2023 real(dp) :: clat,slat,clon,slon,cazi,sazi
    2024 real(dp),dimension(3) :: xc
    2025 clat=cos(plat); slat=sin(plat)
    2026 clon=cos(plon); slon=sin(plon)
    2027 cazi=cos(pazi); sazi=sin(pazi)
    2028 
    2029 azirot(:,1)=(/ cazi, sazi, u0/)
    2030 azirot(:,2)=(/-sazi, cazi, u0/)
    2031 azirot(:,3)=(/ u0, u0, u1/)
    2032 
    2033 prot(:,1)=(/ -slon, clon, u0/)
    2034 prot(:,2)=(/-slat*clon, -slat*slon, clat/)
    2035 prot(:,3)=(/ clat*clon, clat*slon, slat/)
    2036 prot=matmul(prot,azirot)
    2037 call xmtoxc_ak(a,k,xm,xc,xcd,ff); if(ff)return
    2038 xc=matmul(prot,xc)
    2039 call ctogr(xc,lat,lon)
    2040 end subroutine xmtog_ak_rr_m
    2041 
    2061 subroutine xmtog_ak_rr_g(A,K,plat,plon,pazi,delx,dely,xm,&! [xmtog_ak_rr]
    2062  lat,lon,ff)
    2063 implicit none
    2064 real(dp), intent(in ):: a,k,plat,plon,pazi,delx,dely
    2065 real(dp),dimension(2),intent(in ):: xm
    2066 real(dp), intent(out):: lat,lon
    2067 logical, intent(out):: ff
    2068 real(dp),dimension(2):: xmt
    2069 xmt(1)=xm(1)*delx ! Convert from grid units to intrinsic map-space units
    2070 xmt(2)=xm(2)*dely !
    2071 call xmtog_ak_rr_m(a,k,plat,plon,pazi,xmt,lat,lon,ff)
    2072 end subroutine xmtog_ak_rr_g
    2073 
    2086 subroutine xmtog_ak_dd_m(A,K,pdlat,pdlon,pdazi,xm,dlat,dlon,ff)! [xmtog_ak_dd]
    2087 use pmat5, only: ctogr
    2088 implicit none
    2089 real(dp), intent(in ):: a,k,pdlat,pdlon,pdazi
    2090 real(dp),dimension(2),intent(in ):: xm
    2091 real(dp), intent(out):: dlat,dlon
    2092 logical, intent(out):: ff
    2093 real(dp):: plat,plon,pazi,lat,lon
    2094 plat=pdlat*dtor ! Convert these angles from degrees to radians
    2095 plon=pdlon*dtor !
    2096 pazi=pdazi*dtor !
    2097 call xmtog_ak_rr_m(a,k,plat,plon,pazi,xm,lat,lon,ff)
    2098 dlat=lat*rtod
    2099 dlon=lon*rtod
    2100 end subroutine xmtog_ak_dd_m
    2101 
    2116 subroutine xmtog_ak_dd_g(A,K,pdlat,pdlon,pdazi,delx,dely,xm,&! [xmtog_ak_dd]
    2117  dlat,dlon,ff)
    2118 implicit none
    2119 real(dp), intent(in ):: a,k,pdlat,pdlon,pdazi,delx,dely
    2120 real(dp),dimension(2),intent(in ):: xm
    2121 real(dp), intent(out):: dlat,dlon
    2122 logical, intent(out):: ff
    2123 real(dp),dimension(2):: xmt
    2124 real(dp) :: plat,plon,pazi,lat,lon
    2125 xmt(1)=xm(1)*delx ! Convert from grid units to intrinsic map-space units
    2126 xmt(2)=xm(2)*dely !
    2127 plat=pdlat*dtor ! Convert these angles from degrees to radians
    2128 plon=pdlon*dtor !
    2129 pazi=pdazi*dtor !
    2130 call xmtog_ak_rr_m(a,k,plat,plon,pazi,xmt,lat,lon,ff)
    2131 dlat=lat*rtod
    2132 dlon=lon*rtod
    2133 end subroutine xmtog_ak_dd_g
    2134 
    2135 end module pesg
    2136 
    + +
    This module is for evaluating several useful real-valued functions that are not always available in F...
    Definition: pfun.f90:11
    +
    subroutine xttoxs1(k, xt, xs, xsd, xsdd, xs1, xsd1, ff)
    Like xttoxs, but also, return the derivatives, wrt K, of xs and xsd.
    Definition: pesg.f90:193
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    subroutine xstoxc1(xs, xc, xcd, xcdd)
    Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar.
    Definition: pesg.f90:107
    +
    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.
    Definition: pesg.f90:2063
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    + +
    real(dp), parameter pih
    pi*half
    Definition: pietc.f90:44
    +
    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).
    Definition: pesg.f90:2015
    +
    subroutine xmtoxc_vak1(ak, xm, xc, xcd, xc1, xcd1, ff)
    Like xmtoxc_vak, _ak, but also return derivatives wrt ak.
    Definition: pesg.f90:400
    +
    logical, parameter f
    for pain-relief in logical ops
    Definition: pietc.f90:18
    +
    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...
    Definition: pesg.f90:348
    +
    Suite of routines to perform the 2-parameter family of Extended Schmidt Gnomonic (ESG) regional grid ...
    Definition: pesg.f90:15
    +
    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-parameteriz...
    Definition: pesg.f90:604
    +
    real(dp), parameter o5
    fifth
    Definition: pietc.f90:35
    + + +
    real(dp), parameter s18
    sine(18 deg)
    Definition: pietc.f90:61
    +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    +
    real(dp), parameter s54
    sine(54 deg)
    Definition: pietc.f90:73
    + + + +
    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...
    Definition: pesg.f90:1933
    + + + +
    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 expres...
    Definition: pesg.f90:1818
    +
    subroutine xmtoxc_vak(ak, xm, xc, xcd, ff)
    Assuming the vector AK parameterization of the Extended Schmidt-transformed Gnomonic (ESG) mapping wi...
    Definition: pesg.f90:381
    + + +
    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...
    Definition: pesg.f90:276
    + +
    real(dp), parameter ms36
    minus-sine(36 deg)
    Definition: pietc.f90:95
    +
    real(dp), parameter u5
    five
    Definition: pietc.f90:28
    +
    subroutine get_qofvd(lam, v2, v3, v1d, v2d, v3d, v4d, qd)
    Like get_qofv, but for (only) the 2-vector derivatives of Q.
    Definition: pesg.f90:751
    + + + + + + +
    Module for handy vector and matrix operations in Euclidean geometry.
    Definition: pmat4.f90:45
    + + +
    real(dp), parameter ms18
    minus-sine(18 deg)
    Definition: pietc.f90:89
    + + +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    +
    A suite of routines to perform the eigen-decomposition of symmetric 2*2 matrices and to deliver basic...
    Definition: psym2.f90:11
    + +
    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.
    Definition: pesg.f90:542
    + +
    real(dp), parameter dtor
    Degrees to radians.
    Definition: pietc.f90:54
    + +
    real(dp), parameter pi2
    Pi*2.
    Definition: pietc.f90:43
    +
    subroutine get_qsofvs(n, lam, v1s, v2s, v3s, v4s, qs)
    General util to convert value.
    Definition: pesg.f90:771
    + + +
    real(dp), parameter rtod
    radians to degrees
    Definition: pietc.f90:55
    +
    real(dp), parameter ms54
    minus-sine(54 deg)
    Definition: pietc.f90:101
    + +
    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 (...
    Definition: pesg.f90:1338
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    + + + + +
    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...
    Definition: pesg.f90:682
    + +
    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 radi...
    Definition: pesg.f90:1673
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    real(dp), parameter o3
    third
    Definition: pietc.f90:33
    +
    real(dp), parameter s72
    sine(72 deg)
    Definition: pietc.f90:79
    +
    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.
    Definition: pesg.f90:1984
    +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    real(dp), parameter s36
    sine(36 deg)
    Definition: pietc.f90:67
    + +
    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.
    Definition: pesg.f90:1955
    + +
    Utility routines for orienting the globe and basic geographical mappings.
    Definition: pmat5.f90:27
    + + + +
    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.
    Definition: pesg.f90:2087
    +
    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...
    Definition: pesg.f90:1888
    +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    +
    real(dp), parameter ms72
    minus-sine(72 deg)
    Definition: pietc.f90:107
    +
    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.
    Definition: pesg.f90:2118
    + +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pfun_8f90.html b/ver-1.11.0/grid_tools/pfun_8f90.html new file mode 100644 index 000000000..38240824c --- /dev/null +++ b/ver-1.11.0/grid_tools/pfun_8f90.html @@ -0,0 +1,224 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pfun.f90 File Reference
    +
    +
    + +

    Routine evaluating useful functions not always available in Fortran. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pfun::ahav
     
    interface  pfun::ahavh
     
    interface  pfun::atanh
     
    interface  pfun::gd
     
    interface  pfun::gdi
     
    interface  pfun::hav
     
    interface  pfun::havh
     
    interface  pfun::sech
     
    interface  pfun::sechs
     
    interface  pfun::sinhox
     
    interface  pfun::sinhoxm
     
    interface  pfun::sinox
     
    interface  pfun::sinoxm
     
    + + + + +

    +Modules

    module  pfun
     This module is for evaluating several useful real-valued functions that are not always available in Fortran compilers.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    real(dp) function pfun::ahav_d (a)
     Arc-haversine function for double precision real. More...
     
    real(sp) function pfun::ahav_s (a)
     Arc-haversine function for single precision real. More...
     
    real(dp) function pfun::ahavh_d (a)
     Hyperbolic arc-haversine for double precision real. More...
     
    real(sp) function pfun::ahavh_s (a)
     Hyperbolic arc-haversine for single precision real. More...
     
    real(dp) function pfun::atanh_d (t)
     Hyperbolic arc-tangent for double precision real. More...
     
    real(sp) function pfun::atanh_s (t)
     Hyperbolic arc-tangent for single precision real. More...
     
    real(dp) function pfun::gd_d (x)
     Gudermannian function (related to Mercator map projections) More...
     
    real(sp) function pfun::gd_s (x)
     Gudermannian function (related to Mercator map projections) More...
     
    real(dp) function pfun::gdi_d (y)
     Inverse Gudermannian function for double precision real. More...
     
    real(sp) function pfun::gdi_s (y)
     Inverse Gudermannian function for single precision real. More...
     
    real(dp) function pfun::hav_d (t)
     Haversine function for double precision real (for geometry on the sphere). More...
     
    real(sp) function pfun::hav_s (t)
     Haversine function for single precision real (for geometry on the sphere). More...
     
    real(dp) function pfun::havh_d (t)
     Hyperbolic-haversine for double precision real (for pseudosphere geometry). More...
     
    real(sp) function pfun::havh_s (t)
     Hyperbolic-haversine for single precision real (for pseudosphere geometry). More...
     
    real(dp) function pfun::sech_d (x)
     Hyperbolic secant for double precision real. More...
     
    real(sp) function pfun::sech_s (x)
     Hyperbolic secant for single precision real. More...
     
    real(dp) function pfun::sechs_d (x)
     Hyperbolic secant-squared function (logistic distribution). More...
     
    real(sp) function pfun::sechs_s (x)
     Hyperbolic secant-squared function (logistic distribution). More...
     
    real(dp) function pfun::sinhox_d (x)
     Evaluate the symmetric real function sinh(x)/x. More...
     
    real(dp) function pfun::sinhoxm_d (x)
     Evaluate the symmetric real function sinh(x)/x-1. More...
     
    real(dp) function pfun::sinox_d (x)
     Evaluate the symmetric real function sin(x)/x. More...
     
    real(dp) function pfun::sinoxm_d (x)
     Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0. More...
     
    +

    Detailed Description

    +

    Routine evaluating useful functions not always available in Fortran.

    +
    Author
    R. J. Purser
    + +

    Definition in file pfun.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pfun_8f90.js b/ver-1.11.0/grid_tools/pfun_8f90.js new file mode 100644 index 000000000..808c7a68d --- /dev/null +++ b/ver-1.11.0/grid_tools/pfun_8f90.js @@ -0,0 +1,38 @@ +var pfun_8f90 = +[ + [ "ahav", "interfacepfun_1_1ahav.html", "interfacepfun_1_1ahav" ], + [ "ahavh", "interfacepfun_1_1ahavh.html", "interfacepfun_1_1ahavh" ], + [ "atanh", "interfacepfun_1_1atanh.html", "interfacepfun_1_1atanh" ], + [ "gd", "interfacepfun_1_1gd.html", "interfacepfun_1_1gd" ], + [ "gdi", "interfacepfun_1_1gdi.html", "interfacepfun_1_1gdi" ], + [ "hav", "interfacepfun_1_1hav.html", "interfacepfun_1_1hav" ], + [ "havh", "interfacepfun_1_1havh.html", "interfacepfun_1_1havh" ], + [ "sech", "interfacepfun_1_1sech.html", "interfacepfun_1_1sech" ], + [ "sechs", "interfacepfun_1_1sechs.html", "interfacepfun_1_1sechs" ], + [ "sinhox", "interfacepfun_1_1sinhox.html", "interfacepfun_1_1sinhox" ], + [ "sinhoxm", "interfacepfun_1_1sinhoxm.html", "interfacepfun_1_1sinhoxm" ], + [ "sinox", "interfacepfun_1_1sinox.html", "interfacepfun_1_1sinox" ], + [ "sinoxm", "interfacepfun_1_1sinoxm.html", "interfacepfun_1_1sinoxm" ], + [ "ahav_d", "pfun_8f90.html#a7eb3f64f647bd19d04fc18d4cae97140", null ], + [ "ahav_s", "pfun_8f90.html#a4b5788e629ba2dfae6f8c5c718266379", null ], + [ "ahavh_d", "pfun_8f90.html#abb88923266701b775e808682ff5f936b", null ], + [ "ahavh_s", "pfun_8f90.html#acd76f3add5d91f3224b4802ae313f252", null ], + [ "atanh_d", "pfun_8f90.html#a171cc2c59d8a9860987e85f11c964374", null ], + [ "atanh_s", "pfun_8f90.html#a8c6f20ee161a494cb4c6c0ae770c258d", null ], + [ "gd_d", "pfun_8f90.html#a3355d682c6e07927413bdaff27ba7cc2", null ], + [ "gd_s", "pfun_8f90.html#a4b18f6596a6211a3454d798ca31bcdb8", null ], + [ "gdi_d", "pfun_8f90.html#a611c488cc566733f2507a7bd368a5fc4", null ], + [ "gdi_s", "pfun_8f90.html#a6255f8f40118b070a86cb9615d7f7101", null ], + [ "hav_d", "pfun_8f90.html#a9ed21fd1a8d21150853b573d9008f89d", null ], + [ "hav_s", "pfun_8f90.html#a26da582899cece6a52292d701e74e33b", null ], + [ "havh_d", "pfun_8f90.html#a61e1cd121ac958c16818f19ce9f34646", null ], + [ "havh_s", "pfun_8f90.html#ab26cf04a050097dff9d91d000ec86eaa", null ], + [ "sech_d", "pfun_8f90.html#a194d1cbf0876b016e4c1465bc73629cb", null ], + [ "sech_s", "pfun_8f90.html#afde31ca448b75ea9feaa908ecd14b24e", null ], + [ "sechs_d", "pfun_8f90.html#a95e75a721fd184bc5df82206030aff90", null ], + [ "sechs_s", "pfun_8f90.html#ae16f0b042839586e3f28a2d7e923a685", null ], + [ "sinhox_d", "pfun_8f90.html#a1305026f40bb5ea5e505daaaaa4765b1", null ], + [ "sinhoxm_d", "pfun_8f90.html#a255912b9cb3ebb9f43f89ddc673022ad", null ], + [ "sinox_d", "pfun_8f90.html#a8a8959ba3cccb06cad5a2a379f85e066", null ], + [ "sinoxm_d", "pfun_8f90.html#accb9c8adb4b2127c72962f1f7ce6214a", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pfun_8f90_source.html b/ver-1.11.0/grid_tools/pfun_8f90_source.html new file mode 100644 index 000000000..22c2cd91b --- /dev/null +++ b/ver-1.11.0/grid_tools/pfun_8f90_source.html @@ -0,0 +1,151 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pfun.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pfun.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    11 module pfun
    12 !=============================================================================
    13 use pkind, only: sp,dp
    14 implicit none
    15 private
    18 
    19 interface gd; module procedure gd_s, gd_d; end interface
    20 interface gdi; module procedure gdi_s, gdi_d; end interface
    21 interface hav; module procedure hav_s, hav_d; end interface
    22 interface havh; module procedure havh_s, havh_d; end interface
    23 interface ahav; module procedure ahav_s, ahav_d; end interface
    24 interface ahavh; module procedure ahavh_s, ahavh_d; end interface
    25 interface atanh; module procedure atanh_s, atanh_d; end interface
    26 interface sech; module procedure sech_s, sech_d; end interface
    27 interface sechs; module procedure sechs_s, sechs_d; end interface
    28 interface sinoxm; module procedure sinoxm_d; end interface
    29 interface sinox; module procedure sinox_d; end interface
    30 interface sinhoxm; module procedure sinhoxm_d;end interface
    31 interface sinhox; module procedure sinhox_d; end interface
    32 
    33 contains
    34 
    40 function gd_s(x) result(y)! [gd]
    41 ! Gudermannian function
    42 implicit none
    43 real(sp),intent(in ):: x
    44 real(sp) :: y
    45 y=atan(sinh(x))
    46 end function gd_s
    47 
    53 function gd_d(x) result(y)! [gd]
    54 implicit none
    55 real(dp),intent(in ):: x
    56 real(dp) :: y
    57 y=atan(sinh(x))
    58 end function gd_d
    59 
    65 function gdi_s(y) result(x)! [gdi]
    66 implicit none
    67 real(sp),intent(in ):: y
    68 real(sp) :: x
    69 x=atanh(sin(y))
    70 end function gdi_s
    71 
    77 function gdi_d(y) result(x)! [gdi]
    78 implicit none
    79 real(dp),intent(in ):: y
    80 real(dp) :: x
    81 x=atanh(sin(y))
    82 end function gdi_d
    83 
    89 function hav_s(t) result(a)! [hav]
    90 use pietc_s, only: o2
    91 implicit none
    92 real(sp),intent(in ):: t
    93 real(sp) :: a
    94 a=(sin(t*o2))**2
    95 end function hav_s
    96 
    102 function hav_d(t) result(a)! [hav]
    103 use pietc, only: o2
    104 implicit none
    105 real(dp),intent(in ):: t
    106 real(dp) :: a
    107 a=(sin(t*o2))**2
    108 end function hav_d
    109 
    117 function havh_s(t) result(a)! [havh]
    118 use pietc_s, only: o2
    119 implicit none
    120 real(sp),intent(in ):: t
    121 real(sp) :: a
    122 a=-(sinh(t*o2))**2
    123 end function havh_s
    124 
    130 function havh_d(t) result(a)! [havh]
    131 use pietc, only: o2
    132 implicit none
    133 real(dp),intent(in ):: t
    134 real(dp) :: a
    135 a=-(sinh(t*o2))**2
    136 end function havh_d
    137 
    143 function ahav_s(a) result(t)! [ahav]
    144 use pietc_s, only: u2
    145 implicit none
    146 real(sp),intent(in ):: a
    147 real(sp) :: t
    148 t=u2*asin(sqrt(a))
    149 end function ahav_s
    150 
    156 function ahav_d(a) result(t)! [ahav]
    157 use pietc, only: u2
    158 implicit none
    159 real(dp),intent(in ):: a
    160 real(dp) :: t
    161 t=u2*asin(sqrt(a))
    162 end function ahav_d
    163 
    171 function ahavh_s(a) result(t)! [ahavh]
    172 use pietc_s, only: u2
    173 implicit none
    174 real(sp),intent(in ):: a
    175 real(sp) :: t
    176 t=u2*asinh(sqrt(-a))
    177 end function ahavh_s
    178 
    184 function ahavh_d(a) result(t)! [ahavh]
    185 use pietc, only: u2
    186 implicit none
    187 real(dp),intent(in ):: a
    188 real(dp) :: t
    189 t=u2*asinh(sqrt(-a))
    190 end function ahavh_d
    191 
    197 function atanh_s(t) result(a)! [atanh]
    198 use pietc_s, only: u1,o2,o3,o5
    199 implicit none
    200 real(sp),intent(IN ):: t
    201 real(sp) :: a,tt
    202 real(sp),parameter :: o7=u1/7_sp,o9=u1/9_sp
    203 !=============================================================================
    204 if(abs(t)>=u1)stop 'In atanh; no solution'
    205 if(abs(t)>1.e-3_sp)then; a=log((u1+t)/(u1-t))*o2
    206 else; tt=t*t; a=t*(u1+tt*(o3+tt*(o5+tt*(o7+tt*o9))))
    207 endif
    208 end function atanh_s
    209 
    215 function atanh_d(t) result(a)! [atanh]
    216 use pietc, only: u1,o2,o3,o5
    217 implicit none
    218 real(dp),intent(IN ):: t
    219 real(dp) :: a,tt
    220 real(dp),parameter :: o7=u1/7_dp,o9=u1/9_dp
    221 !=============================================================================
    222 if(abs(t)>=u1)stop 'In atanh; no solution'
    223 if(abs(t)>1.e-3_dp)then; a=log((u1+t)/(u1-t))*o2
    224 else; tt=t*t; a=t*(u1+tt*(o3+tt*(o5+tt*(o7+tt*o9))))
    225 endif
    226 end function atanh_d
    227 
    233 function sech_s(x)result(r)! [sech]
    234 ! This indirect way of computing 1/cosh(x) avoids overflows at large x
    235 use pietc_s, only: u1,u2
    236 implicit none
    237 real(sp),intent(in ):: x
    238 real(sp) :: r
    239 real(sp) :: e,ax
    240 ax=abs(x)
    241 e=exp(-ax)
    242 r=e*u2/(u1+e*e)
    243 end function sech_s
    244 
    250 function sech_d(x)result(r)! [sech]
    251 use pietc, only: u1,u2
    252 implicit none
    253 real(dp),intent(in ):: x
    254 real(dp) :: r
    255 real(dp) :: e,ax
    256 ax=abs(x)
    257 e=exp(-ax)
    258 r=e*u2/(u1+e*e)
    259 end function sech_d
    260 
    266 function sechs_s(x)result(r)! [sechs]
    267 implicit none
    268 real(sp),intent(in ):: x
    269 real(sp) :: r
    270 r=sech(x)**2
    271 end function sechs_s
    272 
    278 function sechs_d(x)result(r)! [sechs]
    279 implicit none
    280 real(dp),intent(in ):: x
    281 real(dp) :: r
    282 r=sech(x)**2
    283 end function sechs_d
    284 
    290 function sinoxm_d(x) result(r)! [sinoxm]
    291 use pietc, only: u1
    292 implicit none
    293 real(dp),intent(in ):: x
    294 real(dp) :: r
    295 !-----------------------------------------------------------------------------
    296 real(dp):: xx
    297 !=============================================================================
    298 xx=x*x
    299 if(xx > .05_dp)then; r=sin(x)/x-u1
    300 else ; r=-xx*(u1-xx*(u1-xx*(u1-xx*(u1-xx*(u1-xx/&
    301  156._dp)/110._dp)/72._dp)/42._dp)/20._dp)/6._dp
    302 endif
    303 end function sinoxm_d
    304 
    310 function sinox_d(x) result(r)! [sinox]
    311 use pietc, only: u1
    312 implicit none
    313 real(dp),intent(in ):: x
    314 real(dp) :: r
    315 !=============================================================================
    316 r=sinoxm(x)+u1
    317 end function sinox_d
    318 
    324 function sinhoxm_d(x) result(r)! [sinhoxm]
    325 use pietc, only: u1
    326 implicit none
    327 real(dp),intent(in ):: x
    328 real(dp) :: r
    329 !-----------------------------------------------------------------------------
    330 real(dp):: xx
    331 !=============================================================================
    332 xx=x*x
    333 if(xx > .05_dp)then; r=sinh(x)/x-u1
    334 else; r=xx*(u1+xx*(u1+xx*(u1+xx*(u1+xx*(u1+xx/&
    335  156._dp)/110._dp)/72._dp)/42._dp)/20._dp)/6._dp
    336 endif
    337 end function sinhoxm_d
    338 
    344 function sinhox_d(x) result(r)! [sinhox]
    345 use pietc, only: u1
    346 implicit none
    347 real(dp),intent(in ):: x
    348 real(dp) :: r
    349 !=============================================================================
    350 r=sinhoxm(x)+u1
    351 end function sinhox_d
    352 
    353 end module pfun
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    +
    real(dp) function sinox_d(x)
    Evaluate the symmetric real function sin(x)/x.
    Definition: pfun.f90:311
    +
    This module is for evaluating several useful real-valued functions that are not always available in F...
    Definition: pfun.f90:11
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    + +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    real(sp) function havh_s(t)
    Hyperbolic-haversine for single precision real (for pseudosphere geometry).
    Definition: pfun.f90:118
    + +
    real(dp) function gd_d(x)
    Gudermannian function (related to Mercator map projections)
    Definition: pfun.f90:54
    +
    real(dp), parameter o5
    fifth
    Definition: pietc.f90:35
    +
    real(dp) function sinhox_d(x)
    Evaluate the symmetric real function sinh(x)/x.
    Definition: pfun.f90:345
    +
    real(sp) function sech_s(x)
    Hyperbolic secant for single precision real.
    Definition: pfun.f90:234
    +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    + +
    real(dp) function havh_d(t)
    Hyperbolic-haversine for double precision real (for pseudosphere geometry).
    Definition: pfun.f90:131
    + +
    real(sp) function gd_s(x)
    Gudermannian function (related to Mercator map projections)
    Definition: pfun.f90:41
    +
    real(dp) function sechs_d(x)
    Hyperbolic secant-squared function (logistic distribution).
    Definition: pfun.f90:279
    +
    real(dp) function sinhoxm_d(x)
    Evaluate the symmetric real function sinh(x)/x-1.
    Definition: pfun.f90:325
    + +
    real(dp) function ahavh_d(a)
    Hyperbolic arc-haversine for double precision real.
    Definition: pfun.f90:185
    +
    real(dp) function sech_d(x)
    Hyperbolic secant for double precision real.
    Definition: pfun.f90:251
    + + +
    real(dp) function hav_d(t)
    Haversine function for double precision real (for geometry on the sphere).
    Definition: pfun.f90:103
    +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    + +
    real(dp) function sinoxm_d(x)
    Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0.
    Definition: pfun.f90:291
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    real(dp) function atanh_d(t)
    Hyperbolic arc-tangent for double precision real.
    Definition: pfun.f90:216
    + +
    real(sp) function sechs_s(x)
    Hyperbolic secant-squared function (logistic distribution).
    Definition: pfun.f90:267
    +
    real(sp) function ahavh_s(a)
    Hyperbolic arc-haversine for single precision real.
    Definition: pfun.f90:172
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    real(sp) function hav_s(t)
    Haversine function for single precision real (for geometry on the sphere).
    Definition: pfun.f90:90
    +
    real(dp), parameter o3
    third
    Definition: pietc.f90:33
    + + +
    real(dp) function gdi_d(y)
    Inverse Gudermannian function for double precision real.
    Definition: pfun.f90:78
    +
    real(sp) function ahav_s(a)
    Arc-haversine function for single precision real.
    Definition: pfun.f90:144
    + +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    + +
    real(sp) function gdi_s(y)
    Inverse Gudermannian function for single precision real.
    Definition: pfun.f90:66
    +
    real(sp) function atanh_s(t)
    Hyperbolic arc-tangent for single precision real.
    Definition: pfun.f90:198
    +
    real(dp) function ahav_d(a)
    Arc-haversine function for double precision real.
    Definition: pfun.f90:157
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pietc_8f90.html b/ver-1.11.0/grid_tools/pietc_8f90.html new file mode 100644 index 000000000..dcb3fbfaf --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc_8f90.html @@ -0,0 +1,762 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pietc.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pietc.f90 File Reference
    +
    +
    + +

    Double-precision constants. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  pietc
     Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    complex(dpc), parameter pietc::c0 =(u0, u0)
     complex zero More...
     
    complex(dpc), parameter pietc::c1 =(u1, u0)
     complex one More...
     
    complex(dpc), parameter pietc::ci =(u0, u1)
     complex i=sqrt(-1) More...
     
    complex(dpc), parameter pietc::cipi =ci*pi
     complex i*pi More...
     
    real(dp), parameter pietc::dtor =pi/180
     Degrees to radians. More...
     
    real(dp), parameter pietc::euler =0.57721566490153286060651209008240243104215933593992359880e0_dp
     Euler-Mascheroni constant. More...
     
    logical, parameter pietc::f =.false.
     for pain-relief in logical ops More...
     
    complex(dpc), parameter pietc::mc1 =-c1
     complex minus-one More...
     
    complex(dpc), parameter pietc::mci =-ci
     complex minus-i More...
     
    real(dp), parameter pietc::mo2 =-o2
     minus-half More...
     
    real(dp), parameter pietc::mo3 =-o3
     minus-third More...
     
    real(dp), parameter pietc::mo4 =-o4
     minus-fourth More...
     
    real(dp), parameter pietc::mo5 =-o5
     minus-fifth More...
     
    real(dp), parameter pietc::mo6 =-o6
     minus-sixth More...
     
    real(dp), parameter pietc::ms10 =-s10
     minus-sine(10 deg) More...
     
    real(dp), parameter pietc::ms11 =-s11
     minus-sine(90/8 deg) More...
     
    real(dp), parameter pietc::ms13 =-s13
     minus-sine(90/7 deg) More...
     
    real(dp), parameter pietc::ms15 =-s15
     minus-sine(15 deg) More...
     
    real(dp), parameter pietc::ms18 =-s18
     minus-sine(18 deg) More...
     
    real(dp), parameter pietc::ms20 =-s20
     minus-sine(20 deg) More...
     
    real(dp), parameter pietc::ms22 =-s22
     minus-sine(22.5 deg) More...
     
    real(dp), parameter pietc::ms26 =-s26
     minus-sine(90*2/7 deg) More...
     
    real(dp), parameter pietc::ms30 =-s30
     minus-sine(30 deg) More...
     
    real(dp), parameter pietc::ms34 =-s34
     minus-sine(90*3/8 deg) More...
     
    real(dp), parameter pietc::ms36 =-s36
     minus-sine(36 deg) More...
     
    real(dp), parameter pietc::ms39 =-s39
     minus-sine(90*3/7 deg) More...
     
    real(dp), parameter pietc::ms40 =-s40
     minus-sine(40 deg) More...
     
    real(dp), parameter pietc::ms45 =-s45
     minus-sine(45 deg) More...
     
    real(dp), parameter pietc::ms50 =-s50
     minus-sine(50 deg) More...
     
    real(dp), parameter pietc::ms51 =-s51
     minus-sine(90*4/7 deg) More...
     
    real(dp), parameter pietc::ms54 =-s54
     minus-sine(54 deg) More...
     
    real(dp), parameter pietc::ms56 =-s56
     minus-sine(90*5/8 deg) More...
     
    real(dp), parameter pietc::ms60 =-s60
     minus-sine(60 deg) More...
     
    real(dp), parameter pietc::ms64 =-s64
     minus-sine(90*5/7 deg) More...
     
    real(dp), parameter pietc::ms68 =-s68
     minus-sine(67.5 deg) More...
     
    real(dp), parameter pietc::ms70 =-s70
     minus-sine(70 deg) More...
     
    real(dp), parameter pietc::ms72 =-s72
     minus-sine(72 deg) More...
     
    real(dp), parameter pietc::ms75 =-s75
     minus-sine(75 deg) More...
     
    real(dp), parameter pietc::ms77 =-s77
     minus-sine(90*6/7 deg) More...
     
    real(dp), parameter pietc::ms79 =-s79
     minus-sine(90*7/8 deg) More...
     
    real(dp), parameter pietc::ms80 =-s80
     minus-sine(80 deg) More...
     
    real(dp), parameter pietc::mu1 =-u1
     minus-one More...
     
    real(dp), parameter pietc::mu2 =-u2
     minus-two More...
     
    real(dp), parameter pietc::mu3 =-u3
     minus-three More...
     
    real(dp), parameter pietc::mu4 =-u4
     minus-four More...
     
    real(dp), parameter pietc::mu5 =-u5
     minus-five More...
     
    real(dp), parameter pietc::mu6 =-u6
     minus-six More...
     
    real(dp), parameter pietc::o2 =u1/u2
     half More...
     
    real(dp), parameter pietc::o3 =u1/u3
     third More...
     
    real(dp), parameter pietc::o4 =u1/u4
     fourth More...
     
    real(dp), parameter pietc::o5 =u1/u5
     fifth More...
     
    real(dp), parameter pietc::o6 =u1/u6
     sixth More...
     
    real(dp), parameter pietc::or2 =u1/r2
     1. More...
     
    real(dp), parameter pietc::or3 =u1/r3
     1. More...
     
    real(dp), parameter pietc::or5 =u1/r5
     1. More...
     
    real(dp), parameter pietc::phi =1.6180339887498948482045868343656381177203091798057628621354e0_dp
     Golden number. More...
     
    real(dp), parameter pietc::pi =3.1415926535897932384626433832795028841971693993751058209749e0_dp
     Pi. More...
     
    real(dp), parameter pietc::pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_dp
     Pi*2. More...
     
    real(dp), parameter pietc::pih =1.5707963267948966192313216916397514420985846996875529104874e0_dp
     pi*half More...
     
    real(dp), parameter pietc::r2 =1.4142135623730950488016887242096980785696718753769480731766e0_dp
     Square root of 2. More...
     
    real(dp), parameter pietc::r3 =1.7320508075688772935274463415058723669428052538103806280558e0_dp
     Square root of 3. More...
     
    real(dp), parameter pietc::r5 =2.2360679774997896964091736687312762354406183596115257242708e0_dp
     Square root of 5. More...
     
    real(dp), parameter pietc::rpi =1.7724538509055160272981674833411451827975494561223871282138e0_dp
     square root of pi More...
     
    real(dp), parameter pietc::rtod =180/pi
     radians to degrees More...
     
    real(dp), parameter pietc::s10 =.173648177666930348851716626769314796000375677184069387236241e0_dp
     sine(10 deg) More...
     
    real(dp), parameter pietc::s11 =.195090322016128267848284868477022240927691617751954807754502e0_dp
     sine(90/8 deg) More...
     
    real(dp), parameter pietc::s13 =.222520933956314404288902564496794759466355568764544955311987e0_dp
     sine(90/7 deg) More...
     
    real(dp), parameter pietc::s15 =.258819045102520762348898837624048328349068901319930513814003e0_dp
     sine(15 deg) More...
     
    real(dp), parameter pietc::s18 =.309016994374947424102293417182819058860154589902881431067724e0_dp
     sine(18 deg) More...
     
    real(dp), parameter pietc::s20 =.342020143325668733044099614682259580763083367514160628465048e0_dp
     sine(20 deg) More...
     
    real(dp), parameter pietc::s22 =.382683432365089771728459984030398866761344562485627041433800e0_dp
     sine(22.5 deg) More...
     
    real(dp), parameter pietc::s26 =.433883739117558120475768332848358754609990727787459876444547e0_dp
     sine(90*2/7 deg) More...
     
    real(dp), parameter pietc::s30 =o2
     sine(30 deg) More...
     
    real(dp), parameter pietc::s34 =.555570233019602224742830813948532874374937190754804045924153e0_dp
     sine(90*3/8 deg) More...
     
    real(dp), parameter pietc::s36 =.587785252292473129168705954639072768597652437643145991072272e0_dp
     sine(36 deg) More...
     
    real(dp), parameter pietc::s39 =.623489801858733530525004884004239810632274730896402105365549e0_dp
     sine(90*3/7 deg) More...
     
    real(dp), parameter pietc::s40 =.642787609686539326322643409907263432907559884205681790324977e0_dp
     sine(40 deg) More...
     
    real(dp), parameter pietc::s45 =or2
     sine(45 deg) More...
     
    real(dp), parameter pietc::s50 =.766044443118978035202392650555416673935832457080395245854045e0_dp
     sine(50 deg) More...
     
    real(dp), parameter pietc::s51 =.781831482468029808708444526674057750232334518708687528980634e0_dp
     sine(90*4/7 deg) More...
     
    real(dp), parameter pietc::s54 =.809016994374947424102293417182819058860154589902881431067724e0_dp
     sine(54 deg) More...
     
    real(dp), parameter pietc::s56 =.831469612302545237078788377617905756738560811987249963446124e0_dp
     sine(90*5/8 deg) More...
     
    real(dp), parameter pietc::s60 =r3*o2
     sine(60 deg) More...
     
    real(dp), parameter pietc::s64 =.900968867902419126236102319507445051165919162131857150053562e0_dp
     sine(90*5/7 deg) More...
     
    real(dp), parameter pietc::s68 =.923879532511286756128183189396788286822416625863642486115097e0_dp
     sine(67.5 deg) More...
     
    real(dp), parameter pietc::s70 =.939692620785908384054109277324731469936208134264464633090286e0_dp
     sine(70 deg) More...
     
    real(dp), parameter pietc::s72 =.951056516295153572116439333379382143405698634125750222447305e0_dp
     sine(72 deg) More...
     
    real(dp), parameter pietc::s75 =.965925826289068286749743199728897367633904839008404550402343e0_dp
     sine(75 deg) More...
     
    real(dp), parameter pietc::s77 =.974927912181823607018131682993931217232785800619997437648079e0_dp
     sine(90*6/7 deg) More...
     
    real(dp), parameter pietc::s79 =.980785280403230449126182236134239036973933730893336095002916e0_dp
     sine(90*7/8 deg) More...
     
    real(dp), parameter pietc::s80 =.984807753012208059366743024589523013670643251719842418790025e0_dp
     sine(80 deg) More...
     
    logical, parameter pietc::t =.true.
     for pain-relief in logical ops More...
     
    real(dp), parameter pietc::u0 =0_dp
     zero More...
     
    real(dp), parameter pietc::u1 =1_dp
     one More...
     
    real(dp), parameter pietc::u2 =2_dp
     two More...
     
    real(dp), parameter pietc::u3 =3_dp
     three More...
     
    real(dp), parameter pietc::u4 =4_dp
     four More...
     
    real(dp), parameter pietc::u5 =5_dp
     five More...
     
    real(dp), parameter pietc::u6 =6_dp
     six More...
     
    complex(dpc), parameter pietc::z000 =c1
     exp(2*pi*i*0) More...
     
    complex(dpc), parameter pietc::z010 =( s80, s10)
     exp(2*pi*i/36) More...
     
    complex(dpc), parameter pietc::z011 =( s79, s11)
     exp(2*pi*i/32) More...
     
    complex(dpc), parameter pietc::z013 =( s77, s13)
     exp(2*pi*i/28) More...
     
    complex(dpc), parameter pietc::z015 =( s75, s15)
     exp(2*pi*i/24) More...
     
    complex(dpc), parameter pietc::z018 =( s72, s18)
     exp(2*pi*i/20) More...
     
    complex(dpc), parameter pietc::z020 =( s70, s20)
     exp(2*pi*i/18) More...
     
    complex(dpc), parameter pietc::z022 =( s68, s22)
     exp(2*pi*i/16) More...
     
    complex(dpc), parameter pietc::z026 =( s64, s26)
     exp(2*pi*i/14) More...
     
    complex(dpc), parameter pietc::z030 =( s60, s30)
     exp(2*pi*i/12) More...
     
    complex(dpc), parameter pietc::z034 =( s56, s34)
     exp(2*pi*i*3/32) More...
     
    complex(dpc), parameter pietc::z036 =( s54, s36)
     exp(2*pi*i/10) More...
     
    complex(dpc), parameter pietc::z039 =( s51, s39)
     exp(2*pi*i*3/28) More...
     
    complex(dpc), parameter pietc::z040 =( s50, s40)
     exp(2*pi*i/9) More...
     
    complex(dpc), parameter pietc::z045 =( s45, s45)
     exp(2*pi*i/8) More...
     
    complex(dpc), parameter pietc::z050 =( s40, s50)
     exp(2*pi*i*5/36) More...
     
    complex(dpc), parameter pietc::z051 =( s39, s51)
     exp(2*pi*i/7) More...
     
    complex(dpc), parameter pietc::z054 =( s36, s54)
     exp(2*pi*i*3/20) More...
     
    complex(dpc), parameter pietc::z056 =( s34, s56)
     exp(2*pi*i*5/32) More...
     
    complex(dpc), parameter pietc::z060 =( s30, s60)
     exp(2*pi*i/6) More...
     
    complex(dpc), parameter pietc::z064 =( s26, s64)
     exp(2*pi*i*5/28) More...
     
    complex(dpc), parameter pietc::z068 =( s22, s68)
     exp(2*pi*i*3/16) More...
     
    complex(dpc), parameter pietc::z070 =( s20, s70)
     exp(2*pi*i*7/36) More...
     
    complex(dpc), parameter pietc::z072 =( s18, s72)
     exp(2*pi*i/5) More...
     
    complex(dpc), parameter pietc::z075 =( s15, s75)
     exp(2*pi*i*5/24) More...
     
    complex(dpc), parameter pietc::z077 =( s13, s77)
     exp(2*pi*i*3/14) More...
     
    complex(dpc), parameter pietc::z079 =( s11, s79)
     exp(2*pi*i*7/32) More...
     
    complex(dpc), parameter pietc::z080 =( s10, s80)
     exp(2*pi*i*2/9) More...
     
    complex(dpc), parameter pietc::z090 =ci
     exp(2*pi*i/4) More...
     
    complex(dpc), parameter pietc::z100 =(ms10, s80)
     exp(2*pi*i*5/18) More...
     
    complex(dpc), parameter pietc::z101 =(ms11, s79)
     exp(2*pi*i*9/32) More...
     
    complex(dpc), parameter pietc::z103 =(ms13, s77)
     exp(2*pi*i*2/7) More...
     
    complex(dpc), parameter pietc::z105 =(ms15, s75)
     exp(2*pi*i*7/24) More...
     
    complex(dpc), parameter pietc::z108 =(ms18, s72)
     exp(2*pi*i*3/10) More...
     
    complex(dpc), parameter pietc::z110 =(ms20, s70)
     exp(2*pi*i*11/36) More...
     
    complex(dpc), parameter pietc::z112 =(ms22, s68)
     exp(2*pi*i*5/16) More...
     
    complex(dpc), parameter pietc::z116 =(ms26, s64)
     exp(2*pi*i*9/28) More...
     
    complex(dpc), parameter pietc::z120 =(ms30, s60)
     exp(2*pi*i/3) More...
     
    complex(dpc), parameter pietc::z124 =(ms34, s56)
     exp(2*pi*i*11/32) More...
     
    complex(dpc), parameter pietc::z126 =(ms36, s54)
     exp(2*pi*i*7/20) More...
     
    complex(dpc), parameter pietc::z129 =(ms39, s51)
     exp(2*pi*i*5/14) More...
     
    complex(dpc), parameter pietc::z130 =(ms40, s50)
     exp(2*pi*i*13/36) More...
     
    complex(dpc), parameter pietc::z135 =(ms45, s45)
     exp(2*pi*i*3/8) More...
     
    complex(dpc), parameter pietc::z140 =(ms50, s40)
     exp(2*pi*i*7/18) More...
     
    complex(dpc), parameter pietc::z141 =(ms51, s39)
     exp(2*pi*i*11/28) More...
     
    complex(dpc), parameter pietc::z144 =(ms54, s36)
     exp(2*pi*i*2/5) More...
     
    complex(dpc), parameter pietc::z146 =(ms56, s34)
     exp(2*pi*i*13/32) More...
     
    complex(dpc), parameter pietc::z150 =(ms60, s30)
     exp(2*pi*i*5/12) More...
     
    complex(dpc), parameter pietc::z154 =(ms64, s26)
     exp(2*pi*i*3/7) More...
     
    complex(dpc), parameter pietc::z158 =(ms68, s22)
     exp(2*pi*i*7/16) More...
     
    complex(dpc), parameter pietc::z160 =(ms70, s20)
     exp(2*pi*i*4/9) More...
     
    complex(dpc), parameter pietc::z162 =(ms72, s18)
     exp(2*pi*i*9/20) More...
     
    complex(dpc), parameter pietc::z165 =(ms75, s15)
     exp(2*pi*i*11/24) More...
     
    complex(dpc), parameter pietc::z167 =(ms77, s13)
     exp(2*pi*i*13/28) More...
     
    complex(dpc), parameter pietc::z169 =(ms79, s11)
     exp(2*pi*i*15/32) More...
     
    complex(dpc), parameter pietc::z170 =(ms80, s10)
     exp(2*pi*i*17/36) More...
     
    complex(dpc), parameter pietc::z180 =-z000
     exp(2*pi*i/2) More...
     
    complex(dpc), parameter pietc::z190 =-z010
     exp(2*pi*i*19/36) More...
     
    complex(dpc), parameter pietc::z191 =-z011
     exp(2*pi*i*17/32) More...
     
    complex(dpc), parameter pietc::z193 =-z013
     exp(2*pi*i*15/28) More...
     
    complex(dpc), parameter pietc::z195 =-z015
     exp(2*pi*i*13/24) More...
     
    complex(dpc), parameter pietc::z198 =-z018
     exp(2*pi*i*11/20) More...
     
    complex(dpc), parameter pietc::z200 =-z020
     exp(2*pi*i*5/9) More...
     
    complex(dpc), parameter pietc::z202 =-z022
     exp(2*pi*i*9/16) More...
     
    complex(dpc), parameter pietc::z206 =-z026
     exp(2*pi*i*4/7) More...
     
    complex(dpc), parameter pietc::z210 =-z030
     exp(2*pi*i*7/12) More...
     
    complex(dpc), parameter pietc::z214 =-z034
     exp(2*pi*i*19/32) More...
     
    complex(dpc), parameter pietc::z216 =-z036
     exp(2*pi*i*3/5) More...
     
    complex(dpc), parameter pietc::z219 =-z039
     exp(2*pi*i*17/28) More...
     
    complex(dpc), parameter pietc::z220 =-z040
     exp(2*pi*i*11/18) More...
     
    complex(dpc), parameter pietc::z225 =-z045
     exp(2*pi*i*5/8) More...
     
    complex(dpc), parameter pietc::z230 =-z050
     exp(2*pi*i*23/36) More...
     
    complex(dpc), parameter pietc::z231 =-z051
     exp(2*pi*i*9/14) More...
     
    complex(dpc), parameter pietc::z234 =-z054
     exp(2*pi*i*13/20) More...
     
    complex(dpc), parameter pietc::z236 =-z056
     exp(2*pi*i*21/32) More...
     
    complex(dpc), parameter pietc::z240 =-z060
     exp(2*pi*i*2/3) More...
     
    complex(dpc), parameter pietc::z244 =-z064
     exp(2*pi*i*19/28) More...
     
    complex(dpc), parameter pietc::z248 =-z068
     exp(2*pi*i*11/16) More...
     
    complex(dpc), parameter pietc::z250 =-z070
     exp(2*pi*i*25/36) More...
     
    complex(dpc), parameter pietc::z252 =-z072
     exp(2*pi*i*7/10) More...
     
    complex(dpc), parameter pietc::z255 =-z075
     exp(2*pi*i*17/24) More...
     
    complex(dpc), parameter pietc::z257 =-z077
     exp(2*pi*i*5/7) More...
     
    complex(dpc), parameter pietc::z259 =-z079
     exp(2*pi*i*23/32) More...
     
    complex(dpc), parameter pietc::z260 =-z080
     exp(2*pi*i*13/18) More...
     
    complex(dpc), parameter pietc::z270 =-z090
     exp(2*pi*i*3/4) More...
     
    complex(dpc), parameter pietc::z280 =-z100
     exp(2*pi*i*7/9) More...
     
    complex(dpc), parameter pietc::z281 =-z101
     exp(2*pi*i*25/32) More...
     
    complex(dpc), parameter pietc::z283 =-z103
     exp(2*pi*i*11/14) More...
     
    complex(dpc), parameter pietc::z285 =-z105
     exp(2*pi*i*19/24) More...
     
    complex(dpc), parameter pietc::z288 =-z108
     exp(2*pi*i*4/5) More...
     
    complex(dpc), parameter pietc::z290 =-z110
     exp(2*pi*i*29/36) More...
     
    complex(dpc), parameter pietc::z292 =-z112
     exp(2*pi*i*13/16) More...
     
    complex(dpc), parameter pietc::z296 =-z116
     exp(2*pi*i*23/28) More...
     
    complex(dpc), parameter pietc::z300 =-z120
     exp(2*pi*i*5/6) More...
     
    complex(dpc), parameter pietc::z304 =-z124
     exp(2*pi*i*27/32) More...
     
    complex(dpc), parameter pietc::z306 =-z126
     exp(2*pi*i*17/20) More...
     
    complex(dpc), parameter pietc::z309 =-z129
     exp(2*pi*i*6/7) More...
     
    complex(dpc), parameter pietc::z310 =-z130
     exp(2*pi*i*31/36) More...
     
    complex(dpc), parameter pietc::z315 =-z135
     exp(2*pi*i*7/8) More...
     
    complex(dpc), parameter pietc::z320 =-z140
     exp(2*pi*i*8/9) More...
     
    complex(dpc), parameter pietc::z321 =-z141
     exp(2*pi*i*25/28) More...
     
    complex(dpc), parameter pietc::z324 =-z144
     exp(2*pi*i*9/10) More...
     
    complex(dpc), parameter pietc::z326 =-z146
     exp(2*pi*i*29/32) More...
     
    complex(dpc), parameter pietc::z330 =-z150
     exp(2*pi*i*11/12) More...
     
    complex(dpc), parameter pietc::z334 =-z154
     exp(2*pi*i*13/14) More...
     
    complex(dpc), parameter pietc::z338 =-z158
     exp(2*pi*i*15/16) More...
     
    complex(dpc), parameter pietc::z340 =-z160
     exp(2*pi*i*17/18) More...
     
    complex(dpc), parameter pietc::z342 =-z162
     exp(2*pi*i*19/20) More...
     
    complex(dpc), parameter pietc::z345 =-z165
     exp(2*pi*i*23/24) More...
     
    complex(dpc), parameter pietc::z347 =-z167
     exp(2*pi*i*27/28) More...
     
    complex(dpc), parameter pietc::z349 =-z169
     exp(2*pi*i*31/32) More...
     
    complex(dpc), parameter pietc::z350 =-z170
     exp(2*pi*i*35/36) More...
     
    +

    Detailed Description

    +

    Double-precision constants.

    +
    Author
    R. J. Purser
    +
    Date
    2014
    + +

    Definition in file pietc.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pietc_8f90.js b/ver-1.11.0/grid_tools/pietc_8f90.js new file mode 100644 index 000000000..8772639ec --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc_8f90.js @@ -0,0 +1,214 @@ +var pietc_8f90 = +[ + [ "c0", "pietc_8f90.html#a8955ae3e4acf1e0c5d3141c9977cc62c", null ], + [ "c1", "pietc_8f90.html#aaf1b5a10ad0c38bb38ab850f2b36aafa", null ], + [ "ci", "pietc_8f90.html#a18214b0b284b2c628d9e7c848164b904", null ], + [ "cipi", "pietc_8f90.html#a72d67cd59ffa7614f9de9e2f19d065aa", null ], + [ "dtor", "pietc_8f90.html#a0e5882b8de6720f66db6ce7dd8c2f856", null ], + [ "euler", "pietc_8f90.html#acdf00b4d494b3564fe56504d257cebb7", null ], + [ "f", "pietc_8f90.html#a1a59f6eeafd9442451ae14323395e362", null ], + [ "mc1", "pietc_8f90.html#a66f66de805f3d59d5c1e718da6313584", null ], + [ "mci", "pietc_8f90.html#a4e58e0dd26c3e428bf75a19465f68377", null ], + [ "mo2", "pietc_8f90.html#aa0c941809aa68996b652843685a9433e", null ], + [ "mo3", "pietc_8f90.html#a2768edc18c2b2bd167887378e5de47e2", null ], + [ "mo4", "pietc_8f90.html#a00b9bea516ae1b82199e9fd2eab930ea", null ], + [ "mo5", "pietc_8f90.html#a000aa8839ccd2689d9ef206336f59295", null ], + [ "mo6", "pietc_8f90.html#a3ed566516e45ccace556a4ef84e1cb3f", null ], + [ "ms10", "pietc_8f90.html#af19bbd02505d4f191d4192a0ef98fe1a", null ], + [ "ms11", "pietc_8f90.html#ae51b46e8e64165cd44fd6c43c377a0a1", null ], + [ "ms13", "pietc_8f90.html#a9a9d37a281e60cc0447442db2306bc87", null ], + [ "ms15", "pietc_8f90.html#a94d9c31511b78f80058aa0211314c144", null ], + [ "ms18", "pietc_8f90.html#a9f204852aef0e455941418681db54f87", null ], + [ "ms20", "pietc_8f90.html#a6344dab263f2203e32ca685097de67ab", null ], + [ "ms22", "pietc_8f90.html#a282b3ad95ab5dc0e3ad8ea73df787753", null ], + [ "ms26", "pietc_8f90.html#a0cbb7dc002305869d04068e4180ba016", null ], + [ "ms30", "pietc_8f90.html#a064ddae6da1c591bd29f809348a76adf", null ], + [ "ms34", "pietc_8f90.html#a2974bfaaa13ec9d0ef9246526dd50e76", null ], + [ "ms36", "pietc_8f90.html#ab2dbf2423954bed11ff54b0f20b8e530", null ], + [ "ms39", "pietc_8f90.html#adca783e645fd9a8dd67df260c579c07e", null ], + [ "ms40", "pietc_8f90.html#a4974c9565fcef49b95197f1ff03f7cd5", null ], + [ "ms45", "pietc_8f90.html#a792a5ce38e4d85e83845af700cae3a0b", null ], + [ "ms50", "pietc_8f90.html#ae90680c017d96fe2d27e60ddc7a7c932", null ], + [ "ms51", "pietc_8f90.html#a1dcc977f6cdc92ee0bb79afc06232105", null ], + [ "ms54", "pietc_8f90.html#a65a2663e8f089efaf299d89469ccc02c", null ], + [ "ms56", "pietc_8f90.html#a08f793f59d5dd69cd6f9487238cb438e", null ], + [ "ms60", "pietc_8f90.html#afb0a7faf7bcd6a1137f055a6a6b305f7", null ], + [ "ms64", "pietc_8f90.html#a0cb8874dcca15deeab71981da6bc8202", null ], + [ "ms68", "pietc_8f90.html#a58eea21cf1bc5b523e8cb3a2e1a29e56", null ], + [ "ms70", "pietc_8f90.html#aaf59c9bcf264de2d31c9b01ebcfef75d", null ], + [ "ms72", "pietc_8f90.html#aaf8809769769a5b4872d3e364a6fd3f4", null ], + [ "ms75", "pietc_8f90.html#a785daf753e83ef22611ee7093c19ebaf", null ], + [ "ms77", "pietc_8f90.html#a620176f9018e3af1a59d6426794025ef", null ], + [ "ms79", "pietc_8f90.html#aa9ecf48f808634547b32f6110c959439", null ], + [ "ms80", "pietc_8f90.html#a1b1d0c87bd1ce4228c9c14c801de2001", null ], + [ "mu1", "pietc_8f90.html#a05b8b7d4f69c62e830913d4b315272a6", null ], + [ "mu2", "pietc_8f90.html#a809453e744cb5a40dcde3576d2793384", null ], + [ "mu3", "pietc_8f90.html#adaabe1e87566a8b2fce89167d20e1496", null ], + [ "mu4", "pietc_8f90.html#a480b5baae7340bddd03111dbfc07afef", null ], + [ "mu5", "pietc_8f90.html#a985de8b447273b87e9ee1eb062153d8f", null ], + [ "mu6", "pietc_8f90.html#a0f08c13dfca45ff682aa6d96dc0bf132", null ], + [ "o2", "pietc_8f90.html#a31fe36a99e91fd868ca1f99359007416", null ], + [ "o3", "pietc_8f90.html#a6511999188177426a786497c7e87a41a", null ], + [ "o4", "pietc_8f90.html#a6ddd1baf56a1b87a2966bb34f467649a", null ], + [ "o5", "pietc_8f90.html#a1e87558f0d2b0d5a64dda49a44a4bacb", null ], + [ "o6", "pietc_8f90.html#a8025ae9ef5f7e5f022429497a8abeef9", null ], + [ "or2", "pietc_8f90.html#a98f9306c62c774f98a6f24c883f79032", null ], + [ "or3", "pietc_8f90.html#a225f45c4bd75ad39053f8c58da7ad40b", null ], + [ "or5", "pietc_8f90.html#a0092887c19b4e6254b3d948a6f8bc94f", null ], + [ "phi", "pietc_8f90.html#a8a20e41dda229effcf92d22a70ce91d5", null ], + [ "pi", "pietc_8f90.html#ac734e2e2645ccc50eb0c09e65fdd95ef", null ], + [ "pi2", "pietc_8f90.html#ae492a70e0f3cf406be18932dc663cb15", null ], + [ "pih", "pietc_8f90.html#a6a02b08d60e64caafe002e2d8b02efaf", null ], + [ "r2", "pietc_8f90.html#a3c11921c034ed0320b9902bf4b2a03d2", null ], + [ "r3", "pietc_8f90.html#a59ed14f765e2aadca3f681e9ce3a04d1", null ], + [ "r5", "pietc_8f90.html#ab9dc3e6a41d4e9188d94995fc401bf60", null ], + [ "rpi", "pietc_8f90.html#a62333cfdbb14baa18091b4faa689f660", null ], + [ "rtod", "pietc_8f90.html#a57d89085283cb2a7bfd9152324b4b463", null ], + [ "s10", "pietc_8f90.html#ac3b72078045420fb497782ddd5b16c50", null ], + [ "s11", "pietc_8f90.html#ad409b167e861a4656fa1f6e662ff8f9a", null ], + [ "s13", "pietc_8f90.html#af234094d9b4647d52c5b5b987eaeb5c3", null ], + [ "s15", "pietc_8f90.html#a44d7a0198a54e6f94aa98f8f400c55e8", null ], + [ "s18", "pietc_8f90.html#a582df1eda80d9b8e7989c7b06fa00f9d", null ], + [ "s20", "pietc_8f90.html#afb354d2b14ec6235e1eca7671ec01620", null ], + [ "s22", "pietc_8f90.html#a08fa55c7ef0a4fcb702b40cacfb1c505", null ], + [ "s26", "pietc_8f90.html#a2708b385f05478b9ea5fccd0ac4c9fc7", null ], + [ "s30", "pietc_8f90.html#a3ca30ab35c2374be0382986cab0ffb04", null ], + [ "s34", "pietc_8f90.html#a1226f7daf08d5e48c06cb4808cfe0573", null ], + [ "s36", "pietc_8f90.html#a69896ff84954d5b31e086153e5f9e0f6", null ], + [ "s39", "pietc_8f90.html#aedca26d8a554f78dea5a2617a4b4a2a6", null ], + [ "s40", "pietc_8f90.html#ae4c7304f5195fc56e355895f1c696def", null ], + [ "s45", "pietc_8f90.html#a6ec618c042c266eebb9c8fe369d692be", null ], + [ "s50", "pietc_8f90.html#a1f13f6eca17fbfbb8e385f25c82bc9c2", null ], + [ "s51", "pietc_8f90.html#a35424b6416d73103c6d821c52d7284a2", null ], + [ "s54", "pietc_8f90.html#a4611c0657a12873ee8a29162c0ca150d", null ], + [ "s56", "pietc_8f90.html#ac06beca2bcaa201876833b4916a00545", null ], + [ "s60", "pietc_8f90.html#ae307dcb26a4c4aaad8aeecbf38a9ae5a", null ], + [ "s64", "pietc_8f90.html#a38eedf82788d5e3206b678ea21c3c070", null ], + [ "s68", "pietc_8f90.html#a788eef5cd96c8c9b5d2f941f1c71c986", null ], + [ "s70", "pietc_8f90.html#aac6789d00820c1735870df16b543fb9e", null ], + [ "s72", "pietc_8f90.html#a752cd6e2509c06cc3f842439800f390d", null ], + [ "s75", "pietc_8f90.html#a92f549bfe71b473b1ee2e81493387bf9", null ], + [ "s77", "pietc_8f90.html#a1941aac9a0ac3c7b2b4123c41e60c01c", null ], + [ "s79", "pietc_8f90.html#aa0aca0ec4b8a0eb192e2cc508bd78670", null ], + [ "s80", "pietc_8f90.html#a232707ecdb74237620f2673c8843a048", null ], + [ "t", "pietc_8f90.html#abc0f77ce68c79a5021a21d020cbf840d", null ], + [ "u0", "pietc_8f90.html#ac4b2c921dc2126df39de4d45ce464dc2", null ], + [ "u1", "pietc_8f90.html#a2c3ccea1400f40b1e25fd0b31079054c", null ], + [ "u2", "pietc_8f90.html#ad40c60cf454a23bacb142e0e3af48960", null ], + [ "u3", "pietc_8f90.html#a6230c3fbe5dba6e11a215828c69a95f4", null ], + [ "u4", "pietc_8f90.html#ab4764b5889301ae824fd970d633fbeae", null ], + [ "u5", "pietc_8f90.html#a70068593e935c2f3246cf67a8d43e80c", null ], + [ "u6", "pietc_8f90.html#a90a7adc3caa520b2ef619efb3ce5b11a", null ], + [ "z000", "pietc_8f90.html#a6fe8e43040fb8ea6bd5fda08cd5abb05", null ], + [ "z010", "pietc_8f90.html#ad0cab955384a4c1508fcb80b664d6b1f", null ], + [ "z011", "pietc_8f90.html#a4156f9986d97aaa89b2dc0352e6150b8", null ], + [ "z013", "pietc_8f90.html#a3924a4ee9e826f8da350bcd363b1e692", null ], + [ "z015", "pietc_8f90.html#a759201aec96e392cc821b97e51f72254", null ], + [ "z018", "pietc_8f90.html#aef4690197a0da926947010773b0df79c", null ], + [ "z020", "pietc_8f90.html#acf79e22731f12a6cb0f935a4c21c10be", null ], + [ "z022", "pietc_8f90.html#a3bcf3ca19122cd6ae9281fbd9b4dff4d", null ], + [ "z026", "pietc_8f90.html#a9cc868bf116983e698dd4041ffe14c7f", null ], + [ "z030", "pietc_8f90.html#a14fab1736a8cc0b8c59783473052397d", null ], + [ "z034", "pietc_8f90.html#aeb5bd2514066fd9d82a5248b915120e2", null ], + [ "z036", "pietc_8f90.html#a141e63663450c5c71ce1051bffd1a626", null ], + [ "z039", "pietc_8f90.html#ac8377e16f05dc4f877208a7938a6a47c", null ], + [ "z040", "pietc_8f90.html#a6659ff430a6d1e68da7dd4f723f3d9db", null ], + [ "z045", "pietc_8f90.html#a407c5127975ad67d25902e7b3428fb7d", null ], + [ "z050", "pietc_8f90.html#a3aee859c34469c037ae41ef8a92cbb4b", null ], + [ "z051", "pietc_8f90.html#a34ab6f14b7510ec8bbbb5e37a691d09d", null ], + [ "z054", "pietc_8f90.html#a5a53b481f932dafb6e5ae85267168fed", null ], + [ "z056", "pietc_8f90.html#a036feef6a57b78288c26d63551888f3a", null ], + [ "z060", "pietc_8f90.html#a3fd28f57b204952311b28513d41b2a73", null ], + [ "z064", "pietc_8f90.html#aa6f2c8812cc45efc4c4f118d0ef240be", null ], + [ "z068", "pietc_8f90.html#a1d12ffc8657dd5f38dc3703e0f890d35", null ], + [ "z070", "pietc_8f90.html#a16924a9d4535d729e6213aec2b68ef42", null ], + [ "z072", "pietc_8f90.html#a5ca55f8fed660a452eb68cf863e49ebe", null ], + [ "z075", "pietc_8f90.html#a134326f3080e14924bdd20095e1e4846", null ], + [ "z077", "pietc_8f90.html#afb57bc20d995c6e1b3c9ac3fc7178148", null ], + [ "z079", "pietc_8f90.html#ac0a07e1bebe9470834d617ece10cdab9", null ], + [ "z080", "pietc_8f90.html#a796cbc1619ab79754488d3dcc180b4ac", null ], + [ "z090", "pietc_8f90.html#a03495c821c9d26b5f8ee7f4089ebe38f", null ], + [ "z100", "pietc_8f90.html#aafa31b87e4c7a748d5ef54abe2bea801", null ], + [ "z101", "pietc_8f90.html#a9956e19fb1bcdec045eb664e4563f6ba", null ], + [ "z103", "pietc_8f90.html#a05d2de09c9ef2adeb2dc68090cbbc424", null ], + [ "z105", "pietc_8f90.html#ac6a5700a1a170b6e9fa3ccfe1aa79f7b", null ], + [ "z108", "pietc_8f90.html#a5bf9578724b7dc8d63ab2465fd7a648e", null ], + [ "z110", "pietc_8f90.html#a918f738909123fbce5bebc56d2fb569b", null ], + [ "z112", "pietc_8f90.html#a43238308835a385f250c916490f93392", null ], + [ "z116", "pietc_8f90.html#a136b91649432dbb459eeaffbce99759c", null ], + [ "z120", "pietc_8f90.html#acaf0daa942c909756fedc2c2d7f4080e", null ], + [ "z124", "pietc_8f90.html#a85f48cc7eeb261f2f02d222d3d7d509a", null ], + [ "z126", "pietc_8f90.html#abcd3cf4c8c61854c8d2b355041baba70", null ], + [ "z129", "pietc_8f90.html#ab76483c1df276fde3e4bda831868d89b", null ], + [ "z130", "pietc_8f90.html#abbf4bae10dcea1fcc9ccea09710934ea", null ], + [ "z135", "pietc_8f90.html#adef6f138be177dd15d5c027d63602b7a", null ], + [ "z140", "pietc_8f90.html#ae52dcb68eed8c08b97f421256b967592", null ], + [ "z141", "pietc_8f90.html#aa63e99ec39ef39b50f066ddc78fc8049", null ], + [ "z144", "pietc_8f90.html#a4393d6e94693a4c1c8777b40e69c594c", null ], + [ "z146", "pietc_8f90.html#aa372e74f0440b2dca8cddf831322a03b", null ], + [ "z150", "pietc_8f90.html#aad9515dd5cd46885a3e2906ba881c55e", null ], + [ "z154", "pietc_8f90.html#a0fcdc4afe577fa05115cac79522b337e", null ], + [ "z158", "pietc_8f90.html#a004b9989f6515b61d17da180d52ea8ca", null ], + [ "z160", "pietc_8f90.html#ad03e0fe52b0d2b01c0b7c554c93210c8", null ], + [ "z162", "pietc_8f90.html#ad5115a67dc95cac790feb3c536241c8e", null ], + [ "z165", "pietc_8f90.html#a54ae507b146d830e0f4d4cf97766d122", null ], + [ "z167", "pietc_8f90.html#a3158d86a884e41f72b6d1a5f0af3e13a", null ], + [ "z169", "pietc_8f90.html#a9814cfa11c847f2922e420b5f13bc922", null ], + [ "z170", "pietc_8f90.html#a52d26edcccb57167fad881e9381642bc", null ], + [ "z180", "pietc_8f90.html#af209077c39f5de33599c3a66ebd87e28", null ], + [ "z190", "pietc_8f90.html#a668f71c7566fa3d817324f3b1e076dba", null ], + [ "z191", "pietc_8f90.html#a3dd8d389a274427e7498308494f0242b", null ], + [ "z193", "pietc_8f90.html#aa465e2d8c2d6d59c4714ca5db1ce217c", null ], + [ "z195", "pietc_8f90.html#aa597ef97a91353c0ad6b0747e9866c15", null ], + [ "z198", "pietc_8f90.html#ad0c4eaff456c60ba8aeb02ff48fc5928", null ], + [ "z200", "pietc_8f90.html#acbab5752d5210932b057b47ae10b04ff", null ], + [ "z202", "pietc_8f90.html#a60586ba190013e0ebc085a32387477a6", null ], + [ "z206", "pietc_8f90.html#aefad5c583c9169f82735409013d80ad6", null ], + [ "z210", "pietc_8f90.html#a4531d28424f2f92043bb84ee779cdcc4", null ], + [ "z214", "pietc_8f90.html#a34c6ad3dff8774e9269211fb6bf0bf58", null ], + [ "z216", "pietc_8f90.html#a079caf28bb36054914ab0eb912783460", null ], + [ "z219", "pietc_8f90.html#a3f0418bba35a8e10e87ba89b7047ab3c", null ], + [ "z220", "pietc_8f90.html#a426ff692eeaedc647f9f26271b23db4a", null ], + [ "z225", "pietc_8f90.html#a19341afae8214bb379e57037d04ab7be", null ], + [ "z230", "pietc_8f90.html#ab33c1392c342552420c1ebfbbb41440b", null ], + [ "z231", "pietc_8f90.html#a81d73f4af4b43a2bc2bde9a76f184f0e", null ], + [ "z234", "pietc_8f90.html#aac11c1594605c102664e86c6a36c77b7", null ], + [ "z236", "pietc_8f90.html#a0255030ec5fa5667aee368bef1b12b63", null ], + [ "z240", "pietc_8f90.html#a654cefc4aa3f41560c67df2e81c64a45", null ], + [ "z244", "pietc_8f90.html#a44de80f54f3f0d41905a0b67023c58d0", null ], + [ "z248", "pietc_8f90.html#a8f05a913bd10c6bbec89b01999f0dcf7", null ], + [ "z250", "pietc_8f90.html#a3cf7dc3cc05c640669e17cbae5400216", null ], + [ "z252", "pietc_8f90.html#a14a0b5f701cdb1ec06b230244f01febf", null ], + [ "z255", "pietc_8f90.html#aa182fc75bf00384c3307afeb8f58c41e", null ], + [ "z257", "pietc_8f90.html#a32a3ffbd503c846127175dc32e724ae0", null ], + [ "z259", "pietc_8f90.html#ac45fb427cb825d281767678e16e8cf1a", null ], + [ "z260", "pietc_8f90.html#a3652b8c5bfd5d7226d25941e49408209", null ], + [ "z270", "pietc_8f90.html#a414606ffb0174db322e33650080ac9e8", null ], + [ "z280", "pietc_8f90.html#a871ef6908570e0796561486385346940", null ], + [ "z281", "pietc_8f90.html#a5ad510619e59efe2e25d11238d8d2ab4", null ], + [ "z283", "pietc_8f90.html#a7daf538d19c223405ac4a347e959c472", null ], + [ "z285", "pietc_8f90.html#a0bea68a75589f69fd555c13a2fa1d8c7", null ], + [ "z288", "pietc_8f90.html#aed9d3ebf8c954b1a6b84be8448cf1c7a", null ], + [ "z290", "pietc_8f90.html#a725d036485b4bff0f97ac552dc5d999d", null ], + [ "z292", "pietc_8f90.html#a10ca287138e3d8a341b094a6a1b0fb7b", null ], + [ "z296", "pietc_8f90.html#aabf095168753591671ccd7d5fb0cc014", null ], + [ "z300", "pietc_8f90.html#aefe04ca970e600763144d6e280908902", null ], + [ "z304", "pietc_8f90.html#a10a40aacdf35d9a68bd513c733cc504d", null ], + [ "z306", "pietc_8f90.html#a1360826765c534a694ef654c2c60da75", null ], + [ "z309", "pietc_8f90.html#a4b87788575836af16b786c4a5cb18035", null ], + [ "z310", "pietc_8f90.html#a9ca0a5d2791bb66480ebbbe9e8259931", null ], + [ "z315", "pietc_8f90.html#a41ff9d1f7cd25dd1977a12716cbda7b9", null ], + [ "z320", "pietc_8f90.html#a2e99f006f8f1af47b9433e76e57c9088", null ], + [ "z321", "pietc_8f90.html#a9d19d472599c9c661922954d513e3892", null ], + [ "z324", "pietc_8f90.html#a71bece0f96e5b69335a64593753fd7f5", null ], + [ "z326", "pietc_8f90.html#ad7d7b3e33bf302fe4fcfe5e3d2238320", null ], + [ "z330", "pietc_8f90.html#a3076260ef24ab5a537ca19ef044b76c6", null ], + [ "z334", "pietc_8f90.html#aefebd4022ba86728225bce3f9e63a893", null ], + [ "z338", "pietc_8f90.html#a19834289deef1d95d4cc4d718df17cb9", null ], + [ "z340", "pietc_8f90.html#affa49e7bf3827daf11df126c3028db0e", null ], + [ "z342", "pietc_8f90.html#ae44896b472c61e5b4f66de26a6e0de9a", null ], + [ "z345", "pietc_8f90.html#a525e095f3d019fa6c5578eba28882564", null ], + [ "z347", "pietc_8f90.html#a11b5a7daffa81eecc573147e407df1df", null ], + [ "z349", "pietc_8f90.html#af82e6daf64caa3880e7f9462a58ef185", null ], + [ "z350", "pietc_8f90.html#a2389cd56c4999e1a32d9ac98483f04ac", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pietc_8f90_source.html b/ver-1.11.0/grid_tools/pietc_8f90_source.html new file mode 100644 index 000000000..a5ae7660d --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc_8f90_source.html @@ -0,0 +1,320 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pietc.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pietc.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    14 module pietc
    15 use pkind, only: dp,dpc
    16 implicit none
    17 logical ,parameter:: t=.true.
    18 logical ,parameter:: f=.false.
    19 real(dp),parameter:: u0=0_dp
    20 real(dp),parameter:: u1=1_dp
    21 real(dp),parameter:: mu1=-u1
    22 real(dp),parameter:: u2=2_dp
    23 real(dp),parameter:: mu2=-u2
    24 real(dp),parameter:: u3=3_dp
    25 real(dp),parameter:: mu3=-u3
    26 real(dp),parameter:: u4=4_dp
    27 real(dp),parameter:: mu4=-u4
    28 real(dp),parameter:: u5=5_dp
    29 real(dp),parameter:: mu5=-u5
    30 real(dp),parameter:: u6=6_dp
    31 real(dp),parameter:: mu6=-u6
    32 real(dp),parameter:: o2=u1/u2
    33 real(dp),parameter:: o3=u1/u3
    34 real(dp),parameter:: o4=u1/u4
    35 real(dp),parameter:: o5=u1/u5
    36 real(dp),parameter:: o6=u1/u6
    37 real(dp),parameter:: mo2=-o2
    38 real(dp),parameter:: mo3=-o3
    39 real(dp),parameter:: mo4=-o4
    40 real(dp),parameter:: mo5=-o5
    41 real(dp),parameter:: mo6=-o6
    42 real(dp),parameter:: pi =3.1415926535897932384626433832795028841971693993751058209749e0_dp
    43 real(dp),parameter:: pi2=6.2831853071795864769252867665590057683943387987502116419498e0_dp
    44 real(dp),parameter:: pih=1.5707963267948966192313216916397514420985846996875529104874e0_dp
    45 real(dp),parameter:: rpi=1.7724538509055160272981674833411451827975494561223871282138e0_dp
    46 real(dp),parameter:: r2 =1.4142135623730950488016887242096980785696718753769480731766e0_dp
    47 real(dp),parameter:: r3 =1.7320508075688772935274463415058723669428052538103806280558e0_dp
    48 real(dp),parameter:: r5 =2.2360679774997896964091736687312762354406183596115257242708e0_dp
    49 real(dp),parameter:: or2=u1/r2
    50 real(dp),parameter:: or3=u1/r3
    51 real(dp),parameter:: or5=u1/r5
    52 real(dp),parameter:: phi=1.6180339887498948482045868343656381177203091798057628621354e0_dp
    53 real(dp),parameter:: euler=0.57721566490153286060651209008240243104215933593992359880e0_dp
    54 real(dp),parameter:: dtor=pi/180
    55 real(dp),parameter:: rtod=180/pi
    56 ! Sines of all main fractions of 90 degrees (down to ninths):
    57 real(dp),parameter:: s10=.173648177666930348851716626769314796000375677184069387236241e0_dp
    58 real(dp),parameter:: s11=.195090322016128267848284868477022240927691617751954807754502e0_dp
    59 real(dp),parameter:: s13=.222520933956314404288902564496794759466355568764544955311987e0_dp
    60 real(dp),parameter:: s15=.258819045102520762348898837624048328349068901319930513814003e0_dp
    61 real(dp),parameter:: s18=.309016994374947424102293417182819058860154589902881431067724e0_dp
    62 real(dp),parameter:: s20=.342020143325668733044099614682259580763083367514160628465048e0_dp
    63 real(dp),parameter:: s22=.382683432365089771728459984030398866761344562485627041433800e0_dp
    64 real(dp),parameter:: s26=.433883739117558120475768332848358754609990727787459876444547e0_dp
    65 real(dp),parameter:: s30=o2
    66 real(dp),parameter:: s34=.555570233019602224742830813948532874374937190754804045924153e0_dp
    67 real(dp),parameter:: s36=.587785252292473129168705954639072768597652437643145991072272e0_dp
    68 real(dp),parameter:: s39=.623489801858733530525004884004239810632274730896402105365549e0_dp
    69 real(dp),parameter:: s40=.642787609686539326322643409907263432907559884205681790324977e0_dp
    70 real(dp),parameter:: s45=or2
    71 real(dp),parameter:: s50=.766044443118978035202392650555416673935832457080395245854045e0_dp
    72 real(dp),parameter:: s51=.781831482468029808708444526674057750232334518708687528980634e0_dp
    73 real(dp),parameter:: s54=.809016994374947424102293417182819058860154589902881431067724e0_dp
    74 real(dp),parameter:: s56=.831469612302545237078788377617905756738560811987249963446124e0_dp
    75 real(dp),parameter:: s60=r3*o2
    76 real(dp),parameter:: s64=.900968867902419126236102319507445051165919162131857150053562e0_dp
    77 real(dp),parameter:: s68=.923879532511286756128183189396788286822416625863642486115097e0_dp
    78 real(dp),parameter:: s70=.939692620785908384054109277324731469936208134264464633090286e0_dp
    79 real(dp),parameter:: s72=.951056516295153572116439333379382143405698634125750222447305e0_dp
    80 real(dp),parameter:: s75=.965925826289068286749743199728897367633904839008404550402343e0_dp
    81 real(dp),parameter:: s77=.974927912181823607018131682993931217232785800619997437648079e0_dp
    82 real(dp),parameter:: s79=.980785280403230449126182236134239036973933730893336095002916e0_dp
    83 real(dp),parameter:: s80=.984807753012208059366743024589523013670643251719842418790025e0_dp
    84 ! ... and their minuses:
    85 real(dp),parameter:: ms10=-s10
    86 real(dp),parameter:: ms11=-s11
    87 real(dp),parameter:: ms13=-s13
    88 real(dp),parameter:: ms15=-s15
    89 real(dp),parameter:: ms18=-s18
    90 real(dp),parameter:: ms20=-s20
    91 real(dp),parameter:: ms22=-s22
    92 real(dp),parameter:: ms26=-s26
    93 real(dp),parameter:: ms30=-s30
    94 real(dp),parameter:: ms34=-s34
    95 real(dp),parameter:: ms36=-s36
    96 real(dp),parameter:: ms39=-s39
    97 real(dp),parameter:: ms40=-s40
    98 real(dp),parameter:: ms45=-s45
    99 real(dp),parameter:: ms50=-s50
    100 real(dp),parameter:: ms51=-s51
    101 real(dp),parameter:: ms54=-s54
    102 real(dp),parameter:: ms56=-s56
    103 real(dp),parameter:: ms60=-s60
    104 real(dp),parameter:: ms64=-s64
    105 real(dp),parameter:: ms68=-s68
    106 real(dp),parameter:: ms70=-s70
    107 real(dp),parameter:: ms72=-s72
    108 real(dp),parameter:: ms75=-s75
    109 real(dp),parameter:: ms77=-s77
    110 real(dp),parameter:: ms79=-s79
    111 real(dp),parameter:: ms80=-s80
    112 complex(dpc),parameter:: c0=(u0,u0)
    113 complex(dpc),parameter:: c1=(u1,u0)
    114 complex(dpc),parameter:: mc1=-c1
    115 complex(dpc),parameter:: ci=(u0,u1)
    116 complex(dpc),parameter:: mci=-ci
    117 complex(dpc),parameter:: cipi=ci*pi
    118 ! Main fractional rotations, as unimodular complex numbers:
    119 complex(dpc),parameter:: z000=c1
    120 complex(dpc),parameter:: z010=( s80,s10)
    121 complex(dpc),parameter:: z011=( s79,s11)
    122 complex(dpc),parameter:: z013=( s77,s13)
    123 complex(dpc),parameter:: z015=( s75,s15)
    124 complex(dpc),parameter:: z018=( s72,s18)
    125 complex(dpc),parameter:: z020=( s70,s20)
    126 complex(dpc),parameter:: z022=( s68,s22)
    127 complex(dpc),parameter:: z026=( s64,s26)
    128 complex(dpc),parameter:: z030=( s60,s30)
    129 complex(dpc),parameter:: z034=( s56,s34)
    130 complex(dpc),parameter:: z036=( s54,s36)
    131 complex(dpc),parameter:: z039=( s51,s39)
    132 complex(dpc),parameter:: z040=( s50,s40)
    133 complex(dpc),parameter:: z045=( s45,s45)
    134 complex(dpc),parameter:: z050=( s40,s50)
    135 complex(dpc),parameter:: z051=( s39,s51)
    136 complex(dpc),parameter:: z054=( s36,s54)
    137 complex(dpc),parameter:: z056=( s34,s56)
    138 complex(dpc),parameter:: z060=( s30,s60)
    139 complex(dpc),parameter:: z064=( s26,s64)
    140 complex(dpc),parameter:: z068=( s22,s68)
    141 complex(dpc),parameter:: z070=( s20,s70)
    142 complex(dpc),parameter:: z072=( s18,s72)
    143 complex(dpc),parameter:: z075=( s15,s75)
    144 complex(dpc),parameter:: z077=( s13,s77)
    145 complex(dpc),parameter:: z079=( s11,s79)
    146 complex(dpc),parameter:: z080=( s10,s80)
    147 complex(dpc),parameter:: z090=ci
    148 complex(dpc),parameter:: z100=(ms10,s80)
    149 complex(dpc),parameter:: z101=(ms11,s79)
    150 complex(dpc),parameter:: z103=(ms13,s77)
    151 complex(dpc),parameter:: z105=(ms15,s75)
    152 complex(dpc),parameter:: z108=(ms18,s72)
    153 complex(dpc),parameter:: z110=(ms20,s70)
    154 complex(dpc),parameter:: z112=(ms22,s68)
    155 complex(dpc),parameter:: z116=(ms26,s64)
    156 complex(dpc),parameter:: z120=(ms30,s60)
    157 complex(dpc),parameter:: z124=(ms34,s56)
    158 complex(dpc),parameter:: z126=(ms36,s54)
    159 complex(dpc),parameter:: z129=(ms39,s51)
    160 complex(dpc),parameter:: z130=(ms40,s50)
    161 complex(dpc),parameter:: z135=(ms45,s45)
    162 complex(dpc),parameter:: z140=(ms50,s40)
    163 complex(dpc),parameter:: z141=(ms51,s39)
    164 complex(dpc),parameter:: z144=(ms54,s36)
    165 complex(dpc),parameter:: z146=(ms56,s34)
    166 complex(dpc),parameter:: z150=(ms60,s30)
    167 complex(dpc),parameter:: z154=(ms64,s26)
    168 complex(dpc),parameter:: z158=(ms68,s22)
    169 complex(dpc),parameter:: z160=(ms70,s20)
    170 complex(dpc),parameter:: z162=(ms72,s18)
    171 complex(dpc),parameter:: z165=(ms75,s15)
    172 complex(dpc),parameter:: z167=(ms77,s13)
    173 complex(dpc),parameter:: z169=(ms79,s11)
    174 complex(dpc),parameter:: z170=(ms80,s10)
    175 complex(dpc),parameter:: z180=-z000
    176 complex(dpc),parameter:: z190=-z010
    177 complex(dpc),parameter:: z191=-z011
    178 complex(dpc),parameter:: z193=-z013
    179 complex(dpc),parameter:: z195=-z015
    180 complex(dpc),parameter:: z198=-z018
    181 complex(dpc),parameter:: z200=-z020
    182 complex(dpc),parameter:: z202=-z022
    183 complex(dpc),parameter:: z206=-z026
    184 complex(dpc),parameter:: z210=-z030
    185 complex(dpc),parameter:: z214=-z034
    186 complex(dpc),parameter:: z216=-z036
    187 complex(dpc),parameter:: z219=-z039
    188 complex(dpc),parameter:: z220=-z040
    189 complex(dpc),parameter:: z225=-z045
    190 complex(dpc),parameter:: z230=-z050
    191 complex(dpc),parameter:: z231=-z051
    192 complex(dpc),parameter:: z234=-z054
    193 complex(dpc),parameter:: z236=-z056
    194 complex(dpc),parameter:: z240=-z060
    195 complex(dpc),parameter:: z244=-z064
    196 complex(dpc),parameter:: z248=-z068
    197 complex(dpc),parameter:: z250=-z070
    198 complex(dpc),parameter:: z252=-z072
    199 complex(dpc),parameter:: z255=-z075
    200 complex(dpc),parameter:: z257=-z077
    201 complex(dpc),parameter:: z259=-z079
    202 complex(dpc),parameter:: z260=-z080
    203 complex(dpc),parameter:: z270=-z090
    204 complex(dpc),parameter:: z280=-z100
    205 complex(dpc),parameter:: z281=-z101
    206 complex(dpc),parameter:: z283=-z103
    207 complex(dpc),parameter:: z285=-z105
    208 complex(dpc),parameter:: z288=-z108
    209 complex(dpc),parameter:: z290=-z110
    210 complex(dpc),parameter:: z292=-z112
    211 complex(dpc),parameter:: z296=-z116
    212 complex(dpc),parameter:: z300=-z120
    213 complex(dpc),parameter:: z304=-z124
    214 complex(dpc),parameter:: z306=-z126
    215 complex(dpc),parameter:: z309=-z129
    216 complex(dpc),parameter:: z310=-z130
    217 complex(dpc),parameter:: z315=-z135
    218 complex(dpc),parameter:: z320=-z140
    219 complex(dpc),parameter:: z321=-z141
    220 complex(dpc),parameter:: z324=-z144
    221 complex(dpc),parameter:: z326=-z146
    222 complex(dpc),parameter:: z330=-z150
    223 complex(dpc),parameter:: z334=-z154
    224 complex(dpc),parameter:: z338=-z158
    225 complex(dpc),parameter:: z340=-z160
    226 complex(dpc),parameter:: z342=-z162
    227 complex(dpc),parameter:: z345=-z165
    228 complex(dpc),parameter:: z347=-z167
    229 complex(dpc),parameter:: z349=-z169
    230 complex(dpc),parameter:: z350=-z170
    231 end module pietc
    complex(dpc), parameter z288
    exp(2*pi*i*4/5)
    Definition: pietc.f90:208
    +
    real(dp), parameter u4
    four
    Definition: pietc.f90:26
    +
    complex(dpc), parameter z347
    exp(2*pi*i*27/28)
    Definition: pietc.f90:228
    +
    real(dp), parameter ms60
    minus-sine(60 deg)
    Definition: pietc.f90:103
    +
    complex(dpc), parameter z162
    exp(2*pi*i*9/20)
    Definition: pietc.f90:170
    +
    real(dp), parameter s70
    sine(70 deg)
    Definition: pietc.f90:78
    +
    complex(dpc), parameter z051
    exp(2*pi*i/7)
    Definition: pietc.f90:135
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    complex(dpc), parameter z220
    exp(2*pi*i*11/18)
    Definition: pietc.f90:188
    +
    complex(dpc), parameter z225
    exp(2*pi*i*5/8)
    Definition: pietc.f90:189
    +
    complex(dpc), parameter z020
    exp(2*pi*i/18)
    Definition: pietc.f90:125
    +
    complex(dpc), parameter z234
    exp(2*pi*i*13/20)
    Definition: pietc.f90:192
    +
    complex(dpc), parameter z244
    exp(2*pi*i*19/28)
    Definition: pietc.f90:195
    +
    complex(dpc), parameter z108
    exp(2*pi*i*3/10)
    Definition: pietc.f90:152
    +
    complex(dpc), parameter z270
    exp(2*pi*i*3/4)
    Definition: pietc.f90:203
    +
    real(dp), parameter s56
    sine(90*5/8 deg)
    Definition: pietc.f90:74
    +
    real(dp), parameter s15
    sine(15 deg)
    Definition: pietc.f90:60
    +
    real(dp), parameter u6
    six
    Definition: pietc.f90:30
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    complex(dpc), parameter z105
    exp(2*pi*i*7/24)
    Definition: pietc.f90:151
    +
    complex(dpc), parameter z000
    exp(2*pi*i*0)
    Definition: pietc.f90:119
    +
    real(dp), parameter ms40
    minus-sine(40 deg)
    Definition: pietc.f90:97
    +
    complex(dpc), parameter z030
    exp(2*pi*i/12)
    Definition: pietc.f90:128
    +
    complex(dpc), parameter z257
    exp(2*pi*i*5/7)
    Definition: pietc.f90:200
    +
    complex(dpc), parameter z210
    exp(2*pi*i*7/12)
    Definition: pietc.f90:184
    +
    real(dp), parameter s11
    sine(90/8 deg)
    Definition: pietc.f90:58
    +
    complex(dpc), parameter z338
    exp(2*pi*i*15/16)
    Definition: pietc.f90:224
    +
    real(dp), parameter mu1
    minus-one
    Definition: pietc.f90:21
    +
    complex(dpc), parameter z026
    exp(2*pi*i/14)
    Definition: pietc.f90:127
    +
    real(dp), parameter pih
    pi*half
    Definition: pietc.f90:44
    +
    complex(dpc), parameter z240
    exp(2*pi*i*2/3)
    Definition: pietc.f90:194
    +
    complex(dpc), parameter z206
    exp(2*pi*i*4/7)
    Definition: pietc.f90:183
    +
    complex(dpc), parameter z190
    exp(2*pi*i*19/36)
    Definition: pietc.f90:176
    +
    complex(dpc), parameter z018
    exp(2*pi*i/20)
    Definition: pietc.f90:124
    +
    real(dp), parameter mu5
    minus-five
    Definition: pietc.f90:29
    +
    complex(dpc), parameter z345
    exp(2*pi*i*23/24)
    Definition: pietc.f90:227
    +
    logical, parameter f
    for pain-relief in logical ops
    Definition: pietc.f90:18
    +
    complex(dpc), parameter z015
    exp(2*pi*i/24)
    Definition: pietc.f90:123
    +
    complex(dpc), parameter z334
    exp(2*pi*i*13/14)
    Definition: pietc.f90:223
    +
    real(dp), parameter s75
    sine(75 deg)
    Definition: pietc.f90:80
    +
    complex(dpc), parameter z090
    exp(2*pi*i/4)
    Definition: pietc.f90:147
    +
    real(dp), parameter o5
    fifth
    Definition: pietc.f90:35
    +
    real(dp), parameter s18
    sine(18 deg)
    Definition: pietc.f90:61
    +
    real(dp), parameter mu3
    minus-three
    Definition: pietc.f90:25
    +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    complex(dpc), parameter z280
    exp(2*pi*i*7/9)
    Definition: pietc.f90:204
    +
    real(dp), parameter ms75
    minus-sine(75 deg)
    Definition: pietc.f90:108
    +
    real(dp), parameter ms15
    minus-sine(15 deg)
    Definition: pietc.f90:88
    +
    complex(dpc), parameter ci
    complex i=sqrt(-1)
    Definition: pietc.f90:115
    +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    +
    real(dp), parameter s54
    sine(54 deg)
    Definition: pietc.f90:73
    +
    complex(dpc), parameter z195
    exp(2*pi*i*13/24)
    Definition: pietc.f90:179
    +
    real(dp), parameter s50
    sine(50 deg)
    Definition: pietc.f90:71
    +
    complex(dpc), parameter z248
    exp(2*pi*i*11/16)
    Definition: pietc.f90:196
    +
    complex(dpc), parameter z259
    exp(2*pi*i*23/32)
    Definition: pietc.f90:201
    +
    complex(dpc), parameter cipi
    complex i*pi
    Definition: pietc.f90:117
    +
    complex(dpc), parameter z169
    exp(2*pi*i*15/32)
    Definition: pietc.f90:173
    +
    complex(dpc), parameter z296
    exp(2*pi*i*23/28)
    Definition: pietc.f90:211
    +
    real(dp), parameter r2
    Square root of 2.
    Definition: pietc.f90:46
    +
    complex(dpc), parameter z250
    exp(2*pi*i*25/36)
    Definition: pietc.f90:197
    +
    real(dp), parameter or2
    1.
    Definition: pietc.f90:49
    +
    complex(dpc), parameter z260
    exp(2*pi*i*13/18)
    Definition: pietc.f90:202
    +
    complex(dpc), parameter z200
    exp(2*pi*i*5/9)
    Definition: pietc.f90:181
    +
    real(dp), parameter s34
    sine(90*3/8 deg)
    Definition: pietc.f90:66
    +
    complex(dpc), parameter z070
    exp(2*pi*i*7/36)
    Definition: pietc.f90:141
    +
    complex(dpc), parameter z231
    exp(2*pi*i*9/14)
    Definition: pietc.f90:191
    +
    complex(dpc), parameter z252
    exp(2*pi*i*7/10)
    Definition: pietc.f90:198
    +
    complex(dpc), parameter c1
    complex one
    Definition: pietc.f90:113
    +
    complex(dpc), parameter z167
    exp(2*pi*i*13/28)
    Definition: pietc.f90:172
    +
    real(dp), parameter s13
    sine(90/7 deg)
    Definition: pietc.f90:59
    +
    complex(dpc), parameter z290
    exp(2*pi*i*29/36)
    Definition: pietc.f90:209
    +
    complex(dpc), parameter z080
    exp(2*pi*i*2/9)
    Definition: pietc.f90:146
    +
    real(dp), parameter o6
    sixth
    Definition: pietc.f90:36
    +
    complex(dpc), parameter z130
    exp(2*pi*i*13/36)
    Definition: pietc.f90:160
    +
    complex(dpc), parameter z034
    exp(2*pi*i*3/32)
    Definition: pietc.f90:129
    +
    complex(dpc), parameter z144
    exp(2*pi*i*2/5)
    Definition: pietc.f90:164
    +
    real(dp), parameter ms36
    minus-sine(36 deg)
    Definition: pietc.f90:95
    +
    real(dp), parameter u5
    five
    Definition: pietc.f90:28
    +
    complex(dpc), parameter z230
    exp(2*pi*i*23/36)
    Definition: pietc.f90:190
    +
    real(dp), parameter mu2
    minus-two
    Definition: pietc.f90:23
    +
    complex(dpc), parameter z214
    exp(2*pi*i*19/32)
    Definition: pietc.f90:185
    +
    complex(dpc), parameter z193
    exp(2*pi*i*15/28)
    Definition: pietc.f90:178
    +
    real(dp), parameter phi
    Golden number.
    Definition: pietc.f90:52
    +
    complex(dpc), parameter z315
    exp(2*pi*i*7/8)
    Definition: pietc.f90:217
    +
    real(dp), parameter or3
    1.
    Definition: pietc.f90:50
    +
    complex(dpc), parameter z054
    exp(2*pi*i*3/20)
    Definition: pietc.f90:136
    +
    real(dp), parameter mu4
    minus-four
    Definition: pietc.f90:27
    +
    complex(dpc), parameter z056
    exp(2*pi*i*5/32)
    Definition: pietc.f90:137
    +
    real(dp), parameter pi
    Pi.
    Definition: pietc.f90:42
    +
    real(dp), parameter mu6
    minus-six
    Definition: pietc.f90:31
    +
    complex(dpc), parameter c0
    complex zero
    Definition: pietc.f90:112
    +
    complex(dpc), parameter z036
    exp(2*pi*i/10)
    Definition: pietc.f90:130
    +
    complex(dpc), parameter z160
    exp(2*pi*i*4/9)
    Definition: pietc.f90:169
    +
    complex(dpc), parameter z255
    exp(2*pi*i*17/24)
    Definition: pietc.f90:199
    +
    complex(dpc), parameter z120
    exp(2*pi*i/3)
    Definition: pietc.f90:156
    +
    real(dp), parameter s77
    sine(90*6/7 deg)
    Definition: pietc.f90:81
    +
    real(dp), parameter s80
    sine(80 deg)
    Definition: pietc.f90:83
    +
    real(dp), parameter ms45
    minus-sine(45 deg)
    Definition: pietc.f90:98
    +
    real(dp), parameter u3
    three
    Definition: pietc.f90:24
    +
    complex(dpc), parameter z324
    exp(2*pi*i*9/10)
    Definition: pietc.f90:220
    +
    complex(dpc), parameter z202
    exp(2*pi*i*9/16)
    Definition: pietc.f90:182
    +
    complex(dpc), parameter z079
    exp(2*pi*i*7/32)
    Definition: pietc.f90:145
    +
    complex(dpc), parameter z010
    exp(2*pi*i/36)
    Definition: pietc.f90:120
    +
    real(dp), parameter r5
    Square root of 5.
    Definition: pietc.f90:48
    +
    real(dp), parameter ms18
    minus-sine(18 deg)
    Definition: pietc.f90:89
    +
    complex(dpc), parameter z326
    exp(2*pi*i*29/32)
    Definition: pietc.f90:221
    +
    real(dp), parameter s20
    sine(20 deg)
    Definition: pietc.f90:62
    +
    complex(dpc), parameter z100
    exp(2*pi*i*5/18)
    Definition: pietc.f90:148
    +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    +
    real(dp), parameter ms50
    minus-sine(50 deg)
    Definition: pietc.f90:99
    +
    complex(dpc), parameter z141
    exp(2*pi*i*11/28)
    Definition: pietc.f90:163
    +
    complex(dpc), parameter z140
    exp(2*pi*i*7/18)
    Definition: pietc.f90:162
    +
    real(dp), parameter mo3
    minus-third
    Definition: pietc.f90:38
    +
    real(dp), parameter ms34
    minus-sine(90*3/8 deg)
    Definition: pietc.f90:94
    +
    real(dp), parameter s60
    sine(60 deg)
    Definition: pietc.f90:75
    +
    complex(dpc), parameter z022
    exp(2*pi*i/16)
    Definition: pietc.f90:126
    +
    complex(dpc), parameter mci
    complex minus-i
    Definition: pietc.f90:116
    +
    real(dp), parameter or5
    1.
    Definition: pietc.f90:51
    +
    complex(dpc), parameter z304
    exp(2*pi*i*27/32)
    Definition: pietc.f90:213
    +
    complex(dpc), parameter z340
    exp(2*pi*i*17/18)
    Definition: pietc.f90:225
    +
    real(dp), parameter dtor
    Degrees to radians.
    Definition: pietc.f90:54
    +
    real(dp), parameter s45
    sine(45 deg)
    Definition: pietc.f90:70
    +
    real(dp), parameter mo6
    minus-sixth
    Definition: pietc.f90:41
    +
    real(dp), parameter pi2
    Pi*2.
    Definition: pietc.f90:43
    +
    complex(dpc), parameter z060
    exp(2*pi*i/6)
    Definition: pietc.f90:138
    +
    real(dp), parameter ms80
    minus-sine(80 deg)
    Definition: pietc.f90:111
    +
    complex(dpc), parameter z112
    exp(2*pi*i*5/16)
    Definition: pietc.f90:154
    +
    complex(dpc), parameter z064
    exp(2*pi*i*5/28)
    Definition: pietc.f90:139
    +
    real(dp), parameter s22
    sine(22.5 deg)
    Definition: pietc.f90:63
    +
    real(dp), parameter mo4
    minus-fourth
    Definition: pietc.f90:39
    +
    complex(dpc), parameter z154
    exp(2*pi*i*3/7)
    Definition: pietc.f90:167
    +
    complex(dpc), parameter z330
    exp(2*pi*i*11/12)
    Definition: pietc.f90:222
    +
    real(dp), parameter s64
    sine(90*5/7 deg)
    Definition: pietc.f90:76
    +
    real(dp), parameter ms77
    minus-sine(90*6/7 deg)
    Definition: pietc.f90:109
    +
    complex(dpc), parameter z219
    exp(2*pi*i*17/28)
    Definition: pietc.f90:187
    +
    real(dp), parameter s79
    sine(90*7/8 deg)
    Definition: pietc.f90:82
    +
    real(dp), parameter ms26
    minus-sine(90*2/7 deg)
    Definition: pietc.f90:92
    +
    complex(dpc), parameter z124
    exp(2*pi*i*11/32)
    Definition: pietc.f90:157
    +
    complex(dpc), parameter z236
    exp(2*pi*i*21/32)
    Definition: pietc.f90:193
    +
    real(dp), parameter rtod
    radians to degrees
    Definition: pietc.f90:55
    +
    complex(dpc), parameter z300
    exp(2*pi*i*5/6)
    Definition: pietc.f90:212
    +
    real(dp), parameter ms70
    minus-sine(70 deg)
    Definition: pietc.f90:106
    +
    real(dp), parameter ms54
    minus-sine(54 deg)
    Definition: pietc.f90:101
    +
    complex(dpc), parameter z040
    exp(2*pi*i/9)
    Definition: pietc.f90:132
    +
    real(dp), parameter euler
    Euler-Mascheroni constant.
    Definition: pietc.f90:53
    +
    complex(dpc), parameter z072
    exp(2*pi*i/5)
    Definition: pietc.f90:142
    +
    complex(dpc), parameter z129
    exp(2*pi*i*5/14)
    Definition: pietc.f90:159
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    complex(dpc), parameter z321
    exp(2*pi*i*25/28)
    Definition: pietc.f90:219
    +
    complex(dpc), parameter z191
    exp(2*pi*i*17/32)
    Definition: pietc.f90:177
    +
    real(dp), parameter ms13
    minus-sine(90/7 deg)
    Definition: pietc.f90:87
    +
    complex(dpc), parameter z039
    exp(2*pi*i*3/28)
    Definition: pietc.f90:131
    +
    complex(dpc), parameter z116
    exp(2*pi*i*9/28)
    Definition: pietc.f90:155
    +
    complex(dpc), parameter z068
    exp(2*pi*i*3/16)
    Definition: pietc.f90:140
    +
    complex(dpc), parameter z342
    exp(2*pi*i*19/20)
    Definition: pietc.f90:226
    +
    complex(dpc), parameter z077
    exp(2*pi*i*3/14)
    Definition: pietc.f90:144
    +
    complex(dpc), parameter z158
    exp(2*pi*i*7/16)
    Definition: pietc.f90:168
    +
    real(dp), parameter r3
    Square root of 3.
    Definition: pietc.f90:47
    +
    real(dp), parameter s26
    sine(90*2/7 deg)
    Definition: pietc.f90:64
    +
    real(dp), parameter mo5
    minus-fifth
    Definition: pietc.f90:40
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    real(dp), parameter s68
    sine(67.5 deg)
    Definition: pietc.f90:77
    +
    complex(dpc), parameter z150
    exp(2*pi*i*5/12)
    Definition: pietc.f90:166
    +
    complex(dpc), parameter z180
    exp(2*pi*i/2)
    Definition: pietc.f90:175
    +
    complex(dpc), parameter z075
    exp(2*pi*i*5/24)
    Definition: pietc.f90:143
    +
    complex(dpc), parameter z013
    exp(2*pi*i/28)
    Definition: pietc.f90:122
    +
    real(dp), parameter o3
    third
    Definition: pietc.f90:33
    +
    real(dp), parameter s72
    sine(72 deg)
    Definition: pietc.f90:79
    +
    real(dp), parameter ms22
    minus-sine(22.5 deg)
    Definition: pietc.f90:91
    +
    complex(dpc), parameter z309
    exp(2*pi*i*6/7)
    Definition: pietc.f90:215
    +
    complex(dpc), parameter z045
    exp(2*pi*i/8)
    Definition: pietc.f90:133
    +
    real(dp), parameter s36
    sine(36 deg)
    Definition: pietc.f90:67
    +
    real(dp), parameter ms11
    minus-sine(90/8 deg)
    Definition: pietc.f90:86
    +
    integer, parameter dpc
    Double precision real kind.
    Definition: pkind.f90:13
    +
    real(dp), parameter ms30
    minus-sine(30 deg)
    Definition: pietc.f90:93
    +
    complex(dpc), parameter z011
    exp(2*pi*i/32)
    Definition: pietc.f90:121
    +
    complex(dpc), parameter z101
    exp(2*pi*i*9/32)
    Definition: pietc.f90:149
    +
    real(dp), parameter s40
    sine(40 deg)
    Definition: pietc.f90:69
    +
    complex(dpc), parameter z165
    exp(2*pi*i*11/24)
    Definition: pietc.f90:171
    +
    real(dp), parameter o4
    fourth
    Definition: pietc.f90:34
    +
    complex(dpc), parameter z285
    exp(2*pi*i*19/24)
    Definition: pietc.f90:207
    +
    complex(dpc), parameter z146
    exp(2*pi*i*13/32)
    Definition: pietc.f90:165
    +
    complex(dpc), parameter z103
    exp(2*pi*i*2/7)
    Definition: pietc.f90:150
    +
    complex(dpc), parameter z349
    exp(2*pi*i*31/32)
    Definition: pietc.f90:229
    +
    real(dp), parameter ms68
    minus-sine(67.5 deg)
    Definition: pietc.f90:105
    +
    complex(dpc), parameter z310
    exp(2*pi*i*31/36)
    Definition: pietc.f90:216
    +
    complex(dpc), parameter z283
    exp(2*pi*i*11/14)
    Definition: pietc.f90:206
    +
    real(dp), parameter ms39
    minus-sine(90*3/7 deg)
    Definition: pietc.f90:96
    +
    complex(dpc), parameter z306
    exp(2*pi*i*17/20)
    Definition: pietc.f90:214
    +
    complex(dpc), parameter z281
    exp(2*pi*i*25/32)
    Definition: pietc.f90:205
    +
    real(dp), parameter ms64
    minus-sine(90*5/7 deg)
    Definition: pietc.f90:104
    +
    real(dp), parameter rpi
    square root of pi
    Definition: pietc.f90:45
    +
    complex(dpc), parameter z110
    exp(2*pi*i*11/36)
    Definition: pietc.f90:153
    +
    complex(dpc), parameter z050
    exp(2*pi*i*5/36)
    Definition: pietc.f90:134
    +
    complex(dpc), parameter z135
    exp(2*pi*i*3/8)
    Definition: pietc.f90:161
    +
    real(dp), parameter ms20
    minus-sine(20 deg)
    Definition: pietc.f90:90
    +
    complex(dpc), parameter mc1
    complex minus-one
    Definition: pietc.f90:114
    +
    real(dp), parameter ms10
    minus-sine(10 deg)
    Definition: pietc.f90:85
    +
    real(dp), parameter s30
    sine(30 deg)
    Definition: pietc.f90:65
    +
    complex(dpc), parameter z292
    exp(2*pi*i*13/16)
    Definition: pietc.f90:210
    +
    complex(dpc), parameter z198
    exp(2*pi*i*11/20)
    Definition: pietc.f90:180
    +
    complex(dpc), parameter z320
    exp(2*pi*i*8/9)
    Definition: pietc.f90:218
    +
    real(dp), parameter ms51
    minus-sine(90*4/7 deg)
    Definition: pietc.f90:100
    +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    +
    real(dp), parameter ms56
    minus-sine(90*5/8 deg)
    Definition: pietc.f90:102
    +
    complex(dpc), parameter z170
    exp(2*pi*i*17/36)
    Definition: pietc.f90:174
    +
    real(dp), parameter mo2
    minus-half
    Definition: pietc.f90:37
    +
    complex(dpc), parameter z350
    exp(2*pi*i*35/36)
    Definition: pietc.f90:230
    +
    real(dp), parameter ms72
    minus-sine(72 deg)
    Definition: pietc.f90:107
    +
    real(dp), parameter s51
    sine(90*4/7 deg)
    Definition: pietc.f90:72
    +
    complex(dpc), parameter z216
    exp(2*pi*i*3/5)
    Definition: pietc.f90:186
    +
    real(dp), parameter s39
    sine(90*3/7 deg)
    Definition: pietc.f90:68
    +
    real(dp), parameter ms79
    minus-sine(90*7/8 deg)
    Definition: pietc.f90:110
    +
    complex(dpc), parameter z126
    exp(2*pi*i*7/20)
    Definition: pietc.f90:158
    +
    real(dp), parameter s10
    sine(10 deg)
    Definition: pietc.f90:57
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pietc__s_8f90.html b/ver-1.11.0/grid_tools/pietc__s_8f90.html new file mode 100644 index 000000000..2c7f602e4 --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc__s_8f90.html @@ -0,0 +1,4557 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pietc_s.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pietc_s.f90 File Reference
    +
    +
    + +

    Single precision constants. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    complex(spc), parameter pietc_s::c0 =(u0, u0)
     complex zero More...
     
    complex(spc), parameter pietc_s::c1 =(u1, u0)
     complex one More...
     
    complex(spc), parameter pietc_s::ci =(u0, u1)
     complex i=sqrt(-1) More...
     
    complex(spc), parameter pietc_s::cipi =ci*pi
     complex i*pi More...
     
    real(sp), parameter pietc_s::dtor =pi/180
     Degrees to radians. More...
     
    real(sp), parameter pietc_s::euler =0.57721566490153286060651209008240243104215933593992359880e0_sp
     Euler-Mascheroni constant. More...
     
    logical, parameter pietc_s::f =.false.
     for pain-relief in logical ops More...
     
    complex(spc), parameter pietc_s::mc1 =-c1
     complex minus-one More...
     
    complex(spc), parameter pietc_s::mci =-ci
     complex minus-i More...
     
    real(sp), parameter pietc_s::mo2 =-o2
     minus-half More...
     
    real(sp), parameter pietc_s::mo3 =-o3
     minus-third More...
     
    real(sp), parameter pietc_s::mo4 =-o4
     minus-fourth More...
     
    real(sp), parameter pietc_s::mo5 =-o5
     minus-fifth More...
     
    real(sp), parameter pietc_s::mo6 =-06
     minus-sixth More...
     
    real(sp), parameter pietc_s::ms10 =-s10
     minus-sine(10 deg) More...
     
    real(sp), parameter pietc_s::ms11 =-s11
     minus-sine(90/8 deg) More...
     
    real(sp), parameter pietc_s::ms13 =-s13
     minus-sine(90/7 deg) More...
     
    real(sp), parameter pietc_s::ms15 =-s15
     minus-sine(15 deg) More...
     
    real(sp), parameter pietc_s::ms18 =-s18
     minus-sine(18 deg) More...
     
    real(sp), parameter pietc_s::ms20 =-s20
     minus-sine(20 deg) More...
     
    real(sp), parameter pietc_s::ms22 =-s22
     minus-sine(22.5 deg) More...
     
    real(sp), parameter pietc_s::ms26 =-s26
     minus-sine(90*2/7 deg) More...
     
    real(sp), parameter pietc_s::ms30 =-s30
     minus-sine(30 deg) More...
     
    real(sp), parameter pietc_s::ms34 =-s34
     minus-sine(90*3/8 deg) More...
     
    real(sp), parameter pietc_s::ms36 =-s36
     minus-sine(36 deg) More...
     
    real(sp), parameter pietc_s::ms39 =-s39
     minus-sine(90*3/7 deg) More...
     
    real(sp), parameter pietc_s::ms40 =-s40
     minus-sine(40 deg) More...
     
    real(sp), parameter pietc_s::ms45 =-s45
     minus-sine(45 deg) More...
     
    real(sp), parameter pietc_s::ms50 =-s50
     minus-sine(50 deg) More...
     
    real(sp), parameter pietc_s::ms51 =-s51
     minus-sine(90*4/7 deg) More...
     
    real(sp), parameter pietc_s::ms54 =-s54
     minus-sine(54 deg) More...
     
    real(sp), parameter pietc_s::ms56 =-s56
     minus-sine(90*5/8 deg) More...
     
    real(sp), parameter pietc_s::ms60 =-s60
     minus-sine(60 deg) More...
     
    real(sp), parameter pietc_s::ms64 =-s64
     minus-sine(90*5/7 deg) More...
     
    real(sp), parameter pietc_s::ms68 =-s68
     minus-sine(67.5 deg) More...
     
    real(sp), parameter pietc_s::ms70 =-s70
     minus-sine(70 deg) More...
     
    real(sp), parameter pietc_s::ms72 =-s72
     minus-sine(72 deg) More...
     
    real(sp), parameter pietc_s::ms75 =-s75
     minus-sine(75 deg) More...
     
    real(sp), parameter pietc_s::ms77 =-s77
     minus-sine(90*6/7 deg) More...
     
    real(sp), parameter pietc_s::ms79 =-s79
     minus-sine(90*7/8 deg) More...
     
    real(sp), parameter pietc_s::ms80 =-s80
     minus-sine(80 deg) More...
     
    real(sp), parameter pietc_s::mu1 =-u1
     minus-one More...
     
    real(sp), parameter pietc_s::mu2 =-u2
     minus-two More...
     
    real(sp), parameter pietc_s::mu3 =-u3
     minus-three More...
     
    real(sp), parameter pietc_s::mu4 =-u4
     minus-four More...
     
    real(sp), parameter pietc_s::mu5 =-u5
     minus-five More...
     
    real(sp), parameter pietc_s::mu6 =-u6
     minus-six More...
     
    real(sp), parameter pietc_s::o2 =u1/u2
     half More...
     
    real(sp), parameter pietc_s::o3 =u1/u3
     third More...
     
    real(sp), parameter pietc_s::o4 =u1/u4
     fourth More...
     
    real(sp), parameter pietc_s::o5 =u1/u5
     fifth More...
     
    real(sp), parameter pietc_s::o6 =u1/u6
     sixth More...
     
    real(sp), parameter pietc_s::or2 =u1/r2
     1. More...
     
    real(sp), parameter pietc_s::or3 =u1/r3
     1. More...
     
    real(sp), parameter pietc_s::or5 =u1/r5
     1. More...
     
    real(sp), parameter pietc_s::phi =1.6180339887498948482045868343656381177203091798057628621354e0_sp
     Golden number. More...
     
    real(sp), parameter pietc_s::pi =3.1415926535897932384626433832795028841971693993751058209749e0_sp
     pi More...
     
    real(sp), parameter pietc_s::pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_sp
     pi*2 More...
     
    real(sp), parameter pietc_s::pih =1.5707963267948966192313216916397514420985846996875529104874e0_sp
     pi*half More...
     
    real(sp), parameter pietc_s::r2 =1.4142135623730950488016887242096980785696718753769480731766e0_sp
     Square root of 2. More...
     
    real(sp), parameter pietc_s::r3 =1.7320508075688772935274463415058723669428052538103806280558e0_sp
     Square root of 3. More...
     
    real(sp), parameter pietc_s::r5 =2.2360679774997896964091736687312762354406183596115257242708e0_sp
     Square root of 5. More...
     
    real(sp), parameter pietc_s::rpi =1.7724538509055160272981674833411451827975494561223871282138e0_sp
     square root of pi More...
     
    real(sp), parameter pietc_s::rtod =180/pi
     radians to degrees More...
     
    real(sp), parameter pietc_s::s10 =.173648177666930348851716626769314796000375677184069387236241e0_sp
     sine(10 deg) More...
     
    real(sp), parameter pietc_s::s11 =.195090322016128267848284868477022240927691617751954807754502e0_sp
     sine(90/8 deg) More...
     
    real(sp), parameter pietc_s::s13 =.222520933956314404288902564496794759466355568764544955311987e0_sp
     sine(90/7 deg) More...
     
    real(sp), parameter pietc_s::s15 =.258819045102520762348898837624048328349068901319930513814003e0_sp
     sine(15 deg) More...
     
    real(sp), parameter pietc_s::s18 =.309016994374947424102293417182819058860154589902881431067724e0_sp
     sine(18 deg) More...
     
    real(sp), parameter pietc_s::s20 =.342020143325668733044099614682259580763083367514160628465048e0_sp
     sine(20 deg) More...
     
    real(sp), parameter pietc_s::s22 =.382683432365089771728459984030398866761344562485627041433800e0_sp
     sine(22.5 deg) More...
     
    real(sp), parameter pietc_s::s26 =.433883739117558120475768332848358754609990727787459876444547e0_sp
     sine(90*2/7 deg) More...
     
    real(sp), parameter pietc_s::s30 =o2
     sine(30 deg) More...
     
    real(sp), parameter pietc_s::s34 =.555570233019602224742830813948532874374937190754804045924153e0_sp
     sine(90*3/8 deg) More...
     
    real(sp), parameter pietc_s::s36 =.587785252292473129168705954639072768597652437643145991072272e0_sp
     sine(36 deg) More...
     
    real(sp), parameter pietc_s::s39 =.623489801858733530525004884004239810632274730896402105365549e0_sp
     sine(90*3/7 deg) More...
     
    real(sp), parameter pietc_s::s40 =.642787609686539326322643409907263432907559884205681790324977e0_sp
     sine(40 deg) More...
     
    real(sp), parameter pietc_s::s45 =or2
     sine(45 deg) More...
     
    real(sp), parameter pietc_s::s50 =.766044443118978035202392650555416673935832457080395245854045e0_sp
     sine(50 deg) More...
     
    real(sp), parameter pietc_s::s51 =.781831482468029808708444526674057750232334518708687528980634e0_sp
     sine(90*4/7 deg) More...
     
    real(sp), parameter pietc_s::s54 =.809016994374947424102293417182819058860154589902881431067724e0_sp
     sine(54 deg) More...
     
    real(sp), parameter pietc_s::s56 =.831469612302545237078788377617905756738560811987249963446124e0_sp
     sine(90*5/8 deg) More...
     
    real(sp), parameter pietc_s::s60 =r3*o2
     sine(60 deg) More...
     
    real(sp), parameter pietc_s::s64 =.900968867902419126236102319507445051165919162131857150053562e0_sp
     sine(90*5/7 deg) More...
     
    real(sp), parameter pietc_s::s68 =.923879532511286756128183189396788286822416625863642486115097e0_sp
     sine(67.5 deg) More...
     
    real(sp), parameter pietc_s::s70 =.939692620785908384054109277324731469936208134264464633090286e0_sp
     sine(70 deg) More...
     
    real(sp), parameter pietc_s::s72 =.951056516295153572116439333379382143405698634125750222447305e0_sp
     sine(72 deg) More...
     
    real(sp), parameter pietc_s::s75 =.965925826289068286749743199728897367633904839008404550402343e0_sp
     sine(75 deg) More...
     
    real(sp), parameter pietc_s::s77 =.974927912181823607018131682993931217232785800619997437648079e0_sp
     sine(90*6/7 deg) More...
     
    real(sp), parameter pietc_s::s79 =.980785280403230449126182236134239036973933730893336095002916e0_sp
     sine(90*7/8 deg) More...
     
    real(sp), parameter pietc_s::s80 =.984807753012208059366743024589523013670643251719842418790025e0_sp
     sine(80 deg) More...
     
    logical, parameter pietc_s::t =.true.
     for pain-relief in logical ops More...
     
    real(sp), parameter pietc_s::u0 =0_sp
     zero More...
     
    real(sp), parameter pietc_s::u1 =1_sp
     one More...
     
    real(sp), parameter pietc_s::u2 =2_sp
     two More...
     
    real(sp), parameter pietc_s::u3 =3_sp
     three More...
     
    real(sp), parameter pietc_s::u4 =4_sp
     four More...
     
    real(sp), parameter pietc_s::u5 =5_sp
     five More...
     
    real(sp), parameter pietc_s::u6 =6_sp
     six More...
     
    complex(spc), parameter pietc_s::z000 =c1
     exp(2*pi*i*0) More...
     
    complex(spc), parameter pietc_s::z010 =( s80, s10)
     exp(2*pi*i/36) More...
     
    complex(spc), parameter pietc_s::z011 =( s79, s11)
     exp(2*pi*i/32) More...
     
    complex(spc), parameter pietc_s::z013 =( s77, s13)
     exp(2*pi*i/28) More...
     
    complex(spc), parameter pietc_s::z015 =( s75, s15)
     exp(2*pi*i/24) More...
     
    complex(spc), parameter pietc_s::z018 =( s72, s18)
     exp(2*pi*i/20) More...
     
    complex(spc), parameter pietc_s::z020 =( s70, s20)
     exp(2*pi*i/18) More...
     
    complex(spc), parameter pietc_s::z022 =( s68, s22)
     exp(2*pi*i/16) More...
     
    complex(spc), parameter pietc_s::z026 =( s64, s26)
     exp(2*pi*i/14) More...
     
    complex(spc), parameter pietc_s::z030 =( s60, s30)
     exp(2*pi*i/12) More...
     
    complex(spc), parameter pietc_s::z034 =( s56, s34)
     exp(2*pi*i*3/32) More...
     
    complex(spc), parameter pietc_s::z036 =( s54, s36)
     exp(2*pi*i/10) More...
     
    complex(spc), parameter pietc_s::z039 =( s51, s39)
     exp(2*pi*i*3/28) More...
     
    complex(spc), parameter pietc_s::z040 =( s50, s40)
     exp(2*pi*i/9) More...
     
    complex(spc), parameter pietc_s::z045 =( s45, s45)
     exp(2*pi*i/8) More...
     
    complex(spc), parameter pietc_s::z050 =( s40, s50)
     exp(2*pi*i*5/36) More...
     
    complex(spc), parameter pietc_s::z051 =( s39, s51)
     exp(2*pi*i/7) More...
     
    complex(spc), parameter pietc_s::z054 =( s36, s54)
     exp(2*pi*i*3/20) More...
     
    complex(spc), parameter pietc_s::z056 =( s34, s56)
     exp(2*pi*i*5/32) More...
     
    complex(spc), parameter pietc_s::z060 =( s30, s60)
     exp(2*pi*i/6) More...
     
    complex(spc), parameter pietc_s::z064 =( s26, s64)
     exp(2*pi*i*5/28) More...
     
    complex(spc), parameter pietc_s::z068 =( s22, s68)
     exp(2*pi*i*3/16) More...
     
    complex(spc), parameter pietc_s::z070 =( s20, s70)
     exp(2*pi*i*7/36) More...
     
    complex(spc), parameter pietc_s::z072 =( s18, s72)
     exp(2*pi*i/5) More...
     
    complex(spc), parameter pietc_s::z075 =( s15, s75)
     exp(2*pi*i*5/24) More...
     
    complex(spc), parameter pietc_s::z077 =( s13, s77)
     exp(2*pi*i*3/14) More...
     
    complex(spc), parameter pietc_s::z079 =( s11, s79)
     exp(2*pi*i*7/32) More...
     
    complex(spc), parameter pietc_s::z080 =( s10, s80)
     exp(2*pi*i*2/9) More...
     
    complex(spc), parameter pietc_s::z090 =ci
     exp(2*pi*i/4) More...
     
    complex(spc), parameter pietc_s::z100 =(ms10, s80)
     exp(2*pi*i*5/18) More...
     
    complex(spc), parameter pietc_s::z101 =(ms11, s79)
     exp(2*pi*i*9/32) More...
     
    complex(spc), parameter pietc_s::z103 =(ms13, s77)
     exp(2*pi*i*2/7) More...
     
    complex(spc), parameter pietc_s::z105 =(ms15, s75)
     exp(2*pi*i*7/24) More...
     
    complex(spc), parameter pietc_s::z108 =(ms18, s72)
     exp(2*pi*i*3/10) More...
     
    complex(spc), parameter pietc_s::z110 =(ms20, s70)
     exp(2*pi*i*11/36) More...
     
    complex(spc), parameter pietc_s::z112 =(ms22, s68)
     exp(2*pi*i*5/16) More...
     
    complex(spc), parameter pietc_s::z116 =(ms26, s64)
     exp(2*pi*i*9/28) More...
     
    complex(spc), parameter pietc_s::z120 =(ms30, s60)
     exp(2*pi*i/3) More...
     
    complex(spc), parameter pietc_s::z124 =(ms34, s56)
     exp(2*pi*i*11/32) More...
     
    complex(spc), parameter pietc_s::z126 =(ms36, s54)
     exp(2*pi*i*7/20) More...
     
    complex(spc), parameter pietc_s::z129 =(ms39, s51)
     exp(2*pi*i*5/14) More...
     
    complex(spc), parameter pietc_s::z130 =(ms40, s50)
     exp(2*pi*i*13/36) More...
     
    complex(spc), parameter pietc_s::z135 =(ms45, s45)
     exp(2*pi*i*3/8) More...
     
    complex(spc), parameter pietc_s::z140 =(ms50, s40)
     exp(2*pi*i*7/18) More...
     
    complex(spc), parameter pietc_s::z141 =(ms51, s39)
     exp(2*pi*i*11/28) More...
     
    complex(spc), parameter pietc_s::z144 =(ms54, s36)
     exp(2*pi*i*2/5) More...
     
    complex(spc), parameter pietc_s::z146 =(ms56, s34)
     exp(2*pi*i*13/32) More...
     
    complex(spc), parameter pietc_s::z150 =(ms60, s30)
     exp(2*pi*i*5/12) More...
     
    complex(spc), parameter pietc_s::z154 =(ms64, s26)
     exp(2*pi*i*3/7) More...
     
    complex(spc), parameter pietc_s::z158 =(ms68, s22)
     exp(2*pi*i*7/16) More...
     
    complex(spc), parameter pietc_s::z160 =(ms70, s20)
     exp(2*pi*i*4/9) More...
     
    complex(spc), parameter pietc_s::z162 =(ms72, s18)
     exp(2*pi*i*9/20) More...
     
    complex(spc), parameter pietc_s::z165 =(ms75, s15)
     exp(2*pi*i*11/24) More...
     
    complex(spc), parameter pietc_s::z167 =(ms77, s13)
     exp(2*pi*i*13/28) More...
     
    complex(spc), parameter pietc_s::z169 =(ms79, s11)
     exp(2*pi*i*15/32) More...
     
    complex(spc), parameter pietc_s::z170 =(ms80, s10)
     exp(2*pi*i*17/36) More...
     
    complex(spc), parameter pietc_s::z180 =-z000
     exp(2*pi*i/2) More...
     
    complex(spc), parameter pietc_s::z190 =-z010
     exp(2*pi*i*19/36) More...
     
    complex(spc), parameter pietc_s::z191 =-z011
     exp(2*pi*i*17/32) More...
     
    complex(spc), parameter pietc_s::z193 =-z013
     exp(2*pi*i*15/28) More...
     
    complex(spc), parameter pietc_s::z195 =-z015
     exp(2*pi*i*13/24) More...
     
    complex(spc), parameter pietc_s::z198 =-z018
     exp(2*pi*i*11/20) More...
     
    complex(spc), parameter pietc_s::z200 =-z020
     exp(2*pi*i*5/9) More...
     
    complex(spc), parameter pietc_s::z202 =-z022
     exp(2*pi*i*9/16) More...
     
    complex(spc), parameter pietc_s::z206 =-z026
     exp(2*pi*i*4/7) More...
     
    complex(spc), parameter pietc_s::z210 =-z030
     exp(2*pi*i*7/12) More...
     
    complex(spc), parameter pietc_s::z214 =-z034
     exp(2*pi*i*19/32) More...
     
    complex(spc), parameter pietc_s::z216 =-z036
     exp(2*pi*i*3/5) More...
     
    complex(spc), parameter pietc_s::z219 =-z039
     exp(2*pi*i*17/28) More...
     
    complex(spc), parameter pietc_s::z220 =-z040
     exp(2*pi*i*11/18) More...
     
    complex(spc), parameter pietc_s::z225 =-z045
     exp(2*pi*i*5/8) More...
     
    complex(spc), parameter pietc_s::z230 =-z050
     exp(2*pi*i*23/36) More...
     
    complex(spc), parameter pietc_s::z231 =-z051
     exp(2*pi*i*9/14) More...
     
    complex(spc), parameter pietc_s::z234 =-z054
     exp(2*pi*i*13/20) More...
     
    complex(spc), parameter pietc_s::z236 =-z056
     exp(2*pi*i*21/32) More...
     
    complex(spc), parameter pietc_s::z240 =-z060
     exp(2*pi*i*2/3) More...
     
    complex(spc), parameter pietc_s::z244 =-z064
     exp(2*pi*i*19/28) More...
     
    complex(spc), parameter pietc_s::z248 =-z068
     exp(2*pi*i*11/16) More...
     
    complex(spc), parameter pietc_s::z250 =-z070
     exp(2*pi*i*25/36) More...
     
    complex(spc), parameter pietc_s::z252 =-z072
     exp(2*pi*i*7/10) More...
     
    complex(spc), parameter pietc_s::z255 =-z075
     exp(2*pi*i*17/24) More...
     
    complex(spc), parameter pietc_s::z257 =-z077
     exp(2*pi*i*5/7) More...
     
    complex(spc), parameter pietc_s::z259 =-z079
     exp(2*pi*i*23/32) More...
     
    complex(spc), parameter pietc_s::z260 =-z080
     exp(2*pi*i*13/18) More...
     
    complex(spc), parameter pietc_s::z270 =-z090
     exp(2*pi*i*3/4) More...
     
    complex(spc), parameter pietc_s::z280 =-z100
     exp(2*pi*i*7/9) More...
     
    complex(spc), parameter pietc_s::z281 =-z101
     exp(2*pi*i*25/32) More...
     
    complex(spc), parameter pietc_s::z283 =-z103
     exp(2*pi*i*11/14) More...
     
    complex(spc), parameter pietc_s::z285 =-z105
     exp(2*pi*i*19/24) More...
     
    complex(spc), parameter pietc_s::z288 =-z108
     exp(2*pi*i*4/5) More...
     
    complex(spc), parameter pietc_s::z290 =-z110
     exp(2*pi*i*29/36) More...
     
    complex(spc), parameter pietc_s::z292 =-z112
     exp(2*pi*i*13/16) More...
     
    complex(spc), parameter pietc_s::z296 =-z116
     exp(2*pi*i*23/28) More...
     
    complex(spc), parameter pietc_s::z300 =-z120
     exp(2*pi*i*5/6) More...
     
    complex(spc), parameter pietc_s::z304 =-z124
     exp(2*pi*i*27/32) More...
     
    complex(spc), parameter pietc_s::z306 =-z126
     exp(2*pi*i*17/20) More...
     
    complex(spc), parameter pietc_s::z309 =-z129
     exp(2*pi*i*6/7) More...
     
    complex(spc), parameter pietc_s::z310 =-z130
     exp(2*pi*i*31/36) More...
     
    complex(spc), parameter pietc_s::z315 =-z135
     exp(2*pi*i*7/8) More...
     
    complex(spc), parameter pietc_s::z320 =-z140
     exp(2*pi*i*8/9) More...
     
    complex(spc), parameter pietc_s::z321 =-z141
     exp(2*pi*i*25/28) More...
     
    complex(spc), parameter pietc_s::z324 =-z144
     exp(2*pi*i*9/10) More...
     
    complex(spc), parameter pietc_s::z326 =-z146
     exp(2*pi*i*29/32) More...
     
    complex(spc), parameter pietc_s::z330 =-z150
     exp(2*pi*i*11/12) More...
     
    complex(spc), parameter pietc_s::z334 =-z154
     exp(2*pi*i*13/14) More...
     
    complex(spc), parameter pietc_s::z338 =-z158
     exp(2*pi*i*15/16) More...
     
    complex(spc), parameter pietc_s::z340 =-z160
     exp(2*pi*i*17/18) More...
     
    complex(spc), parameter pietc_s::z342 =-z162
     exp(2*pi*i*19/20) More...
     
    complex(spc), parameter pietc_s::z345 =-z165
     exp(2*pi*i*23/24) More...
     
    complex(spc), parameter pietc_s::z347 =-z167
     exp(2*pi*i*27/28) More...
     
    complex(spc), parameter pietc_s::z349 =-z169
     exp(2*pi*i*31/32) More...
     
    complex(spc), parameter pietc_s::z350 =-z170
     exp(2*pi*i*35/36) More...
     
    +

    Detailed Description

    +

    Single precision constants.

    +
    Author
    R. J. Purser
    +
    Date
    2014 Some of the commonly used constants (pi etc) 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.
    + +

    Definition in file pietc_s.f90.

    +

    Variable Documentation

    + +

    ◆ c0

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::c0 =(u0, u0)
    +
    + +

    complex zero

    + +

    Definition at line 110 of file pietc_s.f90.

    + +
    +
    + +

    ◆ c1

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::c1 =(u1, u0)
    +
    + +

    complex one

    + +

    Definition at line 111 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ci

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::ci =(u0, u1)
    +
    + +

    complex i=sqrt(-1)

    + +

    Definition at line 113 of file pietc_s.f90.

    + +
    +
    + +

    ◆ cipi

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::cipi =ci*pi
    +
    + +

    complex i*pi

    + +

    Definition at line 115 of file pietc_s.f90.

    + +
    +
    + +

    ◆ dtor

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::dtor =pi/180
    +
    + +

    Degrees to radians.

    + +

    Definition at line 51 of file pietc_s.f90.

    + +
    +
    + +

    ◆ euler

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::euler =0.57721566490153286060651209008240243104215933593992359880e0_sp
    +
    + +

    Euler-Mascheroni constant.

    + +

    Definition at line 49 of file pietc_s.f90.

    + +
    +
    + +

    ◆ f

    + +
    +
    + + + + +
    logical, parameter pietc_s::f =.false.
    +
    + +

    for pain-relief in logical ops

    + +

    Definition at line 14 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mc1

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::mc1 =-c1
    +
    + +

    complex minus-one

    + +

    Definition at line 112 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mci

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::mci =-ci
    +
    + +

    complex minus-i

    + +

    Definition at line 114 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mo2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mo2 =-o2
    +
    + +

    minus-half

    + +

    Definition at line 33 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mo3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mo3 =-o3
    +
    + +

    minus-third

    + +

    Definition at line 34 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mo4

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mo4 =-o4
    +
    + +

    minus-fourth

    + +

    Definition at line 35 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mo5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mo5 =-o5
    +
    + +

    minus-fifth

    + +

    Definition at line 36 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mo6

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mo6 =-06
    +
    + +

    minus-sixth

    + +

    Definition at line 37 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms10

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms10 =-s10
    +
    + +

    minus-sine(10 deg)

    + +

    Definition at line 82 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms11

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms11 =-s11
    +
    + +

    minus-sine(90/8 deg)

    + +

    Definition at line 83 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms13

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms13 =-s13
    +
    + +

    minus-sine(90/7 deg)

    + +

    Definition at line 84 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms15

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms15 =-s15
    +
    + +

    minus-sine(15 deg)

    + +

    Definition at line 85 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms18

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms18 =-s18
    +
    + +

    minus-sine(18 deg)

    + +

    Definition at line 86 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms20

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms20 =-s20
    +
    + +

    minus-sine(20 deg)

    + +

    Definition at line 87 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms22

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms22 =-s22
    +
    + +

    minus-sine(22.5 deg)

    + +

    Definition at line 88 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms26

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms26 =-s26
    +
    + +

    minus-sine(90*2/7 deg)

    + +

    Definition at line 89 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms30

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms30 =-s30
    +
    + +

    minus-sine(30 deg)

    + +

    Definition at line 90 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms34

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms34 =-s34
    +
    + +

    minus-sine(90*3/8 deg)

    + +

    Definition at line 91 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms36

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms36 =-s36
    +
    + +

    minus-sine(36 deg)

    + +

    Definition at line 92 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms39

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms39 =-s39
    +
    + +

    minus-sine(90*3/7 deg)

    + +

    Definition at line 93 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms40

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms40 =-s40
    +
    + +

    minus-sine(40 deg)

    + +

    Definition at line 94 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms45

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms45 =-s45
    +
    + +

    minus-sine(45 deg)

    + +

    Definition at line 95 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms50

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms50 =-s50
    +
    + +

    minus-sine(50 deg)

    + +

    Definition at line 96 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms51

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms51 =-s51
    +
    + +

    minus-sine(90*4/7 deg)

    + +

    Definition at line 97 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms54

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms54 =-s54
    +
    + +

    minus-sine(54 deg)

    + +

    Definition at line 98 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms56

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms56 =-s56
    +
    + +

    minus-sine(90*5/8 deg)

    + +

    Definition at line 99 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms60

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms60 =-s60
    +
    + +

    minus-sine(60 deg)

    + +

    Definition at line 100 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms64

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms64 =-s64
    +
    + +

    minus-sine(90*5/7 deg)

    + +

    Definition at line 101 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms68

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms68 =-s68
    +
    + +

    minus-sine(67.5 deg)

    + +

    Definition at line 102 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms70

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms70 =-s70
    +
    + +

    minus-sine(70 deg)

    + +

    Definition at line 103 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms72

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms72 =-s72
    +
    + +

    minus-sine(72 deg)

    + +

    Definition at line 104 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms75

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms75 =-s75
    +
    + +

    minus-sine(75 deg)

    + +

    Definition at line 105 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms77

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms77 =-s77
    +
    + +

    minus-sine(90*6/7 deg)

    + +

    Definition at line 106 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms79

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms79 =-s79
    +
    + +

    minus-sine(90*7/8 deg)

    + +

    Definition at line 107 of file pietc_s.f90.

    + +
    +
    + +

    ◆ ms80

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::ms80 =-s80
    +
    + +

    minus-sine(80 deg)

    + +

    Definition at line 108 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu1

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu1 =-u1
    +
    + +

    minus-one

    + +

    Definition at line 17 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu2 =-u2
    +
    + +

    minus-two

    + +

    Definition at line 19 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu3 =-u3
    +
    + +

    minus-three

    + +

    Definition at line 21 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu4

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu4 =-u4
    +
    + +

    minus-four

    + +

    Definition at line 23 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu5 =-u5
    +
    + +

    minus-five

    + +

    Definition at line 25 of file pietc_s.f90.

    + +
    +
    + +

    ◆ mu6

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::mu6 =-u6
    +
    + +

    minus-six

    + +

    Definition at line 27 of file pietc_s.f90.

    + +
    +
    + +

    ◆ o2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::o2 =u1/u2
    +
    + +

    half

    + +

    Definition at line 28 of file pietc_s.f90.

    + +
    +
    + +

    ◆ o3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::o3 =u1/u3
    +
    + +

    third

    + +

    Definition at line 29 of file pietc_s.f90.

    + +
    +
    + +

    ◆ o4

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::o4 =u1/u4
    +
    + +

    fourth

    + +

    Definition at line 30 of file pietc_s.f90.

    + +
    +
    + +

    ◆ o5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::o5 =u1/u5
    +
    + +

    fifth

    + +

    Definition at line 31 of file pietc_s.f90.

    + +
    +
    + +

    ◆ o6

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::o6 =u1/u6
    +
    + +

    sixth

    + +

    Definition at line 32 of file pietc_s.f90.

    + +
    +
    + +

    ◆ or2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::or2 =u1/r2
    +
    + +

    1.

    +

    /root of two

    + +

    Definition at line 45 of file pietc_s.f90.

    + +
    +
    + +

    ◆ or3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::or3 =u1/r3
    +
    + +

    1.

    +

    /root of three

    + +

    Definition at line 46 of file pietc_s.f90.

    + +
    +
    + +

    ◆ or5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::or5 =u1/r5
    +
    + +

    1.

    +

    /root of five

    + +

    Definition at line 47 of file pietc_s.f90.

    + +
    +
    + +

    ◆ phi

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::phi =1.6180339887498948482045868343656381177203091798057628621354e0_sp
    +
    + +

    Golden number.

    + +

    Definition at line 48 of file pietc_s.f90.

    + +
    +
    + +

    ◆ pi

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::pi =3.1415926535897932384626433832795028841971693993751058209749e0_sp
    +
    + +

    pi

    + +

    Definition at line 38 of file pietc_s.f90.

    + +
    +
    + +

    ◆ pi2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_sp
    +
    + +

    pi*2

    + +

    Definition at line 39 of file pietc_s.f90.

    + +
    +
    + +

    ◆ pih

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::pih =1.5707963267948966192313216916397514420985846996875529104874e0_sp
    +
    + +

    pi*half

    + +

    Definition at line 40 of file pietc_s.f90.

    + +
    +
    + +

    ◆ r2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::r2 =1.4142135623730950488016887242096980785696718753769480731766e0_sp
    +
    + +

    Square root of 2.

    + +

    Definition at line 42 of file pietc_s.f90.

    + +
    +
    + +

    ◆ r3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::r3 =1.7320508075688772935274463415058723669428052538103806280558e0_sp
    +
    + +

    Square root of 3.

    + +

    Definition at line 43 of file pietc_s.f90.

    + +
    +
    + +

    ◆ r5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::r5 =2.2360679774997896964091736687312762354406183596115257242708e0_sp
    +
    + +

    Square root of 5.

    + +

    Definition at line 44 of file pietc_s.f90.

    + +
    +
    + +

    ◆ rpi

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::rpi =1.7724538509055160272981674833411451827975494561223871282138e0_sp
    +
    + +

    square root of pi

    + +

    Definition at line 41 of file pietc_s.f90.

    + +
    +
    + +

    ◆ rtod

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::rtod =180/pi
    +
    + +

    radians to degrees

    + +

    Definition at line 52 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s10

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s10 =.173648177666930348851716626769314796000375677184069387236241e0_sp
    +
    + +

    sine(10 deg)

    + +

    Definition at line 54 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s11

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s11 =.195090322016128267848284868477022240927691617751954807754502e0_sp
    +
    + +

    sine(90/8 deg)

    + +

    Definition at line 55 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s13

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s13 =.222520933956314404288902564496794759466355568764544955311987e0_sp
    +
    + +

    sine(90/7 deg)

    + +

    Definition at line 56 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s15

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s15 =.258819045102520762348898837624048328349068901319930513814003e0_sp
    +
    + +

    sine(15 deg)

    + +

    Definition at line 57 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s18

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s18 =.309016994374947424102293417182819058860154589902881431067724e0_sp
    +
    + +

    sine(18 deg)

    + +

    Definition at line 58 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s20

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s20 =.342020143325668733044099614682259580763083367514160628465048e0_sp
    +
    + +

    sine(20 deg)

    + +

    Definition at line 59 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s22

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s22 =.382683432365089771728459984030398866761344562485627041433800e0_sp
    +
    + +

    sine(22.5 deg)

    + +

    Definition at line 60 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s26

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s26 =.433883739117558120475768332848358754609990727787459876444547e0_sp
    +
    + +

    sine(90*2/7 deg)

    + +

    Definition at line 61 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s30

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s30 =o2
    +
    + +

    sine(30 deg)

    + +

    Definition at line 62 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s34

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s34 =.555570233019602224742830813948532874374937190754804045924153e0_sp
    +
    + +

    sine(90*3/8 deg)

    + +

    Definition at line 63 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s36

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s36 =.587785252292473129168705954639072768597652437643145991072272e0_sp
    +
    + +

    sine(36 deg)

    + +

    Definition at line 64 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s39

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s39 =.623489801858733530525004884004239810632274730896402105365549e0_sp
    +
    + +

    sine(90*3/7 deg)

    + +

    Definition at line 65 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s40

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s40 =.642787609686539326322643409907263432907559884205681790324977e0_sp
    +
    + +

    sine(40 deg)

    + +

    Definition at line 66 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s45

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s45 =or2
    +
    + +

    sine(45 deg)

    + +

    Definition at line 67 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s50

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s50 =.766044443118978035202392650555416673935832457080395245854045e0_sp
    +
    + +

    sine(50 deg)

    + +

    Definition at line 68 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s51

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s51 =.781831482468029808708444526674057750232334518708687528980634e0_sp
    +
    + +

    sine(90*4/7 deg)

    + +

    Definition at line 69 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s54

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s54 =.809016994374947424102293417182819058860154589902881431067724e0_sp
    +
    + +

    sine(54 deg)

    + +

    Definition at line 70 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s56

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s56 =.831469612302545237078788377617905756738560811987249963446124e0_sp
    +
    + +

    sine(90*5/8 deg)

    + +

    Definition at line 71 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s60

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s60 =r3*o2
    +
    + +

    sine(60 deg)

    + +

    Definition at line 72 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s64

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s64 =.900968867902419126236102319507445051165919162131857150053562e0_sp
    +
    + +

    sine(90*5/7 deg)

    + +

    Definition at line 73 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s68

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s68 =.923879532511286756128183189396788286822416625863642486115097e0_sp
    +
    + +

    sine(67.5 deg)

    + +

    Definition at line 74 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s70

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s70 =.939692620785908384054109277324731469936208134264464633090286e0_sp
    +
    + +

    sine(70 deg)

    + +

    Definition at line 75 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s72

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s72 =.951056516295153572116439333379382143405698634125750222447305e0_sp
    +
    + +

    sine(72 deg)

    + +

    Definition at line 76 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s75

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s75 =.965925826289068286749743199728897367633904839008404550402343e0_sp
    +
    + +

    sine(75 deg)

    + +

    Definition at line 77 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s77

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s77 =.974927912181823607018131682993931217232785800619997437648079e0_sp
    +
    + +

    sine(90*6/7 deg)

    + +

    Definition at line 78 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s79

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s79 =.980785280403230449126182236134239036973933730893336095002916e0_sp
    +
    + +

    sine(90*7/8 deg)

    + +

    Definition at line 79 of file pietc_s.f90.

    + +
    +
    + +

    ◆ s80

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::s80 =.984807753012208059366743024589523013670643251719842418790025e0_sp
    +
    + +

    sine(80 deg)

    + +

    Definition at line 80 of file pietc_s.f90.

    + +
    +
    + +

    ◆ t

    + +
    +
    + + + + +
    logical, parameter pietc_s::t =.true.
    +
    + +

    for pain-relief in logical ops

    + +

    Definition at line 13 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u0

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u0 =0_sp
    +
    + +

    zero

    + +

    Definition at line 15 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u1

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u1 =1_sp
    +
    + +

    one

    + +

    Definition at line 16 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u2

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u2 =2_sp
    +
    + +

    two

    + +

    Definition at line 18 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u3

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u3 =3_sp
    +
    + +

    three

    + +

    Definition at line 20 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u4

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u4 =4_sp
    +
    + +

    four

    + +

    Definition at line 22 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u5

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u5 =5_sp
    +
    + +

    five

    + +

    Definition at line 24 of file pietc_s.f90.

    + +
    +
    + +

    ◆ u6

    + +
    +
    + + + + +
    real(sp), parameter pietc_s::u6 =6_sp
    +
    + +

    six

    + +

    Definition at line 26 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z000

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z000 =c1
    +
    + +

    exp(2*pi*i*0)

    + +

    Definition at line 117 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z010

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z010 =( s80, s10)
    +
    + +

    exp(2*pi*i/36)

    + +

    Definition at line 118 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z011

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z011 =( s79, s11)
    +
    + +

    exp(2*pi*i/32)

    + +

    Definition at line 119 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z013

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z013 =( s77, s13)
    +
    + +

    exp(2*pi*i/28)

    + +

    Definition at line 120 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z015

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z015 =( s75, s15)
    +
    + +

    exp(2*pi*i/24)

    + +

    Definition at line 121 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z018

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z018 =( s72, s18)
    +
    + +

    exp(2*pi*i/20)

    + +

    Definition at line 122 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z020

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z020 =( s70, s20)
    +
    + +

    exp(2*pi*i/18)

    + +

    Definition at line 123 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z022

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z022 =( s68, s22)
    +
    + +

    exp(2*pi*i/16)

    + +

    Definition at line 124 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z026

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z026 =( s64, s26)
    +
    + +

    exp(2*pi*i/14)

    + +

    Definition at line 125 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z030

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z030 =( s60, s30)
    +
    + +

    exp(2*pi*i/12)

    + +

    Definition at line 126 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z034

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z034 =( s56, s34)
    +
    + +

    exp(2*pi*i*3/32)

    + +

    Definition at line 127 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z036

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z036 =( s54, s36)
    +
    + +

    exp(2*pi*i/10)

    + +

    Definition at line 128 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z039

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z039 =( s51, s39)
    +
    + +

    exp(2*pi*i*3/28)

    + +

    Definition at line 129 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z040

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z040 =( s50, s40)
    +
    + +

    exp(2*pi*i/9)

    + +

    Definition at line 130 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z045

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z045 =( s45, s45)
    +
    + +

    exp(2*pi*i/8)

    + +

    Definition at line 131 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z050

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z050 =( s40, s50)
    +
    + +

    exp(2*pi*i*5/36)

    + +

    Definition at line 132 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z051

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z051 =( s39, s51)
    +
    + +

    exp(2*pi*i/7)

    + +

    Definition at line 133 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z054

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z054 =( s36, s54)
    +
    + +

    exp(2*pi*i*3/20)

    + +

    Definition at line 134 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z056

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z056 =( s34, s56)
    +
    + +

    exp(2*pi*i*5/32)

    + +

    Definition at line 135 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z060

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z060 =( s30, s60)
    +
    + +

    exp(2*pi*i/6)

    + +

    Definition at line 136 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z064

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z064 =( s26, s64)
    +
    + +

    exp(2*pi*i*5/28)

    + +

    Definition at line 137 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z068

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z068 =( s22, s68)
    +
    + +

    exp(2*pi*i*3/16)

    + +

    Definition at line 138 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z070

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z070 =( s20, s70)
    +
    + +

    exp(2*pi*i*7/36)

    + +

    Definition at line 139 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z072

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z072 =( s18, s72)
    +
    + +

    exp(2*pi*i/5)

    + +

    Definition at line 140 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z075

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z075 =( s15, s75)
    +
    + +

    exp(2*pi*i*5/24)

    + +

    Definition at line 141 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z077

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z077 =( s13, s77)
    +
    + +

    exp(2*pi*i*3/14)

    + +

    Definition at line 142 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z079

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z079 =( s11, s79)
    +
    + +

    exp(2*pi*i*7/32)

    + +

    Definition at line 143 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z080

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z080 =( s10, s80)
    +
    + +

    exp(2*pi*i*2/9)

    + +

    Definition at line 144 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z090

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z090 =ci
    +
    + +

    exp(2*pi*i/4)

    + +

    Definition at line 145 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z100

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z100 =(ms10, s80)
    +
    + +

    exp(2*pi*i*5/18)

    + +

    Definition at line 146 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z101

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z101 =(ms11, s79)
    +
    + +

    exp(2*pi*i*9/32)

    + +

    Definition at line 147 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z103

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z103 =(ms13, s77)
    +
    + +

    exp(2*pi*i*2/7)

    + +

    Definition at line 148 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z105

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z105 =(ms15, s75)
    +
    + +

    exp(2*pi*i*7/24)

    + +

    Definition at line 149 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z108

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z108 =(ms18, s72)
    +
    + +

    exp(2*pi*i*3/10)

    + +

    Definition at line 150 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z110

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z110 =(ms20, s70)
    +
    + +

    exp(2*pi*i*11/36)

    + +

    Definition at line 151 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z112

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z112 =(ms22, s68)
    +
    + +

    exp(2*pi*i*5/16)

    + +

    Definition at line 152 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z116

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z116 =(ms26, s64)
    +
    + +

    exp(2*pi*i*9/28)

    + +

    Definition at line 153 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z120

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z120 =(ms30, s60)
    +
    + +

    exp(2*pi*i/3)

    + +

    Definition at line 154 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z124

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z124 =(ms34, s56)
    +
    + +

    exp(2*pi*i*11/32)

    + +

    Definition at line 155 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z126

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z126 =(ms36, s54)
    +
    + +

    exp(2*pi*i*7/20)

    + +

    Definition at line 156 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z129

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z129 =(ms39, s51)
    +
    + +

    exp(2*pi*i*5/14)

    + +

    Definition at line 157 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z130

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z130 =(ms40, s50)
    +
    + +

    exp(2*pi*i*13/36)

    + +

    Definition at line 158 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z135

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z135 =(ms45, s45)
    +
    + +

    exp(2*pi*i*3/8)

    + +

    Definition at line 159 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z140

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z140 =(ms50, s40)
    +
    + +

    exp(2*pi*i*7/18)

    + +

    Definition at line 160 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z141

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z141 =(ms51, s39)
    +
    + +

    exp(2*pi*i*11/28)

    + +

    Definition at line 161 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z144

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z144 =(ms54, s36)
    +
    + +

    exp(2*pi*i*2/5)

    + +

    Definition at line 162 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z146

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z146 =(ms56, s34)
    +
    + +

    exp(2*pi*i*13/32)

    + +

    Definition at line 163 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z150

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z150 =(ms60, s30)
    +
    + +

    exp(2*pi*i*5/12)

    + +

    Definition at line 164 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z154

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z154 =(ms64, s26)
    +
    + +

    exp(2*pi*i*3/7)

    + +

    Definition at line 165 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z158

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z158 =(ms68, s22)
    +
    + +

    exp(2*pi*i*7/16)

    + +

    Definition at line 166 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z160

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z160 =(ms70, s20)
    +
    + +

    exp(2*pi*i*4/9)

    + +

    Definition at line 167 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z162

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z162 =(ms72, s18)
    +
    + +

    exp(2*pi*i*9/20)

    + +

    Definition at line 168 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z165

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z165 =(ms75, s15)
    +
    + +

    exp(2*pi*i*11/24)

    + +

    Definition at line 169 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z167

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z167 =(ms77, s13)
    +
    + +

    exp(2*pi*i*13/28)

    + +

    Definition at line 170 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z169

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z169 =(ms79, s11)
    +
    + +

    exp(2*pi*i*15/32)

    + +

    Definition at line 171 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z170

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z170 =(ms80, s10)
    +
    + +

    exp(2*pi*i*17/36)

    + +

    Definition at line 172 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z180

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z180 =-z000
    +
    + +

    exp(2*pi*i/2)

    + +

    Definition at line 173 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z190

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z190 =-z010
    +
    + +

    exp(2*pi*i*19/36)

    + +

    Definition at line 174 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z191

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z191 =-z011
    +
    + +

    exp(2*pi*i*17/32)

    + +

    Definition at line 175 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z193

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z193 =-z013
    +
    + +

    exp(2*pi*i*15/28)

    + +

    Definition at line 176 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z195

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z195 =-z015
    +
    + +

    exp(2*pi*i*13/24)

    + +

    Definition at line 177 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z198

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z198 =-z018
    +
    + +

    exp(2*pi*i*11/20)

    + +

    Definition at line 178 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z200

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z200 =-z020
    +
    + +

    exp(2*pi*i*5/9)

    + +

    Definition at line 179 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z202

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z202 =-z022
    +
    + +

    exp(2*pi*i*9/16)

    + +

    Definition at line 180 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z206

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z206 =-z026
    +
    + +

    exp(2*pi*i*4/7)

    + +

    Definition at line 181 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z210

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z210 =-z030
    +
    + +

    exp(2*pi*i*7/12)

    + +

    Definition at line 182 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z214

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z214 =-z034
    +
    + +

    exp(2*pi*i*19/32)

    + +

    Definition at line 183 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z216

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z216 =-z036
    +
    + +

    exp(2*pi*i*3/5)

    + +

    Definition at line 184 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z219

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z219 =-z039
    +
    + +

    exp(2*pi*i*17/28)

    + +

    Definition at line 185 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z220

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z220 =-z040
    +
    + +

    exp(2*pi*i*11/18)

    + +

    Definition at line 186 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z225

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z225 =-z045
    +
    + +

    exp(2*pi*i*5/8)

    + +

    Definition at line 187 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z230

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z230 =-z050
    +
    + +

    exp(2*pi*i*23/36)

    + +

    Definition at line 188 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z231

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z231 =-z051
    +
    + +

    exp(2*pi*i*9/14)

    + +

    Definition at line 189 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z234

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z234 =-z054
    +
    + +

    exp(2*pi*i*13/20)

    + +

    Definition at line 190 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z236

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z236 =-z056
    +
    + +

    exp(2*pi*i*21/32)

    + +

    Definition at line 191 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z240

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z240 =-z060
    +
    + +

    exp(2*pi*i*2/3)

    + +

    Definition at line 192 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z244

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z244 =-z064
    +
    + +

    exp(2*pi*i*19/28)

    + +

    Definition at line 193 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z248

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z248 =-z068
    +
    + +

    exp(2*pi*i*11/16)

    + +

    Definition at line 194 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z250

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z250 =-z070
    +
    + +

    exp(2*pi*i*25/36)

    + +

    Definition at line 195 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z252

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z252 =-z072
    +
    + +

    exp(2*pi*i*7/10)

    + +

    Definition at line 196 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z255

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z255 =-z075
    +
    + +

    exp(2*pi*i*17/24)

    + +

    Definition at line 197 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z257

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z257 =-z077
    +
    + +

    exp(2*pi*i*5/7)

    + +

    Definition at line 198 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z259

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z259 =-z079
    +
    + +

    exp(2*pi*i*23/32)

    + +

    Definition at line 199 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z260

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z260 =-z080
    +
    + +

    exp(2*pi*i*13/18)

    + +

    Definition at line 200 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z270

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z270 =-z090
    +
    + +

    exp(2*pi*i*3/4)

    + +

    Definition at line 201 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z280

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z280 =-z100
    +
    + +

    exp(2*pi*i*7/9)

    + +

    Definition at line 202 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z281

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z281 =-z101
    +
    + +

    exp(2*pi*i*25/32)

    + +

    Definition at line 203 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z283

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z283 =-z103
    +
    + +

    exp(2*pi*i*11/14)

    + +

    Definition at line 204 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z285

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z285 =-z105
    +
    + +

    exp(2*pi*i*19/24)

    + +

    Definition at line 205 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z288

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z288 =-z108
    +
    + +

    exp(2*pi*i*4/5)

    + +

    Definition at line 206 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z290

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z290 =-z110
    +
    + +

    exp(2*pi*i*29/36)

    + +

    Definition at line 207 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z292

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z292 =-z112
    +
    + +

    exp(2*pi*i*13/16)

    + +

    Definition at line 208 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z296

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z296 =-z116
    +
    + +

    exp(2*pi*i*23/28)

    + +

    Definition at line 209 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z300

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z300 =-z120
    +
    + +

    exp(2*pi*i*5/6)

    + +

    Definition at line 210 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z304

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z304 =-z124
    +
    + +

    exp(2*pi*i*27/32)

    + +

    Definition at line 211 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z306

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z306 =-z126
    +
    + +

    exp(2*pi*i*17/20)

    + +

    Definition at line 212 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z309

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z309 =-z129
    +
    + +

    exp(2*pi*i*6/7)

    + +

    Definition at line 213 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z310

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z310 =-z130
    +
    + +

    exp(2*pi*i*31/36)

    + +

    Definition at line 214 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z315

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z315 =-z135
    +
    + +

    exp(2*pi*i*7/8)

    + +

    Definition at line 215 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z320

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z320 =-z140
    +
    + +

    exp(2*pi*i*8/9)

    + +

    Definition at line 216 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z321

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z321 =-z141
    +
    + +

    exp(2*pi*i*25/28)

    + +

    Definition at line 217 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z324

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z324 =-z144
    +
    + +

    exp(2*pi*i*9/10)

    + +

    Definition at line 218 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z326

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z326 =-z146
    +
    + +

    exp(2*pi*i*29/32)

    + +

    Definition at line 219 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z330

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z330 =-z150
    +
    + +

    exp(2*pi*i*11/12)

    + +

    Definition at line 220 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z334

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z334 =-z154
    +
    + +

    exp(2*pi*i*13/14)

    + +

    Definition at line 221 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z338

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z338 =-z158
    +
    + +

    exp(2*pi*i*15/16)

    + +

    Definition at line 222 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z340

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z340 =-z160
    +
    + +

    exp(2*pi*i*17/18)

    + +

    Definition at line 223 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z342

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z342 =-z162
    +
    + +

    exp(2*pi*i*19/20)

    + +

    Definition at line 224 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z345

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z345 =-z165
    +
    + +

    exp(2*pi*i*23/24)

    + +

    Definition at line 225 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z347

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z347 =-z167
    +
    + +

    exp(2*pi*i*27/28)

    + +

    Definition at line 226 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z349

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z349 =-z169
    +
    + +

    exp(2*pi*i*31/32)

    + +

    Definition at line 227 of file pietc_s.f90.

    + +
    +
    + +

    ◆ z350

    + +
    +
    + + + + +
    complex(spc), parameter pietc_s::z350 =-z170
    +
    + +

    exp(2*pi*i*35/36)

    + +

    Definition at line 228 of file pietc_s.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pietc__s_8f90.js b/ver-1.11.0/grid_tools/pietc__s_8f90.js new file mode 100644 index 000000000..eedfcf2b5 --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc__s_8f90.js @@ -0,0 +1,214 @@ +var pietc__s_8f90 = +[ + [ "c0", "pietc__s_8f90.html#a7cb642d34b482c5dd4385e219049712e", null ], + [ "c1", "pietc__s_8f90.html#a7ab3f4129c5edbf0d6c2b2d9fefe9db4", null ], + [ "ci", "pietc__s_8f90.html#ad0d0376730501a650f809c618932a661", null ], + [ "cipi", "pietc__s_8f90.html#a6068649aeb63677c9a26f5b898600d5d", null ], + [ "dtor", "pietc__s_8f90.html#ab93de98ccaa79622a76a3ba1d8dcf107", null ], + [ "euler", "pietc__s_8f90.html#a498dbbe1374b2a2bca5901f0ac430664", null ], + [ "f", "pietc__s_8f90.html#a8d5c2d572cf1e87d48110c4fdc985ba0", null ], + [ "mc1", "pietc__s_8f90.html#aa623c315afa6ebf68c8a6c61a67eafc6", null ], + [ "mci", "pietc__s_8f90.html#aecc2d0bdcae1dc53a53817a092429384", null ], + [ "mo2", "pietc__s_8f90.html#ada18a451ee0fcf1eb58a8a8b4fc1df56", null ], + [ "mo3", "pietc__s_8f90.html#a6f4c63c0e5ed77859ce7fb24829181fd", null ], + [ "mo4", "pietc__s_8f90.html#ad304d1504607f7e87fe1d06ba0d750a7", null ], + [ "mo5", "pietc__s_8f90.html#a880b35e57f409f650a5242eb86f15da6", null ], + [ "mo6", "pietc__s_8f90.html#aca1c0bbf1eca5966f5bc7570d3d1388e", null ], + [ "ms10", "pietc__s_8f90.html#a91e99a7dc743bb8dd0089e81061c2672", null ], + [ "ms11", "pietc__s_8f90.html#af1f9ed74c5b4a4a33624cd95f17aa00a", null ], + [ "ms13", "pietc__s_8f90.html#a84343423794212d4f040a437f429d54c", null ], + [ "ms15", "pietc__s_8f90.html#a4b5e199873b8bfb71ddf9db37d14f7fb", null ], + [ "ms18", "pietc__s_8f90.html#a4381c3ec60478ce7dd5ec2e4f41b3b64", null ], + [ "ms20", "pietc__s_8f90.html#abb7ee1b228b6bc46bebce35dfc0b3174", null ], + [ "ms22", "pietc__s_8f90.html#affce1a0b84f3e62c760c5d9b674753cd", null ], + [ "ms26", "pietc__s_8f90.html#aab2a6248f79fd41de453fedb733fe983", null ], + [ "ms30", "pietc__s_8f90.html#a0323cdf932998dcb6486ac3319014b1e", null ], + [ "ms34", "pietc__s_8f90.html#ac731f3246c7d5a35b1404933b6287c25", null ], + [ "ms36", "pietc__s_8f90.html#abc1a69344ac1c5ca9b1c2eb957dc38b2", null ], + [ "ms39", "pietc__s_8f90.html#a9f4b41675fa331b74d91a2b2ec2a07eb", null ], + [ "ms40", "pietc__s_8f90.html#a722a807309cd046ba62fde85896125ad", null ], + [ "ms45", "pietc__s_8f90.html#a5e7332f1c8cd12f77ac80f159ab61d35", null ], + [ "ms50", "pietc__s_8f90.html#a78a757122a79502072fb10e1ce5ee4c1", null ], + [ "ms51", "pietc__s_8f90.html#ad2a128f4448568563aaff9c05bd41639", null ], + [ "ms54", "pietc__s_8f90.html#aee2e28f56ae2bd3faaf9076001c46019", null ], + [ "ms56", "pietc__s_8f90.html#a0f18539584a1b107f987fac03b3526a6", null ], + [ "ms60", "pietc__s_8f90.html#a26c92a5d3f049d43d8afe80c4c921115", null ], + [ "ms64", "pietc__s_8f90.html#ab3a4f17d61fd6be1b6a5d0ae5fb9aa73", null ], + [ "ms68", "pietc__s_8f90.html#a58c6456f6e558d6e00977421e154b99b", null ], + [ "ms70", "pietc__s_8f90.html#af855cf038c59695e21e717e2f5cdf8b2", null ], + [ "ms72", "pietc__s_8f90.html#ab4a9b72c42ae68dac8ca20398e8ddb50", null ], + [ "ms75", "pietc__s_8f90.html#a4666bbf4f401c5907faf826e16f06072", null ], + [ "ms77", "pietc__s_8f90.html#a22de7d216cc531ed6f735218cfabbd7b", null ], + [ "ms79", "pietc__s_8f90.html#aac3727259a989bc49d55423bdacddfe2", null ], + [ "ms80", "pietc__s_8f90.html#a9f36342ef17e8d24e4138570177f175f", null ], + [ "mu1", "pietc__s_8f90.html#a6f12e3aebef29573741977e2284a5f0d", null ], + [ "mu2", "pietc__s_8f90.html#a49f25c285c156dc01f9b1de76c503cbe", null ], + [ "mu3", "pietc__s_8f90.html#a932636600a9b1ed1a6d475250ccf01c4", null ], + [ "mu4", "pietc__s_8f90.html#a543dc1c3d0c3204a4ebb15d63d4107bf", null ], + [ "mu5", "pietc__s_8f90.html#a57bc0de1e6897ff4b6145d95772ff6cf", null ], + [ "mu6", "pietc__s_8f90.html#a5d02eb02e85610a65914043b285b0293", null ], + [ "o2", "pietc__s_8f90.html#ae506bdfa2f92be38fbbb8b81e9dd77c0", null ], + [ "o3", "pietc__s_8f90.html#a7409753b3b4fdca5fc18b576e0efe020", null ], + [ "o4", "pietc__s_8f90.html#ab2c4441fb72319b1765930d211f968f9", null ], + [ "o5", "pietc__s_8f90.html#a45b918d6e65dd757512ae7ddcb6c0145", null ], + [ "o6", "pietc__s_8f90.html#ab50be2d29b25e899332fe396f496ca6f", null ], + [ "or2", "pietc__s_8f90.html#af3ba8bcb517fa4360962e8aff9e89e63", null ], + [ "or3", "pietc__s_8f90.html#af65f9aeb25e708e053e2a06fff4f1056", null ], + [ "or5", "pietc__s_8f90.html#ad4919a540ebb22a8563ffefc0454efd1", null ], + [ "phi", "pietc__s_8f90.html#a2bdd911cd9e0b2845409835079d0e8ab", null ], + [ "pi", "pietc__s_8f90.html#a77c1277f4677c202de8be67a9bdd97fe", null ], + [ "pi2", "pietc__s_8f90.html#a4eba4f9674bc6ddd4707965fa5c0d486", null ], + [ "pih", "pietc__s_8f90.html#a7b0c1ef4e5e55596e88096d68e5fe9e2", null ], + [ "r2", "pietc__s_8f90.html#a9ae9dbd46993df536680eb423fc7116e", null ], + [ "r3", "pietc__s_8f90.html#ac9b719e709470919b3d636b2e8e97620", null ], + [ "r5", "pietc__s_8f90.html#a0e211899ead81f85d0a1ac1a9a764bdd", null ], + [ "rpi", "pietc__s_8f90.html#aedc2b4e7a9560c9e6fed91df12e76201", null ], + [ "rtod", "pietc__s_8f90.html#ae5c15456f6df7899c647db6dcdf8af4c", null ], + [ "s10", "pietc__s_8f90.html#a0f926ba1c07bbed0b4d60a3c6ce61f84", null ], + [ "s11", "pietc__s_8f90.html#ab91bdf495f346e202ed225c73cbebcda", null ], + [ "s13", "pietc__s_8f90.html#a23a51b01f50bee4d91370d6e65cfaee9", null ], + [ "s15", "pietc__s_8f90.html#ae10be280e8279758cc3be4a94e3af36a", null ], + [ "s18", "pietc__s_8f90.html#ae9f0f611b70a05365d57d08a235fcbb2", null ], + [ "s20", "pietc__s_8f90.html#ab5d1f8f4a6556ee36cd3a5750ce517d3", null ], + [ "s22", "pietc__s_8f90.html#af0e447bc5fe989550bb0bfc2729015d4", null ], + [ "s26", "pietc__s_8f90.html#a61f587a87ed7c05a0044111206fb3dc8", null ], + [ "s30", "pietc__s_8f90.html#add60b96afbcbdff58f13bc0ad9c3fdc8", null ], + [ "s34", "pietc__s_8f90.html#a21bb34d4e0d62565a6b2ca9dccd7d451", null ], + [ "s36", "pietc__s_8f90.html#a9b77358ea68cd5295368cfcd5dc9e350", null ], + [ "s39", "pietc__s_8f90.html#aa3db36ce4eee26c8443573589aa196a5", null ], + [ "s40", "pietc__s_8f90.html#a044c2cc54c95c27b703f539a5264b76f", null ], + [ "s45", "pietc__s_8f90.html#aebf5a9ddfb89c17cd327acface976694", null ], + [ "s50", "pietc__s_8f90.html#a666697f14842c7f2cab1fdd214a647de", null ], + [ "s51", "pietc__s_8f90.html#a0e3e131e0b1179ddc2f276840f29276a", null ], + [ "s54", "pietc__s_8f90.html#af90cd479cfeea6604524c509466c622d", null ], + [ "s56", "pietc__s_8f90.html#a9e6867a44c77080afdfb04e04b67e052", null ], + [ "s60", "pietc__s_8f90.html#a89091096d073098066efc0ad1bce6bde", null ], + [ "s64", "pietc__s_8f90.html#a6865a52d1f2d4d686d5e7ed6ceda8314", null ], + [ "s68", "pietc__s_8f90.html#abfb56a32d06f10b0dee762ef9bfb270a", null ], + [ "s70", "pietc__s_8f90.html#af972a379292c421f30cefe7e100da068", null ], + [ "s72", "pietc__s_8f90.html#aae82132c702b66ce1976c24eea6de11b", null ], + [ "s75", "pietc__s_8f90.html#a7d50358b4415fb6c2108dc15d5264287", null ], + [ "s77", "pietc__s_8f90.html#a0e84a47a9deded8b33ba3568253acf9b", null ], + [ "s79", "pietc__s_8f90.html#ad1499babe6c008001cf2dec6081b694f", null ], + [ "s80", "pietc__s_8f90.html#a7c460d20a4e97d6b6fd038f7ae1e6693", null ], + [ "t", "pietc__s_8f90.html#a352d186d9a30ce9f837cb012d4d7f727", null ], + [ "u0", "pietc__s_8f90.html#adcb44bd9276f44fa4f112451fc1447a8", null ], + [ "u1", "pietc__s_8f90.html#a234638c3245e0481c8ba7cb132871cf8", null ], + [ "u2", "pietc__s_8f90.html#a6be747b047f117a93ab29b374fdc1a6d", null ], + [ "u3", "pietc__s_8f90.html#ab13b8f26144856bdb461571d0898d3e7", null ], + [ "u4", "pietc__s_8f90.html#a11feaf116766d164aff120d845b966e2", null ], + [ "u5", "pietc__s_8f90.html#ab4ef2e76e02b74a99a4af8948a077b6c", null ], + [ "u6", "pietc__s_8f90.html#ae0cd95244a190a7f6671e5ab99257ea5", null ], + [ "z000", "pietc__s_8f90.html#af18a35a122394b76e098e763f8a6d9d4", null ], + [ "z010", "pietc__s_8f90.html#a91506f00dc776db7d62464adb64937bf", null ], + [ "z011", "pietc__s_8f90.html#a7196833a19947f798eaf7fb894f20f37", null ], + [ "z013", "pietc__s_8f90.html#a51b801ae6af1c1a56b43c2a62092794d", null ], + [ "z015", "pietc__s_8f90.html#abedc4d0b8c9fc174f2906370f66037fe", null ], + [ "z018", "pietc__s_8f90.html#a487b5b801bb8e5e1d5318a05f4e86338", null ], + [ "z020", "pietc__s_8f90.html#aee9e809d3122906061252e12cacec81d", null ], + [ "z022", "pietc__s_8f90.html#af74e6119268e65a2a637d0bfc47ad284", null ], + [ "z026", "pietc__s_8f90.html#a8f191bb882cbaa28867ee28175332ac5", null ], + [ "z030", "pietc__s_8f90.html#ae1945337fc395f0dce4d27c6ca889d7c", null ], + [ "z034", "pietc__s_8f90.html#a9c66e38b759a18b9f6a42985c9366354", null ], + [ "z036", "pietc__s_8f90.html#a71283c15b8ad74ad42cd0c70f44e0a4c", null ], + [ "z039", "pietc__s_8f90.html#a2febe73d189b17ed478913d5afe0ace4", null ], + [ "z040", "pietc__s_8f90.html#a13dae7f486fe9e36e9a5f00ce87a052c", null ], + [ "z045", "pietc__s_8f90.html#ac92546135a29be90ecc078e6c4b1254f", null ], + [ "z050", "pietc__s_8f90.html#ac088c7beaa2291a9259bd24f1d136e4d", null ], + [ "z051", "pietc__s_8f90.html#af53ef31a78491b2acf8bdb5ee8ea4674", null ], + [ "z054", "pietc__s_8f90.html#a6f972cc3b272ed5fca9fe855f387ab84", null ], + [ "z056", "pietc__s_8f90.html#ac2408515f85c65fd06e49a6fae69370f", null ], + [ "z060", "pietc__s_8f90.html#a21214b4bf794a8e5f9be9ad5b1430259", null ], + [ "z064", "pietc__s_8f90.html#a96b958d95b35dd463b783c408f1fe268", null ], + [ "z068", "pietc__s_8f90.html#afc3b9e872a8f3e2b5adf51a6b63ae6e6", null ], + [ "z070", "pietc__s_8f90.html#a888f72bed5320b69edc962d690e9d6fd", null ], + [ "z072", "pietc__s_8f90.html#a797b3d4690cbe814f0c24cd51e725e59", null ], + [ "z075", "pietc__s_8f90.html#a10c4f0d9ad11a0b2c5a1f27d8e3171ca", null ], + [ "z077", "pietc__s_8f90.html#a8993c78e94ca762842a027adc0bc3aff", null ], + [ "z079", "pietc__s_8f90.html#a71deaca3abd756d2dccc93ca7231de31", null ], + [ "z080", "pietc__s_8f90.html#a6d6755f9a501d098dd486c622a80bc71", null ], + [ "z090", "pietc__s_8f90.html#a46dcffedea219cd26aed6bcbb9fc4809", null ], + [ "z100", "pietc__s_8f90.html#ab67437cd809b9d5537a7030aafe22450", null ], + [ "z101", "pietc__s_8f90.html#a81d363045de2ce375f29bf62c9057bef", null ], + [ "z103", "pietc__s_8f90.html#a821fb974277ed7ba68114a260fbf0e22", null ], + [ "z105", "pietc__s_8f90.html#ad2288ae663e5444548b25eb64d43d56b", null ], + [ "z108", "pietc__s_8f90.html#ade304c9a8d97539489dc3e3352898ba4", null ], + [ "z110", "pietc__s_8f90.html#a5b6e9612730463635294c8625cc2dd6f", null ], + [ "z112", "pietc__s_8f90.html#a57c1352db438d272c16bc0559dcafa6e", null ], + [ "z116", "pietc__s_8f90.html#a9b74b914720c0b62cabf9e974cf53dd1", null ], + [ "z120", "pietc__s_8f90.html#a00846ccea13202740f301ef28ec0c2cf", null ], + [ "z124", "pietc__s_8f90.html#aa656eb37135a2901fe115434665cebd9", null ], + [ "z126", "pietc__s_8f90.html#ae7028347860c8eaec4acd6869c996e0d", null ], + [ "z129", "pietc__s_8f90.html#a0026c9b54a3caf043cd656fbefa98f02", null ], + [ "z130", "pietc__s_8f90.html#a2458b30e63c7eb51715183fca9dcbd96", null ], + [ "z135", "pietc__s_8f90.html#ac071455e108c31860f3478e07f44b71b", null ], + [ "z140", "pietc__s_8f90.html#af8bf0a5e66c6393c06382b2dc54ede8e", null ], + [ "z141", "pietc__s_8f90.html#ad6ab37ed9088afbfc9abf71e1b90a3bd", null ], + [ "z144", "pietc__s_8f90.html#ad36ae737181ca013c264882fe6d57447", null ], + [ "z146", "pietc__s_8f90.html#ac2cc9be8f19f55fc7d71c3b47d7e6bb1", null ], + [ "z150", "pietc__s_8f90.html#a7e951c0cae4895b71ca7b9d84aa4850a", null ], + [ "z154", "pietc__s_8f90.html#ac1934b401ff931edeb1a4bf2252c657e", null ], + [ "z158", "pietc__s_8f90.html#ab6dd63af3f879af6d740144aef9931d6", null ], + [ "z160", "pietc__s_8f90.html#a07b039fd5af68c51ad3c641c9fcd455b", null ], + [ "z162", "pietc__s_8f90.html#abb6432643b4f214572403105f282aee2", null ], + [ "z165", "pietc__s_8f90.html#ac65287d60f93e4d19ce42087a9c29a29", null ], + [ "z167", "pietc__s_8f90.html#ad5197b5ebea6e6d77e441200be045646", null ], + [ "z169", "pietc__s_8f90.html#a7c5ad7e78daddbd2cded25446e8255e0", null ], + [ "z170", "pietc__s_8f90.html#a11e14dd4189701bd5ce2ef98d15bf280", null ], + [ "z180", "pietc__s_8f90.html#ae4acd5b2a8846be147f868d25477a1fd", null ], + [ "z190", "pietc__s_8f90.html#a7770e3049b5489c8d94c8018a1c78521", null ], + [ "z191", "pietc__s_8f90.html#ad2999f3c3ad9fcd7d90b5a53af294252", null ], + [ "z193", "pietc__s_8f90.html#a7f94e3d8e409ae2c48807bfc8c3c3fe7", null ], + [ "z195", "pietc__s_8f90.html#a7ec259770ffd7300894a8f79141298ea", null ], + [ "z198", "pietc__s_8f90.html#ad126524d1ca33a5e2fd427c0a56b3a5c", null ], + [ "z200", "pietc__s_8f90.html#affc43998a7c8d03d61f7cec500282a79", null ], + [ "z202", "pietc__s_8f90.html#adb5b7234588d651cbdc5d52bbecd2e47", null ], + [ "z206", "pietc__s_8f90.html#a861d80b24e143bce9d9276c45432de3e", null ], + [ "z210", "pietc__s_8f90.html#ab0ffe4cd2becaf9f8e51864e38c37775", null ], + [ "z214", "pietc__s_8f90.html#aec6b719d43709674bd078f73cb847e15", null ], + [ "z216", "pietc__s_8f90.html#a90d493311a95ab88f47d5ab6e63a8d27", null ], + [ "z219", "pietc__s_8f90.html#a5d4aa196d00ed72aa3008d650146a401", null ], + [ "z220", "pietc__s_8f90.html#aadfd1259d91df7899bfabb06218ef705", null ], + [ "z225", "pietc__s_8f90.html#a8d42c6a5bd4877e419041d4401c87b88", null ], + [ "z230", "pietc__s_8f90.html#a72904853a78f4d56e400c9a78e089301", null ], + [ "z231", "pietc__s_8f90.html#a3112d76d5666ed00a0b04cfec0b58228", null ], + [ "z234", "pietc__s_8f90.html#ab67989d77b4175354736de9da574f56e", null ], + [ "z236", "pietc__s_8f90.html#a48d4da45bfd7fa22de7886dc1891da99", null ], + [ "z240", "pietc__s_8f90.html#ae1d9681f2c89284a653d775e54e2c899", null ], + [ "z244", "pietc__s_8f90.html#a0ecc03208bc203944d2fb43c47bd273a", null ], + [ "z248", "pietc__s_8f90.html#ad0cc0aabe288b47faf29e84aa25da6a1", null ], + [ "z250", "pietc__s_8f90.html#a593c206ff024204bf7cec5f9da051be3", null ], + [ "z252", "pietc__s_8f90.html#a0e41a64994fe2b5166577324cdefc068", null ], + [ "z255", "pietc__s_8f90.html#aa052a2867c49a3455b870e93173115b4", null ], + [ "z257", "pietc__s_8f90.html#a626ed5c3729ea8f1bce885521457da0e", null ], + [ "z259", "pietc__s_8f90.html#a11d3d0e6faa7bbdf8ba0fe74eb6eed8d", null ], + [ "z260", "pietc__s_8f90.html#a786cb13f3de57ad57ae04145936a0f0f", null ], + [ "z270", "pietc__s_8f90.html#a85cadf667d71ef039c5a16e141864c96", null ], + [ "z280", "pietc__s_8f90.html#aa3cd54c90325104e9088e72e4efa40d9", null ], + [ "z281", "pietc__s_8f90.html#a353651fcd2b22054663923e66d8d7092", null ], + [ "z283", "pietc__s_8f90.html#a68acc67fd5d89469cf23d4a15c69374d", null ], + [ "z285", "pietc__s_8f90.html#aa32d75bc0c607b3e6a0160dccf09bbb2", null ], + [ "z288", "pietc__s_8f90.html#ad67e316a1fc7d9a8211e16d6bb21ed6a", null ], + [ "z290", "pietc__s_8f90.html#a2e4c7b60b97dd01d5128dd209e00d3c7", null ], + [ "z292", "pietc__s_8f90.html#a3d42e1551af446d3d44d8f857c4c69f3", null ], + [ "z296", "pietc__s_8f90.html#a3032f54abd13a6566903d078d2733618", null ], + [ "z300", "pietc__s_8f90.html#ae5629376e55a289a1539183a616938bd", null ], + [ "z304", "pietc__s_8f90.html#ac8a2c760f6dca603a25f09bab009f06b", null ], + [ "z306", "pietc__s_8f90.html#a83f3f97a43622595866c595682fb0ece", null ], + [ "z309", "pietc__s_8f90.html#a42313506a4bcce49ce523a3da76cad0d", null ], + [ "z310", "pietc__s_8f90.html#a2672d937ed2fff71a69526cb61615ab1", null ], + [ "z315", "pietc__s_8f90.html#a0d0944f556c02ddd39f6fb643d0c4e42", null ], + [ "z320", "pietc__s_8f90.html#a854d1a278b145b3abab94de402e047aa", null ], + [ "z321", "pietc__s_8f90.html#a6dacd4d7c2ef58abfd7eec4d05768800", null ], + [ "z324", "pietc__s_8f90.html#a4d163dccd5ccbe9210711b43e3c122a8", null ], + [ "z326", "pietc__s_8f90.html#ae127340bf7abcbe6bf05ad8f86bbe334", null ], + [ "z330", "pietc__s_8f90.html#ad4cecd2caa66219be25868d94a046342", null ], + [ "z334", "pietc__s_8f90.html#aed88ac48df98d4b20946c3a4f455986c", null ], + [ "z338", "pietc__s_8f90.html#a9394cbf025c052e7d2a43ead45b21824", null ], + [ "z340", "pietc__s_8f90.html#aaa24511fc906b4d3b85806afa4f2c95d", null ], + [ "z342", "pietc__s_8f90.html#aef09680abb1de2411be1ff6a360061d5", null ], + [ "z345", "pietc__s_8f90.html#aa46a6ff92556a60a4afa4b6882fcc3a1", null ], + [ "z347", "pietc__s_8f90.html#ae68a00fac6a3cc400e79db13280b7dc8", null ], + [ "z349", "pietc__s_8f90.html#a79b507b74c0331fafd8e4fc789d755ee", null ], + [ "z350", "pietc__s_8f90.html#aa1620605d76075d3d45dd5afb7519ce1", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pietc__s_8f90_source.html b/ver-1.11.0/grid_tools/pietc__s_8f90_source.html new file mode 100644 index 000000000..f8f1bdf0c --- /dev/null +++ b/ver-1.11.0/grid_tools/pietc__s_8f90_source.html @@ -0,0 +1,118 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pietc_s.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pietc_s.f90
    +
    +
    +Go to the documentation of this file.
    1 
    10 module pietc_s
    11 use pkind, only: sp,spc
    12 implicit none
    13 logical ,parameter:: t=.true.
    14 logical ,parameter:: f=.false.
    15 real(sp),parameter:: u0=0_sp
    16 real(sp),parameter:: u1=1_sp
    17 real(sp),parameter:: mu1=-u1
    18 real(sp),parameter:: u2=2_sp
    19 real(sp),parameter:: mu2=-u2
    20 real(sp),parameter:: u3=3_sp
    21 real(sp),parameter:: mu3=-u3
    22 real(sp),parameter:: u4=4_sp
    23 real(sp),parameter:: mu4=-u4
    24 real(sp),parameter:: u5=5_sp
    25 real(sp),parameter:: mu5=-u5
    26 real(sp),parameter:: u6=6_sp
    27 real(sp),parameter:: mu6=-u6
    28 real(sp),parameter:: o2=u1/u2
    29 real(sp),parameter:: o3=u1/u3
    30 real(sp),parameter:: o4=u1/u4
    31 real(sp),parameter:: o5=u1/u5
    32 real(sp),parameter:: o6=u1/u6
    33 real(sp),parameter:: mo2=-o2
    34 real(sp),parameter:: mo3=-o3
    35 real(sp),parameter:: mo4=-o4
    36 real(sp),parameter:: mo5=-o5
    37 real(sp),parameter:: mo6=-06
    38 real(sp),parameter:: pi =3.1415926535897932384626433832795028841971693993751058209749e0_sp
    39 real(sp),parameter:: pi2=6.2831853071795864769252867665590057683943387987502116419498e0_sp
    40 real(sp),parameter:: pih=1.5707963267948966192313216916397514420985846996875529104874e0_sp
    41 real(sp),parameter:: rpi=1.7724538509055160272981674833411451827975494561223871282138e0_sp
    42 real(sp),parameter:: r2 =1.4142135623730950488016887242096980785696718753769480731766e0_sp
    43 real(sp),parameter:: r3 =1.7320508075688772935274463415058723669428052538103806280558e0_sp
    44 real(sp),parameter:: r5 =2.2360679774997896964091736687312762354406183596115257242708e0_sp
    45 real(sp),parameter:: or2=u1/r2
    46 real(sp),parameter:: or3=u1/r3
    47 real(sp),parameter:: or5=u1/r5
    48 real(sp),parameter:: phi=1.6180339887498948482045868343656381177203091798057628621354e0_sp
    49 real(sp),parameter:: euler=0.57721566490153286060651209008240243104215933593992359880e0_sp
    50 ! Degree to radians; radians to degrees:
    51 real(sp),parameter:: dtor=pi/180
    52 real(sp),parameter:: rtod=180/pi
    53 ! Sines of all main fractions of 90 degrees (down to ninths):
    54 real(sp),parameter:: s10=.173648177666930348851716626769314796000375677184069387236241e0_sp
    55 real(sp),parameter:: s11=.195090322016128267848284868477022240927691617751954807754502e0_sp
    56 real(sp),parameter:: s13=.222520933956314404288902564496794759466355568764544955311987e0_sp
    57 real(sp),parameter:: s15=.258819045102520762348898837624048328349068901319930513814003e0_sp
    58 real(sp),parameter:: s18=.309016994374947424102293417182819058860154589902881431067724e0_sp
    59 real(sp),parameter:: s20=.342020143325668733044099614682259580763083367514160628465048e0_sp
    60 real(sp),parameter:: s22=.382683432365089771728459984030398866761344562485627041433800e0_sp
    61 real(sp),parameter:: s26=.433883739117558120475768332848358754609990727787459876444547e0_sp
    62 real(sp),parameter:: s30=o2
    63 real(sp),parameter:: s34=.555570233019602224742830813948532874374937190754804045924153e0_sp
    64 real(sp),parameter:: s36=.587785252292473129168705954639072768597652437643145991072272e0_sp
    65 real(sp),parameter:: s39=.623489801858733530525004884004239810632274730896402105365549e0_sp
    66 real(sp),parameter:: s40=.642787609686539326322643409907263432907559884205681790324977e0_sp
    67 real(sp),parameter:: s45=or2
    68 real(sp),parameter:: s50=.766044443118978035202392650555416673935832457080395245854045e0_sp
    69 real(sp),parameter:: s51=.781831482468029808708444526674057750232334518708687528980634e0_sp
    70 real(sp),parameter:: s54=.809016994374947424102293417182819058860154589902881431067724e0_sp
    71 real(sp),parameter:: s56=.831469612302545237078788377617905756738560811987249963446124e0_sp
    72 real(sp),parameter:: s60=r3*o2
    73 real(sp),parameter:: s64=.900968867902419126236102319507445051165919162131857150053562e0_sp
    74 real(sp),parameter:: s68=.923879532511286756128183189396788286822416625863642486115097e0_sp
    75 real(sp),parameter:: s70=.939692620785908384054109277324731469936208134264464633090286e0_sp
    76 real(sp),parameter:: s72=.951056516295153572116439333379382143405698634125750222447305e0_sp
    77 real(sp),parameter:: s75=.965925826289068286749743199728897367633904839008404550402343e0_sp
    78 real(sp),parameter:: s77=.974927912181823607018131682993931217232785800619997437648079e0_sp
    79 real(sp),parameter:: s79=.980785280403230449126182236134239036973933730893336095002916e0_sp
    80 real(sp),parameter:: s80=.984807753012208059366743024589523013670643251719842418790025e0_sp
    81 !... and their minuses:
    82 real(sp),parameter:: ms10=-s10
    83 real(sp),parameter:: ms11=-s11
    84 real(sp),parameter:: ms13=-s13
    85 real(sp),parameter:: ms15=-s15
    86 real(sp),parameter:: ms18=-s18
    87 real(sp),parameter:: ms20=-s20
    88 real(sp),parameter:: ms22=-s22
    89 real(sp),parameter:: ms26=-s26
    90 real(sp),parameter:: ms30=-s30
    91 real(sp),parameter:: ms34=-s34
    92 real(sp),parameter:: ms36=-s36
    93 real(sp),parameter:: ms39=-s39
    94 real(sp),parameter:: ms40=-s40
    95 real(sp),parameter:: ms45=-s45
    96 real(sp),parameter:: ms50=-s50
    97 real(sp),parameter:: ms51=-s51
    98 real(sp),parameter:: ms54=-s54
    99 real(sp),parameter:: ms56=-s56
    100 real(sp),parameter:: ms60=-s60
    101 real(sp),parameter:: ms64=-s64
    102 real(sp),parameter:: ms68=-s68
    103 real(sp),parameter:: ms70=-s70
    104 real(sp),parameter:: ms72=-s72
    105 real(sp),parameter:: ms75=-s75
    106 real(sp),parameter:: ms77=-s77
    107 real(sp),parameter:: ms79=-s79
    108 real(sp),parameter:: ms80=-s80
    109 
    110 complex(spc),parameter:: c0=(u0,u0)
    111 complex(spc),parameter:: c1=(u1,u0)
    112 complex(spc),parameter:: mc1=-c1
    113 complex(spc),parameter:: ci=(u0,u1)
    114 complex(spc),parameter:: mci=-ci
    115 complex(spc),parameter:: cipi=ci*pi
    116 ! Main fractional rotations, as unimodualr complex numbers:
    117 complex(spc),parameter:: z000=c1
    118 complex(spc),parameter:: z010=( s80,s10)
    119 complex(spc),parameter:: z011=( s79,s11)
    120 complex(spc),parameter:: z013=( s77,s13)
    121 complex(spc),parameter:: z015=( s75,s15)
    122 complex(spc),parameter:: z018=( s72,s18)
    123 complex(spc),parameter:: z020=( s70,s20)
    124 complex(spc),parameter:: z022=( s68,s22)
    125 complex(spc),parameter:: z026=( s64,s26)
    126 complex(spc),parameter:: z030=( s60,s30)
    127 complex(spc),parameter:: z034=( s56,s34)
    128 complex(spc),parameter:: z036=( s54,s36)
    129 complex(spc),parameter:: z039=( s51,s39)
    130 complex(spc),parameter:: z040=( s50,s40)
    131 complex(spc),parameter:: z045=( s45,s45)
    132 complex(spc),parameter:: z050=( s40,s50)
    133 complex(spc),parameter:: z051=( s39,s51)
    134 complex(spc),parameter:: z054=( s36,s54)
    135 complex(spc),parameter:: z056=( s34,s56)
    136 complex(spc),parameter:: z060=( s30,s60)
    137 complex(spc),parameter:: z064=( s26,s64)
    138 complex(spc),parameter:: z068=( s22,s68)
    139 complex(spc),parameter:: z070=( s20,s70)
    140 complex(spc),parameter:: z072=( s18,s72)
    141 complex(spc),parameter:: z075=( s15,s75)
    142 complex(spc),parameter:: z077=( s13,s77)
    143 complex(spc),parameter:: z079=( s11,s79)
    144 complex(spc),parameter:: z080=( s10,s80)
    145 complex(spc),parameter:: z090=ci
    146 complex(spc),parameter:: z100=(ms10,s80)
    147 complex(spc),parameter:: z101=(ms11,s79)
    148 complex(spc),parameter:: z103=(ms13,s77)
    149 complex(spc),parameter:: z105=(ms15,s75)
    150 complex(spc),parameter:: z108=(ms18,s72)
    151 complex(spc),parameter:: z110=(ms20,s70)
    152 complex(spc),parameter:: z112=(ms22,s68)
    153 complex(spc),parameter:: z116=(ms26,s64)
    154 complex(spc),parameter:: z120=(ms30,s60)
    155 complex(spc),parameter:: z124=(ms34,s56)
    156 complex(spc),parameter:: z126=(ms36,s54)
    157 complex(spc),parameter:: z129=(ms39,s51)
    158 complex(spc),parameter:: z130=(ms40,s50)
    159 complex(spc),parameter:: z135=(ms45,s45)
    160 complex(spc),parameter:: z140=(ms50,s40)
    161 complex(spc),parameter:: z141=(ms51,s39)
    162 complex(spc),parameter:: z144=(ms54,s36)
    163 complex(spc),parameter:: z146=(ms56,s34)
    164 complex(spc),parameter:: z150=(ms60,s30)
    165 complex(spc),parameter:: z154=(ms64,s26)
    166 complex(spc),parameter:: z158=(ms68,s22)
    167 complex(spc),parameter:: z160=(ms70,s20)
    168 complex(spc),parameter:: z162=(ms72,s18)
    169 complex(spc),parameter:: z165=(ms75,s15)
    170 complex(spc),parameter:: z167=(ms77,s13)
    171 complex(spc),parameter:: z169=(ms79,s11)
    172 complex(spc),parameter:: z170=(ms80,s10)
    173 complex(spc),parameter:: z180=-z000
    174 complex(spc),parameter:: z190=-z010
    175 complex(spc),parameter:: z191=-z011
    176 complex(spc),parameter:: z193=-z013
    177 complex(spc),parameter:: z195=-z015
    178 complex(spc),parameter:: z198=-z018
    179 complex(spc),parameter:: z200=-z020
    180 complex(spc),parameter:: z202=-z022
    181 complex(spc),parameter:: z206=-z026
    182 complex(spc),parameter:: z210=-z030
    183 complex(spc),parameter:: z214=-z034
    184 complex(spc),parameter:: z216=-z036
    185 complex(spc),parameter:: z219=-z039
    186 complex(spc),parameter:: z220=-z040
    187 complex(spc),parameter:: z225=-z045
    188 complex(spc),parameter:: z230=-z050
    189 complex(spc),parameter:: z231=-z051
    190 complex(spc),parameter:: z234=-z054
    191 complex(spc),parameter:: z236=-z056
    192 complex(spc),parameter:: z240=-z060
    193 complex(spc),parameter:: z244=-z064
    194 complex(spc),parameter:: z248=-z068
    195 complex(spc),parameter:: z250=-z070
    196 complex(spc),parameter:: z252=-z072
    197 complex(spc),parameter:: z255=-z075
    198 complex(spc),parameter:: z257=-z077
    199 complex(spc),parameter:: z259=-z079
    200 complex(spc),parameter:: z260=-z080
    201 complex(spc),parameter:: z270=-z090
    202 complex(spc),parameter:: z280=-z100
    203 complex(spc),parameter:: z281=-z101
    204 complex(spc),parameter:: z283=-z103
    205 complex(spc),parameter:: z285=-z105
    206 complex(spc),parameter:: z288=-z108
    207 complex(spc),parameter:: z290=-z110
    208 complex(spc),parameter:: z292=-z112
    209 complex(spc),parameter:: z296=-z116
    210 complex(spc),parameter:: z300=-z120
    211 complex(spc),parameter:: z304=-z124
    212 complex(spc),parameter:: z306=-z126
    213 complex(spc),parameter:: z309=-z129
    214 complex(spc),parameter:: z310=-z130
    215 complex(spc),parameter:: z315=-z135
    216 complex(spc),parameter:: z320=-z140
    217 complex(spc),parameter:: z321=-z141
    218 complex(spc),parameter:: z324=-z144
    219 complex(spc),parameter:: z326=-z146
    220 complex(spc),parameter:: z330=-z150
    221 complex(spc),parameter:: z334=-z154
    222 complex(spc),parameter:: z338=-z158
    223 complex(spc),parameter:: z340=-z160
    224 complex(spc),parameter:: z342=-z162
    225 complex(spc),parameter:: z345=-z165
    226 complex(spc),parameter:: z347=-z167
    227 complex(spc),parameter:: z349=-z169
    228 complex(spc),parameter:: z350=-z170
    229 end module pietc_s
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    real(dp), parameter pih
    pi*half
    Definition: pietc.f90:44
    +
    logical, parameter f
    for pain-relief in logical ops
    Definition: pietc.f90:18
    +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    +
    real(dp), parameter dtor
    Degrees to radians.
    Definition: pietc.f90:54
    +
    real(dp), parameter pi2
    Pi*2.
    Definition: pietc.f90:43
    +
    real(dp), parameter rtod
    radians to degrees
    Definition: pietc.f90:55
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    integer, parameter spc
    Single precision real kind.
    Definition: pkind.f90:12
    +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pkind_8f90.html b/ver-1.11.0/grid_tools/pkind_8f90.html new file mode 100644 index 000000000..19b99b58a --- /dev/null +++ b/ver-1.11.0/grid_tools/pkind_8f90.html @@ -0,0 +1,146 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pkind.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pkind.f90 File Reference
    +
    +
    + +

    Standard integer, real, and complex single and double precision kinds. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  pkind
     Standard integer, real, and complex single and double precision kinds.
     
    + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer, parameter pkind::dp =selected_real_kind(15, 300)
     Double precision real kind. More...
     
    integer, parameter pkind::dpc =dp
     Double precision real kind. More...
     
    integer, parameter pkind::dpi =selected_int_kind(12)
     Double precision integer kind. More...
     
    integer, parameter pkind::sp =selected_real_kind(6, 30)
     Single precision real kind. More...
     
    integer, parameter pkind::spc =sp
     Single precision real kind. More...
     
    integer, parameter pkind::spi =selected_int_kind(6)
     Single precision integer kind. More...
     
    +

    Detailed Description

    +

    Standard integer, real, and complex single and double precision kinds.

    +
    Author
    R. J. Purser
    + +

    Definition in file pkind.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pkind_8f90.js b/ver-1.11.0/grid_tools/pkind_8f90.js new file mode 100644 index 000000000..2917eddec --- /dev/null +++ b/ver-1.11.0/grid_tools/pkind_8f90.js @@ -0,0 +1,9 @@ +var pkind_8f90 = +[ + [ "dp", "pkind_8f90.html#a00714eff0ad48c0f4d25ae66b0419c90", null ], + [ "dpc", "pkind_8f90.html#a05fae263265cc6c01576990bfa3b4c65", null ], + [ "dpi", "pkind_8f90.html#a78c6f106c3c9e7f3cd30458bc58c0242", null ], + [ "sp", "pkind_8f90.html#a727a82a16402d4f765f2e806e0e9dbd2", null ], + [ "spc", "pkind_8f90.html#a67080eb2b326d447c1b48c0afac26aa8", null ], + [ "spi", "pkind_8f90.html#a8b510d5ba4b6a0d899e2ded9ea9c8bf0", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pkind_8f90_source.html b/ver-1.11.0/grid_tools/pkind_8f90_source.html new file mode 100644 index 000000000..386d2c7da --- /dev/null +++ b/ver-1.11.0/grid_tools/pkind_8f90_source.html @@ -0,0 +1,112 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pkind.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pkind.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7 module pkind
    8 integer,parameter:: spi=selected_int_kind(6)
    9 integer,parameter:: dpi=selected_int_kind(12)
    10 integer,parameter:: sp =selected_real_kind(6,30)
    11 integer,parameter:: dp =selected_real_kind(15,300)
    12 integer,parameter:: spc=sp
    13 integer,parameter:: dpc=dp
    14 !private:: one_dpi; integer(8),parameter:: one_dpi=1
    15 !integer,parameter:: dpi=kind(one_dpi)
    16 !integer,parameter:: sp=kind(1.0)
    17 !integer,parameter:: dp=kind(1.0d0)
    18 !integer,parameter:: spc=kind((1.0,1.0))
    19 !integer,parameter:: dpc=kind((1.0d0,1.0d0))
    20 end module pkind
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    integer, parameter dpi
    Double precision integer kind.
    Definition: pkind.f90:9
    +
    integer, parameter spc
    Single precision real kind.
    Definition: pkind.f90:12
    +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    integer, parameter dpc
    Double precision real kind.
    Definition: pkind.f90:13
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat2_8f90.html b/ver-1.11.0/grid_tools/pmat2_8f90.html new file mode 100644 index 000000000..6e0a4f22c --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat2_8f90.html @@ -0,0 +1,325 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat2.f90 File Reference
    +
    +
    + +

    Routines dealing with the operations of banded matrices. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pmat2::avco
     
    interface  pmat2::cad1b
     
    interface  pmat2::cad2b
     
    interface  pmat2::clipb
     
    interface  pmat2::csb1b
     
    interface  pmat2::csb2b
     
    interface  pmat2::dfco
     
    interface  pmat2::dfco2
     
    interface  pmat2::l1ubb
     
    interface  pmat2::l1ueb
     
    interface  pmat2::ldltb
     
    interface  pmat2::ldub
     
    interface  pmat2::linbv
     
    interface  pmat2::ltdlbv
     
    interface  pmat2::u1lbv
     
    interface  pmat2::u1lbx
     
    interface  pmat2::u1lby
     
    interface  pmat2::u1lvb
     
    interface  pmat2::u1lxb
     
    interface  pmat2::u1lyb
     
    interface  pmat2::udlb
     
    interface  pmat2::udlbv
     
    interface  pmat2::udlbx
     
    interface  pmat2::udlby
     
    interface  pmat2::udlvb
     
    interface  pmat2::udlxb
     
    interface  pmat2::udlyb
     
    interface  pmat2::wrtb
     
    + + + + +

    +Modules

    module  pmat2
     Routines dealing with the operations of banded matrices.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public pmat2::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 pmat2::CAD1B (m1, mah1, mah2, mirror2, a)
     Incorporate operand symmetry and clip near end-1 of a band matrix operator. More...
     
    subroutine, public pmat2::CAD2B (m1, m2, mah1, mah2, mirror2, a)
     Incorporate symmetry and clip near end-2 of a band matrix. More...
     
    pure subroutine pmat2::CLIB (m1, m2, mah1, mah2, a)
     Clip (set to zero) the unused values in a banded matrix representation. More...
     
    pure subroutine pmat2::clib_c (m1, m2, mah1, mah2, a)
     Clip (set to zero) the unused values in a banded matrix representation. More...
     
    pure subroutine pmat2::clib_d (m1, m2, mah1, mah2, a)
     Clip (set to zero) the unused values in a banded matrix representation. More...
     
    subroutine, public pmat2::CSB1B (m1, mah1, mah2, mirror2, a)
     Like cad1b, but for antisymmetric operand. More...
     
    subroutine, public pmat2::CSB2B (m1, m2, mah1, mah2, mirror2, a)
     Incorporate operand antisymmetry and clip near end-2 of a band matrix. More...
     
    subroutine pmat2::DAVCO (na, nb, za, zb, z0, a, b)
     Double precision version of subroutine avco for midpoint interpolation. More...
     
    subroutine pmat2::DDFCO (na, nb, za, zb, z0, a, b)
     Double precision version of dfco for compact differentiation coefficients. More...
     
    subroutine pmat2::DDFCO2 (na, nb, za, zb, z0, a, b)
     Double precision version of DFCO2 to get 2nd-derivative coefficients. More...
     
    subroutine, public pmat2::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 pmat2::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 pmat2::DL1UBB (m, mah1, mah2, mbh1, mbh2, a, b)
     Double precision version of L1UBB. More...
     
    subroutine pmat2::DL1UEB (m, mah1, mah2, mbh1, mbh2, a, b)
     Double precision version of L1UEB. More...
     
    subroutine pmat2::DLDLTB (m, mah1, a)
     [L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky). More...
     
    subroutine pmat2::DLDUB (m, mah1, mah2, a)
     [L]*[D]*[U] factoring of double precision band-matrix. More...
     
    subroutine pmat2::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 pmat2::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 pmat2::dudlbv (m, mah1, mah2, a, v)
     Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More...
     
    subroutine, public pmat2::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 pmat2::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 pmat2::LDLTB (m, mah1, a)
     [L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky). More...
     
    subroutine, public pmat2::LDUB (m, mah1, mah2, a)
     [L]*[D]*[U] factoring of single precision band-matrix. More...
     
    subroutine, public pmat2::LINBV (m, mah1, mah2, a, v)
     Solve LINear system with square Banded-matrix and vector V. More...
     
    subroutine, public pmat2::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 pmat2::TAVCO (xa, xb, a, b)
     Simplified computation of compact midpoint interpolation coefficients. More...
     
    subroutine pmat2::TDFCO (xa, xb, a, b)
     Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa. More...
     
    subroutine pmat2::TDFCO2 (xa, xb, a, b)
     Simplified computation of compact 2nd-derivative coefficients. More...
     
    subroutine, public pmat2::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 pmat2::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 pmat2::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 pmat2::U1LVB (m, mah1, mah2, v, a)
     Special Back-substitution step of linear inversion involving left-Vector and Banded matrix. More...
     
    subroutine, public pmat2::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 pmat2::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 pmat2::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 pmat2::UDLBV (m, mah1, mah2, a, v)
     Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More...
     
    subroutine, public pmat2::UDLBX (mx, mah1, mah2, my, a, v)
     Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors. More...
     
    subroutine, public pmat2::UDLBY (my, mah1, mah2, mx, a, v)
     Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors. More...
     
    subroutine, public pmat2::UDLVB (m, mah1, mah2, v, a)
     Back-substitution step of linear inversion involving row-Vector and Banded matrix. More...
     
    subroutine, public pmat2::UDLXB (mx, mah1, mah2, my, v, a)
     Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors. More...
     
    subroutine, public pmat2::UDLYB (my, mah1, mah2, mx, v, a)
     BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors. More...
     
    subroutine, public pmat2::WRTB (m1, m2, mah1, mah2, a)
     Convenient routine for interactively writing out the real contents of a band matrix. More...
     
    + + + + +

    +Variables

    real(dp), parameter pmat2::zero =0
     Double precision real zero. More...
     
    +

    Detailed Description

    +

    Routines dealing with the operations of banded matrices.

    +
    Author
    R. J. Purser, Tsukasa Fujita (JMA)
    +
    Date
    1994/1999
    + +

    Definition in file pmat2.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat2_8f90.js b/ver-1.11.0/grid_tools/pmat2_8f90.js new file mode 100644 index 000000000..85fa6830e --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat2_8f90.js @@ -0,0 +1,75 @@ +var pmat2_8f90 = +[ + [ "avco", "interfacepmat2_1_1avco.html", "interfacepmat2_1_1avco" ], + [ "cad1b", "interfacepmat2_1_1cad1b.html", "interfacepmat2_1_1cad1b" ], + [ "cad2b", "interfacepmat2_1_1cad2b.html", "interfacepmat2_1_1cad2b" ], + [ "clipb", "interfacepmat2_1_1clipb.html", "interfacepmat2_1_1clipb" ], + [ "csb1b", "interfacepmat2_1_1csb1b.html", "interfacepmat2_1_1csb1b" ], + [ "csb2b", "interfacepmat2_1_1csb2b.html", "interfacepmat2_1_1csb2b" ], + [ "dfco", "interfacepmat2_1_1dfco.html", "interfacepmat2_1_1dfco" ], + [ "dfco2", "interfacepmat2_1_1dfco2.html", "interfacepmat2_1_1dfco2" ], + [ "l1ubb", "interfacepmat2_1_1l1ubb.html", "interfacepmat2_1_1l1ubb" ], + [ "l1ueb", "interfacepmat2_1_1l1ueb.html", "interfacepmat2_1_1l1ueb" ], + [ "ldltb", "interfacepmat2_1_1ldltb.html", "interfacepmat2_1_1ldltb" ], + [ "ldub", "interfacepmat2_1_1ldub.html", "interfacepmat2_1_1ldub" ], + [ "linbv", "interfacepmat2_1_1linbv.html", "interfacepmat2_1_1linbv" ], + [ "ltdlbv", "interfacepmat2_1_1ltdlbv.html", "interfacepmat2_1_1ltdlbv" ], + [ "u1lbv", "interfacepmat2_1_1u1lbv.html", "interfacepmat2_1_1u1lbv" ], + [ "u1lbx", "interfacepmat2_1_1u1lbx.html", "interfacepmat2_1_1u1lbx" ], + [ "u1lby", "interfacepmat2_1_1u1lby.html", "interfacepmat2_1_1u1lby" ], + [ "u1lvb", "interfacepmat2_1_1u1lvb.html", "interfacepmat2_1_1u1lvb" ], + [ "u1lxb", "interfacepmat2_1_1u1lxb.html", "interfacepmat2_1_1u1lxb" ], + [ "u1lyb", "interfacepmat2_1_1u1lyb.html", "interfacepmat2_1_1u1lyb" ], + [ "udlb", "interfacepmat2_1_1udlb.html", "interfacepmat2_1_1udlb" ], + [ "udlbv", "interfacepmat2_1_1udlbv.html", "interfacepmat2_1_1udlbv" ], + [ "udlbx", "interfacepmat2_1_1udlbx.html", "interfacepmat2_1_1udlbx" ], + [ "udlby", "interfacepmat2_1_1udlby.html", "interfacepmat2_1_1udlby" ], + [ "udlvb", "interfacepmat2_1_1udlvb.html", "interfacepmat2_1_1udlvb" ], + [ "udlxb", "interfacepmat2_1_1udlxb.html", "interfacepmat2_1_1udlxb" ], + [ "udlyb", "interfacepmat2_1_1udlyb.html", "interfacepmat2_1_1udlyb" ], + [ "wrtb", "interfacepmat2_1_1wrtb.html", "interfacepmat2_1_1wrtb" ], + [ "AVCO", "pmat2_8f90.html#a4e7ca88623c62560b1aa14a366c4f8a8", null ], + [ "CAD1B", "pmat2_8f90.html#ae3e1102198412e1ccb5c95d69c19ab74", null ], + [ "CAD2B", "pmat2_8f90.html#a997c67d15d657b6837efb77b59397bfd", null ], + [ "CLIB", "pmat2_8f90.html#a9b3a2e78b3bf02d0d602cd56f0ea9a75", null ], + [ "clib_c", "pmat2_8f90.html#af07afc4448a8b73ae9cfa06cee519e7d", null ], + [ "clib_d", "pmat2_8f90.html#acd69acd510090913b374553e76361266", null ], + [ "CSB1B", "pmat2_8f90.html#a7b83fe4ffdd7f05f60d83bdcf30f9808", null ], + [ "CSB2B", "pmat2_8f90.html#ac684270726dc33e8603bee1de42dbb1e", null ], + [ "DAVCO", "pmat2_8f90.html#ae2b698fd63beb85c56181053fcf8a847", null ], + [ "DDFCO", "pmat2_8f90.html#a0cf9170b832f290e7d6567f97fc3ea7a", null ], + [ "DDFCO2", "pmat2_8f90.html#a8fc69994cb8d6cf9cb0b3c81895a42fc", null ], + [ "DFCO", "pmat2_8f90.html#ab579c583d99c1ce10445025630e1b515", null ], + [ "DFCO2", "pmat2_8f90.html#a2529c4ad33ef09e3f098a504edf4cfa3", null ], + [ "DL1UBB", "pmat2_8f90.html#a62efec5006a8c9699b6ed7bbe2b3f160", null ], + [ "DL1UEB", "pmat2_8f90.html#a5a1def5de47df0f900e0744dffa418f8", null ], + [ "DLDLTB", "pmat2_8f90.html#a449c158bfacefb689c7a67d9d1f2e0fc", null ], + [ "DLDUB", "pmat2_8f90.html#a13362c9a51bfa43b885e3e1dc0885feb", null ], + [ "dltdlbv", "pmat2_8f90.html#acdaee1ba7c588248c79f26462c84bf0c", null ], + [ "DUDLB", "pmat2_8f90.html#a8590ff2084555b8ade6ec593e92285a0", null ], + [ "dudlbv", "pmat2_8f90.html#a9798fa383265eeaf98c2d7400ef5bc8e", null ], + [ "L1UBB", "pmat2_8f90.html#af17823af72f85f8ee3d63b2e496366b6", null ], + [ "L1UEB", "pmat2_8f90.html#a1d97a2f43e9e29c035c0a11fe4ae0c6f", null ], + [ "LDLTB", "pmat2_8f90.html#a24eaac0513ed6ae836f329464323bfcb", null ], + [ "LDUB", "pmat2_8f90.html#a68c6ad18dd5b834d371bdbdec1438586", null ], + [ "LINBV", "pmat2_8f90.html#a50b8a82c6c2b60413602c81c7288cfe0", null ], + [ "ltdlbv", "pmat2_8f90.html#abbddde193b71f87e3a9278b3829a132a", null ], + [ "TAVCO", "pmat2_8f90.html#a6a89c3d2cf4cbeddf8794c0274983b85", null ], + [ "TDFCO", "pmat2_8f90.html#a1399ce91b0cdcd5b1efd02de702f8425", null ], + [ "TDFCO2", "pmat2_8f90.html#a555c3f1fc401104d5f2c1ee28e310f84", null ], + [ "U1LBV", "pmat2_8f90.html#ae522999da18bc2c8a721697220d0e2f3", null ], + [ "U1LBX", "pmat2_8f90.html#a728162304a5163d9833ddf0704425f0d", null ], + [ "U1LBY", "pmat2_8f90.html#afc803df6dd1d77e1cfc3a21444eac9df", null ], + [ "U1LVB", "pmat2_8f90.html#afb1b0a24d2b799039aa4574a0f5aaf7e", null ], + [ "U1LXB", "pmat2_8f90.html#a61691d64fb0e3097006b0d60e6114c2a", null ], + [ "U1LYB", "pmat2_8f90.html#a0bf86d7928a879540ffa1c73e437436d", null ], + [ "UDLB", "pmat2_8f90.html#ac819a24eaae6006b6e84094f30c17eaa", null ], + [ "UDLBV", "pmat2_8f90.html#a87d11417e4326543ba1eea3404b72a59", null ], + [ "UDLBX", "pmat2_8f90.html#af4e8be3e0e49b63ba9c0fa2daf9064ec", null ], + [ "UDLBY", "pmat2_8f90.html#a55a220e28985cd8e5aa91f96922d0613", null ], + [ "UDLVB", "pmat2_8f90.html#a16a31964a41ab5f370aa8ae186147f45", null ], + [ "UDLXB", "pmat2_8f90.html#aae850dc55453bafbc6f8c5f8458d053f", null ], + [ "UDLYB", "pmat2_8f90.html#a81321de544a43237d601519a37b392a6", null ], + [ "WRTB", "pmat2_8f90.html#a3970c08a38a54b29b664a1930f0de6bb", null ], + [ "zero", "pmat2_8f90.html#a22095c65d2859b45208b56d1733bf71c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pmat2_8f90_source.html b/ver-1.11.0/grid_tools/pmat2_8f90_source.html new file mode 100644 index 000000000..78fda0c1e --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat2_8f90_source.html @@ -0,0 +1,149 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat2.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pmat2.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    21 module pmat2
    22 !============================================================================
    23 use pkind, only: spi,sp,dp,dpc
    24 implicit none
    25 private
    26 public:: avco
    27 public:: dfco
    28 public:: dfco2
    29 public:: clipb
    30 public:: cad1b
    31 public:: csb1b
    32 public:: cad2b
    33 public:: csb2b
    34 public:: ldub
    35 public:: ldltb
    36 public:: udlb
    37 public:: l1ubb
    38 public:: l1ueb
    39 public:: ltdlbv
    40 public:: udlbv
    41 public:: udlbx
    42 public:: udlby
    43 public:: udlvb
    44 public:: udlxb
    45 public:: udlyb
    46 public:: u1lbv
    47 public:: u1lbx
    48 public:: u1lby
    49 public:: u1lvb
    50 public:: u1lxb
    51 public:: u1lyb
    52 public:: linbv
    53 public:: wrtb
    54 real(dp),parameter:: zero=0
    55 
    56 interface avco; module procedure avco, davco, tavco; end interface
    57 interface dfco; module procedure dfco, ddfco, tdfco; end interface
    58 interface dfco2; module procedure dfco2, ddfco2, tdfco2; end interface
    59 interface clipb; module procedure clib, clib_d, clib_c; end interface
    60 interface cad1b; module procedure cad1b; end interface
    61 interface csb1b; module procedure csb1b; end interface
    62 interface cad2b; module procedure cad2b; end interface
    63 interface csb2b; module procedure csb2b; end interface
    64 interface ldub; module procedure ldub, dldub; end interface
    65 interface ldltb; module procedure ldltb, dldltb; end interface
    66 interface l1ubb; module procedure l1ubb, dl1ubb; end interface
    67 interface l1ueb; module procedure l1ueb, dl1ueb; end interface
    68 interface ltdlbv; module procedure ltdlbv,dltdlbv; end interface
    69 interface udlb; module procedure udlb, dudlb; end interface
    70 interface udlbv; module procedure udlbv, dudlbv; end interface
    71 interface udlbx; module procedure udlbx; end interface
    72 interface udlby; module procedure udlby; end interface
    73 interface udlvb; module procedure udlvb; end interface
    74 interface udlxb; module procedure udlxb; end interface
    75 interface udlyb; module procedure udlyb; end interface
    76 interface u1lbv; module procedure u1lbv; end interface
    77 interface u1lbx; module procedure u1lbx; end interface
    78 interface u1lby; module procedure u1lby; end interface
    79 interface u1lvb; module procedure u1lvb; end interface
    80 interface u1lxb; module procedure u1lxb; end interface
    81 interface u1lyb; module procedure u1lyb; end interface
    82 interface linbv; module procedure linbv; end interface
    83 interface wrtb; module procedure wrtb; end interface
    84 contains
    85 
    99 subroutine avco(na,nb,za,zb,z0,a,b) ! [AVCO]
    100 use pietc, only: u0,u1
    101 use pmat, only: inv
    102 implicit none
    103 integer(spi),intent(in ):: na,nb
    104 real(sp), intent(in ):: za(na),zb(nb),z0
    105 real(sp), intent(out):: a(na),b(nb)
    106 !-----------------------------------------------------------------------------
    107 integer(spi) :: na1,nab,i
    108 real(sp), dimension(na+nb,na+nb):: w
    109 real(sp), dimension(na) :: za0,pa
    110 real(sp), dimension(nb) :: zb0,pb
    111 real(sp), dimension(na+nb) :: ab
    112 !=============================================================================
    113 na1=na+1; nab=na+nb
    114 za0=za-z0; zb0=zb-z0
    115 pa=u1; pb=-u1
    116 w=u0; ab=u0
    117 w(1,1:na)=u1; ab(1)=u1
    118 do i=2,nab; w(i,1:na)=pa; pa=pa*za0; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    119 call inv(w,ab)
    120 a=ab(1:na); b=ab(na1:nab)
    121 end subroutine avco
    122 
    133 subroutine davco(na,nb,za,zb,z0,a,b) ! [AVCO]
    134 use pietc, only: u0,u1
    135 use pmat, only: inv
    136 implicit none
    137 integer(spi),intent(IN ):: na,nb
    138 real(dp), intent(IN ):: za(na),zb(nb),z0
    139 real(dp), intent(OUT):: a(na),b(nb)
    140 !-----------------------------------------------------------------------------
    141 integer(spi) :: na1,nab,i
    142 real(dp),dimension(na+nb,na+nb):: w
    143 real(dp),dimension(na) :: za0,pa
    144 real(dp),dimension(nb) :: zb0,pb
    145 real(dp),dimension(na+nb) :: ab
    146 !=============================================================================
    147 na1=na+1; nab=na+nb
    148 za0=za-z0; zb0=zb-z0
    149 pa=u1; pb=-u1
    150 w=u0; ab=u0
    151 w(1,1:na)=u1; ab(1)=u1
    152 do i=2,nab; w(i,1:na)=pa; pa=pa*za0; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    153 call inv(w,ab)
    154 a=ab(1:na); b=ab(na1:nab)
    155 end subroutine davco
    156 
    164 subroutine tavco(xa,xb,a,b)! [AVCO]
    165 implicit none
    166 real(dp),dimension(:),intent(IN ):: xa,xb
    167 real(dp),dimension(:),intent(OUT):: a,b
    168 !-----------------------------------------------------------------------------
    169 integer(spi):: na,nb
    170 !=============================================================================
    171 na=size(xa); if(na /= size(a))stop 'In tavco; sizes of a and xa different'
    172 nb=size(xb); if(nb /= size(b))stop 'In tavco; sizes of b and xb different'
    173 call davco(na,nb,xa,xb,zero,a,b)
    174 end subroutine tavco
    175 
    189 subroutine dfco(na,nb,za,zb,z0,a,b)! [DFCO]
    190 use pietc_s, only: u0,u1
    191 use pmat, only: inv
    192 implicit none
    193 integer(spi),intent(IN ) :: na,nb
    194 real(sp), intent(IN ) :: za(na),zb(nb),z0
    195 real(sp), intent(OUT) :: a(na),b(nb)
    196 !-----------------------------------------------------------------------------
    197 integer(spi):: na1,nab,i
    198 real(sp), dimension(na+nb,na+nb):: w
    199 real(sp), dimension(na) :: za0,pa
    200 real(sp), dimension(nb) :: zb0,pb
    201 real(sp), dimension(na+nb) :: ab
    202 !=============================================================================
    203 na1=na+1; nab=na+nb
    204 za0=za-z0; zb0=zb-z0
    205 pa=u1; pb=-u1
    206 w=u0; ab=u0
    207 w(1,1:na)=u1; ab(1)=u1
    208 do i=3,nab; w(i,1:na) =pa*(i-2); pa=pa*za0; enddo
    209 do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    210 call inv(w,ab)
    211 a=ab(1:na); b=ab(na1:nab)
    212 end subroutine dfco
    213 
    224 subroutine ddfco(na,nb,za,zb,z0,a,b) ! Real(dp) version of [DFCO]
    225 use pietc, only: u0,u1
    226 use pmat, only: inv
    227 implicit none
    228 integer(spi),intent(in) :: na,nb
    229 real(dp), intent(in) :: za(na),zb(nb),z0
    230 real(dp), intent(out):: a(na),b(nb)
    231 !-----------------------------------------------------------------------------
    232 integer(spi) :: na1,nab,i
    233 real(dp), dimension(na+nb,na+nb):: w
    234 real(dp), dimension(na) :: za0,pa
    235 real(dp), dimension(nb) :: zb0,pb
    236 real(dp), dimension(na+nb) :: ab
    237 !=============================================================================
    238 na1=na+1; nab=na+nb
    239 za0=za-z0; zb0=zb-z0
    240 pa=u1; pb=-u1
    241 w=u0; ab=u0
    242 w(1,1:na)=u1; ab(1)=u1
    243 do i=3,nab; w(i,1:na) =pa*(i-2); pa=pa*za0; enddo
    244 do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    245 call inv(w,ab)
    246 a=ab(1:na); b=ab(na1:nab)
    247 end subroutine ddfco
    248 
    257 subroutine tdfco(xa,xb,a,b)! [DFCO]
    258 implicit none
    259 real(dp),dimension(:),intent(IN ):: xa,xb
    260 real(dp),dimension(:),intent(OUT):: a,b
    261 !-----------------------------------------------------------------------------
    262 integer(spi):: na,nb
    263 !=============================================================================
    264 na=size(xa); if(na /= size(a))stop 'In tdfco; sizes of a and xa different'
    265 nb=size(xb); if(nb /= size(b))stop 'In tdfco; sizes of b and xb different'
    266 call ddfco(na,nb,xa,xb,zero,a,b)
    267 end subroutine tdfco
    268 
    282 subroutine dfco2(na,nb,za,zb,z0,a,b)! [DFCO2]
    283 use pietc_s, only: u0,u1
    284 use pmat, only: inv
    285 implicit none
    286 integer(spi), intent(IN ):: na,nb
    287 real(sp), intent(IN ):: za(na),zb(nb),z0
    288 real(sp), intent(OUT):: a(na),b(nb)
    289 !-----------------------------------------------------------------------------
    290 integer(spi) :: na1,nab,i
    291 real(sp), dimension(na+nb,na+nb):: w
    292 real(sp), dimension(na) :: za0,pa
    293 real(sp), dimension(nb) :: zb0,pb
    294 real(sp), dimension(na+nb) :: ab
    295 !=============================================================================
    296 na1=na+1; nab=na+nb
    297 za0=za-z0; zb0=zb-z0
    298 pa=u1; pb=-u1
    299 w=u0; ab=u0
    300 w(1,1:na)=u1; ab(1)=u1
    301 do i=4,nab; w(i,1:na) =pa*(i-2)*(i-3); pa=pa*za0; enddo
    302 do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    303 call inv(w,ab)
    304 a=ab(1:na); b=ab(na1:nab)
    305 end subroutine dfco2
    306 
    317 subroutine ddfco2(na,nb,za,zb,z0,a,b) ! Real(dp) version of [DFCO2]
    318 use pietc, only: u0,u1
    319 use pmat, only: inv
    320 implicit none
    321 integer(spi),intent(IN ) :: na,nb
    322 real(dp), intent(IN ) :: za(na),zb(nb),z0
    323 real(dp), intent(OUT) :: a(na),b(nb)
    324 !-----------------------------------------------------------------------------
    325 integer(spi) :: na1,nab,i
    326 real(dp), dimension(na+nb,na+nb):: w
    327 real(dp), dimension(na) :: za0,pa
    328 real(dp), dimension(nb) :: zb0,pb
    329 real(dp), dimension(na+nb) :: ab
    330 !=============================================================================
    331 na1=na+1; nab=na+nb
    332 za0=za-z0; zb0=zb-z0
    333 pa=u1; pb=-u1
    334 w=u0; ab=u0
    335 w(1,1:na)=u1; ab(1)=u1
    336 do i=4,nab; w(i,1:na) =pa*(i-2)*(i-3); pa=pa*za0; enddo
    337 do i=2,nab; w(i,na1:nab)=pb; pb=pb*zb0; enddo
    338 call inv(w,ab)
    339 a=ab(1:na); b=ab(na1:nab)
    340 end subroutine ddfco2
    341 
    349 subroutine tdfco2(xa,xb,a,b)! [DFCO2]
    350 !=============================================================================
    351 real(dp),dimension(:),intent(IN ):: xa,xb
    352 real(dp),dimension(:),intent(OUT):: a,b
    353 !-----------------------------------------------------------------------------
    354 integer(spi):: na,nb
    355 !=============================================================================
    356 na=size(xa); if(na /= size(a))stop 'In tdfco2; sizes of a and xa different'
    357 nb=size(xb); if(nb /= size(b))stop 'In tdfco2; sizes of b and xb different'
    358 call ddfco2(na,nb,xa,xb,zero,a,b)
    359 end subroutine tdfco2
    360 
    369 pure subroutine clib(m1,m2,mah1,mah2,a)! [CLIPB]
    370 use pietc_s, only: u0
    371 implicit none
    372 integer(spi), intent(IN ) :: m1, m2, mah1, mah2
    373 real(sp), intent(INOUT) :: a(m1,-mah1:mah2)
    374 integer(spi):: j
    375 do j=1,mah1; a(1:min(m1,j),-j)=u0; enddo
    376 do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=u0; enddo
    377 end subroutine clib
    378 
    387 pure subroutine clib_d(m1,m2,mah1,mah2,a)! [CLIPB]
    388 use pietc, only: u0
    389 implicit none
    390 integer(spi),intent(IN ) :: m1, m2, mah1, mah2
    391 real(dp), intent(INOUT) :: a(m1,-mah1:mah2)
    392 integer(spi):: j
    393 do j=1,mah1; a(1:min(m1,j),-j)=u0; enddo
    394 do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=u0; enddo
    395 end subroutine clib_d
    396 
    405 pure subroutine clib_c(m1,m2,mah1,mah2,a)! [CLIPB]
    406 use pietc, only: c0
    407 implicit none
    408 integer(spi), intent(IN ) :: m1, m2, mah1, mah2
    409 complex(dpc), intent(INOUT) :: a(m1,-mah1:mah2)
    410 integer(spi):: j
    411 do j=1,mah1; a(1:min(m1,j),-j)=c0; enddo
    412 do j=m2-m1+1,mah2; a(max(1,m2-j+1):m1,j)=c0; enddo
    413 end subroutine clib_c
    414 
    425 subroutine cad1b(m1,mah1,mah2,mirror2,a)! [CAD1B]
    426 use pietc_s, only: u0
    427 implicit none
    428 integer(spi),intent(IN ):: m1,mah1,mah2,mirror2
    429 real(sp), intent(INOUT):: a(0:m1-1,-mah1:mah2)
    430 !-----------------------------------------------------------------------------
    431 integer(spi):: i,i2,jm,jp,jpmax
    432 !=============================================================================
    433 if(mirror2+mah1 > mah2)stop 'In CAD1B; mah2 insufficient'
    434 do i=0,m1-1; i2=i*2; jpmax=mirror2+mah1-i2; if(jpmax <= -mah1)exit
    435  do jm=-mah1,mah2; jp=mirror2-jm-i2; if(jp <= jm)exit
    436  a(i,jp)=a(i,jp)+a(i,jm) ! Reflect and add
    437  a(i,jm)=u0 ! zero the exterior part
    438  enddo
    439 enddo
    440 end subroutine cad1b
    441 
    450 subroutine csb1b(m1,mah1,mah2,mirror2,a)! [CSB1B]
    451 use pietc_s, only: u0
    452 implicit none
    453 integer(spi),intent(IN ):: m1,mah1,mah2,mirror2
    454 real(sp), intent(INOUT):: a(0:m1-1,-mah1:mah2)
    455 !-----------------------------------------------------------------------------
    456 integer(spi):: i,i2,jm,jp,jpmax
    457 !=============================================================================
    458 if(mirror2+mah1 > mah2)stop 'In CSB1B; mah2 insufficient'
    459 do i=0,m1-1; i2=i*2; jpmax=mirror2+mah1-i2; if(jpmax < -mah1)exit
    460  do jm=-mah1,mah2; jp=mirror2-jm-i2; if(jp < jm)exit
    461  a(i,jp)=a(i,jp)-a(i,jm) ! Reflect and subtract
    462  a(i,jm)=u0 ! zero the exterior part
    463  enddo
    464 enddo
    465 end subroutine csb1b
    466 
    476 subroutine cad2b(m1,m2,mah1,mah2,mirror2,a)! [CAD2B]
    477 use pietc_s, only: u0
    478 implicit none
    479 integer(spi),intent(IN ):: m1,m2,mah1,mah2,mirror2
    480 real(sp), intent(INOUT):: a(1-m1:0,m1-m2-mah1:m1-m2+mah2)
    481 !-----------------------------------------------------------------------------
    482 integer(spi):: i,i2,jm,jp,jmmin,nah1,nah2
    483 !=============================================================================
    484 nah1=mah1+m2-m1; nah2=mah2+m1-m2 ! Effective 2nd-index bounds of A
    485 if(mirror2-nah1 > -nah2)stop 'In CAD2B; mah1 insufficient'
    486 do i=0,1-m1,-1; i2=i*2; jmmin=mirror2-nah2-i2; if(jmmin >= nah2)exit
    487  do jp=nah2,nah1,-1; jm=mirror2-jp-i2; if(jm >= jp)exit
    488  a(i,jm)=a(i,jm)+a(i,jp) ! Reflect and add
    489  a(i,jp)=u0 ! zero the exterior part
    490  enddo
    491 enddo
    492 end subroutine cad2b
    493 
    503 subroutine csb2b(m1,m2,mah1,mah2,mirror2,a)! [CSB2B]
    504 use pietc_s, only: u0
    505 implicit none
    506 integer(spi),intent(IN ):: m1,m2,mah1,mah2,mirror2
    507 real(sp), intent(INOUT):: a(1-m1:0,m1-m2-mah1:m1-m2+mah2)
    508 !-----------------------------------------------------------------------------
    509 integer(spi):: i,i2,jm,jp,jmmin,nah1,nah2
    510 !=============================================================================
    511 nah1=mah1+m2-m1; nah2=mah2+m1-m2 ! Effective 2nd-index bounds of A
    512 if(mirror2-nah1 > -nah2)stop 'In CSB2B; mah1 insufficient'
    513 do i=0,1-m1,-1; i2=i*2; jmmin=mirror2-nah2-i2; if(jmmin > nah2)exit
    514  do jp=nah2,nah1,-1; jm=mirror2-jp-i2; if(jm > jp)exit
    515  a(i,jm)=a(i,jm)-a(i,jp) ! Reflect and subtract
    516  a(i,jp)=u0 ! zero the exterior part
    517  enddo
    518 enddo
    519 end subroutine csb2b
    520 
    531 subroutine ldub(m,mah1,mah2,a)! [LDUB]
    532 use pietc_s, only: u0,u1
    533 implicit none
    534 integer(spi),intent(IN ):: m,mah1, mah2
    535 real(sp), intent(INOUT):: a(m,-mah1:mah2)
    536 !-----------------------------------------------------------------------------
    537 integer(spi):: j, imost, jmost, jp, i
    538 real(sp) :: ajj, ajji, aij
    539 !=============================================================================
    540 do j=1,m
    541  imost=min(m,j+mah1)
    542  jmost=min(m,j+mah2)
    543  jp=j+1
    544  ajj=a(j,0)
    545  if(ajj == u0)then
    546  print '(" Failure in LDUB:"/" Matrix requires pivoting or is singular")'
    547  stop
    548  endif
    549  ajji=u1/ajj
    550  a(j,0)=ajji
    551  do i=jp,imost
    552  aij=ajji*a(i,j-i)
    553  a(i,j-i)=aij
    554  a(i,jp-i:jmost-i)=a(i,jp-i:jmost-i)-aij*a(j,1:jmost-j)
    555  enddo
    556  a(j,1:jmost-j)=ajji*a(j,1:jmost-j)
    557 enddo
    558 end subroutine ldub
    559 
    570 subroutine dldub(m,mah1,mah2,a) ! Real(dp) version of [LDUB]
    571 use pietc, only: u0,u1
    572 implicit none
    573 integer(spi),intent(IN ):: m,mah1, mah2
    574 real(dp), intent(INOUT):: a(m,-mah1:mah2)
    575 !-----------------------------------------------------------------------------
    576 integer(spi):: j, imost, jmost, jp, i
    577 real(dp) :: ajj, ajji, aij
    578 !=============================================================================
    579 do j=1,m
    580  imost=min(m,j+mah1)
    581  jmost=min(m,j+mah2)
    582  jp=j+1
    583  ajj=a(j,0)
    584  if(ajj == u0)then
    585  print '(" Fails in LDUB_d:"/" Matrix requires pivoting or is singular")'
    586  stop
    587  endif
    588  ajji=u1/ajj
    589  a(j,0)=ajji
    590  do i=jp,imost
    591  aij=ajji*a(i,j-i)
    592  a(i,j-i)=aij
    593  a(i,jp-i:jmost-i)=a(i,jp-i:jmost-i)-aij*a(j,1:jmost-j)
    594  enddo
    595  a(j,1:jmost-j)=ajji*a(j,1:jmost-j)
    596 enddo
    597 end subroutine dldub
    598 
    608 subroutine ldltb(m,mah1,a) ! Real(sp) version of [LDLTB]
    609 use pietc_s, only: u0,u1
    610 integer(spi),intent(IN ):: m,mah1
    611 real(sp), intent(INOUT):: a(m,-mah1:0)
    612 !-----------------------------------------------------------------------------
    613 integer(spi):: j, imost, jp, i,k
    614 real(sp) :: ajj, ajji, aij
    615 !=============================================================================
    616 do j=1,m
    617  imost=min(m,j+mah1)
    618  jp=j+1
    619  ajj=a(j,0)
    620  if(ajj == u0)then
    621  print '(" Fails in LDLTB:"/" Matrix requires pivoting or is singular")'
    622  stop
    623  endif
    624  ajji=u1/ajj
    625  a(j,0)=ajji
    626  do i=jp,imost
    627  aij=a(i,j-i)
    628  a(i,j-i)=ajji*aij
    629  do k=jp,i
    630  a(i,k-i)=a(i,k-i)-aij*a(k,j-k)
    631  enddo
    632  enddo
    633 enddo
    634 end subroutine ldltb
    635 
    644 subroutine dldltb(m,mah1,a) ! Real(dp) version of [LDLTB]
    645 use pietc, only: u0,u1
    646 integer(spi),intent(IN ) :: m,mah1
    647 real(dp), intent(INOUT) :: a(m,-mah1:0)
    648 !-----------------------------------------------------------------------------
    649 integer(spi):: j, imost, jp, i,k
    650 real(dp) :: ajj, ajji, aij
    651 !=============================================================================
    652 do j=1,m
    653  imost=min(m,j+mah1)
    654  jp=j+1
    655  ajj=a(j,0)
    656  if(ajj == u0)then
    657  print '(" Fails in LDLTB_d:"/" Matrix requires pivoting or is singular")'
    658  stop
    659  endif
    660  ajji=u1/ajj
    661  a(j,0)=ajji
    662  do i=jp,imost
    663  aij=a(i,j-i)
    664  a(i,j-i)=ajji*aij
    665  do k=jp,i
    666  a(i,k-i)=a(i,k-i)-aij*a(k,j-k)
    667  enddo
    668  enddo
    669 enddo
    670 end subroutine dldltb
    671 
    682 subroutine udlb(m,mah1,mah2,a) ! Reversed-index version of ldub [UDLB]
    683 implicit none
    684 integer(spi), intent(IN ) :: m,mah1,mah2
    685 real(sp),dimension(m,-mah1:mah2),intent(INOUT) :: a(m,-mah1:mah2)
    686 !-----------------------------------------------------------------------------
    687 real(sp),dimension(m,-mah2:mah1):: at
    688 !=============================================================================
    689 at=a(m:1:-1,mah2:-mah1:-1); call ldub(m,mah2,mah1,at)
    690 a=at(m:1:-1,mah1:-mah2:-1)
    691 end subroutine udlb
    692 
    703 subroutine dudlb(m,mah1,mah2,a) ! real(dp) version of udlb [UDLB]
    704 implicit none
    705 integer(spi), intent(IN ) :: m,mah1,mah2
    706 real(dp),dimension(m,-mah1:mah2),intent(INOUT) :: a(m,-mah1:mah2)
    707 !-----------------------------------------------------------------------------
    708 real(dp),dimension(m,-mah2:mah1):: at
    709 !=============================================================================
    710 at=a(m:1:-1,mah2:-mah1:-1); call dldub(m,mah2,mah1,at)
    711 a=at(m:1:-1,mah1:-mah2:-1)
    712 end subroutine dudlb
    713 
    732 subroutine l1ubb(m,mah1,mah2,mbh1,mbh2,a,b)! [L1UBB]
    733 use pietc_s, only: u0,u1
    734 implicit none
    735 integer(spi), intent(IN ) :: m,mah1, mah2, mbh1, mbh2
    736 real(sp), intent(INOUT) :: a(m,-mah1:mah2), b(m,-mbh1:mbh2)
    737 !-----------------------------------------------------------------------------
    738 integer(spi):: j, imost, jmost, jleast, jp, i
    739 real(sp) :: ajj, ajji, aij
    740 !=============================================================================
    741 do j=1,m
    742  imost=min(m,j+mah1)
    743  jmost=min(m,j+mah2)
    744  jleast=max(1,j-mah1)
    745  jp=j+1
    746  ajj=a(j,0)
    747  if(ajj == u0)stop 'In L1UBB; zero element found in diagonal factor'
    748  ajji=u1/ajj
    749  a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
    750  do i=jp,imost
    751  aij=a(i,j-i)
    752  a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
    753  enddo
    754  a(j,0)=u1
    755  b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
    756 enddo
    757 end subroutine l1ubb
    758 
    770 subroutine dl1ubb(m,mah1,mah2,mbh1,mbh2,a,b) ! Real(dp) version of [L1UBB]
    771 use pietc, only: u0,u1
    772 implicit none
    773 integer(spi),intent(IN ) :: m,mah1, mah2, mbh1, mbh2
    774 real(dp), intent(INOUT) :: a(m,-mah1:mah2), b(m,-mbh1:mbh2)
    775 !-----------------------------------------------------------------------------
    776 integer(spi):: j, imost, jmost, jleast, jp, i
    777 real(dp) :: ajj, ajji, aij
    778 !=============================================================================
    779 do j=1,m
    780  imost=min(m,j+mah1)
    781  jmost=min(m,j+mah2)
    782  jleast=max(1,j-mah1)
    783  jp=j+1
    784  ajj=a(j,0)
    785  if(ajj == u0)stop 'In L1UBB_d; zero element found in diagonal factor'
    786  ajji=u1/ajj
    787  a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
    788  do i=jp,imost
    789  aij=a(i,j-i)
    790  a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
    791  enddo
    792  a(j,0)=u1
    793  b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
    794 enddo
    795 end subroutine dl1ubb
    796 
    817 subroutine l1ueb(m,mah1,mah2,mbh1,mbh2,a,b)! [L1UEB]
    818 use pietc_s, only: u0,u1
    819 implicit none
    820 integer(spi),intent(IN ) :: m,mah1, mah2, mbh1, mbh2
    821 real(sp), intent(INOUT) :: a(0:m,-mah1:mah2), b(m,-mbh1:mbh2)
    822 !-----------------------------------------------------------------------------
    823 integer(spi):: j, imost, jmost, jleast, jp, i
    824 real(sp) :: ajj, ajji, aij
    825 !=============================================================================
    826 do j=1,m
    827  imost=min(m,j+mah1)
    828  jmost=min(m,j+mah2)
    829  jleast=max(0,j-mah1)
    830  jp=j+1
    831  ajj=a(j,0)
    832  if(ajj == u0)stop 'In L1UEB; zero element found in diagonal factor'
    833  ajji=u1/ajj
    834  a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
    835  do i=jp,imost
    836  aij=a(i,j-i)
    837  a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
    838  enddo
    839  a(j,0)=u1
    840  b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
    841 enddo
    842 end subroutine l1ueb
    843 
    854 subroutine dl1ueb(m,mah1,mah2,mbh1,mbh2,a,b) ! Real(dp) version of [L1UEB]
    855 use pietc, only: u0,u1
    856 implicit none
    857 integer(spi),intent(IN ):: m,mah1, mah2, mbh1, mbh2
    858 real(dp), intent(INOUT):: a(0:,-mah1:), b(:,-mbh1:)
    859 !-----------------------------------------------------------------------------
    860 integer(spi):: j, imost, jmost, jleast, jp, i
    861 real(dp) :: ajj, ajji, aij
    862 !=============================================================================
    863 do j=1,m
    864  imost=min(m,j+mah1)
    865  jmost=min(m,j+mah2)
    866  jleast=max(0,j-mah1)
    867  jp=j+1
    868  ajj=a(j,0)
    869  if(ajj == u0)stop 'In L1UEB_D; zero element found in diagonal factor'
    870  ajji=u1/ajj
    871  a(j,jleast-j:jmost-j) = ajji * a(j,jleast-j:jmost-j)
    872  do i=jp,imost
    873  aij=a(i,j-i)
    874  a(i,jp-i:jmost-i) = a(i,jp-i:jmost-i) - aij*a(j,jp-j:jmost-j)
    875  enddo
    876  a(j,0)=u1
    877  b(j,-mbh1:mbh2) = ajji * b(j,-mbh1:mbh2)
    878 enddo
    879 end subroutine dl1ueb
    880 
    891 subroutine udlbv(m,mah1,mah2,a,v)! [UDLBV]
    892 implicit none
    893 integer(spi),intent(IN ):: m, mah1, mah2
    894 real(sp), intent(IN ):: a(m,-mah1:mah2)
    895 real(sp), intent(INOUT):: v(m)
    896 !-----------------------------------------------------------------------------
    897 integer(spi):: i, j
    898 real(sp) :: vj
    899 !=============================================================================
    900 do j=1,m
    901  vj=v(j)
    902  do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
    903 enddo
    904 do j=m,2,-1
    905  vj=v(j)
    906  do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj; enddo
    907 enddo
    908 end subroutine udlbv
    909 
    920 subroutine dudlbv(m,mah1,mah2,a,v)! [udlbv]
    921 implicit none
    922 integer(spi),intent(IN ) :: m, mah1, mah2
    923 real(dp), intent(IN ) :: a(m,-mah1:mah2)
    924 real(dp), intent(INOUT) :: v(m)
    925 !-----------------------------------------------------------------------------
    926 integer(spi):: i, j
    927 real(dp) :: vj
    928 !=============================================================================
    929 do j=1,m
    930  vj=v(j)
    931  do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
    932 enddo
    933 do j=m,2,-1
    934  vj=v(j)
    935  do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj; enddo
    936 enddo
    937 end subroutine dudlbv
    938 
    949 subroutine ltdlbv(m,mah1,a,v)! [ltdlbv]
    950 implicit none
    951 integer(spi),intent(IN ) :: m, mah1
    952 real(sp), intent(IN ) :: a(m,-mah1:0)
    953 real(sp), intent(INOUT) :: v(m)
    954 !-----------------------------------------------------------------------------
    955 integer(spi):: i, j
    956 real(sp) :: vj
    957 !=============================================================================
    958 do j=1,m
    959  vj=v(j)
    960  do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
    961 enddo
    962 do j=m,2,-1
    963  vj=v(j)
    964  do i=max(1,j-mah1),j-1; v(i)=v(i)-a(j,i-j)*vj; enddo
    965 enddo
    966 end subroutine ltdlbv
    967 
    968 
    979 subroutine dltdlbv(m,mah1,a,v)! [ltdlbv]
    980 implicit none
    981 integer(spi),intent(IN ) :: m, mah1
    982 real(dp), intent(IN ) :: a(m,-mah1:0)
    983 real(dp), intent(INOUT) :: v(m)
    984 !-----------------------------------------------------------------------------
    985 integer(spi):: i, j
    986 real(dp) :: vj
    987 !=============================================================================
    988 do j=1,m
    989  vj=v(j)
    990  do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo; v(j)=a(j,0)*vj
    991 enddo
    992 do j=m,2,-1
    993  vj=v(j)
    994  do i=max(1,j-mah1),j-1; v(i)=v(i)-a(j,i-j)*vj; enddo
    995 enddo
    996 end subroutine dltdlbv
    997 
    1010 subroutine udlbx(mx,mah1,mah2,my,a,v)! [UDLBX]
    1011 implicit none
    1012 integer(spi),intent(IN ) :: mx, mah1, mah2, my
    1013 real(sp), intent(IN ) :: a(mx,-mah1:mah2)
    1014 real(sp), intent(INOUT) :: v(mx,my)
    1015 !-----------------------------------------------------------------------------
    1016 integer(spi):: jx, ix
    1017 !=============================================================================
    1018 do jx=1,mx
    1019  do ix=jx+1,min(mx,jx+mah1); v(ix,:) = v(ix,:) - a(ix,jx-ix)*v(jx,:); enddo
    1020  v(jx,:) = a(jx,0) * v(jx,:)
    1021 enddo
    1022 do jx=mx,2,-1
    1023  do ix=max(1,jx-mah2),jx-1; v(ix,:) = v(ix,:) - a(ix,jx-ix)*v(jx,:); enddo
    1024 enddo
    1025 end subroutine udlbx
    1026 
    1039 subroutine udlby(my,mah1,mah2,mx,a,v)! [UDLBY]
    1040 implicit none
    1041 integer(spi),intent(IN ) :: my, mah1, mah2, mx
    1042 real(sp), intent(IN ) :: a(my,-mah1:mah2)
    1043 real(sp), intent(INOUT) :: v(mx,my)
    1044 !-----------------------------------------------------------------------------
    1045 integer(spi):: iy, jy
    1046 !=============================================================================
    1047 do jy=1,my
    1048  do iy=jy+1,min(my,jy+mah1); v(:,iy) = v(:,iy)-a(iy,jy-iy)*v(:,jy); enddo
    1049  v(:,jy)=a(jy,0)*v(:,jy)
    1050 enddo
    1051 do jy=my,2,-1
    1052  do iy=max(1,jy-mah2),jy-1; v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy); enddo
    1053 enddo
    1054 end subroutine udlby
    1055 
    1066 subroutine udlvb(m,mah1,mah2,v,a)! [UDLVB]
    1067 implicit none
    1068 integer(spi), intent(IN ) :: m, mah1, mah2
    1069 real(sp), intent(IN ) :: a(m,-mah1:mah2)
    1070 real(sp), intent(INOUT) :: v(m)
    1071 !-----------------------------------------------------------------------------
    1072 integer(spi):: i, j
    1073 real(sp) :: vi
    1074 !=============================================================================
    1075 do i=1,m
    1076  vi=v(i)
    1077  do j=i+1,min(m,i+mah2); v(j)=v(j)-vi*a(i,j-i); enddo
    1078  v(i)=vi*a(i,0)
    1079 enddo
    1080 do i=m,2,-1
    1081  vi=v(i)
    1082  do j=max(1,i-mah1),i-1; v(j)=v(j)-vi*a(i,j-i); enddo
    1083 enddo
    1084 end subroutine udlvb
    1085 
    1098 subroutine udlxb(mx,mah1,mah2,my,v,a)! [UDLXB]
    1099 implicit none
    1100 integer(spi),intent(IN ) :: mx, mah1, mah2, my
    1101 real(sp), intent(IN ) :: a(mx,-mah1:mah2)
    1102 real(sp), intent(INOUT) :: v(mx,my)
    1103 !-----------------------------------------------------------------------------
    1104 integer(spi):: ix, jx
    1105 !=============================================================================
    1106 do ix=1,mx
    1107  do jx=ix+1,min(mx,ix+mah2); v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix); enddo
    1108  v(ix,:)=v(ix,:)*a(ix,0)
    1109 enddo
    1110 do ix=mx,2,-1
    1111  do jx=max(1,ix-mah1),ix-1; v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix); enddo
    1112 enddo
    1113 end subroutine udlxb
    1114 
    1127 subroutine udlyb(my,mah1,mah2,mx,v,a)! [UDLYB]
    1128 implicit none
    1129 integer(spi),intent(IN ) :: my, mah1, mah2, mx
    1130 real(sp), intent(IN ) :: a(my,-mah1:mah2)
    1131 real(sp), intent(INOUT) :: v(mx,my)
    1132 !-----------------------------------------------------------------------------
    1133 integer(spi):: iy, jy
    1134 !=============================================================================
    1135 do iy=1,my
    1136  do jy=iy+1,min(my,iy+mah2); v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy); enddo
    1137  v(:,iy)=v(:,iy)*a(iy,0)
    1138 enddo
    1139 do iy=my,2,-1
    1140  do jy=max(1,iy-mah1),iy-1; v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy); enddo
    1141 enddo
    1142 end subroutine udlyb
    1143 
    1154 subroutine u1lbv(m,mah1,mah2,a,v)! [U1LBV]
    1155 implicit none
    1156 integer(spi),intent(IN ) :: m, mah1, mah2
    1157 real(sp), intent(IN ) :: a(m,-mah1:mah2)
    1158 real(sp), intent(INOUT) :: v(m)
    1159 !-----------------------------------------------------------------------------
    1160 integer(spi):: i, j
    1161 real(sp) :: vj
    1162 !=============================================================================
    1163 do j=1,m
    1164  vj=v(j)
    1165  do i=j+1,min(m,j+mah1); v(i)=v(i)-a(i,j-i)*vj; enddo
    1166 enddo
    1167 do j=m,2,-1
    1168  vj=v(j)
    1169  do i=max(1,j-mah2),j-1; v(i)=v(i)-a(i,j-i)*vj; enddo
    1170 enddo
    1171 end subroutine u1lbv
    1172 
    1185 subroutine u1lbx(mx,mah1,mah2,my,a,v)! [U1LBX]
    1186 implicit none
    1187 integer(spi),intent(IN ) :: mx, mah1, mah2, my
    1188 real(sp), intent(IN ) :: a(mx,-mah1:mah2)
    1189 real(sp), intent(INOUT) :: v(mx,my)
    1190 !-----------------------------------------------------------------------------
    1191 integer(spi):: ix, jx
    1192 !=============================================================================
    1193 do jx=1,mx
    1194  do ix=jx+1,min(mx,jx+mah1); v(ix,:)=v(ix,:)-a(ix,jx-ix)*v(jx,:); enddo
    1195 enddo
    1196 do jx=mx,2,-1
    1197  do ix=max(1,jx-mah2),jx-1; v(ix,:)=v(ix,:)-a(ix,jx-ix)*v(jx,:); enddo
    1198 enddo
    1199 end subroutine u1lbx
    1200 
    1213 subroutine u1lby(my,mah1,mah2,mx,a,v)! [U1LBY]
    1214 implicit none
    1215 integer(spi),intent(IN ) :: my, mah1, mah2, mx
    1216 real(sp), intent(IN ) :: a(my,-mah1:mah2)
    1217 real(sp), intent(INOUT) :: v(mx,my)
    1218 !-----------------------------------------------------------------------------
    1219 integer(spi):: iy, jy
    1220 !=============================================================================
    1221 do jy=1,my
    1222  do iy=jy+1,min(my,jy+mah1); v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy); enddo
    1223 enddo
    1224 do jy=my,2,-1
    1225  do iy=max(1,jy-mah2),jy-1; v(:,iy)=v(:,iy)-a(iy,jy-iy)*v(:,jy); enddo
    1226 enddo
    1227 end subroutine u1lby
    1228 
    1239 subroutine u1lvb(m,mah1,mah2,v,a)! [U1LVB]
    1240 implicit none
    1241 integer(spi),intent(IN ) :: m, mah1, mah2
    1242 real(sp), intent(IN ) :: a(m,-mah1:mah2)
    1243 real(sp), intent(INOUT) :: v(m)
    1244 !-----------------------------------------------------------------------------
    1245 integer(spi):: i, j
    1246 real(sp) :: vi
    1247 !=============================================================================
    1248 do i=1,m
    1249  vi=v(i)
    1250  do j=i+1,min(m,i+mah2); v(j)=v(j)-vi*a(i,j-i); enddo
    1251 enddo
    1252 do i=m,2,-1
    1253  vi=v(i)
    1254  do j=max(1,i-mah1),i-1; v(j)=v(j)-vi*a(i,j-i); enddo
    1255 enddo
    1256 end subroutine u1lvb
    1257 
    1270 subroutine u1lxb(mx,mah1,mah2,my,v,a)! [U1LXB]
    1271 implicit none
    1272 integer(spi),intent(IN ) :: mx, mah1, mah2, my
    1273 real(sp), intent(IN ) :: a(mx,-mah1:mah2)
    1274 real(sp), intent(INOUT) :: v(mx,my)
    1275 !-----------------------------------------------------------------------------
    1276 integer(spi):: ix, jx
    1277 !=============================================================================
    1278 do ix=1,mx
    1279  do jx=ix+1,min(mx,ix+mah2); v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix); enddo
    1280 enddo
    1281 do ix=mx,2,-1
    1282  do jx=max(1,ix-mah1),ix-1; v(jx,:)=v(jx,:)-v(ix,:)*a(ix,jx-ix); enddo
    1283 enddo
    1284 end subroutine u1lxb
    1285 
    1298 subroutine u1lyb(my,mah1,mah2,mx,v,a)! [U1LYB]
    1299 implicit none
    1300 integer(spi),intent(IN ) :: my, mah1, mah2, mx
    1301 real(sp), intent(IN ) :: a(my,-mah1:mah2)
    1302 real(sp), intent(INOUT) :: v(mx,my)
    1303 !-----------------------------------------------------------------------------
    1304 integer(spi):: iy, jy
    1305 !=============================================================================
    1306 do iy=1,my
    1307  do jy=iy+1,min(my,iy+mah2); v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy); enddo
    1308 enddo
    1309 do iy=my,2,-1
    1310  do jy=max(1,iy-mah1),iy-1; v(:,jy)=v(:,jy)-v(:,iy)*a(iy,jy-iy); enddo
    1311 enddo
    1312 end subroutine u1lyb
    1313 
    1322 subroutine linbv(m,mah1,mah2,a,v)! [LINBV]
    1323 implicit none
    1324 integer(spi),intent(IN ) :: m, mah1, mah2
    1325 real(sp), intent(INOUT) :: a(m,-mah1:mah2), v(m)
    1326 !=============================================================================
    1327 call ldub(m,mah1,mah2,a)
    1328 call udlbv(m,mah1,mah2,a,v)
    1329 end subroutine linbv
    1330 
    1340 subroutine wrtb(m1,m2,mah1,mah2,a)! [WRTB]
    1341 implicit none
    1342 integer(spi),intent(IN) :: m1, m2, mah1, mah2
    1343 real(sp), intent(IN) :: a(m1,-mah1:mah2)
    1344 !-----------------------------------------------------------------------------
    1345 integer(spi):: i1, i2, i, j1, j2, j, nj1
    1346 !=============================================================================
    1347 do i1=1,m1,20
    1348  i2=min(i1+19,m1)
    1349  print '(7x,6(i2,10x))',(j,j=-mah1,mah2)
    1350  do i=i1,i2
    1351  j1=max(-mah1,1-i)
    1352  j2=min(mah2,m2-i)
    1353  nj1=j1+mah1
    1354  if(nj1==0)print '(1x,i3,6(1x,e12.5))', i,(a(i,j),j=j1,j2)
    1355  if(nj1==1)print '(1x,i3,12x,5(1x,e12.5))',i,(a(i,j),j=j1,j2)
    1356  if(nj1==2)print '(1x,i3,24x,4(1x,e12.5))',i,(a(i,j),j=j1,j2)
    1357  if(nj1==3)print '(1x,i3,36x,3(1x,e12.5))',i,(a(i,j),j=j1,j2)
    1358  if(nj1==4)print '(1x,i3,48x,2(1x,e12.5))',i,(a(i,j),j=j1,j2)
    1359  if(nj1==5)print '(1x,i3,60x,1(1x,e12.5))',i,(a(i,j),j=j1,j2)
    1360  enddo
    1361  read(*,*)
    1362 enddo
    1363 end subroutine wrtb
    1364 
    1365 end module pmat2
    + +
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    + +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    + +
    subroutine dudlbv(m, mah1, mah2, a, v)
    Back-substitution step of linear inversion involving banded LDU factored matrix and input vector...
    Definition: pmat2.f90:921
    + +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    + +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    + +
    pure subroutine clib_d(m1, m2, mah1, mah2, a)
    Clip (set to zero) the unused values in a banded matrix representation.
    Definition: pmat2.f90:388
    +
    real(dp), parameter zero
    Double precision real zero.
    Definition: pmat2.f90:54
    +
    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)
    Definition: pmat2.f90:980
    + + +
    complex(dpc), parameter c0
    complex zero
    Definition: pietc.f90:112
    + + + + + + + + + +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    + +
    pure subroutine clib_c(m1, m2, mah1, mah2, a)
    Clip (set to zero) the unused values in a banded matrix representation.
    Definition: pmat2.f90:406
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    + +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    integer, parameter dpc
    Double precision real kind.
    Definition: pkind.f90:13
    + + + + + + + + +
    Routines dealing with the operations of banded matrices.
    Definition: pmat2.f90:21
    + +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat4_8f90.html b/ver-1.11.0/grid_tools/pmat4_8f90.html new file mode 100644 index 000000000..458224ecb --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat4_8f90.html @@ -0,0 +1,589 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat4.f90 File Reference
    +
    +
    + +

    Euclidean geometry, geometric (stereographic) projections, related transformations (Mobius). +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pmat4::absv
     
    interface  pmat4::axial
     
    interface  pmat4::axtoq
     
    interface  pmat4::axtorot
     
    interface  pmat4::corral
     
    interface  pmat4::cross_product
     
    interface  pmat4::ctoz
     
    interface  pmat4::det
     
    interface  pmat4::diag
     
    interface  pmat4::dlltoxy
     
    interface  pmat4::expmat
     
    interface  pmat4::gram
     
    interface  pmat4::hav
     
    interface  pmat4::huarea
     
    interface  pmat4::identity
     
    interface  pmat4::mobius
     
    interface  pmat4::mobiusi
     
    interface  pmat4::mulqq
     
    interface  pmat4::normalize
     
    interface  pmat4::normalized
     
    interface  pmat4::orthogonalized
     
    interface  pmat4::outer_product
     
    interface  pmat4::qtoax
     
    interface  pmat4::qtorot
     
    interface  pmat4::qtospin
     
    interface  pmat4::rottoax
     
    interface  pmat4::rottoq
     
    interface  pmat4::rowops
     
    interface  pmat4::sarea
     
    interface  pmat4::setem
     
    interface  pmat4::setmobius
     
    interface  pmat4::spintoq
     
    interface  pmat4::trace
     
    interface  pmat4::triple_product
     
    interface  pmat4::znfun
     
    interface  pmat4::zntay
     
    interface  pmat4::ztoc
     
    + + + + +

    +Modules

    module  pmat4
     Module for handy vector and matrix operations in Euclidean geometry.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    real(dp) function pmat4::absv_d (a)
     Return the absolute magnitude of a double precision real vector. More...
     
    real(sp) function pmat4::absv_s (a)
     Return the absolute magnitude of a single precision real vector. More...
     
    real(dp) function, dimension(3) pmat4::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) pmat4::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) pmat4::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) pmat4::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 pmat4::axtoq (v, q)
     Go from an axial 3-vector to its equivalent quaternion. More...
     
    subroutine, public pmat4::axtorot (ax3, orth33)
     Construct the 3*3 orthogonal matrix, orth33, that corresponds to the proper rotation encoded by the 3-vector, ax3. More...
     
    subroutine pmat4::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 pmat4::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) pmat4::cross_product_d (a, b)
     Return the cross product of two double precision real 3-vectors. More...
     
    real(sp) function, dimension(3) pmat4::cross_product_s (a, b)
     Return the cross product of two single precision real 3-vectors. More...
     
    subroutine, public pmat4::ctoz (v, z, infz)
     Utility codes for various Mobius transformations. More...
     
    subroutine cyclic (u1, u2, u3, d1, d2, d3)
     Cyclically permute real vectors, u1, u2, u3, and scalars, d1, d2, d3. More...
     
    subroutine cyclic (u1, u2, u3, d1, d2, d3)
     Cyclically permute real vectors, u1, u2, u3, and scalars, d1, d2, d3. More...
     
    real(dp) function pmat4::det_d (a)
     Return the determinant of a double precision matrix. More...
     
    integer(spi) function pmat4::det_i (a)
     Return the determinant of a single precision integer matrix. More...
     
    integer(dpi) function pmat4::det_id (a)
     Return the determinant of a double precision integer matrix. More...
     
    real(sp) function pmat4::det_s (a)
     Return the determinant of a single precision matrix. More...
     
    real(dp) function, dimension(size(a), size(a)) pmat4::diagn_d (a)
     Return the diagonal matrix whose elements are the given vector. More...
     
    integer(spi) function, dimension(size(a), size(a)) pmat4::diagn_i (a)
     Return the diagonal matrix whose elements are the given vector. More...
     
    real(sp) function, dimension(size(a), size(a)) pmat4::diagn_s (a)
     Return the diagonal matrix whose elements are the given vector. More...
     
    real(dp) function, dimension(size(b, 1)) pmat4::diagnn_d (b)
     Return the vector whose elements are the diagonal ones of a given matrix. More...
     
    integer(spi) function, dimension(size(b, 1)) pmat4::diagnn_i (b)
     Return the vector whose elements are the diagonal ones of a given matrix. More...
     
    real(sp) function, dimension(size(b, 1)) pmat4::diagnn_s (b)
     Return the vector whose elements are the diagonal ones of a given matrix. More...
     
    subroutine pmat4::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 pmat4::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 pmat4::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 pmat4::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 pmat4::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 pmat4::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 pmat4::expmat (n, a, b, detb)
     Evaluate the exponential, B, of a matrix, A, of degree n. More...
     
    subroutine pmat4::expmatd (n, a, b, bd, detb, detbd)
     Like expmat, but for the 1st derivatives also. More...
     
    subroutine pmat4::expmatdd (n, a, b, bd, bdd, detb, detbd, detbdd)
     Like expmat, but for the 1st and 2nd derivatives also. More...
     
    subroutine pmat4::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 pmat4::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 pmat4::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 pmat4::hav_d (t)
     Haversine function in double precision. More...
     
    real(sp) function pmat4::hav_s (t)
     Haversine function in single precision. More...
     
    real(dp) function pmat4::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 pmat4::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) pmat4::identity3_i ()
     Return the 3-dimensional integer identity matrix. More...
     
    integer(spi) function, dimension(n, n) pmat4::identity_i (n)
     Return the integer identity matrix for a given dimensionality. More...
     
    real(dp) function, dimension(0:3), public pmat4::mulqq (a, b)
     Multiply quaternions, a*b, assuming operation performed from right to left. More...
     
    subroutine pmat4::normalize_d (v)
     Normalize the given double precision real vector. More...
     
    subroutine pmat4::normalize_s (v)
     Normalize the given single precision real vector. More...
     
    real(dp) function, dimension(size(a)) pmat4::normalized_d (a)
     Return the normalized version of a double precision real vector. More...
     
    real(sp) function, dimension(size(a)) pmat4::normalized_s (a)
     Return the normalized version of a single precision real vector. More...
     
    real(dp) function, dimension(size(u)) pmat4::orthogonalized_d (u, a)
     Return the part of vector a that is orthogonal to unit vector u. More...
     
    real(sp) function, dimension(size(u)) pmat4::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)) pmat4::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)) pmat4::outer_product_i (a, b)
     Return the outer product matrix of two integer vectors. More...
     
    real(sp) function, dimension(size(a), size(b)) pmat4::outer_product_s (a, b)
     Return the outer product matrix of two single precision real vectors. More...
     
    subroutine pmat4::plaingram_d (b, nrank)
     A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only. More...
     
    subroutine pmat4::plaingram_s (b, nrank)
     A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only. More...
     
    subroutine, public pmat4::qtoax (q, v)
     Go from quaternion to axial 3-vector. More...
     
    subroutine, public pmat4::qtorot (q, rot)
     Go from quaternion to rotation matrix representations. More...
     
    subroutine, public pmat4::qtospin (q, cspin)
     Go from the unit quaternion to the complex spinor representation. More...
     
    subroutine, public pmat4::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 pmat4::rottoq (rot, q)
     Go from rotation matrix to a corresponding unit quaternion representation. More...
     
    subroutine pmat4::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 pmat4::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 pmat4::sarea_d (v1, v2, v3)
     Compute the area of the spherical triangle, {v1,v2,v3}. More...
     
    real(sp) function pmat4::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 pmat4::setem (c, d, e, g, r)
     Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix. More...
     
    subroutine, public pmat4::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 pmat4::spintoq (cspin, q)
     Go from the complex spinor matrix to the unit quaternion representation. More...
     
    real(dp) function pmat4::trace_d (b)
     Return the trace of a given double precision real matrix. More...
     
    integer(spi) function pmat4::trace_i (b)
     Return the trace of a given integer matrix. More...
     
    real(sp) function pmat4::trace_s (b)
     Return the trace of a given single precision real matrix. More...
     
    real(dp) function, dimension(4) pmat4::triple_cross_product_d (u, v, w)
     Return the triple_cross_product for 4-vectors. More...
     
    real(sp) function, dimension(4) pmat4::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 pmat4::triple_product_d (a, b, c)
     Return the triple product of three double precision real 3-vectors. More...
     
    real(sp) function pmat4::triple_product_s (a, b, c)
     Return the triple product of three single precision real 3-vectors. More...
     
    subroutine pmat4::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 pmat4::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 pmat4::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 pmat4::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 pmat4::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 pmat4::ztoc (z, infz, v)
     Given a complex z, return the equivalent cartesian unit 3-vector associated by the polar stereographic projection. More...
     
    subroutine pmat4::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...
     
    +

    Detailed Description

    +

    Euclidean geometry, geometric (stereographic) projections, related transformations (Mobius).

    +
    Author
    R. J. Purser
    +
    Date
    Oct 2005
    + +

    Definition in file pmat4.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ cyclic() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine sarea_s::cyclic (real(sp), dimension(3), intent(inout) u1,
    real(sp), dimension(3), intent(inout) u2,
    real(sp), dimension(3), intent(inout) u3,
    real(sp), intent(inout) d1,
    real(sp), intent(inout) d2,
    real(sp), intent(inout) d3 
    )
    +
    + +

    Cyclically permute real vectors, u1, u2, u3, and scalars, d1, d2, d3.

    +
    Parameters
    + + + + + + + +
    [in,out]u1real vector to be shifted
    [in,out]u2real vector to be shifted
    [in,out]u3real vector to be shifted
    [in,out]d1real variable to be shifted
    [in,out]d2real variable to be shifted
    [in,out]d3real variable to be shifted
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 705 of file pmat4.f90.

    + +

    Referenced by pmat4::sarea_d(), and pmat4::sarea_s().

    + +
    +
    + +

    ◆ cyclic() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine sarea_d::cyclic (real(dp), dimension(3), intent(inout) u1,
    real(dp), dimension(3), intent(inout) u2,
    real(dp), dimension(3), intent(inout) u3,
    real(dp), intent(inout) d1,
    real(dp), intent(inout) d2,
    real(dp), intent(inout) d3 
    )
    +
    + +

    Cyclically permute real vectors, u1, u2, u3, and scalars, d1, d2, d3.

    +
    Parameters
    + + + + + + + +
    [in,out]u1real vector to be shifted
    [in,out]u2real vector to be shifted
    [in,out]u3real vector to be shifted
    [in,out]d1real variable to be shifted
    [in,out]d2real variable to be shifted
    [in,out]d3real variable to be shifted
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 760 of file pmat4.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat4_8f90.js b/ver-1.11.0/grid_tools/pmat4_8f90.js new file mode 100644 index 000000000..577861277 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat4_8f90.js @@ -0,0 +1,121 @@ +var pmat4_8f90 = +[ + [ "absv", "interfacepmat4_1_1absv.html", "interfacepmat4_1_1absv" ], + [ "axial", "interfacepmat4_1_1axial.html", "interfacepmat4_1_1axial" ], + [ "axtoq", "interfacepmat4_1_1axtoq.html", "interfacepmat4_1_1axtoq" ], + [ "axtorot", "interfacepmat4_1_1axtorot.html", "interfacepmat4_1_1axtorot" ], + [ "corral", "interfacepmat4_1_1corral.html", "interfacepmat4_1_1corral" ], + [ "cross_product", "interfacepmat4_1_1cross__product.html", "interfacepmat4_1_1cross__product" ], + [ "ctoz", "interfacepmat4_1_1ctoz.html", "interfacepmat4_1_1ctoz" ], + [ "det", "interfacepmat4_1_1det.html", "interfacepmat4_1_1det" ], + [ "diag", "interfacepmat4_1_1diag.html", "interfacepmat4_1_1diag" ], + [ "dlltoxy", "interfacepmat4_1_1dlltoxy.html", "interfacepmat4_1_1dlltoxy" ], + [ "expmat", "interfacepmat4_1_1expmat.html", "interfacepmat4_1_1expmat" ], + [ "gram", "interfacepmat4_1_1gram.html", "interfacepmat4_1_1gram" ], + [ "hav", "interfacepmat4_1_1hav.html", "interfacepmat4_1_1hav" ], + [ "huarea", "interfacepmat4_1_1huarea.html", "interfacepmat4_1_1huarea" ], + [ "identity", "interfacepmat4_1_1identity.html", "interfacepmat4_1_1identity" ], + [ "mobius", "interfacepmat4_1_1mobius.html", "interfacepmat4_1_1mobius" ], + [ "mobiusi", "interfacepmat4_1_1mobiusi.html", "interfacepmat4_1_1mobiusi" ], + [ "mulqq", "interfacepmat4_1_1mulqq.html", "interfacepmat4_1_1mulqq" ], + [ "normalize", "interfacepmat4_1_1normalize.html", "interfacepmat4_1_1normalize" ], + [ "normalized", "interfacepmat4_1_1normalized.html", "interfacepmat4_1_1normalized" ], + [ "orthogonalized", "interfacepmat4_1_1orthogonalized.html", "interfacepmat4_1_1orthogonalized" ], + [ "outer_product", "interfacepmat4_1_1outer__product.html", "interfacepmat4_1_1outer__product" ], + [ "qtoax", "interfacepmat4_1_1qtoax.html", "interfacepmat4_1_1qtoax" ], + [ "qtorot", "interfacepmat4_1_1qtorot.html", "interfacepmat4_1_1qtorot" ], + [ "qtospin", "interfacepmat4_1_1qtospin.html", "interfacepmat4_1_1qtospin" ], + [ "rottoax", "interfacepmat4_1_1rottoax.html", "interfacepmat4_1_1rottoax" ], + [ "rottoq", "interfacepmat4_1_1rottoq.html", "interfacepmat4_1_1rottoq" ], + [ "rowops", "interfacepmat4_1_1rowops.html", "interfacepmat4_1_1rowops" ], + [ "sarea", "interfacepmat4_1_1sarea.html", "interfacepmat4_1_1sarea" ], + [ "setem", "interfacepmat4_1_1setem.html", "interfacepmat4_1_1setem" ], + [ "setmobius", "interfacepmat4_1_1setmobius.html", "interfacepmat4_1_1setmobius" ], + [ "spintoq", "interfacepmat4_1_1spintoq.html", "interfacepmat4_1_1spintoq" ], + [ "trace", "interfacepmat4_1_1trace.html", "interfacepmat4_1_1trace" ], + [ "triple_product", "interfacepmat4_1_1triple__product.html", "interfacepmat4_1_1triple__product" ], + [ "znfun", "interfacepmat4_1_1znfun.html", "interfacepmat4_1_1znfun" ], + [ "zntay", "interfacepmat4_1_1zntay.html", "interfacepmat4_1_1zntay" ], + [ "ztoc", "interfacepmat4_1_1ztoc.html", "interfacepmat4_1_1ztoc" ], + [ "absv_d", "pmat4_8f90.html#a1bd0a24f4302dafd8d2da8e9db3161bf", null ], + [ "absv_s", "pmat4_8f90.html#a943a88c224ed6f395284e437e7703d66", null ], + [ "axial33_d", "pmat4_8f90.html#a56de8198dc945b5cba6d1fd476f84d6f", null ], + [ "axial33_s", "pmat4_8f90.html#af4e70c88c7c2ed2a99e4921e19fc3e4b", null ], + [ "axial3_d", "pmat4_8f90.html#a97ea1886731d1484a5716985228ada3b", null ], + [ "axial3_s", "pmat4_8f90.html#ae1601efcae5698513dbc0f7d2ca102a1", null ], + [ "axtoq", "pmat4_8f90.html#afea8becd63ae1c05d62bb8331c3290f6", null ], + [ "axtorot", "pmat4_8f90.html#af72975c3f38b66e654180148138a2ce1", null ], + [ "cmobius", "pmat4_8f90.html#aba8e4c263e6d8f6b18179f3e56f9d912", null ], + [ "corral", "pmat4_8f90.html#acf3408dd7b0d52727193c806c4c89e6d", null ], + [ "cross_product_d", "pmat4_8f90.html#ac807f097241c0c5b0d0e8b8ecdbe5219", null ], + [ "cross_product_s", "pmat4_8f90.html#a4a16044b6e72303b3e18568dd7e6705a", null ], + [ "ctoz", "pmat4_8f90.html#a6825ba53d8a8cd4fa2989c98567ff13f", null ], + [ "cyclic", "pmat4_8f90.html#ac7e0d1ec024ec42e1905809ea150bf0a", null ], + [ "cyclic", "pmat4_8f90.html#a40db721f5c7e9df203fed326ff1825c8", null ], + [ "det_d", "pmat4_8f90.html#a18568dcbabc7e3eeac4a3298aea55040", null ], + [ "det_i", "pmat4_8f90.html#ad447bfb05988b6c3b7c5591bce7d8af1", null ], + [ "det_id", "pmat4_8f90.html#a3d3d55e961fafd21095e75d49fe734b9", null ], + [ "det_s", "pmat4_8f90.html#a9ccfdef199705ecd023701ffff24344d", null ], + [ "diagn_d", "pmat4_8f90.html#a89b64fd3ed548a7a0a7f1c5b7c4f4c80", null ], + [ "diagn_i", "pmat4_8f90.html#a20d6267f0bf16f8baac9f65b954dbe8f", null ], + [ "diagn_s", "pmat4_8f90.html#a16c9e93c3d9b0bb670d9c3dfc2c93560", null ], + [ "diagnn_d", "pmat4_8f90.html#a97104962c25b160006ba28edf310a26b", null ], + [ "diagnn_i", "pmat4_8f90.html#a86bb5fbbb0977051c6f06e31ae5ab6c7", null ], + [ "diagnn_s", "pmat4_8f90.html#ad1bcf950c1fa15a8c5b2e8a8b3584b95", null ], + [ "dlltoxy_d", "pmat4_8f90.html#ab8e89e0ff71497684032ead204fd1491", null ], + [ "dlltoxy_s", "pmat4_8f90.html#a8b9f878749f257db635b48ff1ba8bc9a", null ], + [ "dqarea_d", "pmat4_8f90.html#abd57a3c8dd6d473a2b7a4e237bd9de0f", null ], + [ "dqarea_s", "pmat4_8f90.html#a81a9dabd946a63e494f3e2a81d82f82a", null ], + [ "dtarea_d", "pmat4_8f90.html#aef0bd16dbf6eb59c5ee127188ac62a95", null ], + [ "dtarea_s", "pmat4_8f90.html#ae2a0a54e6946512c65585b15ecd2f112", null ], + [ "expmat", "pmat4_8f90.html#aabc881074a8327ba35e6e489b50d8d9b", null ], + [ "expmatd", "pmat4_8f90.html#a299ee2005b886da1f3a8372558355cbb", null ], + [ "expmatdd", "pmat4_8f90.html#a7be59f4cbe597ab23b4fef5b2ddf4b70", null ], + [ "gram_d", "pmat4_8f90.html#ab7089a1ca01eb147693f2934c04d19a7", null ], + [ "gram_s", "pmat4_8f90.html#aade64d36f392c897af58d41439fd3901", null ], + [ "graml_d", "pmat4_8f90.html#a258deaab20439a12318abdf11bcfb21c", null ], + [ "hav_d", "pmat4_8f90.html#ad6d025b44412ad3f00d78bf8349f9e29", null ], + [ "hav_s", "pmat4_8f90.html#a8bbb7bd988101945eb216beebc4fb2f0", null ], + [ "huarea_d", "pmat4_8f90.html#a878838ecb93924d96ae6f2201d4e295e", null ], + [ "huarea_s", "pmat4_8f90.html#ad8f31b798b7f9ef52558279f17cdb1e2", null ], + [ "identity3_i", "pmat4_8f90.html#a50f1d1ef0c666fd608e635204a0d4650", null ], + [ "identity_i", "pmat4_8f90.html#ab32d3dba8b9ac02e54b6147cec97ee54", null ], + [ "mulqq", "pmat4_8f90.html#a8c72227238a4a77ec3b8fa7d5b801a9f", null ], + [ "normalize_d", "pmat4_8f90.html#ac0d1be13ba1560f58f812bc6b81d998c", null ], + [ "normalize_s", "pmat4_8f90.html#ac1b8cee865a9391009abccaf9f7cfd50", null ], + [ "normalized_d", "pmat4_8f90.html#af9d31fb0571560ba46d2c2798bdbd6a8", null ], + [ "normalized_s", "pmat4_8f90.html#a6a00630db390bcbc0588f5f22bf6db07", null ], + [ "orthogonalized_d", "pmat4_8f90.html#ae6a1fd6367b43245e70f59952ffd7a57", null ], + [ "orthogonalized_s", "pmat4_8f90.html#a4018eff72c43e01ab75164f6d71f694f", null ], + [ "outer_product_d", "pmat4_8f90.html#a907c7e2db1047e361447671074f0200b", null ], + [ "outer_product_i", "pmat4_8f90.html#a7fc06110c264999b4c64f346b1ff9bb0", null ], + [ "outer_product_s", "pmat4_8f90.html#aed6c0b71d1632c507f4d8519de674d62", null ], + [ "plaingram_d", "pmat4_8f90.html#a9e4079cc069a9437a95fab4d685118cc", null ], + [ "plaingram_s", "pmat4_8f90.html#ad3a4849081bf81dc9d37898d24d5b8a4", null ], + [ "qtoax", "pmat4_8f90.html#a76968a32e6d0f32973cacda59b8fbf91", null ], + [ "qtorot", "pmat4_8f90.html#ab6e7bf2144ab8823f02c6a9e5db1b993", null ], + [ "qtospin", "pmat4_8f90.html#a2fdbe8c6acdb340d51225420e9dbbfdf", null ], + [ "rottoax", "pmat4_8f90.html#a3aebb288da3a12333ee14350e8db2e1e", null ], + [ "rottoq", "pmat4_8f90.html#ae16a6a537eb1fa4c611e7267973d7589", null ], + [ "rowgram", "pmat4_8f90.html#a2187ea41676149982afbef613c2303d1", null ], + [ "rowops", "pmat4_8f90.html#a013540db57612c537df459f6d209bb9e", null ], + [ "sarea_d", "pmat4_8f90.html#a60825439c3ab3cdb5f56dde3905d6705", null ], + [ "sarea_s", "pmat4_8f90.html#aa1d04d9f7dc4104ed54af07a59e0741f", null ], + [ "setem", "pmat4_8f90.html#a0967dfcd81af21a8224df0e9872f7636", null ], + [ "setmobius", "pmat4_8f90.html#acc922362fc8befbb9a24ee241227720a", null ], + [ "spintoq", "pmat4_8f90.html#aa16fe8967da6010dcda10b29d98ddb5d", null ], + [ "trace_d", "pmat4_8f90.html#ae6d759d7985b821fc2c878b6792cbdf0", null ], + [ "trace_i", "pmat4_8f90.html#a75a91197fc4db33ab6bffc89ffa1ad41", null ], + [ "trace_s", "pmat4_8f90.html#a62b53eb9a0798c65b9d9ead4c21e8ff9", null ], + [ "triple_cross_product_d", "pmat4_8f90.html#a177d2fdb3121bbbb80bd7cac7fe93448", null ], + [ "triple_cross_product_s", "pmat4_8f90.html#a4eac3bd5e6768caaabf9f73710ee3a92", null ], + [ "triple_product_d", "pmat4_8f90.html#a6cd1353e72eca489997010df919e99af", null ], + [ "triple_product_s", "pmat4_8f90.html#ad64d33605028491e5a859fbb732ee544", null ], + [ "zmobius", "pmat4_8f90.html#a52b430dec9d7fe8223ef11bcede76655", null ], + [ "zmobiusi", "pmat4_8f90.html#af2b5d4c9d2a4d8ba9b815a8a50415374", null ], + [ "znfun", "pmat4_8f90.html#a6755e3cf7c76ad09408672b40f3ea38d", null ], + [ "zntay", "pmat4_8f90.html#a4bb1210677198fe8815d210ebd41472e", null ], + [ "zsetmobius", "pmat4_8f90.html#ad783a79ba69276c0bd62daec786094b1", null ], + [ "ztoc", "pmat4_8f90.html#a58d3292ea5c5244b5498c32ae38a3b00", null ], + [ "ztocd", "pmat4_8f90.html#acf0debe9fb3d6bdd10a2bf2bbabfe3ce", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pmat4_8f90_source.html b/ver-1.11.0/grid_tools/pmat4_8f90_source.html new file mode 100644 index 000000000..92673dff8 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat4_8f90_source.html @@ -0,0 +1,219 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat4.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pmat4.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    45 module pmat4
    46 !============================================================================
    47 use pkind, only: spi,sp,dp,dpc
    48 implicit none
    49 private
    50 public:: absv,normalized,orthogonalized, &
    54  axtoq,qtoax, &
    56  expmat,zntay,znfun, &
    59 
    60 interface absv; module procedure absv_s,absv_d; end interface
    61 interface normalized;module procedure normalized_s,normalized_d;end interface
    62 interface orthogonalized
    63  module procedure orthogonalized_s,orthogonalized_d; end interface
    64 interface cross_product
    65  module procedure cross_product_s,cross_product_d, &
    67 interface outer_product
    69  end interface
    70 interface triple_product
    71  module procedure triple_product_s,triple_product_d; end interface
    72 interface det; module procedure det_s,det_d,det_i,det_id; end interface
    73 interface axial
    74  module procedure axial3_s,axial3_d,axial33_s,axial33_d; end interface
    75 interface diag
    77  end interface
    78 interface trace; module procedure trace_s,trace_d,trace_i; end interface
    79 interface identity; module procedure identity_i,identity3_i; end interface
    80 interface huarea; module procedure huarea_s,huarea_d; end interface
    81 interface sarea
    83  end interface
    84 interface dlltoxy; module procedure dlltoxy_s,dlltoxy_d; end interface
    85 interface hav; module procedure hav_s, hav_d; end interface
    86 interface normalize;module procedure normalize_s,normalize_d; end interface
    87 interface gram
    89  end interface
    90 interface rowops; module procedure rowops; end interface
    91 interface corral; module procedure corral; end interface
    92 interface rottoax; module procedure rottoax; end interface
    93 interface axtorot; module procedure axtorot; end interface
    94 interface spintoq; module procedure spintoq; end interface
    95 interface qtospin; module procedure qtospin; end interface
    96 interface rottoq; module procedure rottoq; end interface
    97 interface qtorot; module procedure qtorot; end interface
    98 interface axtoq; module procedure axtoq; end interface
    99 interface qtoax; module procedure qtoax; end interface
    100 interface setem; module procedure setem; end interface
    101 interface mulqq; module procedure mulqq; end interface
    102 interface expmat; module procedure expmat,expmatd,expmatdd; end interface
    103 interface zntay; module procedure zntay; end interface
    104 interface znfun; module procedure znfun; end interface
    105 interface ctoz; module procedure ctoz; end interface
    106 interface ztoc; module procedure ztoc,ztocd; end interface
    107 interface setmobius;module procedure setmobius,zsetmobius; end interface
    108 interface mobius; module procedure zmobius,cmobius; end interface
    109 interface mobiusi; module procedure zmobiusi; end interface
    110 
    111 contains
    112 
    118 function absv_s(a)result(s)! [absv]
    119 implicit none
    120 real(sp),dimension(:),intent(in):: a
    121 real(sp) :: s
    122 s=sqrt(dot_product(a,a))
    123 end function absv_s
    124 
    130 function absv_d(a)result(s)! [absv]
    131 implicit none
    132 real(dp),dimension(:),intent(in):: a
    133 real(dp) :: s
    134 s=sqrt(dot_product(a,a))
    135 end function absv_d
    136 
    142 function normalized_s(a)result(b)! [normalized]
    143 use pietc_s, only: u0
    144 implicit none
    145 real(sp),dimension(:),intent(IN):: a
    146 real(sp),dimension(size(a)) :: b
    147 real(sp) :: s
    148 s=absv_s(a); if(s==u0)then; b=u0;else;b=a/s;endif
    149 end function normalized_s
    150 
    156 function normalized_d(a)result(b)! [normalized]
    157 use pietc, only: u0
    158 implicit none
    159 real(dp),dimension(:),intent(IN):: a
    160 real(dp),dimension(size(a)) :: b
    161 real(dp) :: s
    162 s=absv_d(a); if(s==u0)then; b=u0;else;b=a/s;endif
    163 end function normalized_d
    164 
    171 function orthogonalized_s(u,a)result(b)! [orthogonalized]
    172 implicit none
    173 real(sp),dimension(:),intent(in):: u,a
    174 real(sp),dimension(size(u)) :: b
    175 real(sp) :: s
    176 ! Note: this routine assumes u is already normalized
    177 s=dot_product(u,a); b=a-u*s
    178 end function orthogonalized_s
    179 
    186 function orthogonalized_d(u,a)result(b)! [orthogonalized]
    187 implicit none
    188 real(dp),dimension(:),intent(in):: u,a
    189 real(dp),dimension(size(u)) :: b
    190 real(dp) :: s
    191 ! Note: this routine assumes u is already normalized
    192 s=dot_product(u,a); b=a-u*s
    193 end function orthogonalized_d
    194 
    201 function cross_product_s(a,b)result(c)! [cross_product]
    202 implicit none
    203 real(sp),dimension(3),intent(in):: a,b
    204 real(sp),dimension(3) :: c
    205 c(1)=a(2)*b(3)-a(3)*b(2); c(2)=a(3)*b(1)-a(1)*b(3); c(3)=a(1)*b(2)-a(2)*b(1)
    206 end function cross_product_s
    207 
    214 function cross_product_d(a,b)result(c)! [cross_product]
    215 implicit none
    216 real(dp),dimension(3),intent(in):: a,b
    217 real(dp),dimension(3) :: c
    218 c(1)=a(2)*b(3)-a(3)*b(2); c(2)=a(3)*b(1)-a(1)*b(3); c(3)=a(1)*b(2)-a(2)*b(1)
    219 end function cross_product_d
    220 
    231 function triple_cross_product_s(u,v,w)result(x)! [cross_product]
    232 implicit none
    233 real(sp),dimension(4),intent(in ):: u,v,w
    234 real(sp),dimension(4) :: x
    235 real(sp):: uv12,uv13,uv14,uv23,uv24,uv34
    236 uv12=u(1)*v(2)-u(2)*v(1); uv13=u(1)*v(3)-u(3)*v(1); uv14=u(1)*v(4)-u(4)*v(1)
    237  uv23=u(2)*v(3)-u(3)*v(2); uv24=u(2)*v(4)-u(4)*v(2)
    238  uv34=u(3)*v(4)-u(4)*v(3)
    239 x(1)=-uv23*w(4)+uv24*w(3)-uv34*w(2)
    240 x(2)= uv13*w(4)-uv14*w(3) +uv34*w(1)
    241 x(3)=-uv12*w(4) +uv14*w(2)-uv24*w(1)
    242 x(4)= uv12*w(3)-uv13*w(2)+uv23*w(1)
    243 end function triple_cross_product_s
    244 
    252 function triple_cross_product_d(u,v,w)result(x)! [cross_product]
    253 implicit none
    254 real(dp),dimension(4),intent(in ):: u,v,w
    255 real(dp),dimension(4) :: x
    256 real(dp):: uv12,uv13,uv14,uv23,uv24,uv34
    257 uv12=u(1)*v(2)-u(2)*v(1); uv13=u(1)*v(3)-u(3)*v(1); uv14=u(1)*v(4)-u(4)*v(1)
    258  uv23=u(2)*v(3)-u(3)*v(2); uv24=u(2)*v(4)-u(4)*v(2)
    259  uv34=u(3)*v(4)-u(4)*v(3)
    260 x(1)=-uv23*w(4)+uv24*w(3)-uv34*w(2)
    261 x(2)= uv13*w(4)-uv14*w(3) +uv34*w(1)
    262 x(3)=-uv12*w(4) +uv14*w(2)-uv24*w(1)
    263 x(4)= uv12*w(3)-uv13*w(2)+uv23*w(1)
    264 end function triple_cross_product_d
    265 
    272 function outer_product_s(a,b)result(c)! [outer_product]
    273 implicit none
    274 real(sp),dimension(:), intent(in ):: a
    275 real(sp),dimension(:), intent(in ):: b
    276 real(sp),DIMENSION(size(a),size(b)):: c
    277 integer(spi) :: nb,i
    278 nb=size(b)
    279 do i=1,nb; c(:,i)=a*b(i); enddo
    280 end function outer_product_s
    281 
    288 function outer_product_d(a,b)result(c)! [outer_product]
    289 implicit none
    290 real(dp),dimension(:), intent(in ):: a
    291 real(dp),dimension(:), intent(in ):: b
    292 real(dp),dimension(size(a),size(b)):: c
    293 integer(spi) :: nb,i
    294 nb=size(b)
    295 do i=1,nb; c(:,i)=a*b(i); enddo
    296 end function outer_product_d
    297 
    304 function outer_product_i(a,b)result(c)! [outer_product]
    305 implicit none
    306 integer(spi),dimension(:), intent(in ):: a
    307 integer(spi),dimension(:), intent(in ):: b
    308 integer(spi),dimension(size(a),size(b)):: c
    309 integer(spi) :: nb,i
    310 nb=size(b)
    311 do i=1,nb; c(:,i)=a*b(i); enddo
    312 end function outer_product_i
    313 
    321 function triple_product_s(a,b,c)result(tripleproduct)! [triple_product]
    322 implicit none
    323 real(sp),dimension(3),intent(IN ):: a,b,c
    324 real(sp) :: tripleproduct
    325 tripleproduct=dot_product( cross_product(a,b),c )
    326 end function triple_product_s
    327 
    335 function triple_product_d(a,b,c)result(tripleproduct)! [triple_product]
    336 implicit none
    337 real(dp),dimension(3),intent(IN ):: a,b,c
    338 real(dp) :: tripleproduct
    339 tripleproduct=dot_product( cross_product(a,b),c )
    340 end function triple_product_d
    341 
    347 function det_s(a)result(det)! [det]
    348 use pietc_s, only: u0
    349 implicit none
    350 real(sp),dimension(:,:),intent(IN ) :: a
    351 real(sp) :: det
    352 real(sp),dimension(size(a,1),size(a,1)):: b
    353 integer(spi) :: n,nrank
    354 n=size(a,1)
    355 if(n==3)then
    356  det=triple_product(a(:,1),a(:,2),a(:,3))
    357 else
    358  call gram(a,b,nrank,det)
    359  if(nrank<n)det=u0
    360 endif
    361 end function det_s
    362 
    368 function det_d(a)result(det)! [det]
    369 use pietc, only: u0
    370 implicit none
    371 real(dp),dimension(:,:),intent(IN ) :: a
    372 real(dp) :: det
    373 real(dp),dimension(size(a,1),size(a,1)):: b
    374 integer(spi) :: n,nrank
    375 n=size(a,1)
    376 if(n==3)then
    377  det=triple_product(a(:,1),a(:,2),a(:,3))
    378 else
    379  call gram(a,b,nrank,det)
    380  if(nrank<n)det=u0
    381 endif
    382 end function det_d
    383 
    389 function det_i(a)result(idet)! [det]
    390 implicit none
    391 integer(spi), dimension(:,:),intent(IN ):: a
    392 integer(spi) :: idet
    393 real(dp),dimension(size(a,1),size(a,2)):: b
    394 real(dp) :: bdet
    395 b=a; bdet=det(b); idet=nint(bdet)
    396 end function det_i
    397 
    403 function det_id(a)result(idet)! [det]
    404 use pkind, only: dp,dpi
    405 implicit none
    406 integer(dpi), dimension(:,:),intent(IN ):: a
    407 integer(dpi) :: idet
    408 real(dp),dimension(size(a,1),size(a,2)) :: b
    409 real(dp) :: bdet
    410 b=a; bdet=det(b); idet=nint(bdet)
    411 end function det_id
    412 
    419 function axial3_s(a)result(b)! [axial]
    420 use pietc_s, only: u0
    421 implicit none
    422 real(sp),dimension(3),intent(IN ):: a
    423 real(sp),dimension(3,3) :: b
    424 b=u0;b(3,2)=a(1);b(1,3)=a(2);b(2,1)=a(3);b(2,3)=-a(1);b(3,1)=-a(2);b(1,2)=-a(3)
    425 end function axial3_s
    426 
    433 function axial3_d(a)result(b)! [axial]
    434 use pietc, only: u0
    435 implicit none
    436 real(dp),dimension(3),intent(IN ):: a
    437 real(dp),dimension(3,3) :: b
    438 b=u0;b(3,2)=a(1);b(1,3)=a(2);b(2,1)=a(3);b(2,3)=-a(1);b(3,1)=-a(2);b(1,2)=-a(3)
    439 end function axial3_d
    440 
    447 function axial33_s(b)result(a)! [axial]
    448 use pietc_s, only: o2
    449 implicit none
    450 real(sp),dimension(3,3),intent(IN ):: b
    451 real(sp),dimension(3) :: a
    452 a(1)=(b(3,2)-b(2,3))*o2; a(2)=(b(1,3)-b(3,1))*o2; a(3)=(b(2,1)-b(1,2))*o2
    453 end function axial33_s
    454 
    461 function axial33_d(b)result(a)! [axial]
    462 use pietc, only: o2
    463 implicit none
    464 real(dp),dimension(3,3),intent(IN ):: b
    465 real(dp),dimension(3) :: a
    466 a(1)=(b(3,2)-b(2,3))*o2; a(2)=(b(1,3)-b(3,1))*o2; a(3)=(b(2,1)-b(1,2))*o2
    467 end function axial33_d
    468 
    475 function diagn_s(a)result(b)! [diag]
    476 use pietc, only: u0
    477 implicit none
    478 real(sp),dimension(:),intent(IN ) :: a
    479 real(sp),dimension(size(a),size(a)):: b
    480 integer(spi) :: n,i
    481 n=size(a)
    482 b=u0; do i=1,n; b(i,i)=a(i); enddo
    483 end function diagn_s
    484 
    491 function diagn_d(a)result(b)! [diag]
    492 use pietc, only: u0
    493 implicit none
    494 real(dp),dimension(:),intent(IN ) :: a
    495 real(dp),dimension(size(a),size(a)):: b
    496 integer(spi) :: n,i
    497 n=size(a)
    498 b=u0; do i=1,n; b(i,i)=a(i); enddo
    499 end function diagn_d
    500 
    507 function diagn_i(a)result(b)! [diag]
    508 implicit none
    509 integer(spi),dimension(:),intent(IN ) :: a
    510 integer(spi),dimension(size(a),size(a)):: b
    511 integer(spi) :: n,i
    512 n=size(a)
    513 b=0; do i=1,n; b(i,i)=a(i); enddo
    514 end function diagn_i
    515 
    522 function diagnn_s(b)result(a)! [diag]
    523 implicit none
    524 real(sp),dimension(:,:),intent(IN ):: b
    525 real(sp),dimension(size(b,1)) :: a
    526 integer(spi) :: n,i
    527 n=size(b,1)
    528 do i=1,n; a(i)=b(i,i); enddo
    529 end function diagnn_s
    530 
    537 function diagnn_d(b)result(a)! [diag]
    538 implicit none
    539 real(dp),dimension(:,:),intent(IN ):: b
    540 real(dp),dimension(size(b,1)) :: a
    541 integer(spi) :: n,i
    542 n=size(b,1)
    543 do i=1,n; a(i)=b(i,i); enddo
    544 end function diagnn_d
    545 
    552 function diagnn_i(b)result(a)! [diag]
    553 implicit none
    554 integer(spi),dimension(:,:),intent(IN ):: b
    555 integer(spi),dimension(size(b,1)) :: a
    556 integer(spi) :: n,i
    557 n=size(b,1)
    558 do i=1,n; a(i)=b(i,i); enddo
    559 end function diagnn_i
    560 
    566 function trace_s(b)result(s)! [trace]
    567 implicit none
    568 real(sp),dimension(:,:),intent(IN ):: b
    569 real(sp) :: s
    570 s=sum(diag(b))
    571 end function trace_s
    572 
    578 function trace_d(b)result(s)! [trace]
    579 implicit none
    580 real(dp),dimension(:,:),intent(IN ):: b
    581 real(dp) :: s
    582 s=sum(diag(b))
    583 end function trace_d
    584 
    590 function trace_i(b)result(s)! [trace]
    591 implicit none
    592 integer(spi),dimension(:,:),intent(IN ):: b
    593 integer(spi) :: s
    594 s=sum(diag(b))
    595 end function trace_i
    596 
    602 function identity_i(n)result(a)! [identity]
    603 implicit none
    604 integer(spi),intent(IN ) :: n
    605 integer(spi),dimension(n,n):: a
    606 integer(spi) :: i
    607 a=0; do i=1,n; a(i,i)=1; enddo
    608 end function identity_i
    609 
    614 function identity3_i()result(a)! [identity]
    615 implicit none
    616 integer(spi),dimension(3,3):: a
    617 integer(spi) :: i
    618 a=0; do i=1,3; a(i,i)=1; enddo
    619 end function identity3_i
    620 
    629 function huarea_s(sa,sb)result(area)! [huarea]
    630 implicit none
    631 real(sp),intent(IN ):: sa,sb
    632 real(sp) :: area
    633 real(sp) :: ca,cb
    634 ca=sqrt(1-sa**2)
    635 cb=sqrt(1-sb**2)
    636 area=asin(sa*sb/(1+ca*cb))
    637 end function huarea_s
    638 
    647 function huarea_d(sa,sb)result(area)! [huarea]
    648 implicit none
    649 real(dp),intent(IN ):: sa,sb
    650 real(dp) :: area
    651 real(dp) :: ca,cb
    652 ca=sqrt(1-sa**2)
    653 cb=sqrt(1-sb**2)
    654 area=asin(sa*sb/(1+ca*cb))
    655 end function huarea_d
    656 
    667 function sarea_s(v1,v2,v3)result(area)! [sarea]
    668 use pietc_s, only: zero=>u0
    669 implicit none
    670 real(sp),dimension(3),intent(IN ):: v1,v2,v3
    671 real(sp) :: area
    672 real(sp) :: s123,a1,a2,b,d1,d2,d3
    673 real(sp),dimension(3) :: u0,u1,u2,u3,x,y
    674 area=zero
    675 u1=normalized(v1); u2=normalized(v2); u3=normalized(v3)
    676 s123=triple_product(u1,u2,u3)
    677 if(s123==zero)return
    678 
    679 d1=dot_product(u3-u2,u3-u2)
    680 d2=dot_product(u1-u3,u1-u3)
    681 d3=dot_product(u2-u1,u2-u1)
    682 
    683 ! Triangle that is not degenerate. Cyclically permute, so side 3 is longest:
    684 if(d3<d1 .or. d3<d2)call cyclic(u1,u2,u3,d1,d2,d3)
    685 if(d3<d1 .or. d3<d2)call cyclic(u1,u2,u3,d1,d2,d3)
    686 y=normalized( cross_product(u1,u2) )
    687 b=dot_product(y,u3)
    688 u0=normalized( u3-y*b )
    689 x=cross_product(y,u0)
    690 a1=-dot_product(x,u1-u0); a2= dot_product(x,u2-u0)
    691 area=huarea(a1,b)+huarea(a2,b)
    692 
    693 contains
    694 
    704 subroutine cyclic(u1,u2,u3,d1,d2,d3)
    705 implicit none
    706  real(sp),dimension(3),intent(INOUT):: u1,u2,u3
    707  real(sp), intent(INOUT):: d1,d2,d3
    708  real(sp),dimension(3) :: ut
    709  real(sp) :: dt
    710  dt=d1; d1=d2; d2=d3; d3=dt
    711  ut=u1; u1=u2; u2=u3; u3=ut
    712  end subroutine cyclic
    713 end function sarea_s
    714 
    722 function sarea_d(v1,v2,v3)result(area)! [sarea]
    723 use pietc, only: zero=>u0
    724 implicit none
    725 real(dp),dimension(3),intent(IN ):: v1,v2,v3
    726 real(dp) :: area
    727 real(dp) :: s123,a1,a2,b,d1,d2,d3
    728 real(dp),dimension(3) :: u0,u1,u2,u3,x,y
    729 area=zero
    730 u1=normalized(v1); u2=normalized(v2); u3=normalized(v3)
    731 s123=triple_product(u1,u2,u3)
    732 if(s123==zero)return
    733 
    734 d1=dot_product(u3-u2,u3-u2)
    735 d2=dot_product(u1-u3,u1-u3)
    736 d3=dot_product(u2-u1,u2-u1)
    737 
    738 ! Triangle that is not degenerate. Cyclically permute, so side 3 is longest:
    739 if(d3<d1 .or. d3<d2)call cyclic(u1,u2,u3,d1,d2,d3)
    740 if(d3<d1 .or. d3<d2)call cyclic(u1,u2,u3,d1,d2,d3)
    741 y=normalized( cross_product(u1,u2) )
    742 b=dot_product(y,u3)
    743 u0=normalized( u3-y*b )
    744 x=cross_product(y,u0)
    745 a1=-dot_product(x,u1-u0); a2= dot_product(x,u2-u0)
    746 area=huarea(a1,b)+huarea(a2,b)
    747 
    748 contains
    749 
    759 subroutine cyclic(u1,u2,u3,d1,d2,d3)
    760 implicit none
    761  real(dp),dimension(3),intent(INOUT):: u1,u2,u3
    762  real(dp), intent(INOUT):: d1,d2,d3
    763  real(dp),dimension(3) :: ut
    764  real(dp) :: dt
    765  dt=d1; d1=d2; d2=d3; d3=dt
    766  ut=u1; u1=u2; u2=u3; u3=ut
    767  end subroutine cyclic
    768 end function sarea_d
    769 
    785 function dtarea_s(rlat,drlata,drlona,drlatb,drlonb) result(area)! [sarea]
    786 use pietc_s, only: u0,u1
    787 implicit none
    788 real(sp),intent(in ):: rlat,drlata,drlona,drlatb,drlonb
    789 real(sp) :: area
    790 real(sp),dimension(2):: x2a,x2b,xb,yb
    791 real(sp) :: sb,ssb,cb,xa,sa,ca,sc,cc
    792 call dlltoxy(rlat,drlata,drlona,x2a)
    793 call dlltoxy(rlat,drlatb,drlonb,x2b)
    794 ssb=dot_product(x2b,x2b); sb=sqrt(ssb)
    795 if(sb==u0)then; area=u0; return; endif
    796 cb=sqrt(u1-ssb)
    797 ! Construct 2D normalized right-handed basis vectors with xb pointing to B:
    798 xb=x2b/sb
    799 yb=(/-xb(2),xb(1)/)
    800 xa=dot_product(xb,x2a)
    801 sa=dot_product(yb,x2a)
    802 ca=sqrt(u1-sa**2)
    803 sc=xa/ca
    804 cc=sqrt(u1-sc**2)
    805 sb=sb*cc-cb*sc
    806 area=huarea(-sa,sb)+huarea(sc,-sa)
    807 end function dtarea_s
    808 
    824 function dtarea_d(rlat,drlata,drlona,drlatb,drlonb) result(area)! [sarea]
    825 use pietc, only: u0,u1
    826 implicit none
    827 real(dp),intent(in ):: rlat,drlata,drlona,drlatb,drlonb
    828 real(dp) :: area
    829 real(dp),dimension(2):: x2a,x2b,xb,yb
    830 real(dp) :: sb,ssb,cb,xa,sa,ca,sc,cc
    831 call dlltoxy(rlat,drlata,drlona,x2a)
    832 call dlltoxy(rlat,drlatb,drlonb,x2b)
    833 ssb=dot_product(x2b,x2b); sb=sqrt(ssb)
    834 if(sb==u0)then; area=u0; return; endif
    835 cb=sqrt(u1-ssb)
    836 ! Construct 2D normalized right-handed basis vectors with xb pointing to B:
    837 xb=x2b/sb
    838 yb=(/-xb(2),xb(1)/)
    839 xa=dot_product(xb,x2a)
    840 sa=dot_product(yb,x2a)
    841 ca=sqrt(u1-sa**2)
    842 sc=xa/ca
    843 cc=sqrt(u1-sc**2)
    844 sb=sb*cc-cb*sc
    845 area=huarea(-sa,sb)+huarea(sc,-sa)
    846 end function dtarea_d
    847 
    867 function dqarea_s &! [sarea]
    868  (rlat,drlata,drlona,drlatb,drlonb,drlatc,drlonc) result(area)
    869 implicit none
    870 real(sp),intent(in ):: rlat,drlata,drlona,drlatb,drlonb,drlatc,drlonc
    871 real(sp) :: area
    872 area=sarea(rlat,drlata,drlona,drlatb,drlonb)&
    873  -sarea(rlat,drlatc,drlonc,drlatb,drlonb)
    874 end function dqarea_s
    875 
    876 
    896 function dqarea_d &! [sarea]
    897  (rlat,drlata,drlona,drlatb,drlonb,drlatc,drlonc) result(area)
    898 implicit none
    899 real(dp),intent(in ):: rlat,drlata,drlona,drlatb,drlonb,drlatc,drlonc
    900 real(dp) :: area
    901 area=sarea(rlat,drlata,drlona,drlatb,drlonb)&
    902  -sarea(rlat,drlatc,drlonc,drlatb,drlonb)
    903 end function dqarea_d
    904 
    915 subroutine dlltoxy_s(rlat,drlat,drlon,x2)! [dlltoxy]
    916 use pietc_s, only: u2
    917 implicit none
    918 real(sp), intent(in ):: rlat,drlat,drlon
    919 real(sp),dimension(2),intent(out):: x2
    920 real(sp):: clata
    921 clata=cos(rlat+drlat)
    922 x2=(/clata*sin(drlon),sin(drlat)+u2*sin(rlat)*clata*hav(drlon)/)
    923 end subroutine dlltoxy_s
    924 
    935 subroutine dlltoxy_d(rlat,drlat,drlon,x2)! [dlltoxy]
    936 use pietc, only: u2
    937 implicit none
    938 real(dp), intent(in ):: rlat,drlat,drlon
    939 real(dp),dimension(2),intent(out):: x2
    940 real(dp):: clata
    941 clata=cos(rlat+drlat)
    942 x2=(/clata*sin(drlon),sin(drlat)+u2*sin(rlat)*clata*hav(drlon)/)
    943 end subroutine dlltoxy_d
    944 
    950 function hav_s(t) result(a)! [hav]
    951 use pietc_s, only: o2
    952 implicit none
    953 real(sp),intent(in ):: t
    954 real(sp) :: a
    955 a=(sin(t*o2))**2
    956 end function hav_s
    957 
    963 function hav_d(t) result(a)! [hav]
    964 use pietc, only: o2
    965 implicit none
    966 real(dp),intent(in ):: t
    967 real(dp) :: a
    968 a=(sin(t*o2))**2
    969 end function hav_d
    970 
    975 subroutine normalize_s(v)! [normalize]
    976 use pietc_s, only: u0,u1
    977 implicit none
    978 real(sp),dimension(:),intent(inout):: v
    979 real(sp) :: s
    980 s=absv(v); if(s==0)then; v=u0; v(1)=u1; else; v=v/s; endif
    981 end subroutine normalize_s
    982 
    987 subroutine normalize_d(v)! [normalize]
    988 use pietc, only: u0,u1
    989 implicit none
    990 real(dp),dimension(:),intent(inout):: v
    991 real(dp) :: s
    992 s=absv(v); if(s==u0)then; v=0; v(1)=u1; else; v=v/s; endif
    993 end subroutine normalize_d
    994 
    1006 subroutine gram_s(as,b,nrank,det)! [gram]
    1007 use pietc_s, only: u0,u1
    1008 implicit none
    1009 real(sp),dimension(:,:),intent(IN ) :: as
    1010 real(sp),dimension(:,:),intent(OUT) :: b
    1011 integer(spi), intent(OUT) :: nrank
    1012 real(sp), intent(OUT) :: det
    1013 real(sp),parameter :: crit=1.e-5_sp
    1014 real(sp),dimension(size(as,1),size(as,2)):: a
    1015 real(sp),dimension(size(as,2),size(as,1)):: ab
    1016 real(sp),dimension(size(as,1)) :: tv,w
    1017 real(sp) :: val,s,vcrit
    1018 integer(spi) :: i,j,k,l,m,n
    1019 integer(spi),dimension(2) :: ii
    1020 n=size(as,1)
    1021 m=size(as,2)
    1022 if(n/=size(b,1) .or. n/=size(b,2))stop 'In gram; incompatible dimensions'
    1023 a=as
    1024 b=identity(n)
    1025 det=u1
    1026 val=maxval(abs(a))
    1027 if(val==u0)then
    1028  nrank=0
    1029  return
    1030 endif
    1031 vcrit=val*crit
    1032 nrank=min(n,m)
    1033 do k=1,n
    1034  if(k>nrank)exit
    1035  ab(k:m,k:n)=matmul( transpose(a(:,k:m)),b(:,k:n) )
    1036  ii =maxloc( abs( ab(k:m,k:n)) )+k-1
    1037  val=maxval( abs( ab(k:m,k:n)) )
    1038  if(val<=vcrit)then
    1039  nrank=k-1
    1040  exit
    1041  endif
    1042  i=ii(1)
    1043  j=ii(2)
    1044  tv=b(:,j)
    1045  b(:,j)=-b(:,k)
    1046  b(:,k)=tv
    1047  tv=a(:,i)
    1048  a(:,i)=-a(:,k)
    1049  a(:,k)=tv
    1050  w(k:n)=matmul( transpose(b(:,k:n)),tv )
    1051  b(:,k)=matmul(b(:,k:n),w(k:n) )
    1052  s=dot_product(b(:,k),b(:,k))
    1053  s=sqrt(s)
    1054  if(w(k)<u0)s=-s
    1055  det=det*s
    1056  b(:,k)=b(:,k)/s
    1057  do l=k,n
    1058  do j=l+1,n
    1059  s=dot_product(b(:,l),b(:,j))
    1060  b(:,j)=normalized( b(:,j)-b(:,l)*s )
    1061  enddo
    1062  enddo
    1063 enddo
    1064 end subroutine gram_s
    1065 
    1077 subroutine gram_d(as,b,nrank,det)! [gram]
    1078 use pietc, only: u0,u1
    1079 implicit none
    1080 real(dp),dimension(:,:),intent(IN ) :: as
    1081 real(dp),dimension(:,:),intent(OUT) :: b
    1082 integer(spi), intent(OUT) :: nrank
    1083 real(dp), intent(OUT) :: det
    1084 real(dp),parameter :: crit=1.e-9_dp
    1085 real(dp),dimension(size(as,1),size(as,2)):: a
    1086 real(dp),dimension(size(as,2),size(as,1)):: ab
    1087 real(dp),dimension(size(as,1)) :: tv,w
    1088 real(dp) :: val,s,vcrit
    1089 integer(spi) :: i,j,k,l,m,n
    1090 integer(spi),dimension(2) :: ii
    1091 n=size(as,1)
    1092 m=size(as,2)
    1093 if(n/=size(b,1) .or. n/=size(b,2))stop 'In gram; incompatible dimensions'
    1094 a=as
    1095 b=identity(n)
    1096 det=u1
    1097 val=maxval(abs(a))
    1098 if(val==u0)then
    1099  nrank=0
    1100  return
    1101 endif
    1102 vcrit=val*crit
    1103 nrank=min(n,m)
    1104 do k=1,n
    1105  if(k>nrank)exit
    1106  ab(k:m,k:n)=matmul( transpose(a(:,k:m)),b(:,k:n) )
    1107  ii =maxloc( abs( ab(k:m,k:n)) )+k-1
    1108  val=maxval( abs( ab(k:m,k:n)) )
    1109  if(val<=vcrit)then
    1110  nrank=k-1
    1111  exit
    1112  endif
    1113  i=ii(1)
    1114  j=ii(2)
    1115  tv=b(:,j)
    1116  b(:,j)=-b(:,k)
    1117  b(:,k)=tv
    1118  tv=a(:,i)
    1119  a(:,i)=-a(:,k)
    1120  a(:,k)=tv
    1121  w(k:n)=matmul( transpose(b(:,k:n)),tv )
    1122  b(:,k)=matmul(b(:,k:n),w(k:n) )
    1123  s=dot_product(b(:,k),b(:,k))
    1124  s=sqrt(s)
    1125  if(w(k)<u0)s=-s
    1126  det=det*s
    1127  b(:,k)=b(:,k)/s
    1128  do l=k,n
    1129  do j=l+1,n
    1130  s=dot_product(b(:,l),b(:,j))
    1131  b(:,j)=normalized( b(:,j)-b(:,l)*s )
    1132  enddo
    1133  enddo
    1134 enddo
    1135 end subroutine gram_d
    1136 
    1149 subroutine graml_d(as,b,nrank,detsign,ldet)! [gram]
    1150 use pietc, only: u0
    1151 implicit none
    1152 real(dp),dimension(:,:),intent(IN ) :: as
    1153 real(dp),dimension(:,:),intent(OUT) :: b
    1154 integer(spi), intent(OUT) :: nrank
    1155 integer(spi), intent(out) :: detsign
    1156 real(dp), intent(OUT) :: ldet
    1157 real(dp),parameter :: crit=1.e-9_dp
    1158 real(dp),dimension(size(as,1),size(as,2)):: a
    1159 real(dp),dimension(size(as,2),size(as,1)):: ab
    1160 real(dp),dimension(size(as,1)) :: tv,w
    1161 real(dp) :: val,s,vcrit
    1162 integer(spi) :: i,j,k,l,m,n
    1163 integer(spi),dimension(2) :: ii
    1164 detsign=1
    1165 n=size(as,1)
    1166 m=size(as,2)
    1167 if(n/=size(b,1) .or. n/=size(b,2))stop 'In gram; incompatible dimensions'
    1168 a=as
    1169 b=identity(n)
    1170 ldet=u0
    1171 val=maxval(abs(a))
    1172 if(val==u0)then
    1173  nrank=0
    1174  return
    1175 endif
    1176 vcrit=val*crit
    1177 nrank=min(n,m)
    1178 do k=1,n
    1179  if(k>nrank)exit
    1180  ab(k:m,k:n)=matmul( transpose(a(:,k:m)),b(:,k:n) )
    1181  ii =maxloc( abs( ab(k:m,k:n)) )+k-1
    1182  val=maxval( abs( ab(k:m,k:n)) )
    1183  if(val<=vcrit)then
    1184  nrank=k-1
    1185  exit
    1186  endif
    1187  i=ii(1)
    1188  j=ii(2)
    1189  tv=b(:,j)
    1190  b(:,j)=-b(:,k)
    1191  b(:,k)=tv
    1192  tv=a(:,i)
    1193  a(:,i)=-a(:,k)
    1194  a(:,k)=tv
    1195  w(k:n)=matmul( transpose(b(:,k:n)),tv )
    1196  b(:,k)=matmul(b(:,k:n),w(k:n) )
    1197  s=dot_product(b(:,k),b(:,k))
    1198  s=sqrt(s)
    1199  if(w(k)<u0)s=-s
    1200  if(s<0)then
    1201  ldet=ldet+log(-s)
    1202  detsign=-detsign
    1203  elseif(s>u0)then
    1204  ldet=ldet+log(s)
    1205  else
    1206  detsign=0
    1207  endif
    1208 
    1209  b(:,k)=b(:,k)/s
    1210  do l=k,n
    1211  do j=l+1,n
    1212  s=dot_product(b(:,l),b(:,j))
    1213  b(:,j)=normalized( b(:,j)-b(:,l)*s )
    1214  enddo
    1215  enddo
    1216 enddo
    1217 end subroutine graml_d
    1218 
    1219 
    1226 subroutine plaingram_s(b,nrank)! [gram]
    1227 use pietc_s, only: u0
    1228 implicit none
    1229 real(sp),dimension(:,:),intent(INOUT) :: b
    1230 integer(spi), intent( OUT) :: nrank
    1231 real(sp),parameter :: crit=1.e-5_sp
    1232 real(sp) :: val,vcrit
    1233 integer(spi) :: j,k,n
    1234 n=size(b,1); if(n/=size(b,2))stop 'In gram; matrix needs to be square'
    1235 val=maxval(abs(b))
    1236 nrank=0
    1237 if(val==0)then
    1238  b=u0
    1239  return
    1240 endif
    1241 vcrit=val*crit
    1242 do k=1,n
    1243  val=sqrt(dot_product(b(:,k),b(:,k)))
    1244  if(val<=vcrit)then
    1245  b(:,k:n)=u0
    1246  return
    1247  endif
    1248  b(:,k)=b(:,k)/val
    1249  nrank=k
    1250  do j=k+1,n
    1251  b(:,j)=b(:,j)-b(:,k)*dot_product(b(:,k),b(:,j))
    1252  enddo
    1253 enddo
    1254 end subroutine plaingram_s
    1255 
    1262 subroutine plaingram_d(b,nrank)! [gram]
    1263 use pietc, only: u0
    1264 implicit none
    1265 real(dp),dimension(:,:),intent(INOUT):: b
    1266 integer(spi), intent( OUT):: nrank
    1267 real(dp),parameter:: crit=1.e-9_dp
    1268 real(dp) :: val,vcrit
    1269 integer(spi) :: j,k,n
    1270 n=size(b,1); if(n/=size(b,2))stop 'In gram; matrix needs to be square'
    1271 val=maxval(abs(b))
    1272 nrank=0
    1273 if(val==u0)then
    1274  b=u0
    1275  return
    1276 endif
    1277 vcrit=val*crit
    1278 do k=1,n
    1279  val=sqrt(dot_product(b(:,k),b(:,k)))
    1280  if(val<=vcrit)then
    1281  b(:,k:n)=u0
    1282  return
    1283  endif
    1284  b(:,k)=b(:,k)/val
    1285  nrank=k
    1286  do j=k+1,n
    1287  b(:,j)=b(:,j)-b(:,k)*dot_product(b(:,k),b(:,j))
    1288  enddo
    1289 enddo
    1290 end subroutine plaingram_d
    1291 
    1314 subroutine rowgram(m,n,a,ipiv,tt,b,rank)! [gram]
    1315 use pietc, only: u0,u1
    1316 implicit none
    1317 integer(spi), intent(IN ):: m,n
    1318 real(dp),dimension(m,n), intent(in ):: a
    1319 integer(spi),dimension(n),intent(out):: ipiv
    1320 real(dp),dimension(m,n), intent(out):: tt
    1321 real(dp),dimension(n,n), intent(out):: b
    1322 integer(spi), intent(out):: rank
    1323 real(dp),parameter :: eps=1.e-13_dp,epss=eps**2
    1324 real(dp),dimension(m,n) :: aa
    1325 real(dp),dimension(n) :: rowv
    1326 real(dp),dimension(m) :: p
    1327 real(dp) :: maxp,nepss
    1328 integer(spi),dimension(1):: jloc
    1329 integer(spi) :: i,ii,iii,j,maxi
    1330 if(m<n)stop 'In rowgram; this routines needs m>=n please'
    1331 nepss=n*epss
    1332 rank=n
    1333 aa=a
    1334 tt=u0
    1335 do ii=1,n
    1336 ! At this stage, all rows less than ii are already orthonormalized and are
    1337 ! orthogonal to all rows at and beyond ii. Find the norms of these lower
    1338 ! rows and pivot the largest of them into position ii:
    1339  maxp=u0
    1340  maxi=ii
    1341  do i=ii,m
    1342  p(i)=dot_product(aa(i,:),aa(i,:))
    1343  if(p(i)>maxp)then
    1344  maxp=p(i)
    1345  maxi=i
    1346  endif
    1347  enddo
    1348  if(maxp<nepss)then
    1349  b=u0
    1350  b(1:ii-1,:)=aa(1:ii-1,:)
    1351 ! fill the remaining rows, ii:n, of b with remaining orthonormal rows at random
    1352  do iii=ii,n
    1353 ! find the column of b for which the maximum element is the smallest:
    1354  do j=1,n
    1355  rowv(j)=maxval(abs(b(1:iii-1,j)))
    1356  enddo
    1357  jloc=minloc(rowv)
    1358  j=jloc(1)
    1359  b(iii,j)=u1
    1360  do i=1,iii-1
    1361  maxp=dot_product(b(i,:),b(iii,:))
    1362  b(iii,:)=b(iii,:)-b(i,:)*maxp
    1363  enddo
    1364  maxp=sqrt(dot_product(b(iii,:),b(iii,:)))
    1365  b(iii,:)=b(iii,:)/maxp
    1366  enddo
    1367  rank=ii-1
    1368  return
    1369  endif
    1370  ipiv(ii)=maxi
    1371  if(maxi/=ii)then
    1372  rowv =aa(ii, :)
    1373  aa(ii, :)=aa(maxi,:)
    1374  aa(maxi,:)=rowv
    1375  endif
    1376  maxp=sqrt(maxp)
    1377  tt(ii,ii)=maxp
    1378  aa(ii,:)=aa(ii,:)/maxp
    1379 ! Adjust all rows below to make them orthogonal to new row ii
    1380  do i=ii+1,m
    1381  maxp=dot_product(aa(ii,:),aa(i,:))
    1382  tt(i,ii)=maxp
    1383  aa(i,:)=aa(i,:)-aa(ii,:)*maxp
    1384  enddo
    1385 enddo
    1386 b=aa(1:n,:)
    1387 end subroutine rowgram
    1388 
    1399 subroutine rowops(m,n,ipiv,tt,v,vv)! [rowops]
    1400 implicit none
    1401 integer(spi), intent(in ):: m,n
    1402 integer(spi),dimension(n),intent(in ):: ipiv
    1403 real(dp),dimension(m,n), intent(in ):: tt
    1404 real(dp),dimension(m), intent(in ):: v
    1405 real(dp),dimension(m), intent(out):: vv
    1406 integer(spi):: i,j,k
    1407 real(dp) :: p
    1408 vv=v
    1409 do j=1,n
    1410  k=ipiv(j)
    1411  if(k/=j)then
    1412  p=vv(j)
    1413  vv(j)=vv(k)
    1414  vv(k)=p
    1415  endif
    1416  vv(j)=vv(j)/tt(j,j)
    1417  do i=j+1,m
    1418  vv(i)=vv(i)-vv(j)*tt(i,j)
    1419  enddo
    1420 enddo
    1421 end subroutine rowops
    1422 
    1440 subroutine corral(m,n,mask,a,d,aa,e)! [corral]
    1441 use pietc, only: u0,u1
    1442 use pmat, only: inv
    1443 implicit none
    1444 integer(spi), intent(in ):: m,n
    1445 logical, dimension(m,n),intent(in ):: mask
    1446 real(dp),dimension(m,n),intent(in ):: a
    1447 real(dp),dimension(m ),intent(out):: d
    1448 real(dp),dimension(m,n),intent(out):: aa
    1449 real(dp),dimension( n),intent(out):: e
    1450 real(dp),dimension(0:m+n,0:m+n):: g
    1451 real(dp),dimension(0:m+n) :: h
    1452 integer(spi) :: i,j,k,nh
    1453 nh=1+m+n
    1454 aa=u0
    1455 do j=1,n
    1456 do i=1,m
    1457  if(mask(i,j))aa(i,j)=log(abs(a(i,j)))
    1458 enddo
    1459 enddo
    1460 h=u0
    1461 g=u0
    1462 ! Equations on row 0 enforcing Lagrange multiplier F-constraint:
    1463 do j=1,n
    1464  k=m+j
    1465  g(0,k)=u1
    1466 enddo
    1467 ! Equations on rows 1:m minimizing row sums of quadratic terms:
    1468 do i=1,m
    1469  do j=1,n
    1470  k=m+j
    1471  if(mask(i,j))then
    1472  g(i,i)=g(i,i)-u1
    1473  g(i,k)=-u1
    1474  h(i)=h(i)-aa(i,j)
    1475  endif
    1476  enddo
    1477 enddo
    1478 ! Equations on rows m+1:m+n minimizing col sums subject to constraint
    1479 do j=1,n
    1480  k=m+j
    1481  g(k,0)=u1
    1482  do i=1,m
    1483  if(mask(i,j))then
    1484  g(k,k)=g(k,k)-u1
    1485  g(k,i)=-u1
    1486  h(k)=h(k)-aa(i,j)
    1487  endif
    1488  enddo
    1489 enddo
    1490 ! Invert the normal equations:
    1491 call inv(g,h)
    1492 ! Exponentiate the parts that become final scaling diagnonal matrices d and e:
    1493 do i=1,m
    1494  d(i)=exp(h(i))
    1495 enddo
    1496 do j=1,n
    1497  k=m+j
    1498  e(j)=exp(h(k))
    1499 enddo
    1500 ! Compute the rescaled matrix directly:
    1501 do j=1,n
    1502 do i=1,m
    1503  aa(i,j)=a(i,j)/(d(i)*e(j))
    1504 enddo
    1505 enddo
    1506 end subroutine corral
    1507 
    1517 subroutine rottoax(orth33,ax3)! [rottoax]
    1518 implicit none
    1519 real(dp),dimension(3,3),intent(in ):: orth33
    1520 real(dp),dimension(3), intent(out):: ax3
    1521 real(dp),dimension(3,3) :: plane
    1522 real(dp),dimension(3) :: x,y,z
    1523 real(dp) :: s
    1524 integer(spi),dimension(1):: ii
    1525 integer(spi) :: i,j,k
    1526 plane=orth33-identity()! Columns must be coplanar vectors
    1527 do i=1,3; z(i)=dot_product(plane(:,i),plane(:,i)); enddo
    1528 ii=minloc(z)
    1529 k=ii(1); i=1+mod(k,3); j=1+mod(i,3)
    1530 ax3=cross_product(plane(:,i),plane(:,j))
    1531 s=absv(ax3); if(s==0)return
    1532 ax3=ax3/s ! <- temporarily a unit vector pointing along rotation axis
    1533 ! Construct a unit 2D basis, x,y, in the plane of rotation
    1534 x=normalized(cross_product(ax3,plane(:,j)))
    1535 y=cross_product(ax3,x)
    1536 z=matmul(orth33,x)! Rotate x by the original rotation matrix
    1537 ax3=ax3*atan2(dot_product(y,z),dot_product(x,z))! multiply ax3 by the angle
    1538 end subroutine rottoax
    1539 
    1547 subroutine axtorot(ax3,orth33)! [axtorot]
    1548 implicit none
    1549 real(dp),dimension(3), intent(in ):: ax3
    1550 real(dp),dimension(3,3),intent(out):: orth33
    1551 real(dp),dimension(3,3):: ax33
    1552 real(dp) :: d
    1553 ax33=axial(ax3); call expmat(3,ax33,orth33,d)
    1554 end subroutine axtorot
    1555 
    1561 subroutine spintoq(cspin,q)! [spintoq]
    1562 implicit none
    1563 complex(dpc),dimension(2,2),intent(IN ):: cspin
    1564 real(dp), dimension(0:3),intent(OUT):: q
    1565 q(0)=real(cspin(1,1)); q(3)=aimag(cspin(1,1))
    1566 q(2)=real(cspin(2,1)); q(1)=aimag(cspin(2,1))
    1567 end subroutine spintoq
    1568 
    1574 subroutine qtospin(q,cspin)! [qtospin]
    1575 implicit none
    1576 real(dp), dimension(0:3),intent(IN ):: q
    1577 complex(dpc),dimension(2,2),intent(OUT):: cspin
    1578 cspin(1,1)=cmplx( q(0), q(3))
    1579 cspin(2,1)=cmplx( q(2), q(1))
    1580 cspin(1,2)=cmplx(-q(2), q(1))
    1581 cspin(2,2)=cmplx( q(0),-q(3))
    1582 end subroutine qtospin
    1583 
    1589 subroutine rottoq(rot,q)! [rottoq]
    1590 use pietc, only: zero=>u0,one=>u1,two=>u2
    1591 implicit none
    1592 real(dp),dimension(3,3),intent(IN ):: rot
    1593 real(dp),dimension(0:3),intent(OUT):: q
    1594 real(dp),dimension(3,3) :: t1,t2
    1595 real(dp),dimension(3) :: u1,u2
    1596 real(dp) :: gamma,gammah,s,ss
    1597 integer(spi) :: i,j
    1598 integer(spi),dimension(1):: ii
    1599 ! construct the orthogonal matrix, t1, whose third row is the rotation axis
    1600 ! of rot:
    1601 t1=rot; do i=1,3; t1(i,i)=t1(i,i)-1; u1(i)=dot_product(t1(i,:),t1(i,:)); enddo
    1602 ii=maxloc(u1); j=ii(1); ss=u1(j)
    1603 if(ss<1.e-16_dp)then
    1604  q=zero; q(0)=one; return
    1605 endif
    1606 t1(j,:)=t1(j,:)/sqrt(ss)
    1607 if(j/=1)then
    1608  u2 =t1(1,:)
    1609  t1(1,:)=t1(j,:)
    1610  t1(j,:)=u2
    1611 endif
    1612 do i=2,3
    1613  t1(i,:)=t1(i,:)-dot_product(t1(1,:),t1(i,:))*t1(1,:)
    1614  u1(i)=dot_product(t1(i,:),t1(i,:))
    1615 enddo
    1616 if(u1(3)>u1(2))then
    1617  j=3
    1618 else
    1619  j=2
    1620 endif
    1621 ss=u1(j)
    1622 if(ss==zero)stop 'In rotov; invalid rot'
    1623 if(j/=2)t1(2,:)=t1(3,:)
    1624 t1(2,:)=t1(2,:)/sqrt(ss)
    1625 ! Form t1(3,:) as the cross product of t1(1,:) and t1(2,:)
    1626 t1(3,1)=t1(1,2)*t1(2,3)-t1(1,3)*t1(2,2)
    1627 t1(3,2)=t1(1,3)*t1(2,1)-t1(1,1)*t1(2,3)
    1628 t1(3,3)=t1(1,1)*t1(2,2)-t1(1,2)*t1(2,1)
    1629 ! Project rot into the frame whose axes are the rows of t1:
    1630 t2=matmul(t1,matmul(rot,transpose(t1)))
    1631 ! Obtain the rotation angle, gamma, implied by rot, and gammah=gamma/2:
    1632 gamma=atan2(t2(2,1),t2(1,1)); gammah=gamma/two
    1633 ! Hence deduce coefficients (in the form of a real 4-vector) of one of the two
    1634 ! possible equivalent spinors:
    1635 s=sin(gammah)
    1636 q(0)=cos(gammah)
    1637 q(1:3)=t1(3,:)*s
    1638 end subroutine rottoq
    1639 
    1645 subroutine qtorot(q,rot)! [qtorot]
    1646 implicit none
    1647 real(dp),dimension(0:3),intent(IN ):: q
    1648 real(dp),dimension(3,3),intent(OUT):: rot
    1649 call setem(q(0),q(1),q(2),q(3),rot)
    1650 end subroutine qtorot
    1651 
    1657 subroutine axtoq(v,q)! [axtoq]
    1658 implicit none
    1659 real(dp),dimension(3), intent(in ):: v
    1660 real(dp),dimension(0:3),intent(out):: q
    1661 real(dp),dimension(3,3):: rot
    1662 call axtorot(v,rot)
    1663 call rottoq(rot,q)
    1664 end subroutine axtoq
    1665 
    1671 subroutine qtoax(q,v)! [qtoax]
    1672 implicit none
    1673 real(dp),dimension(0:3),intent(in ):: q
    1674 real(dp),dimension(3), intent(out):: v
    1675 real(dp),dimension(3,3):: rot
    1676 call qtorot(q,rot)
    1677 call rottoax(rot,v)
    1678 end subroutine qtoax
    1679 
    1689 subroutine setem(c,d,e,g,r)! [setem]
    1690 implicit none
    1691 real(dp), intent(IN ):: c,d,e,g
    1692 real(dp),dimension(3,3),intent(OUT):: r
    1693 real(dp):: cc,dd,ee,gg,de,dg,eg,dc,ec,gc
    1694 cc=c*c; dd=d*d; ee=e*e; gg=g*g
    1695 de=d*e; dg=d*g; eg=e*g
    1696 dc=d*c; ec=e*c; gc=g*c
    1697 r(1,1)=cc+dd-ee-gg; r(2,2)=cc-dd+ee-gg; r(3,3)=cc-dd-ee+gg
    1698 r(2,3)=2*(eg-dc); r(3,1)=2*(dg-ec); r(1,2)=2*(de-gc)
    1699 r(3,2)=2*(eg+dc); r(1,3)=2*(dg+ec); r(2,1)=2*(de+gc)
    1700 end subroutine setem
    1701 
    1708 function mulqq(a,b)result(c)! [mulqq]
    1709 implicit none
    1710 real(dp),dimension(0:3),intent(IN ):: a,b
    1711 real(dp),dimension(0:3) :: c
    1712 c(0)=a(0)*b(0) -a(1)*b(1) -a(2)*b(2) -a(3)*b(3)
    1713 c(1)=a(0)*b(1) +a(1)*b(0) +a(2)*b(3) -a(3)*b(2)
    1714 c(2)=a(0)*b(2) +a(2)*b(0) +a(3)*b(1) -a(1)*b(3)
    1715 c(3)=a(0)*b(3) +a(3)*b(0) +a(1)*b(2) -a(2)*b(1)
    1716 end function mulqq
    1717 
    1728 subroutine expmat(n,a,b,detb)! [expmat]
    1729 use pietc, only: u0,u1,u2,o2
    1730 implicit none
    1731 integer(spi), intent(IN ):: n
    1732 real(dp),dimension(n,n),intent(IN ):: a
    1733 real(dp),dimension(n,n),intent(OUT):: b
    1734 real(dp), intent(OUT):: detb
    1735 integer(spi),parameter :: l=5
    1736 real(dp),dimension(n,n):: c,p
    1737 real(dp) :: t
    1738 integer(spi) :: i,m
    1739 m=10+floor(log(u1+maxval(abs(a)))/log(u2))
    1740 t=o2**m
    1741 c=a*t
    1742 p=c
    1743 b=p
    1744 do i=2,l
    1745  p=matmul(p,c)/i
    1746  b=b+p
    1747 enddo
    1748 do i=1,m
    1749  b=b*u2+matmul(b,b)
    1750 enddo
    1751 do i=1,n
    1752  b(i,i)=b(i,i)+u1
    1753 enddo
    1754 detb=u0; do i=1,n; detb=detb+a(i,i); enddo; detb=exp(detb)
    1755 end subroutine expmat
    1756 
    1766 subroutine expmatd(n,a,b,bd,detb,detbd)! [expmat]
    1767 use pietc, only: u0,u1,u2,o2
    1768 implicit none
    1769 integer(spi), intent(IN ):: n
    1770 real(dp),dimension(n,n), intent(IN ):: a
    1771 real(dp),dimension(n,n), intent(OUT):: b
    1772 real(dp),dimension(n,n,(n*(n+1))/2),intent(OUT):: bd
    1773 real(dp), intent(OUT):: detb
    1774 real(dp),dimension((n*(n+1))/2), intent(OUT):: detbd
    1775 integer(spi),parameter :: L=5
    1776 real(dp),dimension(n,n) :: c,p
    1777 real(dp),dimension(n,n,(n*(n+1))/2):: pd,cd
    1778 real(dp) :: t
    1779 integer(spi) :: i,j,k,m,n1
    1780 n1=(n*(n+1))*o2
    1781 m=10+floor(log(u1+maxval(abs(a)))/log(u2))
    1782 t=o2**m
    1783 c=a*t
    1784 p=c
    1785 pd=u0
    1786 do k=1,n
    1787  pd(k,k,k)=t
    1788 enddo
    1789 k=n
    1790 do i=1,n-1
    1791  do j=i+1,n
    1792  k=k+1
    1793  pd(i,j,k)=t
    1794  pd(j,i,k)=t
    1795  enddo
    1796 enddo
    1797 if(k/=n1)stop 'In expmatd; n1 is inconsistent with n'
    1798 cd=pd
    1799 b=p
    1800 bd=pd
    1801 do i=2,l
    1802  do k=1,n1
    1803  pd(:,:,k)=(matmul(cd(:,:,k),p)+matmul(c,pd(:,:,k)))/i
    1804  enddo
    1805  p=matmul(c,p)/i
    1806  b=b+p
    1807  bd=bd+pd
    1808 enddo
    1809 do i=1,m
    1810  do k=1,n1
    1811  bd(:,:,k)=2*bd(:,:,k)+matmul(bd(:,:,k),b)+matmul(b,bd(:,:,k))
    1812  enddo
    1813  b=b*u2+matmul(b,b)
    1814 enddo
    1815 do i=1,n
    1816  b(i,i)=b(i,i)+u1
    1817 enddo
    1818 detb=u0; do i=1,n; detb=detb+a(i,i); enddo; detb=exp(detb)
    1819 detbd=u0; do k=1,n; detbd(k)=detb; enddo
    1820 end subroutine expmatd
    1821 
    1833 subroutine expmatdd(n,a,b,bd,bdd,detb,detbd,detbdd)! [expmat]
    1834 use pietc, only: u0,u1,u2,o2
    1835 implicit none
    1836 integer(spi), intent(IN ):: n
    1837 real(dp),dimension(n,n), intent(IN ):: a
    1838 real(dp),dimension(n,n), intent(OUT):: b
    1839 real(dp),dimension(n,n,(n*(n+1))/2), intent(OUT):: bd
    1840 real(dp),dimension(n,n,(n*(n+1))/2,(n*(n+1))/2),intent(OUT):: bdd
    1841 real(dp), intent(OUT):: detb
    1842 real(dp),dimension((n*(n+1))/2), intent(OUT):: detbd
    1843 real(dp),dimension((n*(n+1))/2,(n*(n+1))/2), intent(OUT):: detbdd
    1844 integer(spi),parameter :: L=5
    1845 real(dp),dimension(n,n) :: c,p
    1846 real(dp),dimension(n,n,(n*(n+1))/2) :: pd,cd
    1847 real(dp),dimension(n,n,(n*(n+1))/2,(n*(n+1))/2):: pdd,cdd
    1848 real(dp) :: t
    1849 integer(spi) :: i,j,k,ki,kj,m,n1
    1850 n1=(n*(n+1))/2
    1851 m=10+floor(log(u1+maxval(abs(a)))/log(u2))
    1852 t=o2**m
    1853 c=a*t
    1854 p=c
    1855 pd=u0
    1856 pdd=u0
    1857 do k=1,n
    1858  pd(k,k,k)=t
    1859 enddo
    1860 k=n
    1861 do i=1,n-1
    1862  do j=i+1,n
    1863  k=k+1
    1864  pd(i,j,k)=t
    1865  pd(j,i,k)=t
    1866  enddo
    1867 enddo
    1868 if(k/=n1)stop 'In expmatd; n1 is inconsistent with n'
    1869 cd=pd
    1870 cdd=u0
    1871 b=p
    1872 bd=pd
    1873 bdd=u0
    1874 do i=2,l
    1875  do ki=1,n1
    1876  do kj=1,n1
    1877  pdd(:,:,ki,kj)=(matmul(cd(:,:,ki),pd(:,:,kj)) &
    1878  + matmul(cd(:,:,kj),pd(:,:,ki)) &
    1879  + matmul(c,pdd(:,:,ki,kj)))/i
    1880  enddo
    1881  enddo
    1882  do k=1,n1
    1883  pd(:,:,k)=(matmul(cd(:,:,k),p)+matmul(c,pd(:,:,k)))/i
    1884  enddo
    1885  p=matmul(c,p)/i
    1886  b=b+p
    1887  bd=bd+pd
    1888  bdd=bdd+pdd
    1889 enddo
    1890 do i=1,m
    1891  do ki=1,n1
    1892  do kj=1,n1
    1893  bdd(:,:,ki,kj)=u2*bdd(:,:,ki,kj) &
    1894  +matmul(bdd(:,:,ki,kj),b) &
    1895  +matmul(bd(:,:,ki),bd(:,:,kj)) &
    1896  +matmul(bd(:,:,kj),bd(:,:,ki)) &
    1897  +matmul(b,bdd(:,:,ki,kj))
    1898  enddo
    1899  enddo
    1900  do k=1,n1
    1901  bd(:,:,k)=2*bd(:,:,k)+matmul(bd(:,:,k),b)+matmul(b,bd(:,:,k))
    1902  enddo
    1903  b=b*u2+matmul(b,b)
    1904 enddo
    1905 do i=1,n
    1906  b(i,i)=b(i,i)+u1
    1907 enddo
    1908 detb=u0; do i=1,n; detb=detb+a(i,i); enddo; detb=exp(detb)
    1909 detbd=u0; do k=1,n; detbd(k)=detb; enddo
    1910 detbdd=u0; do ki=1,n; do kj=1,n; detbdd(ki,kj)=detb; enddo; enddo
    1911 end subroutine expmatdd
    1912 
    1920 subroutine zntay(n,z,zn)! [zntay]
    1921 use pietc, only: u2
    1922 implicit none
    1923 integer(spi), intent(IN ):: n
    1924 real(dp), intent(IN ):: z
    1925 real(dp), intent(OUT):: zn
    1926 integer(spi),parameter:: ni=100
    1927 real(dp),parameter :: eps0=1.e-16_dp
    1928 integer(spi) :: i,i2,n2
    1929 real(dp) :: t,eps,z2
    1930 z2=z*u2
    1931 n2=n*2
    1932 t=1
    1933 do i=1,n
    1934  t=t/(i*2-1)
    1935 enddo
    1936 eps=t*eps0
    1937 zn=t
    1938 t=t
    1939 do i=1,ni
    1940  i2=i*2
    1941  t=t*z2/(i2*(i2+n2-1))
    1942  zn=zn+t
    1943  if(abs(t)<eps)return
    1944 enddo
    1945 print'("In zntay; full complement of iterations used")'
    1946 end subroutine zntay
    1947 
    1959 subroutine znfun(n,z,zn,znd,zndd,znddd)! [znfun]
    1960 use pietc, only: u0,u2,u3
    1961 implicit none
    1962 integer(spi),intent(IN ):: n
    1963 real(dp), intent(IN ):: z
    1964 real(dp), intent(OUT):: zn,znd,zndd,znddd
    1965 real(dp) :: z2,rz2
    1966 integer(spi):: i,i2p3
    1967 z2=abs(z*u2)
    1968 rz2=sqrt(z2)
    1969 if(z2<u2)then
    1970  call zntay(n ,z,zn)
    1971  call zntay(n+1,z,znd)
    1972  call zntay(n+2,z,zndd)
    1973  call zntay(n+3,z,znddd)
    1974 else
    1975  if(z>u0)then
    1976  zn=cosh(rz2)
    1977  znd=sinh(rz2)/rz2
    1978  zndd=(zn-znd)/z2
    1979  znddd=(znd-u3*zndd)/z2
    1980  do i=1,n
    1981  i2p3=i*2+3
    1982  zn=znd
    1983  znd=zndd
    1984  zndd=znddd
    1985  znddd=(znd-i2p3*zndd)/z2
    1986  enddo
    1987  else
    1988  zn=cos(rz2)
    1989  znd=sin(rz2)/rz2
    1990  zndd=-(zn-znd)/z2
    1991  znddd=-(znd-u3*zndd)/z2
    1992  do i=1,n
    1993  i2p3=i*2+3
    1994  zn=znd
    1995  znd=zndd
    1996  zndd=znddd
    1997  znddd=-(znd-i2p3*zndd)/z2
    1998  enddo
    1999  endif
    2000 endif
    2001 end subroutine znfun
    2002 
    2018 
    2026 subroutine ctoz(v, z,infz)! [ctoz]
    2027 use pietc, only: u0,u1
    2028 implicit none
    2029 real(dp),dimension(3),intent(IN ):: v
    2030 complex(dpc), intent(OUT):: z
    2031 logical, intent(OUT):: infz
    2032 real(dp) :: rr,zzpi
    2033 infz=.false.
    2034 z=cmplx(v(1),v(2),dpc)
    2035 if(v(3)>u0)then
    2036  zzpi=u1/(u1+v(3))
    2037 else
    2038  rr=v(1)**2+v(2)**2
    2039  infz=(rr==u0); if(infz)return ! <- The point is mapped to infinity (90S)
    2040  zzpi=(u1-v(3))/rr
    2041 endif
    2042 z=z*zzpi
    2043 end subroutine ctoz
    2044 
    2052 subroutine ztoc(z,infz, v)! [ztoc]
    2053 implicit none
    2054 complex(dpc), intent(IN ):: z
    2055 logical, intent(IN ):: infz
    2056 real(dp),dimension(3),intent(OUT):: v
    2057 real(dp),parameter:: zero=0_dp,one=1_dp,two=2_dp
    2058 real(dp) :: r,q,rs,rsc,rsbi
    2059 if(infz)then; v=(/zero,zero,-one/); return; endif
    2060 r=real(z); q=aimag(z); rs=r*r+q*q
    2061 rsc=one-rs
    2062 rsbi=one/(one+rs)
    2063 v(1)=two*rsbi*r
    2064 v(2)=two*rsbi*q
    2065 v(3)=rsc*rsbi
    2066 end subroutine ztoc
    2067 
    2082 subroutine ztocd(z,infz, v,vd)! [ztoc]
    2083 implicit none
    2084 complex(dpc), intent(IN ):: z
    2085 logical, intent(IN ):: infz
    2086 real(dp),dimension(3), intent(OUT):: v
    2087 complex(dpc),dimension(3),intent(OUT):: vd
    2088 real(dp),parameter :: zero=0_dp,one=1_dp,two=2_dp,four=4_dp
    2089 real(dp) :: r,q,rs,rsc,rsbi,rsbis
    2090 real(dp),dimension(3):: u1,u2
    2091 integer(spi) :: i
    2092 if(infz)then; v=(/zero,zero,-one/); return; endif
    2093 r=real(z); q=aimag(z); rs=r*r+q*q
    2094 rsc=one-rs
    2095 rsbi=one/(one+rs)
    2096 rsbis=rsbi**2
    2097 v(1)=two*rsbi*r
    2098 v(2)=two*rsbi*q
    2099 v(3)=rsc*rsbi
    2100 u1(1)=two*(one+q*q-r*r)*rsbis
    2101 u1(2)=-four*r*q*rsbis
    2102 u1(3)=-four*r*rsbis
    2103 u2=cross_product(v,u1)
    2104 do i=1,3
    2105  vd(i)=cmplx(u1(i),-u2(i),dpc)
    2106 enddo
    2107 end subroutine ztocd
    2108 
    2122 subroutine setmobius(xc0,xc1,xc2, aa,bb,cc,dd)! [setmobius]
    2123 implicit none
    2124 real(dp),dimension(3),intent(IN ):: xc0,xc1,xc2
    2125 complex(dpc), intent(OUT):: aa,bb,cc,dd
    2126 real(dp),parameter:: zero=0_dp,one=1_dp
    2127 logical :: infz0,infz1,infz2
    2128 complex(dpc) :: z0,z1,z2,z02,z10,z21
    2129 call ctoz(xc0,z0,infz0)
    2130 call ctoz(xc1,z1,infz1)
    2131 call ctoz(xc2,z2,infz2)
    2132 z21=z2-z1
    2133 z02=z0-z2
    2134 z10=z1-z0
    2135 
    2136 if( (z0==z1.and.infz0.eqv.infz1).or.&
    2137  (z1==z2.and.infz1.eqv.infz2).or.&
    2138  (z2==z0.and.infz2.eqv.infz0)) &
    2139  stop 'In setmobius; anchor points must be distinct'
    2140 if(infz2 .or. (.not.infz0 .and. abs(z0)<abs(z2)))then
    2141 ! z0 is finite and smaller than z2:
    2142  if(infz1)then
    2143  aa=one/sqrt(z02) ! <- z1 is infinite
    2144  elseif(infz2)then
    2145  aa=one/sqrt(z10) ! <- z2 is infinite
    2146  else
    2147  aa=sqrt(-z21/(z02*z10)) ! <- all zs are finite
    2148  endif
    2149  bb=-z0*aa
    2150  if(infz1)then
    2151  cc=aa ! <- z1 is infinite
    2152  dd=-z2*aa !
    2153  elseif(infz2)then
    2154  cc=zero ! <- z2 is infinite
    2155  dd=z10*aa !
    2156  else
    2157  cc=-(z10/z21)*aa ! <- all zs are finite
    2158  dd= z2*(z10/z21)*aa !
    2159  endif
    2160 else
    2161 ! z2 is finite and smaller than z0:
    2162  if(infz0)then
    2163  cc=one/sqrt(z21) ! <- z0 is inifinite
    2164  elseif(infz1)then
    2165  cc=one/sqrt(z02) ! <- z1 is infinite
    2166  else
    2167  cc=sqrt(-z10/(z02*z21)) ! <- all zs are finite
    2168  endif
    2169  dd=-z2*cc
    2170  if(infz0)then
    2171  aa=zero ! <- z0 is inifinite
    2172  bb=-z21*cc !
    2173  elseif(infz1)then
    2174  aa=cc ! <- z1 is infinite
    2175  bb=-z0*cc !
    2176  else
    2177  aa=(-z21/z10)*cc ! <- all zs are finite
    2178  bb=z0*(z21/z10)*cc !
    2179  endif
    2180 endif
    2181 end subroutine setmobius
    2182 
    2205 subroutine zsetmobius(z0,infz0, z1,infz1, z2,infz2, aa,bb,cc,dd)
    2206 implicit none
    2207 complex(dp), intent(IN ):: z0,z1,z2
    2208 logical, intent(IN ):: infz0,infz1,infz2
    2209 complex(dpc), intent(OUT):: aa,bb,cc,dd
    2210 real(dp),parameter:: zero=0_dp,one=1_dp
    2211 complex(dpc) :: z02,z10,z21
    2212 z21=z2-z1
    2213 z02=z0-z2
    2214 z10=z1-z0
    2215 if( (z0==z1.and.infz0.eqv.infz1).or.&
    2216  (z1==z2.and.infz1.eqv.infz2).or.&
    2217  (z2==z0.and.infz2.eqv.infz0)) &
    2218  stop 'In setmobius; anchor points must be distinct'
    2219 if(infz2 .or. (.not.infz0 .and. abs(z0)<abs(z2)))then
    2220 ! z0 is finite and smaller than z2:
    2221  if(infz1)then
    2222  aa=one/sqrt(z02) ! <- z1 is infinite
    2223  elseif(infz2)then
    2224  aa=one/sqrt(z10) ! <- z2 is infinite
    2225  else
    2226  aa=sqrt(-z21/(z02*z10)) ! <- all zs are finite
    2227  endif
    2228  bb=-z0*aa
    2229  if(infz1)then
    2230  cc=aa ! <- z1 is infinite
    2231  dd=-z2*aa !
    2232  elseif(infz2)then
    2233  cc=zero ! <- z2 is infinite
    2234  dd=z10*aa !
    2235  else
    2236  cc=-(z10/z21)*aa ! <- all zs are finite
    2237  dd= z2*(z10/z21)*aa !
    2238  endif
    2239 else
    2240 ! z2 is finite and smaller than z0:
    2241  if(infz0)then
    2242  cc=one/sqrt(z21) ! <- z0 is inifinite
    2243  elseif(infz1)then
    2244  cc=one/sqrt(z02) ! <- z1 is infinite
    2245  else
    2246  cc=sqrt(-z10/(z02*z21)) ! <- all zs are finite
    2247  endif
    2248  dd=-z2*cc
    2249  if(infz0)then
    2250  aa=zero ! <- z0 is inifinite
    2251  bb=-z21*cc !
    2252  elseif(infz1)then
    2253  aa=cc ! <- z1 is infinite
    2254  bb=-z0*cc !
    2255  else
    2256  aa=(-z21/z10)*cc ! <- all zs are finite
    2257  bb=z0*(z21/z10)*cc !
    2258  endif
    2259 endif
    2260 end subroutine zsetmobius
    2261 
    2276 subroutine zmobius(aa,bb,cc,dd, z,infz, w,infw)! [mobius]
    2277 implicit none
    2278 complex(dpc),intent(IN ):: aa,bb,cc,dd,z
    2279 logical, intent(IN ):: infz
    2280 complex(dpc),intent(OUT):: w
    2281 logical, intent(OUT):: infw
    2282 real(dp),parameter:: zero=0_dp
    2283 complex(dpc) :: top,bot
    2284 w=0
    2285 infw=.false.
    2286 if(infz)then
    2287  top=aa
    2288  bot=cc
    2289 else
    2290  top=aa*z+bb
    2291  bot=cc*z+dd
    2292 endif
    2293 
    2294 if(abs(bot)==zero)then
    2295  infw=.true.
    2296 else
    2297  w=top/bot
    2298 endif
    2299 end subroutine zmobius
    2300 
    2311 subroutine cmobius(aa,bb,cc,dd, vz,vw)! [mobius]
    2312 implicit none
    2313 complex(dpc), intent(IN ):: aa,bb,cc,dd
    2314 real(dp),dimension(3),intent(IN ):: vz
    2315 real(dp),dimension(3),intent(OUT):: vw
    2316 complex(dpc):: z,w
    2317 logical :: infz,infw
    2318 call ctoz(vz, z,infz)
    2319 call zmobius(aa,bb,cc,dd, z,infz, w,infw)
    2320 call ztoc(w,infw, vw)
    2321 end subroutine cmobius
    2322 
    2335 subroutine zmobiusi(aa,bb,cc,dd, zz,infz, zw,infw) ! [mobiusi]
    2336 implicit none
    2337 complex(dpc),intent(IN ):: aa,bb,cc,dd,zz
    2338 logical, intent(IN ):: infz
    2339 complex(dpc),intent(OUT):: zw
    2340 logical, intent(OUT):: infw
    2341 real(dp),parameter:: one=1_dp
    2342 complex(dpc) :: aai,bbi,cci,ddi,d
    2343 d=one/(aa*dd-bb*cc)
    2344 aai=dd*d
    2345 ddi=aa*d
    2346 bbi=-bb*d
    2347 cci=-cc*d
    2348 call zmobius(aai,bbi,cci,ddi, zz,infz, zw,infw)
    2349 end subroutine zmobiusi
    2350 
    2351 
    2352 end module pmat4
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    + + +
    real(dp) function absv_d(a)
    Return the absolute magnitude of a double precision real vector.
    Definition: pmat4.f90:131
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    subroutine dlltoxy_s(rlat, drlat, drlon, x2)
    From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vec...
    Definition: pmat4.f90:916
    +
    real(sp) function huarea_s(sa, sb)
    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions...
    Definition: pmat4.f90:630
    + +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    real(sp) function, dimension(size(a), size(b)) outer_product_s(a, b)
    Return the outer product matrix of two single precision real vectors.
    Definition: pmat4.f90:273
    + + + +
    real(sp) function det_s(a)
    Return the determinant of a single precision matrix.
    Definition: pmat4.f90:348
    +
    real(dp) function hav_d(t)
    Haversine function in double precision.
    Definition: pmat4.f90:964
    + +
    real(sp) function trace_s(b)
    Return the trace of a given single precision real matrix.
    Definition: pmat4.f90:567
    +
    real(dp) function huarea_d(sa, sb)
    Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions...
    Definition: pmat4.f90:648
    +
    subroutine plaingram_s(b, nrank)
    A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.
    Definition: pmat4.f90:1227
    + +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    subroutine expmatdd(n, a, b, bd, bdd, detb, detbd, detbdd)
    Like expmat, but for the 1st and 2nd derivatives also.
    Definition: pmat4.f90:1834
    + +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    +
    subroutine normalize_s(v)
    Normalize the given single precision real vector.
    Definition: pmat4.f90:976
    +
    real(dp) function det_d(a)
    Return the determinant of a double precision matrix.
    Definition: pmat4.f90:369
    + +
    real(dp) function, dimension(size(a), size(a)) diagn_d(a)
    Return the diagonal matrix whose elements are the given vector.
    Definition: pmat4.f90:492
    + +
    real(sp) function absv_s(a)
    Return the absolute magnitude of a single precision real vector.
    Definition: pmat4.f90:119
    +
    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...
    Definition: pmat4.f90:786
    + + + +
    integer(spi) function det_i(a)
    Return the determinant of a single precision integer matrix.
    Definition: pmat4.f90:390
    +
    real(dp) function, dimension(size(u)) orthogonalized_d(u, a)
    Return the part of vector a that is orthogonal to unit vector u.
    Definition: pmat4.f90:187
    + + +
    subroutine plaingram_d(b, nrank)
    A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.
    Definition: pmat4.f90:1263
    + + + +
    real(dp) function trace_d(b)
    Return the trace of a given double precision real matrix.
    Definition: pmat4.f90:579
    + + +
    real(dp) function triple_product_d(a, b, c)
    Return the triple product of three double precision real 3-vectors.
    Definition: pmat4.f90:336
    +
    integer, parameter dpi
    Double precision integer kind.
    Definition: pkind.f90:9
    +
    real(dp), parameter u3
    three
    Definition: pietc.f90:24
    +
    Module for handy vector and matrix operations in Euclidean geometry.
    Definition: pmat4.f90:45
    + +
    real(dp) function, dimension(size(a)) normalized_d(a)
    Return the normalized version of a double precision real vector.
    Definition: pmat4.f90:157
    + +
    subroutine normalize_d(v)
    Normalize the given double precision real vector.
    Definition: pmat4.f90:988
    + +
    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 verti...
    Definition: pmat4.f90:869
    +
    real(sp) function, dimension(size(u)) orthogonalized_s(u, a)
    Return the part of vector a that is orthogonal to unit vector u.
    Definition: pmat4.f90:172
    +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    +
    real(sp) function, dimension(3) cross_product_s(a, b)
    Return the cross product of two single precision real 3-vectors.
    Definition: pmat4.f90:202
    + + +
    real(dp) function, dimension(3) cross_product_d(a, b)
    Return the cross product of two double precision real 3-vectors.
    Definition: pmat4.f90:215
    +
    real(sp) function, dimension(size(a)) normalized_s(a)
    Return the normalized version of a single precision real vector.
    Definition: pmat4.f90:143
    + +
    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.
    Definition: pmat4.f90:462
    +
    integer(spi) function, dimension(size(a), size(b)) outer_product_i(a, b)
    Return the outer product matrix of two integer vectors.
    Definition: pmat4.f90:305
    + +
    subroutine zmobius(aa, bb, cc, dd, z, infz, w, infw)
    Perform a complex Mobius transformation from (z,infz) to (w,infw) where the transformation coefficien...
    Definition: pmat4.f90:2277
    +
    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).
    Definition: pmat4.f90:2206
    +
    subroutine ztocd(z, infz, v, vd)
    The convention adopted for the complex derivative is that, for a complex infinitesimal map displaceme...
    Definition: pmat4.f90:2083
    +
    real(sp) function triple_product_s(a, b, c)
    Return the triple product of three single precision real 3-vectors.
    Definition: pmat4.f90:322
    +
    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 o...
    Definition: pmat4.f90:232
    +
    real(sp) function hav_s(t)
    Haversine function in single precision.
    Definition: pmat4.f90:951
    +
    subroutine rowgram(m, n, a, ipiv, tt, b, rank)
    Without changing (tall) rectangular input matrix a, perform pivoted gram- Schmidt operations to ortho...
    Definition: pmat4.f90:1315
    +
    integer(spi) function, dimension(size(a), size(a)) diagn_i(a)
    Return the diagonal matrix whose elements are the given vector.
    Definition: pmat4.f90:508
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    subroutine dlltoxy_d(rlat, drlat, drlon, x2)
    From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vec...
    Definition: pmat4.f90:936
    +
    integer(spi) function, dimension(3, 3) identity3_i()
    Return the 3-dimensional integer identity matrix.
    Definition: pmat4.f90:615
    +
    subroutine gram_d(as, b, nrank, det)
    Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis ...
    Definition: pmat4.f90:1078
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    + + +
    real(sp) function sarea_s(v1, v2, v3)
    Compute the area of the spherical triangle, {v1,v2,v3}, measured in the right-handed sense...
    Definition: pmat4.f90:668
    +
    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.
    Definition: pmat4.f90:448
    + +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    integer, parameter dpc
    Double precision real kind.
    Definition: pkind.f90:13
    + +
    subroutine expmatd(n, a, b, bd, detb, detbd)
    Like expmat, but for the 1st derivatives also.
    Definition: pmat4.f90:1767
    +
    real(dp) function, dimension(size(b, 1)) diagnn_d(b)
    Return the vector whose elements are the diagonal ones of a given matrix.
    Definition: pmat4.f90:538
    +
    integer(dpi) function det_id(a)
    Return the determinant of a double precision integer matrix.
    Definition: pmat4.f90:404
    + +
    subroutine cmobius(aa, bb, cc, dd, vz, vw)
    Perform a complex Mobius transformation from cartesian vz to cartesian vw where the transformation co...
    Definition: pmat4.f90:2312
    + +
    integer(spi) function trace_i(b)
    Return the trace of a given integer matrix.
    Definition: pmat4.f90:591
    +
    real(dp) function, dimension(4) triple_cross_product_d(u, v, w)
    Return the triple_cross_product for 4-vectors.
    Definition: pmat4.f90:253
    +
    real(dp) function, dimension(size(a), size(b)) outer_product_d(a, b)
    Return the outer product matrix of two double precision real vectors.
    Definition: pmat4.f90:289
    +
    real(dp) function sarea_d(v1, v2, v3)
    Compute the area of the spherical triangle, {v1,v2,v3}.
    Definition: pmat4.f90:723
    + +
    real(sp) function, dimension(size(a), size(a)) diagn_s(a)
    Return the diagonal matrix whose elements are the given vector.
    Definition: pmat4.f90:476
    +
    integer(spi) function, dimension(n, n) identity_i(n)
    Return the integer identity matrix for a given dimensionality.
    Definition: pmat4.f90:603
    + +
    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...
    Definition: pmat4.f90:825
    +
    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 verti...
    Definition: pmat4.f90:898
    +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    +
    subroutine gram_s(as, b, nrank, det)
    Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis ...
    Definition: pmat4.f90:1007
    +
    subroutine zmobiusi(aa, bb, cc, dd, zz, infz, zw, infw)
    Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}.
    Definition: pmat4.f90:2336
    + +
    subroutine cyclic(u1, u2, u3, d1, d2, d3)
    Cyclically permute real vectors, u1, u2, u3, and scalars, d1, d2, d3.
    Definition: pmat4.f90:705
    +
    integer(spi) function, dimension(size(b, 1)) diagnn_i(b)
    Return the vector whose elements are the diagonal ones of a given matrix.
    Definition: pmat4.f90:553
    +
    subroutine graml_d(as, b, nrank, detsign, ldet)
    A version of gram_d where the determinant information is returned in logarithmic form (to avoid overf...
    Definition: pmat4.f90:1150
    + +
    real(sp) function, dimension(size(b, 1)) diagnn_s(b)
    Return the vector whose elements are the diagonal ones of a given matrix.
    Definition: pmat4.f90:523
    +
    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...
    Definition: pmat4.f90:434
    +
    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...
    Definition: pmat4.f90:420
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat5_8f90.html b/ver-1.11.0/grid_tools/pmat5_8f90.html new file mode 100644 index 000000000..0f8e14963 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat5_8f90.html @@ -0,0 +1,304 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat5.f90 File Reference
    +
    +
    + +

    Handy geographical transformations. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pmat5::ctoc_schm
     
    interface  pmat5::ctog
     
    interface  pmat5::ctogr
     
    interface  pmat5::frametwist
     
    interface  pmat5::grtoc
     
    interface  pmat5::gtoc
     
    interface  pmat5::gtoframe
     
    interface  pmat5::ininmap
     
    interface  pmat5::inivmap
     
    interface  pmat5::paraframe
     
    interface  pmat5::plctoc
     
    interface  pmat5::plrot
     
    interface  pmat5::plroti
     
    + + + + + + + + + + +

    +Modules

    module  cstgeo
     Constants for orientation and stretching of map.
     
    module  dcstgeo
     Constants for orientation and stretching of map.
     
    module  pmat5
     Utility routines for orienting the globe and basic geographical mappings.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine pmat5::dctoc (s, xc1, xc2)
     Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s. More...
     
    subroutine pmat5::dctocd (s, xc1, xc2, dxc2)
     Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2. More...
     
    subroutine pmat5::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 pmat5::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 pmat5::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 pmat5::dgrtoc (rlat, rlon, xe)
     Transform "Geographical" to "Cartesian" coordinates. More...
     
    subroutine pmat5::dgrtocd (rlat, rlon, xe, dxedlat, dxedlon)
     Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude. More...
     
    subroutine pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::dplrot (rot3, n, x, y, z)
     Apply a constant rotation to a three dimensional polyline. More...
     
    subroutine pmat5::dplroti (rot3, n, x, y, z)
     Invert the rotation of a three-dimensional polyline. More...
     
    subroutine, public pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::plctoc (s, n, x, y, z)
     Perform Schmidt transformation with scaling parameter s to a polyline. More...
     
    subroutine, public pmat5::plrot (rot3, n, x, y, z)
     Apply a constant rotation to a three dimensional polyline. More...
     
    subroutine, public pmat5::plroti (rot3, n, x, y, z)
     Invert the rotation of a three-dimensional polyline. More...
     
    subroutine pmat5::sctoc (s, xc1, xc2)
     Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s. More...
     
    subroutine pmat5::sctocd (s, xc1, xc2, dxc2)
     Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2. More...
     
    subroutine pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::sgrtoc (rlat, rlon, xe)
     Transform "Geographical" to "Cartesian" coordinates. More...
     
    subroutine pmat5::sgrtocd (rlat, rlon, xe, dxedlat, dxedlon)
     Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude. More...
     
    subroutine pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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 pmat5::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...
     
    + + + + + + + + + + + + + + + + + + + +

    +Variables

    real(sp), dimension(3, 3) cstgeo::rotm
     Orthogonal rotation matrix. More...
     
    real(dp), dimension(3, 3) dcstgeo::rotm
     Orthogonal rotation matrix. More...
     
    real(sp) cstgeo::sc
     Schmidt stretching factor. More...
     
    real(dp) dcstgeo::sc
     Schmidt stretching factor. More...
     
    real(sp) cstgeo::sci
     Schmidt inverse stretching factor. More...
     
    real(dp) dcstgeo::sci
     Schmidt inverse stretching factor. More...
     
    +

    Detailed Description

    +

    Handy geographical transformations.

    +
    Author
    R. J. Purser
    +
    Date
    1996
    + +

    Definition in file pmat5.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat5_8f90.js b/ver-1.11.0/grid_tools/pmat5_8f90.js new file mode 100644 index 000000000..5f96c8685 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat5_8f90.js @@ -0,0 +1,61 @@ +var pmat5_8f90 = +[ + [ "ctoc_schm", "interfacepmat5_1_1ctoc__schm.html", "interfacepmat5_1_1ctoc__schm" ], + [ "ctog", "interfacepmat5_1_1ctog.html", "interfacepmat5_1_1ctog" ], + [ "ctogr", "interfacepmat5_1_1ctogr.html", "interfacepmat5_1_1ctogr" ], + [ "frametwist", "interfacepmat5_1_1frametwist.html", "interfacepmat5_1_1frametwist" ], + [ "grtoc", "interfacepmat5_1_1grtoc.html", "interfacepmat5_1_1grtoc" ], + [ "gtoc", "interfacepmat5_1_1gtoc.html", "interfacepmat5_1_1gtoc" ], + [ "gtoframe", "interfacepmat5_1_1gtoframe.html", "interfacepmat5_1_1gtoframe" ], + [ "ininmap", "interfacepmat5_1_1ininmap.html", "interfacepmat5_1_1ininmap" ], + [ "inivmap", "interfacepmat5_1_1inivmap.html", "interfacepmat5_1_1inivmap" ], + [ "paraframe", "interfacepmat5_1_1paraframe.html", "interfacepmat5_1_1paraframe" ], + [ "plctoc", "interfacepmat5_1_1plctoc.html", "interfacepmat5_1_1plctoc" ], + [ "plrot", "interfacepmat5_1_1plrot.html", "interfacepmat5_1_1plrot" ], + [ "plroti", "interfacepmat5_1_1plroti.html", "interfacepmat5_1_1plroti" ], + [ "dctoc", "pmat5_8f90.html#a7db3de0fe562e88337558ea0bedf0694", null ], + [ "dctocd", "pmat5_8f90.html#a17df6aadf501db01b8eb5ea159a356fd", null ], + [ "dctocdd", "pmat5_8f90.html#a1f36d39ea3a96f9644202ed9546a2f97", null ], + [ "dctog", "pmat5_8f90.html#a4cdb980157241ae715742587a273d651", null ], + [ "dctogr", "pmat5_8f90.html#ae29767929af2337004430fb7c1e9d469", null ], + [ "dgrtoc", "pmat5_8f90.html#a9b896d011fb1f3f31ce58837e63f24df", null ], + [ "dgrtocd", "pmat5_8f90.html#a1997ebe527feb6466baac99464a8352b", null ], + [ "dgrtocdd", "pmat5_8f90.html#a8a88a3f4d6997939589ad5305effe61b", null ], + [ "dgtoc", "pmat5_8f90.html#a46c54c999c0f22cfb21c14164f6afaee", null ], + [ "dgtocd", "pmat5_8f90.html#a47cb195cf58372342e19e710030bf70b", null ], + [ "dgtocdd", "pmat5_8f90.html#a43d7cd0b9288695a76ff704fbe1d95b3", null ], + [ "dininmap", "pmat5_8f90.html#a0ab365448bc120e2e47f6e5caaf2cd1a", null ], + [ "dinivmap", "pmat5_8f90.html#ade2ed1d8ce5fddd0cac9792ee83aa64f", null ], + [ "dplrot", "pmat5_8f90.html#ad70f27c21aac45e54af9b2b696419809", null ], + [ "dplroti", "pmat5_8f90.html#a3069df15efa59d1d48a4c4a221dd201d", null ], + [ "frametwist", "pmat5_8f90.html#a003130a328412d6651f2170670c67f33", null ], + [ "gtoframem", "pmat5_8f90.html#ac105f0c4e3ea9e7b2dbfb9a9d6f9f97e", null ], + [ "gtoframev", "pmat5_8f90.html#a277a5dc65adacdfda2ceefa3485a34a9", null ], + [ "paraframe", "pmat5_8f90.html#a78b960d2f79b61eb0b8ba948e7434b26", null ], + [ "plctoc", "pmat5_8f90.html#a9d457dd8eccb107f3759364690b747a5", null ], + [ "plrot", "pmat5_8f90.html#a1b18ea18e804d2d7c8aa53156f88a01e", null ], + [ "plroti", "pmat5_8f90.html#a24aab72dbcf7cf572f6c59a11586292a", null ], + [ "sctoc", "pmat5_8f90.html#a86a7576b348a2747a7f7feb9a8bd60c8", null ], + [ "sctocd", "pmat5_8f90.html#a7248db240ab1a98ac980d3b4190e003e", null ], + [ "sctocdd", "pmat5_8f90.html#ad04f85b3792a2b8d7d980a1ab2c8d2c4", null ], + [ "sctog", "pmat5_8f90.html#a5af7ff2967ce4feb2dbaad607b86b53c", null ], + [ "sctogr", "pmat5_8f90.html#a7ae12feca1ae732c41143c9d1fb09a13", null ], + [ "sframetwist", "pmat5_8f90.html#a3468057ec5bccd70177603e18d79e417", null ], + [ "sgrtoc", "pmat5_8f90.html#a45f0f8fc27cf94aa14980e2592ab4fa5", null ], + [ "sgrtocd", "pmat5_8f90.html#ae598bf2142d5bac03f4add7ab526d1d1", null ], + [ "sgrtocdd", "pmat5_8f90.html#a4a3c6fc6906b4d433f114b02b70b8781", null ], + [ "sgtoc", "pmat5_8f90.html#a5fb323cf2d5049ca71cea8b093f246a5", null ], + [ "sgtocd", "pmat5_8f90.html#a003a281787daf4e97fcaaa3b8c3274a3", null ], + [ "sgtocdd", "pmat5_8f90.html#aff15189d640f2985c4cb86870fe939e3", null ], + [ "sgtoframem", "pmat5_8f90.html#ae6e7a5a97b413e17866c523ef49e5785", null ], + [ "sgtoframev", "pmat5_8f90.html#acce6c355875099aa350a33edf2a47680", null ], + [ "sininmap", "pmat5_8f90.html#ac90003637943f98a27697961f8383bb0", null ], + [ "sinivmap", "pmat5_8f90.html#a094c4f88c3584c4e81e87376c40b6823", null ], + [ "sparaframe", "pmat5_8f90.html#a68ec9d48a671321dcd7e7ce5ddf8f973", null ], + [ "rotm", "pmat5_8f90.html#a9dfd1286dd56bbaa16f0e53a4b5463aa", null ], + [ "rotm", "pmat5_8f90.html#adad1a51af5095a868fea81876bc6f7ec", null ], + [ "sc", "pmat5_8f90.html#a64bcd54569dd77ca573f5ece7e2759e7", null ], + [ "sc", "pmat5_8f90.html#a7b21b371112f39f652fca028a7d5917e", null ], + [ "sci", "pmat5_8f90.html#addbe59e962ad38732efb4adda0ec7b7f", null ], + [ "sci", "pmat5_8f90.html#a25d603dde5cb470f72b8dacbabbc8efd", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pmat5_8f90_source.html b/ver-1.11.0/grid_tools/pmat5_8f90_source.html new file mode 100644 index 000000000..9fc85b238 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat5_8f90_source.html @@ -0,0 +1,175 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat5.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pmat5.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7 module cstgeo ! Constants for orientation and stretching of map
    8 use pkind, only: sp
    9 implicit none
    10 real(sp),dimension(3,3):: rotm
    11 real(sp) :: sc
    12 real(sp) :: sci
    13 end module cstgeo
    14 
    17 module dcstgeo ! Constants for orientation and stretching of map
    18 use pkind, only: dp
    19 implicit none
    20 real(dp),dimension(3,3):: rotm
    21 real(dp) :: sc
    22 real(dp) :: sci
    23 end module dcstgeo
    24 
    27 module pmat5
    28 use pkind, only: spi,sp,dp
    29 implicit none
    30 private
    31 public :: ininmap,inivmap,ctogr,grtoc,ctog,gtoc,&
    34 interface ininmap; module procedure sininmap,dininmap; end interface
    35 interface inivmap; module procedure sinivmap,dinivmap; end interface
    36 interface ctogr; module procedure sctogr, dctogr; end interface
    37 interface grtoc
    38  module procedure sgrtoc,dgrtoc, sgrtocd,dgrtocd, sgrtocdd,dgrtocdd
    39  end interface
    40 interface ctog; module procedure sctog, dctog; end interface
    41 interface gtoc
    42  module procedure sgtoc,dgtoc, sgtocd,dgtocd, sgtocdd,dgtocdd; end interface
    43 interface gtoframe
    44  module procedure sgtoframev,gtoframev,sgtoframem,gtoframem; end interface
    45 interface paraframe; module procedure sparaframe,paraframe; end interface
    46 interface frametwist;module procedure sframetwist,frametwist; end interface
    47 interface ctoc_schm
    48  module procedure sctoc,dctoc, sctocd,dctocd, sctocdd,dctocdd; end interface
    49 interface plrot; module procedure plrot, dplrot; end interface
    50 interface plroti; module procedure plroti,dplroti; end interface
    51 interface plctoc; module procedure plctoc; end interface
    52 contains
    53 
    63 subroutine sininmap(alon0,alat0,rot3)! [ininmap]
    64 use pietc_s, only: u0,dtor
    65 implicit none
    66 real(sp), intent(IN ):: alon0,alat0
    67 real(sp),dimension(3,3),intent(OUT):: rot3
    68 real(sp) :: blon0,blat0,clon0,clat0,slon0,slat0
    69 blon0=dtor*alon0; clon0=cos(blon0); slon0=sin(blon0)
    70 blat0=dtor*alat0; clat0=cos(blat0); slat0=sin(blat0)
    71 rot3(1,1)=slat0*clon0; rot3(1,2)=slat0*slon0; rot3(1,3)=-clat0
    72 rot3(2,1)=-slon0; rot3(2,2)=clon0; rot3(2,3)=u0
    73 rot3(3,1)=clat0*clon0; rot3(3,2)=clat0*slon0; rot3(3,3)=slat0
    74 end subroutine sininmap
    75 
    85 subroutine dininmap(alon0,alat0,rot3)! [ininmap]
    86 use pietc, only: u0,dtor
    87 implicit none
    88 real(dp), intent(IN ):: alon0,alat0
    89 real(dp),dimension(3,3),intent(OUT):: rot3
    90 real(dp) :: blon0,blat0,clon0,clat0,slon0,slat0
    91 blon0=dtor*alon0; clon0=cos(blon0); slon0=sin(blon0)
    92 blat0=dtor*alat0; clat0=cos(blat0); slat0=sin(blat0)
    93 rot3(1,1)=slat0*clon0; rot3(1,2)=slat0*slon0; rot3(1,3)=-clat0
    94 rot3(2,1)=-slon0; rot3(2,2)=clon0; rot3(2,3)=u0
    95 rot3(3,1)=clat0*clon0; rot3(3,2)=clat0*slon0; rot3(3,3)=slat0
    96 end subroutine dininmap
    97 
    107 subroutine sinivmap(alon0,alat0,rot3)! [inivmap]
    108 use pietc_s, only: u0,dtor
    109 implicit none
    110 real(sp), intent(IN ):: alon0,alat0
    111 real(sp),dimension(3,3),intent(OUT):: rot3
    112 real(sp) :: blon0,blat0,clon0,clat0,slon0,slat0
    113 blon0=dtor*alon0
    114 blat0=dtor*alat0
    115 clon0=cos(blon0)
    116 slon0=sin(blon0)
    117 clat0=cos(blat0)
    118 slat0=sin(blat0)
    119 rot3(1,1)=-slon0
    120 rot3(1,2)=clon0
    121 rot3(1,3)=u0
    122 rot3(2,1)=-slat0*clon0
    123 rot3(2,2)=-slat0*slon0
    124 rot3(2,3)=clat0
    125 rot3(3,1)=clat0*clon0
    126 rot3(3,2)=clat0*slon0
    127 rot3(3,3)=slat0
    128 end subroutine sinivmap
    129 
    139 subroutine dinivmap(alon0,alat0,rot3)! [inivmap]
    140 use pietc, only: u0,dtor
    141 implicit none
    142 real(dp), intent(IN ):: alon0,alat0
    143 real(dp),dimension(3,3),intent(OUT):: rot3
    144 real(dp) :: blon0,blat0,clon0,clat0,slon0,slat0
    145 blon0=dtor*alon0
    146 blat0=dtor*alat0
    147 clon0=cos(blon0)
    148 slon0=sin(blon0)
    149 clat0=cos(blat0)
    150 slat0=sin(blat0)
    151 rot3(1,1)=-slon0
    152 rot3(1,2)=clon0
    153 rot3(1,3)=u0
    154 rot3(2,1)=-slat0*clon0
    155 rot3(2,2)=-slat0*slon0
    156 rot3(2,3)=clat0
    157 rot3(3,1)=clat0*clon0
    158 rot3(3,2)=clat0*slon0
    159 rot3(3,3)=slat0
    160 end subroutine dinivmap
    161 
    172 subroutine sctogr(xe,rlat,rlon)! [ctogr]
    173 use pietc_s, only: u0
    174 implicit none
    175 real(sp),dimension(3),intent(IN ):: xe
    176 real(sp), intent(OUT):: rlat,rlon
    177 real(sp) :: r
    178 r=sqrt(xe(1)**2+xe(2)**2)
    179 rlat=atan2(xe(3),r)
    180 if(r==u0)then
    181  rlon=u0
    182 else
    183  rlon=atan2(xe(2),xe(1))
    184 endif
    185 end subroutine sctogr
    186 
    197 subroutine dctogr(xe,rlat,rlon)! [ctogr]
    198 use pietc, only: u0
    199 implicit none
    200 real(dp),dimension(3),intent(IN ):: xe
    201 real(dp), intent(OUT):: rlat,rlon
    202 real(dp) :: r
    203 r=sqrt(xe(1)**2+xe(2)**2)
    204 rlat=atan2(xe(3),r)
    205 if(r==u0)then
    206  rlon=u0
    207 else
    208  rlon=atan2(xe(2),xe(1))
    209 endif
    210 end subroutine dctogr
    211 
    219 subroutine sgrtoc(rlat,rlon,xe)! [grtoc]
    220 implicit none
    221 real(sp), intent(IN ):: rlat,rlon
    222 real(sp),dimension(3),intent(OUT):: xe
    223 real(sp) :: sla,cla,slo,clo
    224 sla=sin(rlat); cla=cos(rlat)
    225 slo=sin(rlon); clo=cos(rlon)
    226 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    227 end subroutine sgrtoc
    228 
    236 subroutine dgrtoc(rlat,rlon,xe)! [grtoc]
    237 implicit none
    238 real(dp), intent(IN ):: rlat,rlon
    239 real(dp),dimension(3),intent(OUT):: xe
    240 real(dp) :: sla,cla,slo,clo
    241 sla=sin(rlat); cla=cos(rlat)
    242 slo=sin(rlon); clo=cos(rlon)
    243 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    244 end subroutine dgrtoc
    245 
    256 subroutine sgrtocd(rlat,rlon,xe,dxedlat,dxedlon)! [grtoc]
    257 implicit none
    258 real(sp), intent(IN ):: rlat,rlon
    259 real(sp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon
    260 real(dp) :: rlat_d,rlon_d
    261 real(dp),dimension(3):: xe_d,dxedlat_d,dxedlon_d
    262 rlat_d=rlat; rlon_d=rlon
    263 call dgrtocd(rlat_d,rlon_d,xe_d,dxedlat_d,dxedlon_d)
    264 xe =xe_d
    265 dxedlat=dxedlat_d
    266 dxedlon=dxedlon_d
    267 end subroutine sgrtocd
    268 
    279 subroutine dgrtocd(rlat,rlon,xe,dxedlat,dxedlon)! [grtoc]
    280 use pietc, only: u0
    281 implicit none
    282 real(dp), intent(IN ):: rlat,rlon
    283 real(dp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon
    284 real(dp) :: sla,cla,slo,clo
    285 sla=sin(rlat); cla=cos(rlat)
    286 slo=sin(rlon); clo=cos(rlon)
    287 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    288 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla
    289 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0
    290 end subroutine dgrtocd
    291 
    305 subroutine sgrtocdd(rlat,rlon,xe,dxedlat,dxedlon, &! [grtoc]
    306  ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
    307 implicit none
    308 real(sp), intent(IN ):: rlat,rlon
    309 real(sp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon, &
    310  ddxedlatdlat,ddxedlatdlon,ddxedlondlon
    311 real(dp) :: rlat_d,rlon_d
    312 real(dp),dimension(3):: xe_d,dxedlat_d,dxedlon_d, &
    313  ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d
    314 rlat_d=rlat; rlon_d=rlon
    315 call dgtocdd(rlat_d,rlon_d,xe_d,dxedlat_d,dxedlon_d, &
    316  ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d)
    317 xe =xe_d
    318 dxedlat =dxedlat_d
    319 dxedlon =dxedlon_d
    320 ddxedlatdlat=ddxedlatdlat_d
    321 ddxedlatdlon=ddxedlatdlon_d
    322 ddxedlondlon=ddxedlondlon_d
    323 end subroutine sgrtocdd
    324 
    338 subroutine dgrtocdd(rlat,rlon,xe,dxedlat,dxedlon, &! [grtoc]
    339  ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
    340 use pietc, only: u0
    341 implicit none
    342 real(dp), intent(IN ):: rlat,rlon
    343 real(dp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon, &
    344  ddxedlatdlat,ddxedlatdlon,ddxedlondlon
    345 real(dp) :: sla,cla,slo,clo
    346 sla=sin(rlat); cla=cos(rlat)
    347 slo=sin(rlon); clo=cos(rlon)
    348 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    349 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla
    350 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0
    351 ddxedlatdlat(1)=-cla*clo
    352 ddxedlatdlat(2)=-cla*slo
    353 ddxedlatdlat(3)=-sla
    354 ddxedlatdlon(1)= sla*slo
    355 ddxedlatdlon(2)=-sla*clo
    356 ddxedlatdlon(3)= u0
    357 ddxedlondlon(1)=-cla*clo
    358 ddxedlondlon(2)=-cla*slo
    359 ddxedlondlon(3)= u0
    360 end subroutine dgrtocdd
    361 
    372 subroutine sctog(xe,dlat,dlon)! [ctog]
    373 use pietc_s, only: u0,rtod
    374 implicit none
    375 real(sp),dimension(3),intent(IN ):: xe
    376 real(sp), intent(OUT):: dlat,dlon
    377 real(sp) :: r
    378 r=sqrt(xe(1)**2+xe(2)**2)
    379 dlat=atan2(xe(3),r)*rtod
    380 if(r==u0)then
    381  dlon=u0
    382 else
    383  dlon=atan2(xe(2),xe(1))*rtod
    384 endif
    385 end subroutine sctog
    386 
    397 subroutine dctog(xe,dlat,dlon)! [ctog]
    398 use pietc, only: u0,rtod
    399 implicit none
    400 real(dp),dimension(3),intent(IN ):: xe
    401 real(dp), intent(OUT):: dlat,dlon
    402 real(dp) :: r
    403 r=sqrt(xe(1)**2+xe(2)**2)
    404 dlat=atan2(xe(3),r)*rtod
    405 if(r==u0)then
    406  dlon=u0
    407 else
    408  dlon=atan2(xe(2),xe(1))*rtod
    409 endif
    410 end subroutine dctog
    411 
    422 subroutine sgtoc(dlat,dlon,xe)! [gtoc]
    423 use pietc_s, only: dtor
    424 implicit none
    425 real(sp), intent(IN ):: dlat,dlon
    426 real(sp),dimension(3),intent(OUT):: xe
    427 real(sp) :: rlat,rlon,sla,cla,slo,clo
    428 rlat=dtor*dlat; rlon=dtor*dlon
    429 sla=sin(rlat); cla=cos(rlat)
    430 slo=sin(rlon); clo=cos(rlon)
    431 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    432 end subroutine sgtoc
    433 
    444 subroutine dgtoc(dlat,dlon,xe)! [gtoc]
    445 use pietc, only: dtor
    446 implicit none
    447 real(dp), intent(IN ):: dlat,dlon
    448 real(dp),dimension(3),intent(OUT):: xe
    449 real(dp) :: rlat,rlon,sla,cla,slo,clo
    450 rlat=dtor*dlat; rlon=dtor*dlon
    451 sla=sin(rlat); cla=cos(rlat)
    452 slo=sin(rlon); clo=cos(rlon)
    453 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    454 end subroutine dgtoc
    455 
    469 subroutine sgtocd(dlat,dlon,xe,dxedlat,dxedlon)! [gtoc]
    470 implicit none
    471 real(sp), intent(IN ):: dlat,dlon
    472 real(sp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon
    473 real(dp) :: dlat_d,dlon_d
    474 real(dp),dimension(3):: xe_d,dxedlat_d,dxedlon_d
    475 dlat_d=dlat; dlon_d=dlon
    476 call dgtocd(dlat_d,dlon_d,xe_d,dxedlat_d,dxedlon_d)
    477 xe =xe_d
    478 dxedlat=dxedlat_d
    479 dxedlon=dxedlon_d
    480 end subroutine sgtocd
    481 
    495 subroutine dgtocd(dlat,dlon,xe,dxedlat,dxedlon)! [gtoc]
    496 use pietc, only: u0,dtor
    497 implicit none
    498 real(dp), intent(IN ):: dlat,dlon
    499 real(dp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon
    500 real(dp) :: rlat,rlon,sla,cla,slo,clo
    501 rlat=dtor*dlat; rlon=dtor*dlon
    502 sla=sin(rlat); cla=cos(rlat)
    503 slo=sin(rlon); clo=cos(rlon)
    504 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    505 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla; dxedlat=dxedlat*dtor
    506 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0 ; dxedlon=dxedlon*dtor
    507 end subroutine dgtocd
    508 
    526 subroutine sgtocdd(dlat,dlon,xe,dxedlat,dxedlon, &
    527  ddxedlatdlat,ddxedlatdlon,ddxedlondlon)! [gtoc]
    528 implicit none
    529 real(sp), intent(IN ):: dlat,dlon
    530 real(sp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon, &
    531  ddxedlatdlat,ddxedlatdlon,ddxedlondlon
    532 real(dp) :: dlat_d,dlon_d
    533 real(dp),dimension(3):: xe_d,dxedlat_d,dxedlon_d, &
    534  ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d
    535 dlat_d=dlat; dlon_d=dlon
    536 call dgtocdd(dlat_d,dlon_d,xe_d,dxedlat_d,dxedlon_d, &
    537  ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d)
    538 xe =xe_d
    539 dxedlat =dxedlat_d
    540 dxedlon =dxedlon_d
    541 ddxedlatdlat=ddxedlatdlat_d
    542 ddxedlatdlon=ddxedlatdlon_d
    543 ddxedlondlon=ddxedlondlon_d
    544 end subroutine sgtocdd
    545 
    563 subroutine dgtocdd(dlat,dlon,xe,dxedlat,dxedlon, &
    564  ddxedlatdlat,ddxedlatdlon,ddxedlondlon)! [gtoc]
    565 use pietc, only: u0,dtor
    566 implicit none
    567 real(dp), intent(IN ):: dlat,dlon
    568 real(dp),dimension(3),intent(OUT):: xe,dxedlat,dxedlon, &
    569  ddxedlatdlat,ddxedlatdlon,ddxedlondlon
    570 real(dp) :: rlat,rlon,sla,cla,slo,clo
    571 rlat=dtor*dlat; rlon=dtor*dlon
    572 sla=sin(rlat); cla=cos(rlat)
    573 slo=sin(rlon); clo=cos(rlon)
    574 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
    575 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla; dxedlat=dxedlat*dtor
    576 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0 ; dxedlon=dxedlon*dtor
    577 ddxedlatdlat(1)=-cla*clo
    578 ddxedlatdlat(2)=-cla*slo
    579 ddxedlatdlat(3)=-sla
    580 ddxedlatdlon(1)= sla*slo
    581 ddxedlatdlon(2)=-sla*clo
    582 ddxedlatdlon(3)= u0
    583 ddxedlondlon(1)=-cla*clo
    584 ddxedlondlon(2)=-cla*slo
    585 ddxedlondlon(3)= u0
    586 ddxedlatdlat=ddxedlatdlat*dtor**2
    587 ddxedlatdlon=ddxedlatdlon*dtor**2
    588 ddxedlondlon=ddxedlondlon*dtor**2
    589 end subroutine dgtocdd
    590 
    599 subroutine sgtoframem(splat,splon,sorth)! [gtoframe]
    600 implicit none
    601 real(sp), intent(in ):: splat,splon
    602 real(sp),dimension(3,3),intent(out):: sorth
    603 real(dp):: plat,plon
    604 real(dp),dimension(3,3):: orth
    605 plat=splat; plon=splon; call gtoframem(plat,plon,orth); sorth=orth
    606 end subroutine sgtoframem
    607 
    616 subroutine gtoframem(plat,plon,orth)! [gtoframe]
    617 implicit none
    618 real(dp), intent(in ):: plat,plon
    619 real(dp),dimension(3,3),intent(out):: orth
    620 real(dp),dimension(3):: xp,yp,zp
    621 call gtoframev(plat,plon, xp,yp,zp)
    622 orth(:,1)=xp; orth(:,2)=yp; orth(:,3)=zp
    623 end subroutine gtoframem
    624 
    636 subroutine sgtoframev(splat,splon,sxp,syp,szp)! [gtoframe]
    637 !==============================================================================
    638 implicit none
    639 real(sp), intent(in ):: splat,splon
    640 real(sp),dimension(3),intent(out):: sxp,syp,szp
    641 !------------------------------------------------------------------------------
    642 real(dp) :: plat,plon
    643 real(dp),dimension(3):: xp,yp,zp
    644 !==============================================================================
    645 plat=splat; plon=splon
    646 call gtoframev(plat,plon, xp,yp,zp)
    647 sxp=xp; syp=yp; szp=zp
    648 end subroutine sgtoframev
    649 
    661 subroutine gtoframev(plat,plon, xp,yp,zp)! [gtoframe]
    662 use pietc, only: u0,u1
    663 implicit none
    664 real(dp), intent(in ):: plat,plon
    665 real(dp),dimension(3),intent(out):: xp,yp,zp
    666 real(dp),dimension(3):: dzpdlat,dzpdlon
    667 if(plat==90)then ! is this the north pole?
    668  xp=(/ u0,u1, u0/) ! Assume the limiting case lat-->90 along the 0-meridian
    669  yp=(/-u1,u0, u0/) !
    670  zp=(/ u0,u0, u1/)
    671 elseif(plat==-90)then
    672  xp=(/ u0,u1, u0/) ! Assume the limiting case lat-->90 along the 0-meridian
    673  yp=(/ u1,u0, u0/) !
    674  zp=(/ u0,u0,-u1/)
    675 else
    676  call gtoc(plat,plon,zp,dzpdlat,dzpdlon)
    677  xp=dzpdlon/sqrt(dot_product(dzpdlon,dzpdlon))
    678  yp=dzpdlat/sqrt(dot_product(dzpdlat,dzpdlat))
    679 endif
    680 end subroutine gtoframev
    681 
    695 subroutine sparaframe(sxp,syp,szp, sxv,syv,szv)! [paraframe]
    696 implicit none
    697 real(sp),dimension(3),intent(in ):: sxp,syp,szp, szv
    698 real(sp),dimension(3),intent(out):: sxv,syv
    699 real(dp),dimension(3):: xp,yp,zp, xv,yv,zv
    700 xp=sxp; yp=syp; zp=szp
    701 call paraframe(xp,yp,zp, xv,yv,zv)
    702 sxv=xv; syv=yv
    703 end subroutine sparaframe
    704 
    718 subroutine paraframe(xp,yp,zp, xv,yv,zv)! [paraframe]
    720 implicit none
    721 real(dp),dimension(3),intent(in ):: xp,yp,zp, zv
    722 real(dp),dimension(3),intent(out):: xv,yv
    723 real(dp) :: xpofv,ypofv,theta,ctheta,stheta
    724 real(dp),dimension(3):: xq,yq
    725 xpofv=dot_product(xp,zv)
    726 ypofv=dot_product(yp,zv)
    727 theta=atan2(ypofv,xpofv); ctheta=cos(theta); stheta=sin(theta)
    728 xq=zv-zp; xq=xq-zv*dot_product(xq,zv); xq=normalized(xq)
    729 yq=cross_product(zv,xq)
    730 xv=xq*ctheta-yq*stheta
    731 yv=xq*stheta+yq*ctheta
    732 end subroutine paraframe
    733 
    750 subroutine sframetwist(sxp,syp,szp, sxv,syv,szv, stwist)! [frametwist]
    751 implicit none
    752 real(sp),dimension(3),intent(in ):: sxp,syp,szp, sxv,syv,szv
    753 real(sp), intent(out):: stwist
    754 real(dp),dimension(3):: xp,yp,zp, xv,yv,zv
    755 real(dp) :: twist
    756 xp=sxp;yp=syp; zp=szp; xv=sxv; yv=syv; zv=szv
    757 call frametwist(xp,yp,zp, xv,yv,zv, twist)
    758 stwist=twist
    759 end subroutine sframetwist
    760 
    777 subroutine frametwist(xp,yp,zp, xv,yv,zv, twist)! [frametwist]
    778 implicit none
    779 real(dp),dimension(3),intent(in ):: xp,yp,zp, xv,yv,zv
    780 real(dp), intent(out):: twist
    781 real(dp),dimension(3):: xxv,yyv
    782 real(dp) :: c,s
    783 call paraframe(xp,yp,zp, xxv,yyv,zv)
    784 c=dot_product(xv,xxv); s=dot_product(xv,yyv)
    785 twist=atan2(s,c)
    786 end subroutine frametwist
    787 
    794 subroutine sctoc(s,xc1,xc2)! [ctoc_schm]
    795 use pietc_s, only: u1,u2
    796 implicit none
    797 real(sp), intent(IN ):: s
    798 real(sp),dimension(3),intent(INOUT):: xc1,xc2
    799 real(sp) :: x,y,z,a,b,d,e,ab2,aa,bb,di,aapbb,aambb
    800 x=xc1(1); y=xc1(2); z=xc1(3)
    801 a=s+u1
    802 b=s-u1
    803 ab2=a*b*u2
    804 aa=a*a
    805 bb=b*b
    806 aapbb=aa+bb
    807 aambb=aa-bb
    808 d=aapbb-ab2*z
    809 e=aapbb*z-ab2
    810 di=u1/d
    811 xc2(1)=(aambb*x)*di
    812 xc2(2)=(aambb*y)*di
    813 xc2(3)=e*di
    814 end subroutine sctoc
    815 
    824 subroutine sctocd(s,xc1,xc2,dxc2)! [ctoc_schm]
    825 use pietc_s, only: u0,u1,u2
    826 implicit none
    827 real(sp),intent(IN) :: s
    828 real(sp),dimension(3), intent(INOUT):: xc1,xc2
    829 real(sp),dimension(3,3),intent( OUT):: dxc2
    830 real(sp) :: x,y,z,a,b,d,e, &
    831  ab2,aa,bb,di,ddi,aapbb,aambb
    832 x=xc1(1); y=xc1(2); z=xc1(3)
    833 a=s+u1
    834 b=s-u1
    835 ab2=a*b*u2
    836 aa=a*a
    837 bb=b*b
    838 aapbb=aa+bb
    839 aambb=aa-bb
    840 d=aapbb-ab2*z
    841 e=aapbb*z-ab2
    842 di=u1/d
    843 xc2(1)=(aambb*x)*di
    844 xc2(2)=(aambb*y)*di
    845 xc2(3)=e*di
    846 ddi=di*di
    847 
    848 dxc2=u0
    849 dxc2(1,1)=aambb*di
    850 dxc2(1,3)=ab2*aambb*x*ddi
    851 dxc2(2,2)=aambb*di
    852 dxc2(2,3)=ab2*aambb*y*ddi
    853 dxc2(3,3)=aapbb*di +ab2*e*ddi
    854 end subroutine sctocd
    855 
    865 subroutine sctocdd(s,xc1,xc2,dxc2,ddxc2)! [ctoc_schm]
    866 use pietc_s, only: u0,u1,u2
    867 implicit none
    868 real(sp), intent(IN ):: s
    869 real(sp),dimension(3), intent(INOUT):: xc1,xc2
    870 real(sp),dimension(3,3), intent( OUT):: dxc2
    871 real(sp),dimension(3,3,3),intent( OUT):: ddxc2
    872 real(sp) :: x,y,z,a,b,d,e, &
    873  ab2,aa,bb,di,ddi,dddi, &
    874  aapbb,aambb
    875 x=xc1(1); y=xc1(2); z=xc1(3)
    876 a=s+u1
    877 b=s-u1
    878 ab2=a*b*u2
    879 aa=a*a
    880 bb=b*b
    881 aapbb=aa+bb
    882 aambb=aa-bb
    883 d=aapbb-ab2*z
    884 e=aapbb*z-ab2
    885 di=u1/d
    886 xc2(1)=(aambb*x)*di
    887 xc2(2)=(aambb*y)*di
    888 xc2(3)=e*di
    889 ddi=di*di
    890 dddi=ddi*di
    891 
    892 dxc2=u0
    893 dxc2(1,1)=aambb*di
    894 dxc2(1,3)=ab2*aambb*x*ddi
    895 dxc2(2,2)=aambb*di
    896 dxc2(2,3)=ab2*aambb*y*ddi
    897 dxc2(3,3)=aapbb*di +ab2*e*ddi
    898 
    899 ddxc2=u0
    900 ddxc2(1,1,3)=ab2*aambb*ddi
    901 ddxc2(1,3,1)=ddxc2(1,1,3)
    902 ddxc2(1,3,3)=u2*ab2**2*aambb*x*dddi
    903 ddxc2(2,2,3)=ab2*aambb*ddi
    904 ddxc2(2,3,2)=ddxc2(2,2,3)
    905 ddxc2(2,3,3)=u2*ab2**2*aambb*y*dddi
    906 ddxc2(3,3,3)=u2*ab2*(aapbb*ddi+ab2*e*dddi)
    907 end subroutine sctocdd
    908 
    915 subroutine dctoc(s,xc1,xc2)! [ctoc_schm]
    916 use pietc, only: u1,u2
    917 implicit none
    918 real(dp), intent(IN ):: s
    919 real(dp),dimension(3),intent(INOUT):: xc1,xc2
    920 real(dp) :: x,y,z,a,b,d,e, &
    921  ab2,aa,bb,di,aapbb,aambb
    922 x=xc1(1); y=xc1(2); z=xc1(3)
    923 a=s+u1
    924 b=s-u1
    925 ab2=a*b*u2
    926 aa=a*a
    927 bb=b*b
    928 aapbb=aa+bb
    929 aambb=aa-bb
    930 d=aapbb-ab2*z
    931 e=aapbb*z-ab2
    932 di=u1/d
    933 xc2(1)=(aambb*x)*di
    934 xc2(2)=(aambb*y)*di
    935 xc2(3)=e*di
    936 end subroutine dctoc
    937 
    946 subroutine dctocd(s,xc1,xc2,dxc2)! [ctoc_schm]
    947 use pietc, only: u0,u1,u2
    948 implicit none
    949 real(dp), intent(IN ):: s
    950 real(dp),dimension(3), intent(INOUT):: xc1,xc2
    951 real(dp),dimension(3,3),intent( OUT):: dxc2
    952 real(dp) :: x,y,z,a,b,d,e, &
    953  ab2,aa,bb,di,ddi,aapbb,aambb
    954 x=xc1(1); y=xc1(2); z=xc1(3)
    955 a=s+u1
    956 b=s-u1
    957 ab2=a*b*u2
    958 aa=a*a
    959 bb=b*b
    960 aapbb=aa+bb
    961 aambb=aa-bb
    962 d=aapbb-ab2*z
    963 e=aapbb*z-ab2
    964 di=u1/d
    965 xc2(1)=(aambb*x)*di
    966 xc2(2)=(aambb*y)*di
    967 xc2(3)=e*di
    968 ddi=di*di
    969 
    970 dxc2=u0
    971 dxc2(1,1)=aambb*di
    972 dxc2(1,3)=ab2*aambb*x*ddi
    973 dxc2(2,2)=aambb*di
    974 dxc2(2,3)=ab2*aambb*y*ddi
    975 dxc2(3,3)=aapbb*di +ab2*e*ddi
    976 end subroutine dctocd
    977 
    987 subroutine dctocdd(s,xc1,xc2,dxc2,ddxc2)! [ctoc_schm]
    988 use pietc, only: u0,u1,u2
    989 implicit none
    990 real(dp),intent(IN) :: s
    991 real(dp),dimension(3), intent(INOUT):: xc1,xc2
    992 real(dp),dimension(3,3), intent(OUT ):: dxc2
    993 real(dp),dimension(3,3,3),intent(OUT ):: ddxc2
    994 real(dp) :: x,y,z,a,b,d,e, &
    995  ab2,aa,bb,di,ddi,dddi, &
    996  aapbb,aambb
    997 x=xc1(1); y=xc1(2); z=xc1(3)
    998 a=s+u1
    999 b=s-u1
    1000 ab2=a*b*u2
    1001 aa=a*a
    1002 bb=b*b
    1003 aapbb=aa+bb
    1004 aambb=aa-bb
    1005 d=aapbb-ab2*z
    1006 e=aapbb*z-ab2
    1007 di=u1/d
    1008 xc2(1)=(aambb*x)*di
    1009 xc2(2)=(aambb*y)*di
    1010 xc2(3)=e*di
    1011 ddi=di*di
    1012 dddi=ddi*di
    1013 
    1014 dxc2=u0
    1015 dxc2(1,1)=aambb*di
    1016 dxc2(1,3)=ab2*aambb*x*ddi
    1017 dxc2(2,2)=aambb*di
    1018 dxc2(2,3)=ab2*aambb*y*ddi
    1019 dxc2(3,3)=aapbb*di +ab2*e*ddi
    1020 
    1021 ddxc2=u0
    1022 ddxc2(1,1,3)=ab2*aambb*ddi
    1023 ddxc2(1,3,1)=ddxc2(1,1,3)
    1024 ddxc2(1,3,3)=u2*ab2**2*aambb*x*dddi
    1025 ddxc2(2,2,3)=ab2*aambb*ddi
    1026 ddxc2(2,3,2)=ddxc2(2,2,3)
    1027 ddxc2(2,3,3)=u2*ab2**2*aambb*y*dddi
    1028 ddxc2(3,3,3)=u2*ab2*(aapbb*ddi+ab2*e*dddi)
    1029 end subroutine dctocdd
    1030 
    1039 subroutine plrot(rot3,n,x,y,z)! [plrot]
    1040 implicit none
    1041 integer, intent(IN ):: n
    1042 real(sp),dimension(3,3),intent(IN ):: rot3
    1043 real(sp),dimension(n), intent(INOUT):: x,y,z
    1044 real(sp),dimension(3) :: t
    1045 integer :: k
    1046 do k=1,n
    1047  t(1)=x(k); t(2)=y(k); t(3)=z(k)
    1048  t=matmul(rot3,t)
    1049  x(k)=t(1); y(k)=t(2); z(k)=t(3)
    1050 enddo
    1051 end subroutine plrot
    1052 
    1061 subroutine plroti(rot3,n,x,y,z)! [plroti]
    1062 implicit none
    1063 integer, intent(IN ):: n
    1064 real(sp),dimension(3,3),intent(IN ):: rot3
    1065 real(sp),dimension(n), intent(INOUT):: x,y,z
    1066 real(sp),dimension(3) :: t
    1067 integer :: k
    1068 do k=1,n
    1069  t(1)=x(k); t(2)=y(k); t(3)=z(k)
    1070  t=matmul(t,rot3)
    1071  x(k)=t(1); y(k)=t(2); z(k)=t(3)
    1072 enddo
    1073 end subroutine plroti
    1074 
    1083 subroutine dplrot(rot3,n,x,y,z)! [plrot]
    1084 implicit none
    1085 integer, intent(IN ):: n
    1086 real(dP),dimension(3,3),intent(IN ):: rot3
    1087 real(dP),dimension(n), intent(INOUT):: x,y,z
    1088 real(dP),dimension(3) :: t
    1089 integer :: k
    1090 do k=1,n
    1091  t(1)=x(k); t(2)=y(k); t(3)=z(k)
    1092  t=matmul(rot3,t)
    1093  x(k)=t(1); y(k)=t(2); z(k)=t(3)
    1094 enddo
    1095 end subroutine dplrot
    1096 
    1105 subroutine dplroti(rot3,n,x,y,z)! [plroti]
    1106 implicit none
    1107 integer, intent(IN ):: n
    1108 real(dP),dimension(3,3),intent(IN ):: rot3
    1109 real(dP),dimension(n), intent(INOUT):: x,y,z
    1110 real(dP),dimension(3) :: t
    1111 integer :: k
    1112 do k=1,n
    1113  t(1)=x(k); t(2)=y(k); t(3)=z(k)
    1114  t=matmul(t,rot3)
    1115  x(k)=t(1); y(k)=t(2); z(k)=t(3)
    1116 enddo
    1117 end subroutine dplroti
    1118 
    1127 subroutine plctoc(s,n,x,y,z)! [plctoc]
    1128 use pietc_s, only: u1
    1129 implicit none
    1130 integer, intent(IN ):: n
    1131 real(sp), intent(IN ):: s
    1132 real(sp),dimension(n),intent(INOUT):: x,y,z
    1133 real(sp) :: a,b,d,e,ab2,aa,bb,di,aapbb,aambb
    1134 integer :: i
    1135 a=s+u1
    1136 b=s-u1
    1137 ab2=a*b*2
    1138 aa=a*a
    1139 bb=b*b
    1140 aapbb=aa+bb
    1141 aambb=aa-bb
    1142 do i=1,n
    1143  d=aapbb-ab2*z(i)
    1144  e=aapbb*z(i)-ab2
    1145  di=1/d
    1146  x(i)=(aambb*x(i))*di
    1147  y(i)=(aambb*y(i))*di
    1148  z(i)=e*di
    1149 enddo
    1150 end subroutine plctoc
    1151 
    1152 end module pmat5
    1153 
    1154 
    1155 
    subroutine sctog(xe, dlat, dlon)
    Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:373
    +
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    + + +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    subroutine sgtocdd(dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:528
    +
    subroutine sinivmap(alon0, alat0, rot3)
    Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
    Definition: pmat5.f90:108
    +
    Constants for orientation and stretching of map.
    Definition: pmat5.f90:17
    +
    subroutine sgrtoc(rlat, rlon, xe)
    Transform "Geographical" to "Cartesian" coordinates.
    Definition: pmat5.f90:220
    +
    subroutine sgtoframev(splat, splon, sxp, syp, szp)
    Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal ...
    Definition: pmat5.f90:637
    +
    Constants for orientation and stretching of map.
    Definition: pmat5.f90:7
    +
    real(dp) sc
    Schmidt stretching factor.
    Definition: pmat5.f90:21
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    + +
    real(dp) sci
    Schmidt inverse stretching factor.
    Definition: pmat5.f90:22
    + +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    subroutine dctocd(s, xc1, xc2, dxc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
    Definition: pmat5.f90:947
    +
    real(dp), parameter u2
    two
    Definition: pietc.f90:22
    +
    subroutine dplrot(rot3, n, x, y, z)
    Apply a constant rotation to a three dimensional polyline.
    Definition: pmat5.f90:1084
    +
    subroutine dgtocdd(dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:565
    +
    subroutine sctogr(xe, rlat, rlon)
    Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:173
    +
    subroutine sgrtocdd(rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
    Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivative...
    Definition: pmat5.f90:307
    + +
    subroutine dgrtoc(rlat, rlon, xe)
    Transform "Geographical" to "Cartesian" coordinates.
    Definition: pmat5.f90:237
    +
    real(sp) sc
    Schmidt stretching factor.
    Definition: pmat5.f90:11
    +
    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...
    Definition: pmat5.f90:696
    +
    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...
    Definition: pmat5.f90:751
    +
    subroutine dctog(xe, dlat, dlon)
    Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:398
    +
    subroutine gtoframem(plat, plon, orth)
    From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location ...
    Definition: pmat5.f90:617
    + +
    real(sp), dimension(3, 3) rotm
    Orthogonal rotation matrix.
    Definition: pmat5.f90:10
    + +
    subroutine dgrtocdd(rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
    Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivative...
    Definition: pmat5.f90:340
    + + +
    subroutine sctocd(s, xc1, xc2, dxc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
    Definition: pmat5.f90:825
    +
    real(dp), dimension(3, 3) rotm
    Orthogonal rotation matrix.
    Definition: pmat5.f90:20
    + + +
    Module for handy vector and matrix operations in Euclidean geometry.
    Definition: pmat4.f90:45
    +
    subroutine sctoc(s, xc1, xc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.
    Definition: pmat5.f90:795
    +
    subroutine dctocdd(s, xc1, xc2, dxc2, ddxc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
    Definition: pmat5.f90:988
    + +
    subroutine sgtoframem(splat, splon, sorth)
    From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location ...
    Definition: pmat5.f90:600
    +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    +
    subroutine sctocdd(s, xc1, xc2, dxc2, ddxc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
    Definition: pmat5.f90:866
    +
    real(dp), parameter dtor
    Degrees to radians.
    Definition: pietc.f90:54
    +
    subroutine dgrtocd(rlat, rlon, xe, dxedlat, dxedlon)
    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesi...
    Definition: pmat5.f90:280
    +
    real(dp), parameter rtod
    radians to degrees
    Definition: pietc.f90:55
    +
    subroutine sgrtocd(rlat, rlon, xe, dxedlat, dxedlon)
    Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesi...
    Definition: pmat5.f90:257
    +
    subroutine gtoframev(plat, plon, xp, yp, zp)
    Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal ...
    Definition: pmat5.f90:662
    +
    subroutine dinivmap(alon0, alat0, rot3)
    Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
    Definition: pmat5.f90:140
    +
    subroutine sininmap(alon0, alat0, rot3)
    Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
    Definition: pmat5.f90:64
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    subroutine sgtocd(dlat, dlon, xe, dxedlat, dxedlon)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:470
    + +
    subroutine dplroti(rot3, n, x, y, z)
    Invert the rotation of a three-dimensional polyline.
    Definition: pmat5.f90:1106
    +
    subroutine dgtoc(dlat, dlon, xe)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:445
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    subroutine sgtoc(dlat, dlon, xe)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:423
    +
    subroutine dctogr(xe, rlat, rlon)
    Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:198
    +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    real(sp) sci
    Schmidt inverse stretching factor.
    Definition: pmat5.f90:12
    +
    Utility routines for orienting the globe and basic geographical mappings.
    Definition: pmat5.f90:27
    + + +
    subroutine dgtocd(dlat, dlon, xe, dxedlat, dxedlon)
    Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
    Definition: pmat5.f90:496
    +
    subroutine dininmap(alon0, alat0, rot3)
    Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
    Definition: pmat5.f90:86
    +
    subroutine dctoc(s, xc1, xc2)
    Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.
    Definition: pmat5.f90:916
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat_8f90.html b/ver-1.11.0/grid_tools/pmat_8f90.html new file mode 100644 index 000000000..2ae5298ad --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat_8f90.html @@ -0,0 +1,2734 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    pmat.f90 File Reference
    +
    +
    + +

    Utility routines for various linear inversions and Cholesky. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  pmat::inv
     
    interface  pmat::invl
     
    interface  pmat::invu
     
    interface  pmat::l1lm
     
    interface  pmat::ldlm
     
    interface  pmat::ldum
     
    interface  pmat::swpvv
     
    interface  pmat::udlmm
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine pmat::cinvmt (a)
     Invert complex matrix in place. More...
     
    subroutine pmat::cinvmtf (a, ff)
     Invert a complex matrix in place, or flag if process fails. More...
     
    subroutine pmat::cldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine pmat::cldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    subroutine pmat::clinmmt (a, b)
     Invert complex linear system with multiple right-hand side vectors. More...
     
    subroutine pmat::clinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine pmat::clinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine pmat::clinmvtf (a, b, ff)
     Invert complex linear system with single right-hand side vector. More...
     
    subroutine pmat::cswpvv (d, e)
     Swap a pair of complex vectors. More...
     
    subroutine pmat::cudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine pmat::cudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine pmat::dinvl (a)
     Invert lower triangular matrix in place. More...
     
    subroutine pmat::dinvmt (a)
     Invert double precision matrix in place. More...
     
    subroutine pmat::dinvmtf (a, ff)
     Invert a double precision matrix in place, or flag if process fails. More...
     
    subroutine pmat::dinvu (a)
     Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
     
    subroutine pmat::dl1lm (a, b)
     Cholesky, M -> L*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::dl1lmf (a, b, ff)
     Cholesky, M -> L*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::dldlm (a, b, d)
     Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::dldlmf (a, b, d, ff)
     Modified Cholesky Q –> L*D*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::dldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine pmat::dldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    subroutine pmat::dlinlv (a, u)
     Solve linear system involving lower triangular system matrix. More...
     
    subroutine pmat::dlinmmt (a, b)
     Invert linear system with multiple right-hand side vectors. More...
     
    subroutine pmat::dlinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine pmat::dlinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine pmat::dlinmvtf (a, b, ff)
     Invert linear system with single right-hand side vector. More...
     
    subroutine pmat::dlinuv (a, u)
     Solve linear system involving upper triangular system matrix. More...
     
    subroutine pmat::dswpvv (d, e)
     Swap a pair of double precision vectors. More...
     
    subroutine pmat::dudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine pmat::dudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine pmat::iinvf (imat, ff)
     Invert integer square matrix, imat, if possible, but flag ff=.true. More...
     
    subroutine pmat::sinvl (a)
     Invert lower triangular matrix in place. More...
     
    subroutine pmat::sinvmt (a)
     Invert single precision matrix in place. More...
     
    subroutine pmat::sinvmtf (a, ff)
     Invert a single precision matrix in place, or flag if process fails. More...
     
    subroutine pmat::sinvu (a)
     Invert the upper triangular matrix in place by transposing, calling invl, and transposing again. More...
     
    subroutine pmat::sl1lm (a, b)
     Cholesky, M -> L*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::sl1lmf (a, b, ff)
     Cholesky, M -> L*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::sldlm (a, b, d)
     Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::sldlmf (a, b, d, ff)
     Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i) More...
     
    subroutine pmat::sldum (a, ipiv, d)
     Perform L*D*U decomposition, with pivoting, of square matrix. More...
     
    subroutine pmat::sldumf (a, ipiv, d, ff)
     Perform l-d-u decomposition of square matrix a in place with pivoting. More...
     
    subroutine pmat::slinlv (a, u)
     Solve linear system involving lower triangular system matrix. More...
     
    subroutine pmat::slinmmt (a, b)
     Invert linear system with multiple right-hand side vectors. More...
     
    subroutine pmat::slinmmtf (a, b, ff)
     Invert linear system with multiple right-hand side vectors, or flag failure. More...
     
    subroutine pmat::slinmvt (a, b)
     Invert linear system with single right-hand side vector. More...
     
    subroutine pmat::slinmvtf (a, b, ff)
     Invert linear system with single right-hand side vector. More...
     
    subroutine pmat::slinuv (a, u)
     Solve linear system involving upper triangular system matrix. More...
     
    subroutine pmat::sswpvv (d, e)
     Swap a pair of single precision vectors. More...
     
    subroutine pmat::sudlmm (a, b, ipiv)
     Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    subroutine pmat::sudlmv (a, b, ipiv)
     Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition. More...
     
    +

    Detailed Description

    +

    Utility routines for various linear inversions and Cholesky.

    +
    Author
    R. J. Purser, NOAA/NCEP/EMC, Tsukasa Fujita, JMA.
    + +

    Definition in file pmat.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ cinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::cinvmt (complex(dpc), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert complex matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 104 of file pmat.f90.

    + +
    +
    + +

    ◆ cinvmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cinvmtf (complex(dpc), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert a complex matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 191 of file pmat.f90.

    + +

    References pietc::c1.

    + +
    +
    + +

    ◆ cldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cldum (complex(dpc), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    complex(dpc), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Complex double precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 509 of file pmat.f90.

    + +
    +
    + +

    ◆ cldumf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cldumf (complex(dpc), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    complex(dpc), intent(out) d,
    logical, intent(out) ff 
    )
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Complex double precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 660 of file pmat.f90.

    + +

    References pietc::c0, pietc::c1, pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ clinmmt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::clinmmt (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert complex linear system with multiple right-hand side vectors.

    +

    Complex double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 256 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::clinmmtf (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Complex double precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 320 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::clinmvt (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Complex double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 372 of file pmat.f90.

    + +
    +
    + +

    ◆ clinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::clinmvtf (complex(dpc), dimension(:,:), intent(inout) a,
    complex(dpc), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert complex linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 430 of file pmat.f90.

    + +
    +
    + +

    ◆ cswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cswpvv (complex(dpc), dimension(:), intent(inout) d,
    complex(dpc), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of complex vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 72 of file pmat.f90.

    + +
    +
    + +

    ◆ cudlmm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cudlmm (complex(dpc), dimension(:,:), intent(in) a,
    complex(dpc), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 798 of file pmat.f90.

    + +

    References pietc::c1.

    + +
    +
    + +

    ◆ cudlmv()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::cudlmv (complex(dpc), dimension(:,:), intent(in) a,
    complex(dpc), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]bright-hand side vector on input, corresponding solution on return
    [in]ipivarray encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 893 of file pmat.f90.

    + +

    References pietc::c1.

    + +
    +
    + +

    ◆ dinvl()

    + +
    +
    + + + + + + + + +
    subroutine pmat::dinvl (real(dp), dimension(:,:), intent(inout) a)
    +
    + +

    Invert lower triangular matrix in place.

    +

    Double precision.

    +
    Parameters
    + + +
    [in,out]alower triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1154 of file pmat.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::dinvmt (real(dp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert double precision matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 93 of file pmat.f90.

    + +
    +
    + +

    ◆ dinvmtf()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dinvmtf (real(dp), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    + +

    Invert a double precision matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 154 of file pmat.f90.

    + +
    +
    + +

    ◆ dinvu()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::dinvu (real(dp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

    +

    Double precision version.

    +
    Parameters
    + + +
    [in,out]aupper triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1127 of file pmat.f90.

    + +
    +
    + +

    ◆ dl1lm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dl1lm (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Cholesky, M -> L*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + +
    [in]asymmetric matrix.
    [in,out]bCholesky factor matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 934 of file pmat.f90.

    + +
    +
    + +

    ◆ dl1lmf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dl1lmf (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    + +

    Cholesky, M -> L*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + +
    [in]asymmetric matrix.
    [in,out]bCholesky factor matrix.
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 982 of file pmat.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dldlm()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dldlm (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b,
    real(dp), dimension(:), intent(out) d 
    )
    +
    +private
    +
    + +

    Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + +
    [in]asymmetric matrix.
    [in,out]boutput modified cholesky factor, L.
    [out]ddiagonal matrix, D.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1031 of file pmat.f90.

    + +
    +
    + +

    ◆ dldlmf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dldlmf (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b,
    real(dp), dimension(:), intent(out) d,
    logical, intent(out) ff 
    )
    +
    + +

    Modified Cholesky Q –> L*D*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + + +
    [in]asymmetric matrix.
    [in,out]bmodified Cholesky factor, L.
    [out]ddiagonal matrix, D.
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1084 of file pmat.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dldum (real(dp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(dp), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 493 of file pmat.f90.

    + +
    +
    + +

    ◆ dldumf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dldumf (real(dp), dimension(:,:), intent(inout) a,
    integer, dimension(:), intent(out) ipiv,
    real(dp), intent(out) d,
    logical(spi), intent(out) ff 
    )
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Double precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 593 of file pmat.f90.

    + +

    References pietc::u0, and pietc::u1.

    + +
    +
    + +

    ◆ dlinlv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinlv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving lower triangular system matrix.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]alower triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1189 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmmt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinmmt (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:,:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors.

    +

    Double precision version

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 243 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinmmtf (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Double precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 295 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinmvt (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 358 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinmvtf (real(dp), dimension(:,:), intent(inout) a,
    real(dp), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 408 of file pmat.f90.

    + +
    +
    + +

    ◆ dlinuv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dlinuv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving upper triangular system matrix.

    +

    Double precision version.

    +
    Parameters
    + + + +
    [in]aupper triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1219 of file pmat.f90.

    + +
    +
    + +

    ◆ dswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dswpvv (real(dp), dimension(:), intent(inout) d,
    real(dp), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of double precision vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 61 of file pmat.f90.

    + +
    +
    + +

    ◆ dudlmm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dudlmm (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 764 of file pmat.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ dudlmv()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::dudlmv (real(dp), dimension(:,:), intent(in) a,
    real(dp), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]asquare matrix to be factorized
    [in,out]bright-hand side vector on input, corresponding solution on return
    [in]ipivarray encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 862 of file pmat.f90.

    + +

    References pietc::u1.

    + +
    +
    + +

    ◆ iinvf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::iinvf (integer(spi), dimension(:,:), intent(inout) imat,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert integer square matrix, imat, if possible, but flag ff=.true.

    +

    if not possible. (Determinant of imat must be +1 or -1)

    +
    Parameters
    + + + +
    [in,out]imatinteger square matrix
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 452 of file pmat.f90.

    + +

    References pietc::t.

    + +
    +
    + +

    ◆ sinvl()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::sinvl (real(sp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert lower triangular matrix in place.

    +

    Single precision.

    +
    Parameters
    + + +
    [in,out]alower triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1136 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvmt()

    + +
    +
    + + + + + +
    + + + + + + + + +
    subroutine pmat::sinvmt (real(sp), dimension(:,:), intent(inout) a)
    +
    +private
    +
    + +

    Invert single precision matrix in place.

    +
    Parameters
    + + +
    [in,out]amatrix
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 82 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sinvmtf (real(sp), dimension(:,:), intent(inout) a,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert a single precision matrix in place, or flag if process fails.

    +
    Parameters
    + + + +
    [in,out]amatrix
    [out]ffflag for error condition
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 116 of file pmat.f90.

    + +
    +
    + +

    ◆ sinvu()

    + +
    +
    + + + + + + + + +
    subroutine pmat::sinvu (real(sp), dimension(:,:), intent(inout) a)
    +
    + +

    Invert the upper triangular matrix in place by transposing, calling invl, and transposing again.

    +

    Single precision version.

    +
    Parameters
    + + +
    [in,out]aupper triangular matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1117 of file pmat.f90.

    + +
    +
    + +

    ◆ sl1lm()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sl1lm (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b 
    )
    +
    + +

    Cholesky, M -> L*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + +
    [in]asymmetric matrix.
    [in,out]bCholesky factor matrix.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 921 of file pmat.f90.

    + +
    +
    + +

    ◆ sl1lmf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sl1lmf (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Cholesky, M -> L*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + +
    [in]asymmetric matrix.
    [in,out]bCholesky factor matrix.
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 948 of file pmat.f90.

    + +

    References pietc::f.

    + +
    +
    + +

    ◆ sldlm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sldlm (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b,
    real(sp), dimension(:), intent(out) d 
    )
    +
    + +

    Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + +
    [in]asymmetric matrix.
    [in,out]boutput modified cholesky factor, L.
    [out]ddiagonal matrix, D.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1016 of file pmat.f90.

    + +
    +
    + +

    ◆ sldlmf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sldlmf (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b,
    real(sp), dimension(:), intent(out) d,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Modified Cholesky decompose Q –> L*D*U, U(i,j)=L(j,i)

    +
    Parameters
    + + + + + +
    [in]asymmetric matrix
    [in,out]bmodified cholesky factor, L.
    [out]ddiagonal matrix, D.
    [out]fferror flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1047 of file pmat.f90.

    + +

    References pietc::f.

    + +
    +
    + +

    ◆ sldum()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sldum (real(sp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(sp), intent(out) d 
    )
    +
    +private
    +
    + +

    Perform L*D*U decomposition, with pivoting, of square matrix.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in,out]ainput square matrix, output L,D,U factors
    [out]ddeterminant sign change indicator (+1 or -1)
    [out]ipivvector of pivots
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 477 of file pmat.f90.

    + +
    +
    + +

    ◆ sldumf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sldumf (real(sp), dimension(:,:), intent(inout) a,
    integer(spi), dimension(:), intent(out) ipiv,
    real(sp), intent(out) d,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Perform l-d-u decomposition of square matrix a in place with pivoting.

    +

    Single precision version.

    +
    Parameters
    + + + + + +
    [in,out]asquare matrix to be factorized
    [out]ipivvector encoding the pivoting sequence
    [out]dindicator for possible sign change of determinant
    [out]fffailure flag, set to .true. when determinant of a vanishes.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 526 of file pmat.f90.

    + +

    References pietc::f, and pietc::t.

    + +
    +
    + +

    ◆ slinlv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinlv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) u 
    )
    +
    + +

    Solve linear system involving lower triangular system matrix.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]alower triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1174 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmmt()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinmmt (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:,:), intent(inout) b 
    )
    +
    + +

    Invert linear system with multiple right-hand side vectors.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 230 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmmtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinmmtf (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:,:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with multiple right-hand side vectors, or flag failure.

    +

    Single precision version.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vectors, output solution vectors
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 270 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmvt()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinmvt (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:), intent(inout) b 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 344 of file pmat.f90.

    + +
    +
    + +

    ◆ slinmvtf()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinmvtf (real(sp), dimension(:,:), intent(inout) a,
    real(sp), dimension(:), intent(inout) b,
    logical, intent(out) ff 
    )
    +
    +private
    +
    + +

    Invert linear system with single right-hand side vector.

    +
    Parameters
    + + + + +
    [in,out]aInvertible system matrix, destroyed on output
    [in,out]binput RHS vector, output solution vector
    [out]fffailure flag
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 386 of file pmat.f90.

    + +
    +
    + +

    ◆ slinuv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::slinuv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) u 
    )
    +
    +private
    +
    + +

    Solve linear system involving upper triangular system matrix.

    +

    Single precision version.

    +
    Parameters
    + + + +
    [in]aupper triangular matrix.
    [in,out]uinput RHS vector, output solution vector.
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 1204 of file pmat.f90.

    + +
    +
    + +

    ◆ sswpvv()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sswpvv (real(sp), dimension(:), intent(inout) d,
    real(sp), dimension(:), intent(inout) e 
    )
    +
    +private
    +
    + +

    Swap a pair of single precision vectors.

    +
    Parameters
    + + + +
    [in,out]dvector
    [in,out]evector
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 50 of file pmat.f90.

    + +
    +
    + +

    ◆ sudlmm()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sudlmm (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:,:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for several rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]aL-D-U factorization of linear system matrux
    [in,out]brt-hand-sides vectors on input, corresponding solutions on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 730 of file pmat.f90.

    + +
    +
    + +

    ◆ sudlmv()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine pmat::sudlmv (real(sp), dimension(:,:), intent(in) a,
    real(sp), dimension(:), intent(inout) b,
    integer(spi), dimension(:), intent(in) ipiv 
    )
    +
    + +

    Use l-u factors in A to back-substitute for 1 rhs in B, using ipiv to define the pivoting permutation used in the l-u decomposition.

    +
    Parameters
    + + + + +
    [in]aL-D-U factorization of linear system matrix
    [in,out]bright-hand-side vector on input, corresponding solution on return
    [in]ipivvector encoding the pivoting sequence
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 831 of file pmat.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/pmat_8f90.js b/ver-1.11.0/grid_tools/pmat_8f90.js new file mode 100644 index 000000000..746f41a3c --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat_8f90.js @@ -0,0 +1,61 @@ +var pmat_8f90 = +[ + [ "inv", "interfacepmat_1_1inv.html", "interfacepmat_1_1inv" ], + [ "invl", "interfacepmat_1_1invl.html", "interfacepmat_1_1invl" ], + [ "invu", "interfacepmat_1_1invu.html", "interfacepmat_1_1invu" ], + [ "l1lm", "interfacepmat_1_1l1lm.html", "interfacepmat_1_1l1lm" ], + [ "ldlm", "interfacepmat_1_1ldlm.html", "interfacepmat_1_1ldlm" ], + [ "ldum", "interfacepmat_1_1ldum.html", "interfacepmat_1_1ldum" ], + [ "swpvv", "interfacepmat_1_1swpvv.html", "interfacepmat_1_1swpvv" ], + [ "udlmm", "interfacepmat_1_1udlmm.html", "interfacepmat_1_1udlmm" ], + [ "cinvmt", "pmat_8f90.html#a66211bbfe11ffae8c686f04052b9b264", null ], + [ "cinvmtf", "pmat_8f90.html#a94d1e16e885b4c488589b98c5849fa83", null ], + [ "cldum", "pmat_8f90.html#a59e712821f27ada7cd57a4d93c70ca37", null ], + [ "cldumf", "pmat_8f90.html#a4fe736bfe557ab9a5cc8776d88393c1c", null ], + [ "clinmmt", "pmat_8f90.html#ac90feb7c74178faa8893d27633e2500b", null ], + [ "clinmmtf", "pmat_8f90.html#a2ffb1c02ee814c3ae2098d1853bf459f", null ], + [ "clinmvt", "pmat_8f90.html#a171b16d03b758c0b49b7737e943a37bc", null ], + [ "clinmvtf", "pmat_8f90.html#a590b727eba1ad1ff53d83eeae7be4555", null ], + [ "cswpvv", "pmat_8f90.html#afc3f8ac9d411ec8f798a9f4d8b2b9cc0", null ], + [ "cudlmm", "pmat_8f90.html#a9419241750e7abcf568d22472fc4e995", null ], + [ "cudlmv", "pmat_8f90.html#ac8e50cc3f472a5d643c01ba01c437f3e", null ], + [ "dinvl", "pmat_8f90.html#a340a8e702bf9f2a53cf7d6d934f3516d", null ], + [ "dinvmt", "pmat_8f90.html#a71bc03f739c87071fb018f27aaf1d400", null ], + [ "dinvmtf", "pmat_8f90.html#a8299294f6e383b9be82dc715d9799994", null ], + [ "dinvu", "pmat_8f90.html#a5a0be795be2eb1a8b5fc32437056024e", null ], + [ "dl1lm", "pmat_8f90.html#a581f37f3e10b26605939b9f5156c6739", null ], + [ "dl1lmf", "pmat_8f90.html#a3ce1933279800ac21369bff64c9d2a8f", null ], + [ "dldlm", "pmat_8f90.html#ae3fb3004218867f277158575acedee5c", null ], + [ "dldlmf", "pmat_8f90.html#af0dab32a7dd0aba890b0f63a112a8c80", null ], + [ "dldum", "pmat_8f90.html#a8a5e2dd82a077ac98f57ed1a4ed5e433", null ], + [ "dldumf", "pmat_8f90.html#a02ab16ee448b68fe02f74287fdd5258f", null ], + [ "dlinlv", "pmat_8f90.html#a26a01faeaa2ef72c7e235fe9817cc3de", null ], + [ "dlinmmt", "pmat_8f90.html#ad6dd2dbd4aefceee6ba7bc5358b46401", null ], + [ "dlinmmtf", "pmat_8f90.html#ad488bc4521e04843f72dc28f4653b1ff", null ], + [ "dlinmvt", "pmat_8f90.html#ae18dfc718b63680ed68e2cfed436759d", null ], + [ "dlinmvtf", "pmat_8f90.html#a485292f517d1258b62751dcf116db133", null ], + [ "dlinuv", "pmat_8f90.html#a7dc0cf519521ccaa2412ccc7e4f852f2", null ], + [ "dswpvv", "pmat_8f90.html#a74f5d0fdbcaf59bedf21da3432ea3a14", null ], + [ "dudlmm", "pmat_8f90.html#af34f6abbad1377098823de8461ef3950", null ], + [ "dudlmv", "pmat_8f90.html#a9d1caf30f25b173377120f68e0549ebb", null ], + [ "iinvf", "pmat_8f90.html#aa6c568105ff3348951ef98425fdfb46f", null ], + [ "sinvl", "pmat_8f90.html#a42525bcdb1bd741fabb1cc3df45393ac", null ], + [ "sinvmt", "pmat_8f90.html#aa39cfa5d6acc912cda77a29458af63ec", null ], + [ "sinvmtf", "pmat_8f90.html#a462dc0fcae258db5e534c2581e83889e", null ], + [ "sinvu", "pmat_8f90.html#a5bae9e9a492ac991e73e87775bbb77a5", null ], + [ "sl1lm", "pmat_8f90.html#ac39b0c62c5d17cae755b5739251bc657", null ], + [ "sl1lmf", "pmat_8f90.html#a1c6ebdd10a0608e8759be8168fe4333d", null ], + [ "sldlm", "pmat_8f90.html#a2d81720fc6ed0437584df1f3a59500a2", null ], + [ "sldlmf", "pmat_8f90.html#a1667dce1a775eb86325ca0dfb7718533", null ], + [ "sldum", "pmat_8f90.html#a856ca83cb41eaf59ab60f8a37dbc930e", null ], + [ "sldumf", "pmat_8f90.html#a838016f3e2b24ba0f0d2870809d7ad65", null ], + [ "slinlv", "pmat_8f90.html#a1887bccb02f53f4bb5f8812e349ab6f6", null ], + [ "slinmmt", "pmat_8f90.html#ae39bbc722548698b5477fb77eb5e6a9d", null ], + [ "slinmmtf", "pmat_8f90.html#a5a24710e78c8fd7c353774b9682d6055", null ], + [ "slinmvt", "pmat_8f90.html#a581402136224580895f89b639e43b2fa", null ], + [ "slinmvtf", "pmat_8f90.html#a5fd1ca9125b6165b24fb33ef92dbada9", null ], + [ "slinuv", "pmat_8f90.html#a7d5c37f047b3402981b9a789ae2142f3", null ], + [ "sswpvv", "pmat_8f90.html#a8f0f2fac13558429889da5429d8530a9", null ], + [ "sudlmm", "pmat_8f90.html#a4654b557988c2be5a7f648073128f70d", null ], + [ "sudlmv", "pmat_8f90.html#ac7132279f375723b23d9fed6b93803f6", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/pmat_8f90_source.html b/ver-1.11.0/grid_tools/pmat_8f90_source.html new file mode 100644 index 000000000..8237dffc2 --- /dev/null +++ b/ver-1.11.0/grid_tools/pmat_8f90_source.html @@ -0,0 +1,126 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/pmat.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pmat.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    6 !! Utility routines for various linear inversions and Cholesky.
    7 !!
    8 !! Originally, these routines were copies of the purely "inversion" members
    9 !! of pmat1.f90 (a most extensive collection of matrix routines -- not just
    10 !! inversions). As well as having both single and double precision versions
    11 !! of each routine, these versions also make provision for a more graceful
    12 !! termination in cases where the system matrix is detected to be
    13 !! essentially singular (and therefore noninvertible). This provision takes
    14 !! the form of an optional "failure flag", FF, which is normally returned
    15 !! as .FALSE., but is returned as .TRUE. when inversion fails.
    16 !! In Sep 2012, these routines were collected together into pmat.f90 so
    17 !! that all the main matrix routines could be in the same library, pmat.a.
    18 !!
    19 !! @author R. J. Purser
    20 module pmat
    21 use pkind, only: spi,sp,dp,spc,dpc
    22 use pietc, only: t,f
    23 implicit none
    24 private
    25 public:: ldum,udlmm,inv,l1lm,ldlm,invl,invu
    26 interface swpvv; module procedure sswpvv,dswpvv,cswpvv; end interface
    27 interface ldum
    28  module procedure sldum,dldum,cldum,sldumf,dldumf,cldumf; end interface
    29 interface udlmm
    30  module procedure sudlmm,dudlmm,cudlmm,sudlmv,dudlmv,cudlmv; end interface
    31 interface inv
    32  module procedure &
    33 sinvmt, dinvmt, cinvmt, slinmmt, dlinmmt, clinmmt, slinmvt, dlinmvt, clinmvt, &
    34 sinvmtf,dinvmtf,cinvmtf,slinmmtf,dlinmmtf,clinmmtf,slinmvtf,dlinmvtf,clinmvtf,&
    35 iinvf
    36  end interface
    37 interface l1lm; module procedure sl1lm,dl1lm,sl1lmf,dl1lmf; end interface
    38 interface ldlm; module procedure sldlm,dldlm,sldlmf,dldlmf; end interface
    39 interface invl; module procedure sinvl,dinvl,slinlv,dlinlv; end interface
    40 interface invu; module procedure sinvu,dinvu,slinuv,dlinuv; end interface
    41 
    42 contains
    43 
    49 subroutine sswpvv(d,e)! [swpvv]
    50 real(sp), intent(inout) :: d(:), e(:)
    51 real(sp) :: tv(size(d))
    52 tv = d; d = e; e = tv
    53 end subroutine sswpvv
    54 
    60 subroutine dswpvv(d,e)! [swpvv]
    61 real(dp), intent(inout) :: d(:), e(:)
    62 real(dp) :: tv(size(d))
    63 tv = d; d = e; e = tv
    64 end subroutine dswpvv
    65 
    71 subroutine cswpvv(d,e)! [swpvv]
    72 complex(dpc),intent(inout) :: d(:), e(:)
    73 complex(dpc) :: tv(size(d))
    74 tv = d; d = e; e = tv
    75 end subroutine cswpvv
    76 
    81 subroutine sinvmt(a)! [inv]
    82 real(sp),dimension(:,:),intent(INOUT):: a
    83 logical :: ff
    84 call sinvmtf(a,ff)
    85 if(ff)stop 'In sinvmt; Unable to invert matrix'
    86 end subroutine sinvmt
    87 
    92 subroutine dinvmt(a)! [inv]
    93 real(dp),dimension(:,:),intent(inout):: a
    94 logical :: ff
    95 call dinvmtf(a,ff)
    96 if(ff)stop 'In dinvmt; Unable to invert matrix'
    97 end subroutine dinvmt
    98 
    103 subroutine cinvmt(a)! [inv]
    104 complex(dpc),dimension(:,:),intent(inout):: a
    105 logical :: ff
    106 call cinvmtf(a,ff)
    107 if(ff)stop 'In cinvmt; Unable to invert matrix'
    108 end subroutine cinvmt
    109 
    115 subroutine sinvmtf(a,ff)! [inv]
    116 use pietc_s, only: u1
    117 real(sp),dimension(:,:),intent(inout):: a
    118 logical, intent( out):: ff
    119 integer(spi) :: m,i,j,jp,l
    120 real(sp) :: d
    121 integer(spi),dimension(size(a,1)):: ipiv
    122 m=size(a,1)
    123 if(m /= size(a,2))stop 'In sinvmtf; matrix passed to sinvmtf is not square'
    124 ! Perform a pivoted L-D-U decomposition on matrix a:
    125 call sldumf(a,ipiv,d,ff)
    126 if(ff)then
    127  print '(" In sinvmtf; failed call to sldumf")'
    128  return
    129 endif
    130 ! Invert upper triangular portion U in place:
    131 do i=1,m; a(i,i)=u1/a(i,i); enddo
    132 do i=1,m-1
    133  do j=i+1,m; a(i,j)=-a(j,j)*dot_product(a(i:j-1,j),a(i,i:j-1)); enddo
    134 enddo
    135 ! Invert lower triangular portion L in place:
    136 do j=1,m-1; jp=j+1
    137  do i=jp,m; a(i,j)=-a(i,j)-dot_product(a(jp:i-1,j),a(i,jp:i-1)); enddo
    138 enddo
    139 ! Form the product of U**-1 and L**-1 in place
    140 do j=1,m-1; jp=j+1
    141  do i=1,j; a(i,j)=a(i,j)+dot_product(a(jp:m,j),a(i,jp:m)); enddo
    142  do i=jp,m; a(i,j)=dot_product(a(i:m,j),a(i,i:m)); enddo
    143 enddo
    144 ! Permute columns according to ipiv
    145 do j=m-1,1,-1; l=ipiv(j); call sswpvv(a(:,j),a(:,l)); enddo
    146 end subroutine sinvmtf
    147 
    153 subroutine dinvmtf(a,ff)! [inv]
    154 real(dp),dimension(:,:),intent(inout):: a
    155 logical, intent( out):: ff
    156 integer(spi) :: m,i,j,jp,l
    157 real(dp) :: d
    158 integer(spi), dimension(size(a,1)) :: ipiv
    159 m=size(a,1)
    160 if(m /= size(a,2))stop 'In inv; matrix passed to dinvmtf is not square'
    161 ! Perform a pivoted L-D-U decomposition on matrix a:
    162 call dldumf(a,ipiv,d,ff)
    163 if(ff)then
    164  print '(" In dinvmtf; failed call to dldumf")'
    165  return
    166 endif
    167 ! Invert upper triangular portion U in place:
    168 do i=1,m; a(i,i)=1_dp/a(i,i); enddo
    169 do i=1,m-1
    170  do j=i+1,m; a(i,j)=-a(j,j)*dot_product(a(i:j-1,j),a(i,i:j-1)); enddo
    171 enddo
    172 ! Invert lower triangular portion L in place:
    173 do j=1,m-1; jp=j+1
    174  do i=jp,m; a(i,j)=-a(i,j)-dot_product(a(jp:i-1,j),a(i,jp:i-1)); enddo
    175 enddo
    176 ! Form the product of U**-1 and L**-1 in place
    177 do j=1,m-1; jp=j+1
    178  do i=1,j; a(i,j)=a(i,j)+dot_product(a(jp:m,j),a(i,jp:m)); enddo
    179  do i=jp,m; a(i,j)=dot_product(a(i:m,j),a(i,i:m)); enddo
    180 enddo
    181 ! Permute columns according to ipiv
    182 do j=m-1,1,-1; l=ipiv(j); call dswpvv(a(:,j),a(:,l)); enddo
    183 end subroutine dinvmtf
    184 
    190 subroutine cinvmtf(a,ff)! [inv]
    191 use pietc, only: c1
    192 complex(dpc),dimension(:,:),intent(INOUT):: a
    193 logical, intent( OUT):: ff
    194 integer(spi) :: m,i,j,jp,l
    195 complex(dpc) :: d
    196 integer(spi),dimension(size(a,1)):: ipiv
    197 m=size(a,1)
    198 if(m /= size(a,2))stop 'In inv; matrix passed to cinvmtf is not square'
    199 ! Perform a pivoted L-D-U decomposition on matrix a:
    200 call cldumf(a,ipiv,d,ff)
    201 if(ff)then
    202  print '(" In cinvmtf; failed call to cldumf")'
    203  return
    204 endif
    205 ! Invert upper triangular portion U in place:
    206 do i=1,m; a(i,i)=c1/a(i,i); enddo
    207 do i=1,m-1
    208  do j=i+1,m; a(i,j)=-a(j,j)*sum(a(i:j-1,j)*a(i,i:j-1)); enddo
    209 enddo
    210 ! Invert lower triangular portion L in place:
    211 do j=1,m-1; jp=j+1
    212  do i=jp,m; a(i,j)=-a(i,j)-sum(a(jp:i-1,j)*a(i,jp:i-1)); enddo
    213 enddo
    214 ! Form the product of U**-1 and L**-1 in place
    215 do j=1,m-1; jp=j+1
    216  do i=1,j; a(i,j)=a(i,j)+sum(a(jp:m,j)*a(i,jp:m)); enddo
    217  do i=jp,m; a(i,j)=sum(a(i:m,j)*a(i,i:m)); enddo
    218 enddo
    219 ! Permute columns according to ipiv
    220 do j=m-1,1,-1; l=ipiv(j); call cswpvv(a(:,j),a(:,l)); enddo
    221 end subroutine cinvmtf
    222 
    229 subroutine slinmmt(a,b)! [inv]
    230 real(sp),dimension(:,:),intent(inout):: a,b
    231 logical :: ff
    232 call slinmmtf(a,b,ff)
    233 if(ff)stop 'In slinmmt; unable to invert linear system'
    234 end subroutine slinmmt
    235 
    242 subroutine dlinmmt(a,b)! [inv]
    243 real(dp),dimension(:,:),intent(inout):: a,b
    244 logical :: ff
    245 call dlinmmtf(a,b,ff)
    246 if(ff)stop 'In dlinmmt; unable to invert linear system'
    247 end subroutine dlinmmt
    248 
    255 subroutine clinmmt(a,b)! [inv]
    256 complex(dpc),dimension(:,:),intent(inout):: a,b
    257 logical :: ff
    258 call clinmmtf(a,b,ff)
    259 if(ff)stop 'In clinmmt; unable to invert linear system'
    260 end subroutine clinmmt
    261 
    269 subroutine slinmmtf(a,b,ff)! [inv]
    270 real(sp), dimension(:,:),intent(inout):: a,b
    271 logical, intent( out):: ff
    272 integer(spi),dimension(size(a,1)) :: ipiv
    273 integer(spi) :: m
    274 real(sp) :: d
    275 m=size(a,1)
    276 if(m /= size(a,2))stop 'In inv; matrix passed to slinmmtf is not square'
    277 if(m /= size(b,1))&
    278  stop 'In inv; matrix and vectors in slinmmtf have unmatched sizes'
    279 call sldumf(a,ipiv,d,ff)
    280 if(ff)then
    281  print '("In slinmmtf; failed call to sldumf")'
    282  return
    283 endif
    284 call sudlmm(a,b,ipiv)
    285 end subroutine slinmmtf
    286 
    294 subroutine dlinmmtf(a,b,ff)! [inv]
    295 real(dp),dimension(:,:), intent(inout):: a,b
    296 logical, intent( out):: ff
    297 integer(spi),dimension(size(a,1)):: ipiv
    298 integer(spi):: m
    299 real(dp) :: d
    300 m=size(a,1)
    301 if(m /= size(a,2))stop 'In inv; matrix passed to dlinmmtf is not square'
    302 if(m /= size(b,1))&
    303  stop 'In inv; matrix and vectors in dlinmmtf have unmatched sizes'
    304 call dldumf(a,ipiv,d,ff)
    305 if(ff)then
    306  print '("In dlinmmtf; failed call to dldumf")'
    307  return
    308 endif
    309 call dudlmm(a,b,ipiv)
    310 end subroutine dlinmmtf
    311 
    319 subroutine clinmmtf(a,b,ff)! [inv]
    320 complex(dpc),dimension(:,:),intent(INOUT):: a,b
    321 logical, intent( OUT):: ff
    322 integer(spi),dimension(size(a,1)):: ipiv
    323 integer(spi) :: m
    324 complex(dpc) :: d
    325 m=size(a,1)
    326 if(m /= size(a,2))stop 'In inv; matrix passed to dlinmmtf is not square'
    327 if(m /= size(b,1))&
    328  stop 'In inv; matrix and vectors in dlinmmtf have unmatched sizes'
    329 call cldumf(a,ipiv,d,ff)
    330 if(ff)then
    331  print '("In clinmmtf; failed call to cldumf")'
    332  return
    333 endif
    334 call cudlmm(a,b,ipiv)
    335 end subroutine clinmmtf
    336 
    343 subroutine slinmvt(a,b)! [inv]
    344 real(sp),dimension(:,:),intent(inout):: a
    345 real(sp),dimension(:), intent(inout):: b
    346 logical:: ff
    347 call slinmvtf(a,b,ff)
    348 if(ff)stop 'In slinmvt; matrix singular, unable to continue'
    349 end subroutine slinmvt
    350 
    357 subroutine dlinmvt(a,b)! [inv]
    358 real(dp),dimension(:,:),intent(inout):: a
    359 real(dp),dimension(:), intent(inout):: b
    360 logical :: ff
    361 call dlinmvtf(a,b,ff)
    362 if(ff)stop 'In dlinmvt; matrix singular, unable to continue'
    363 end subroutine dlinmvt
    364 
    371 subroutine clinmvt(a,b)! [inv]
    372 complex(dpc), dimension(:,:),intent(inout):: a
    373 complex(dpc), dimension(:), intent(inout):: b
    374 logical :: ff
    375 call clinmvtf(a,b,ff)
    376 if(ff)stop 'In clinmvt; matrix singular, unable to continue'
    377 end subroutine clinmvt
    378 
    385 subroutine slinmvtf(a,b,ff)! [inv]
    386 real(sp),dimension(:,:),intent(inout):: a
    387 real(sp),dimension(:), intent(inout):: b
    388 logical, intent( out):: ff
    389 integer(spi),dimension(size(a,1)) :: ipiv
    390 real(sp) :: d
    391 if(size(a,1) /= size(a,2).or. size(a,1) /= size(b))&
    392  stop 'In inv; In slinmvtf; incompatible array dimensions'
    393 call sldumf(a,ipiv,d,ff)
    394 if(ff)then
    395  print '("In slinmvtf; failed call to sldumf")'
    396  return
    397 endif
    398 call sudlmv(a,b,ipiv)
    399 end subroutine slinmvtf
    400 
    407 subroutine dlinmvtf(a,b,ff)! [inv]
    408 real(dp),dimension(:,:),intent(inout):: a
    409 real(dp),dimension(:), intent(inout):: b
    410 logical, intent( out):: ff
    411 integer(spi), dimension(size(a,1)) :: ipiv
    412 real(dp) :: d
    413 if(size(a,1) /= size(a,2).or. size(a,1) /= size(b))&
    414  stop 'In inv; incompatible array dimensions passed to dlinmvtf'
    415 call dldumf(a,ipiv,d,ff)
    416 if(ff)then
    417  print '("In dlinmvtf; failed call to dldumf")'
    418  return
    419 endif
    420 call dudlmv(a,b,ipiv)
    421 end subroutine dlinmvtf
    422 
    429 subroutine clinmvtf(a,b,ff)! [inv]
    430 complex(dpc),dimension(:,:),intent(inout):: a
    431 complex(dpc),dimension(:), intent(inout):: b
    432 logical, intent( out):: ff
    433 integer, dimension(size(a,1)) :: ipiv
    434 complex(dpc) :: d
    435 if(size(a,1) /= size(a,2).or. size(a,1) /= size(b))&
    436  stop 'In inv; incompatible array dimensions passed to clinmvtf'
    437 call cldumf(a,ipiv,d,ff)
    438 if(ff)then
    439  print '("In clinmvtf; failed call to cldumf")'
    440  return
    441 endif
    442 call cudlmv(a,b,ipiv)
    443 end subroutine clinmvtf
    444 
    451 subroutine iinvf(imat,ff)! [inv]
    452 integer(spi),dimension(:,:),intent(INOUT):: imat
    453 logical, intent( OUT):: ff
    454 real(dp),parameter :: eps=1.e-6_dp
    455 real(dp),dimension(size(imat,1),size(imat,1)):: dmat
    456 integer(spi) :: m,i,j
    457 m=size(imat,1)
    458 if(m /= size(imat,2))stop 'In inv; matrix passed to iinvf is not square'
    459 dmat=imat; call inv(dmat,ff)
    460 if(.not.ff)then
    461  do j=1,m
    462  do i=1,m
    463  imat(i,j)=nint(dmat(i,j)); if(abs(dmat(i,j)-imat(i,j))>eps)ff=t
    464  enddo
    465  enddo
    466 endif
    467 end subroutine iinvf
    468 
    476 subroutine sldum(a,ipiv,d)! [ldum]
    477 real(sp), intent(inout) :: a(:,:)
    478 real(sp), intent( out) :: d
    479 integer(spi),intent( out) :: ipiv(:)
    480 logical:: ff
    481 call sldumf(a,ipiv,d,ff)
    482 if(ff)stop 'In sldum; matrix singular, unable to continue'
    483 end subroutine sldum
    484 
    492 subroutine dldum(a,ipiv,d)! [ldum]
    493 real(dp), intent(inout) :: a(:,:)
    494 real(dp), intent( out) :: d
    495 integer(spi),intent( out) :: ipiv(:)
    496 logical:: ff
    497 call dldumf(a,ipiv,d,ff)
    498 if(ff)stop 'In dldum; matrix singular, unable to continue'
    499 end subroutine dldum
    500 
    508 subroutine cldum(a,ipiv,d)! [ldum]
    509 complex(dpc),intent(inout) :: a(:,:)
    510 complex(dpc),intent(out ) :: d
    511 integer(spi),intent(out ) :: ipiv(:)
    512 logical:: ff
    513 call cldumf(a,ipiv,d,ff)
    514 if(ff)stop 'In cldum; matrix singular, unable to continue'
    515 end subroutine cldum
    516 
    525 subroutine sldumf(a,ipiv,d,ff)! [ldum]
    526 use pietc_s,only: u0,u1
    527 real(sp), intent(inout) :: a(:,:)
    528 real(sp), intent( out) :: d
    529 integer(spi),intent( out) :: ipiv(:)
    530 logical, intent( out) :: ff
    531 integer(spi):: m,i, j, jp, ibig, jm
    532 real(sp) :: s(size(a,1)), aam, aa, abig, ajj, ajji, aij
    533 ff=f
    534 m=size(a,1)
    535 do i=1,m
    536  aam=u0
    537  do j=1,m
    538  aa=abs(a(i,j))
    539  if(aa > aam)aam=aa
    540  enddo
    541  if(aam == u0)then
    542  print '("In sldumf; row ",i6," of matrix vanishes")',i
    543  ff=t
    544  return
    545  endif
    546  s(i)=u1/aam
    547 enddo
    548 d=1_sp
    549 ipiv(m)=m
    550 do j=1,m-1
    551  jp=j+1
    552  abig=s(j)*abs(a(j,j))
    553  ibig=j
    554  do i=jp,m
    555  aa=s(i)*abs(a(i,j))
    556  if(aa > abig)then
    557  ibig=i
    558  abig=aa
    559  endif
    560  enddo
    561 ! swap rows, recording changed sign of determinant
    562  ipiv(j)=ibig
    563  if(ibig /= j)then
    564  d=-d
    565  call sswpvv(a(j,:),a(ibig,:))
    566  s(ibig)=s(j)
    567  endif
    568  ajj=a(j,j)
    569  if(ajj == u0)then
    570  jm=j-1
    571  print '(" failure in sldumf:"/" matrix singular, rank=",i3)',jm
    572  ff=t
    573  return
    574  endif
    575  ajji=u1/ajj
    576  do i=jp,m
    577  aij=ajji*a(i,j)
    578  a(i,j)=aij
    579  a(i,jp:m) = a(i,jp:m) - aij*a(j,jp:m)
    580  enddo
    581 enddo
    582 end subroutine sldumf
    583 
    592 subroutine dldumf(a,ipiv,d,ff)! [ldum]
    593 use pietc, only: u0,u1
    594 real(dp), intent(inout) :: a(:,:)
    595 real(dp), intent( out) :: d
    596 integer, intent( out) :: ipiv(:)
    597 logical(spi),intent( out) :: ff
    598 integer(spi) :: m,i, j, jp, ibig, jm
    599 real(dp) :: s(size(a,1)), aam, aa, abig, ajj, ajji, aij
    600 ff=f
    601 m=size(a,1)
    602 do i=1,m
    603  aam=u0
    604  do j=1,m
    605  aa=abs(a(i,j))
    606  if(aa > aam)aam=aa
    607  enddo
    608  if(aam == u0)then
    609  print '("In dldumf; row ",i6," of matrix vanishes")',i
    610  ff=t
    611  return
    612  endif
    613  s(i)=u1/aam
    614 enddo
    615 d=u1
    616 ipiv(m)=m
    617 do j=1,m-1
    618  jp=j+1
    619  abig=s(j)*abs(a(j,j))
    620  ibig=j
    621  do i=jp,m
    622  aa=s(i)*abs(a(i,j))
    623  if(aa > abig)then
    624  ibig=i
    625  abig=aa
    626  endif
    627  enddo
    628  ! swap rows, recording changed sign of determinant
    629  ipiv(j)=ibig
    630  if(ibig /= j)then
    631  d=-d
    632  call dswpvv(a(j,:),a(ibig,:))
    633  s(ibig)=s(j)
    634  endif
    635  ajj=a(j,j)
    636  if(ajj == u0)then
    637  jm=j-1
    638  print '(" Failure in dldumf:"/" matrix singular, rank=",i3)',jm
    639  ff=t
    640  return
    641  endif
    642  ajji=u1/ajj
    643  do i=jp,m
    644  aij=ajji*a(i,j)
    645  a(i,j)=aij
    646  a(i,jp:m) = a(i,jp:m) - aij*a(j,jp:m)
    647  enddo
    648 enddo
    649 end subroutine dldumf
    650 
    659 subroutine cldumf(a,ipiv,d,ff)! [ldum]
    660 use pietc, only: u0,u1,c0,c1
    661 complex(dpc), intent(inout) :: a(:,:)
    662 complex(dpc), intent( out) :: d
    663 integer(spi), intent( out) :: ipiv(:)
    664 logical, intent( out) :: ff
    665 integer(spi) :: m,i, j, jp, ibig, jm
    666 complex(dpc) :: ajj, ajji, aij
    667 real(dp) :: aam,aa,abig
    668 real(dp),dimension(size(a,1)):: s
    669 ff=f
    670 m=size(a,1)
    671 do i=1,m
    672  aam=u0
    673  do j=1,m
    674  aa=abs(a(i,j))
    675  if(aa > aam)aam=aa
    676  enddo
    677  if(aam == u0)then
    678  print '("In cldumf; row ",i6," of matrix vanishes")',i
    679  ff=t
    680  return
    681  endif
    682  s(i)=u1/aam
    683 enddo
    684 d=c1
    685 ipiv(m)=m
    686 do j=1,m-1
    687  jp=j+1
    688  abig=s(j)*abs(a(j,j))
    689  ibig=j
    690  do i=jp,m
    691  aa=s(i)*abs(a(i,j))
    692  if(aa > abig)then
    693  ibig=i
    694  abig=aa
    695  endif
    696  enddo
    697  ! swap rows, recording changed sign of determinant
    698  ipiv(j)=ibig
    699  if(ibig /= j)then
    700  d=-d
    701  call cswpvv(a(j,:),a(ibig,:))
    702  s(ibig)=s(j)
    703  endif
    704  ajj=a(j,j)
    705  if(ajj == c0)then
    706  jm=j-1
    707  print '(" Failure in cldumf:"/" matrix singular, rank=",i3)',jm
    708  ff=t
    709  return
    710  endif
    711  ajji=c1/ajj
    712  do i=jp,m
    713  aij=ajji*a(i,j)
    714  a(i,j)=aij
    715  a(i,jp:m) = a(i,jp:m) - aij*a(j,jp:m)
    716  enddo
    717 enddo
    718 end subroutine cldumf
    719 
    729 subroutine sudlmm(a,b,ipiv)! [udlmm]
    730 use pietc_s, only: u1
    731 integer(spi),dimension(:), intent(in) :: ipiv
    732 real(sp), dimension(:,:),intent(in) :: a
    733 real(sp), dimension(:,:),intent(inout) :: b
    734 integer(spi):: m,i, k, l
    735 real(sp) :: s,aiii
    736 m=size(a,1)
    737 do k=1,size(b,2) !loop over columns of b
    738  do i=1,m
    739  l=ipiv(i)
    740  s=b(l,k)
    741  b(l,k)=b(i,k)
    742  s = s - sum(b(1:i-1,k)*a(i,1:i-1))
    743  b(i,k)=s
    744  enddo
    745  b(m,k)=b(m,k)/a(m,m)
    746  do i=m-1,1,-1
    747  aiii=u1/a(i,i)
    748  b(i,k) = b(i,k) - sum(b(i+1:m,k)*a(i,i+1:m))
    749  b(i,k)=b(i,k)*aiii
    750  enddo
    751 enddo
    752 end subroutine sudlmm
    753 
    763 subroutine dudlmm(a,b,ipiv)! [udlmm]
    764 use pietc, only: u1
    765 integer(spi),dimension(:), intent(in ) :: ipiv
    766 real(dp), dimension(:,:),intent(in ) :: a
    767 real(dp), dimension(:,:),intent(inout) :: b
    768 integer(spi):: m,i, k, l
    769 real(dp) :: s,aiii
    770 m=size(a,1)
    771 do k=1, size(b,2)!loop over columns of b
    772  do i=1,m
    773  l=ipiv(i)
    774  s=b(l,k)
    775  b(l,k)=b(i,k)
    776  s = s - sum(b(1:i-1,k)*a(i,1:i-1))
    777  b(i,k)=s
    778  enddo
    779  b(m,k)=b(m,k)/a(m,m)
    780  do i=m-1,1,-1
    781  aiii=u1/a(i,i)
    782  b(i,k) = b(i,k) - sum(b(i+1:m,k)*a(i,i+1:m))
    783  b(i,k)=b(i,k)*aiii
    784  enddo
    785 enddo
    786 end subroutine dudlmm
    787 
    797 subroutine cudlmm(a,b,ipiv)! [udlmm]
    798 use pietc, only: c1
    799 integer(spi),dimension(:), intent(in ) :: ipiv
    800 complex(dpc),dimension(:,:),intent(in ) :: a
    801 complex(dpc),dimension(:,:),intent(inout) :: b
    802 integer(spi):: m,i, k, l
    803 complex(dpc):: s,aiii
    804 m=size(a,1)
    805 do k=1, size(b,2)!loop over columns of b
    806  do i=1,m
    807  l=ipiv(i)
    808  s=b(l,k)
    809  b(l,k)=b(i,k)
    810  s = s - sum(b(1:i-1,k)*a(i,1:i-1))
    811  b(i,k)=s
    812  enddo
    813  b(m,k)=b(m,k)/a(m,m)
    814  do i=m-1,1,-1
    815  aiii=c1/a(i,i)
    816  b(i,k) = b(i,k) - sum(b(i+1:m,k)*a(i,i+1:m))
    817  b(i,k)=b(i,k)*aiii
    818  enddo
    819 enddo
    820 end subroutine cudlmm
    821 
    830 subroutine sudlmv(a,b,ipiv)! [udlmv]
    831 use pietc_s, only: u1
    832 integer(spi),dimension(:), intent(in ):: ipiv
    833 real(sp), dimension(:,:),intent(in ):: a
    834 real(sp), dimension(:), intent(inout):: b
    835 integer(spi):: m,i, l
    836 real(sp) :: s,aiii
    837 m=size(a,1)
    838 do i=1,m
    839  l=ipiv(i)
    840  s=b(l)
    841  b(l)=b(i)
    842  s = s - sum(b(1:i-1)*a(i,1:i-1))
    843  b(i)=s
    844 enddo
    845 b(m)=b(m)/a(m,m)
    846 do i=m-1,1,-1
    847  aiii=u1/a(i,i)
    848  b(i) = b(i) - sum(b(i+1:m)*a(i,i+1:m))
    849  b(i)=b(i)*aiii
    850 enddo
    851 end subroutine sudlmv
    852 
    861 subroutine dudlmv(a,b,ipiv)! [udlmv]
    862 use pietc, only: u1
    863 integer(spi),dimension(:), intent(in ) :: ipiv(:)
    864 real(dp), dimension(:,:),intent(in ) :: a(:,:)
    865 real(dp), dimension(:), intent(inout) :: b(:)
    866 integer(spi):: m,i, l
    867 real(dp) :: s,aiii
    868 m=size(a,1)
    869 do i=1,m
    870  l=ipiv(i)
    871  s=b(l)
    872  b(l)=b(i)
    873  s = s - sum(b(1:i-1)*a(i,1:i-1))
    874  b(i)=s
    875 enddo
    876 b(m)=b(m)/a(m,m)
    877 do i=m-1,1,-1
    878  aiii=u1/a(i,i)
    879  b(i) = b(i) - sum(b(i+1:m)*a(i,i+1:m))
    880  b(i)=b(i)*aiii
    881 enddo
    882 end subroutine dudlmv
    883 
    892 subroutine cudlmv(a,b,ipiv)! [udlmv]
    893 use pietc, only: c1
    894 integer(spi),dimension(:), intent(in ) :: ipiv(:)
    895 complex(dpc),dimension(:,:),intent(in ) :: a(:,:)
    896 complex(dpc),dimension(:), intent(inout) :: b(:)
    897 integer(spi):: m,i, l
    898 complex(dpc):: s,aiii
    899 m=size(a,1)
    900 do i=1,m
    901  l=ipiv(i)
    902  s=b(l)
    903  b(l)=b(i)
    904  s = s - sum(b(1:i-1)*a(i,1:i-1))
    905  b(i)=s
    906 enddo
    907 b(m)=b(m)/a(m,m)
    908 do i=m-1,1,-1
    909  aiii=c1/a(i,i)
    910  b(i)= b(i) - sum(b(i+1:m)*a(i,i+1:m))
    911  b(i)=b(i)*aiii
    912 enddo
    913 end subroutine cudlmv
    914 
    920 subroutine sl1lm(a,b) ! [l1lm]
    921 real(sp),intent(in ):: a(:,:)
    922 real(sp),intent(inout):: b(:,:)
    923 logical:: ff
    924 call sl1lmf(a,b,ff)
    925 if(ff)stop 'In sl1lm; matrix singular, unable to continue'
    926 end subroutine sl1lm
    927 
    933 subroutine dl1lm(a,b) ! [l1lm]
    934 real(dp),intent(in ):: a(:,:)
    935 real(dp),intent(inout):: b(:,:)
    936 logical:: ff
    937 call dl1lmf(a,b,ff)
    938 if(ff)stop 'In dl1lm; matrix singular, unable to continue'
    939 end subroutine dl1lm
    940 
    947 subroutine sl1lmf(a,b,ff)! [L1Lm]
    948 use pietc_s, only: u0
    949 real(sp),intent(in ):: a(:,:)
    950 real(sp),intent(inout):: b(:,:)
    951 logical, intent( out):: ff
    952 integer(spi):: m,j, jm, jp, i
    953 real(sp) :: s, bjji
    954 m=size(a,1)
    955 ff=f
    956 do j=1,m
    957  jm=j-1
    958  jp=j+1
    959  s = a(j,j) - sum(b(j,1:jm)*b(j,1:jm))
    960  ff=(s <= u0)
    961  if(ff)then
    962  print '("sL1Lmf detects nonpositive a, rank=",i6)',jm
    963  return
    964  endif
    965  b(j,j)=sqrt(s)
    966  bjji=1_sp/b(j,j)
    967  do i=jp,m
    968  s = a(i,j) - sum(b(i,1:jm)*b(j,1:jm))
    969  b(i,j)=s*bjji
    970  enddo
    971  b(1:jm,j) = u0
    972 enddo
    973 end subroutine sl1lmf
    974 
    981 subroutine dl1lmf(a,b,ff) ! [L1Lm]
    982 use pietc, only: u0,u1
    983 real(dp),intent(in ) :: a(:,:)
    984 real(dp),intent(inout) :: b(:,:)
    985 logical, intent( out) :: ff
    986 integer(spi):: m,j, jm, jp, i
    987 real(dp) :: s, bjji
    988 m=size(a,1)
    989 ff=f
    990 do j=1,m
    991  jm=j-1
    992  jp=j+1
    993  s = a(j,j) - sum(b(j,1:jm)*b(j,1:jm))
    994  ff=(s <= u0)
    995  if(ff)then
    996  print '("dL1LMF detects nonpositive A, rank=",i6)',jm
    997  return
    998  endif
    999  b(j,j)=sqrt(s)
    1000  bjji=u1/b(j,j)
    1001  do i=jp,m
    1002  s = a(i,j) - sum(b(i,1:jm)*b(j,1:jm))
    1003  b(i,j)=s*bjji
    1004  enddo
    1005  b(1:jm,j) = u0
    1006 enddo
    1007 end subroutine dl1lmf
    1008 
    1015 subroutine sldlm(a,b,d)! [LdLm]
    1016 real(sp),intent(in ):: a(:,:)
    1017 real(sp),intent(inout):: b(:,:)
    1018 real(sp),intent( out):: d(:)
    1019 logical:: ff
    1020 call sldlmf(a,b,d,ff)
    1021 if(ff)stop 'In sldlm; matrix singular, unable to continue'
    1022 end subroutine sldlm
    1023 
    1030 subroutine dldlm(a,b,d)! [LdLm]
    1031 real(dp),intent(in ):: a(:,:)
    1032 real(dp),intent(inout):: b(:,:)
    1033 real(dp),intent( out):: d(:)
    1034 logical:: ff
    1035 call dldlmf(a,b,d,ff)
    1036 if(ff)stop 'In dldlm; matrix singular, unable to continue'
    1037 end subroutine dldlm
    1038 
    1046 subroutine sldlmf(a,b,d,ff) ! [LDLM]
    1047 use pietc_s, only: u0,u1
    1048 real(sp), intent(in ):: a(:,:)
    1049 real(sp), intent(inout):: b(:,:)
    1050 real(sp), intent( out):: d(:)
    1051 logical, intent( out):: ff
    1052 integer(spi):: m,j, jm, jp, i
    1053 real(sp) :: bjji
    1054 m=size(a,1)
    1055 ff=f
    1056 do j=1,m
    1057  jm=j-1
    1058  jp=j+1
    1059  d(j)=a(j,j) - sum(b(1:jm,j)*b(j,1:jm))
    1060  b(j,j) = u1
    1061  ff=(d(j) == u0)
    1062  if(ff)then
    1063  print '("In sldlmf; singularity of matrix detected")'
    1064  print '("Rank of matrix: ",i6)',jm
    1065  return
    1066  endif
    1067  bjji=u1/d(j)
    1068  do i=jp,m
    1069  b(j,i)=a(i,j) - dot_product(b(1:jm,j),b(i,1:jm))
    1070  b(i,j)=b(j,i)*bjji
    1071  enddo
    1072  b(1:jm,j)=u0
    1073 enddo
    1074 end subroutine sldlmf
    1075 
    1083 subroutine dldlmf(a,b,d,ff) ! [LDLM]
    1084 use pietc, only: u0,u1
    1085 real(dp), intent(IN ) :: a(:,:)
    1086 real(dp), intent(INOUT) :: b(:,:)
    1087 real(dp), intent( OUT) :: d(:)
    1088 logical, intent( OUT) :: ff
    1089 integer(spi):: m,j, jm, jp, i
    1090 real(dp) :: bjji
    1091 m=size(a,1)
    1092 ff=f
    1093 do j=1,m; jm=j-1; jp=j+1
    1094  d(j)=a(j,j) - sum(b(1:jm,j)*b(j,1:jm))
    1095  b(j,j) = 1
    1096  ff=(d(j) == u0)
    1097  if(ff)then
    1098  print '("In dldlmf; singularity of matrix detected")'
    1099  print '("Rank of matrix: ",i6)',jm
    1100  return
    1101  endif
    1102  bjji=u1/d(j)
    1103  do i=jp,m
    1104  b(j,i)=a(i,j) - dot_product(b(1:jm,j),b(i,1:jm))
    1105  b(i,j)=b(j,i)*bjji
    1106  enddo
    1107  b(1:jm,j)=u0
    1108 enddo
    1109 end subroutine dldlmf
    1110 
    1116 subroutine sinvu(a)! [invu]
    1117 real(sp),dimension(:,:),intent(inout):: a
    1118 a=transpose(a); call sinvl(a); a=transpose(a)
    1119 end subroutine sinvu
    1120 
    1126 subroutine dinvu(a)! [invu]
    1127 real(dp),dimension(:,:),intent(inout):: a
    1128 a=transpose(a); call dinvl(a); a=transpose(a)
    1129 end subroutine dinvu
    1130 
    1135 subroutine sinvl(a)! [invl]
    1136 use pietc_s, only: u0,u1
    1137 real(sp), intent(inout) :: a(:,:)
    1138 integer(spi):: m,j, i
    1139 m=size(a,1)
    1140 do j=m,1,-1
    1141  a(1:j-1,j) = u0
    1142  a(j,j)=u1/a(j,j)
    1143  do i=j+1,m
    1144  a(i,j)=-a(i,i)*sum(a(j:i-1,j)*a(i,j:i-1))
    1145  enddo
    1146 enddo
    1147 end subroutine sinvl
    1148 
    1153 subroutine dinvl(a)! [invl]
    1154 use pietc, only: u0,u1
    1155 real(dp), intent(inout) :: a(:,:)
    1156 integer(spi):: m,j, i
    1157 m=size(a,1)
    1158 do j=m,1,-1
    1159  a(1:j-1,j) = u0
    1160  a(j,j)=u1/a(j,j)
    1161  do i=j+1,m
    1162  a(i,j)=-a(i,i)*sum(a(j:i-1,j)*a(i,j:i-1))
    1163  enddo
    1164 enddo
    1165 end subroutine dinvl
    1166 
    1173 subroutine slinlv(a,u)! [invl]
    1174 real(sp),intent(in ) :: a(:,:)
    1175 real(sp),intent(inout) :: u(:)
    1176 integer(spi):: i
    1177 if(size(a,1) /= size(a,2) .or. size(a,1) /= size(u))&
    1178  stop 'In slinlv; incompatible array dimensions'
    1179 do i=1,size(u); u(i)=(u(i) - sum(u(:i-1)*a(i,:i-1)))/a(i,i); enddo
    1180 end subroutine slinlv
    1181 
    1188 subroutine dlinlv(a,u)! [invl]
    1189 real(dp),intent(in ) :: a(:,:)
    1190 real(dp),intent(inout) :: u(:)
    1191 integer(spi):: i
    1192 if(size(a,1) /= size(a,2) .or. size(a,1) /= size(u))&
    1193  stop 'In dlinlv; incompatible array dimensions'
    1194 do i=1,size(u); u(i)=(u(i) - sum(u(:i-1)*a(i,:i-1)))/a(i,i); enddo
    1195 end subroutine dlinlv
    1196 
    1203 subroutine slinuv(a,u)! [invu]
    1204 real(sp),intent(in ) :: a(:,:)
    1205 real(sp),intent(inout) :: u(:)
    1206 integer(spi):: i
    1207 if(size(a,1) /= size(a,2) .or. size(a,1) /= size(u))&
    1208  stop 'In linuv; incompatible array dimensions'
    1209 do i=size(u),1,-1; u(i)=(u(i) - sum(a(i+1:,i)*u(i+1:)))/a(i,i); enddo
    1210 end subroutine slinuv
    1211 
    1218 subroutine dlinuv(a,u)! [invu]
    1219 real(dp), intent(in ) :: a(:,:)
    1220 real(dp), intent(inout) :: u(:)
    1221 integer(spi) :: i
    1222 if(size(a,1) /= size(a,2) .or. size(a,1) /= size(u))&
    1223  stop 'In dlinuv; incompatible array dimensions'
    1224 do i=size(u),1,-1; u(i)=(u(i) - sum(a(i+1:,i)*u(i+1:)))/a(i,i); enddo
    1225 end subroutine dlinuv
    1226 
    1227 end module pmat
    1228 
    +
    integer, parameter sp
    Single precision real kind.
    Definition: pkind.f90:10
    + +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    + +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    + +
    logical, parameter f
    for pain-relief in logical ops
    Definition: pietc.f90:18
    +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    + +
    complex(dpc), parameter c1
    complex one
    Definition: pietc.f90:113
    +
    complex(dpc), parameter c0
    complex zero
    Definition: pietc.f90:112
    + +
    logical, parameter t
    for pain-relief in logical ops
    Definition: pietc.f90:17
    + +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    integer, parameter spc
    Single precision real kind.
    Definition: pkind.f90:12
    +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    +
    integer, parameter dpc
    Double precision real kind.
    Definition: pkind.f90:13
    + +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/psym2_8f90.html b/ver-1.11.0/grid_tools/psym2_8f90.html new file mode 100644 index 000000000..7d8fce25d --- /dev/null +++ b/ver-1.11.0/grid_tools/psym2_8f90.html @@ -0,0 +1,210 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    psym2.f90 File Reference
    +
    +
    + +

    Matrix routines. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Types

    interface  psym2::chol2
     
    interface  psym2::eigensym2
     
    interface  psym2::expsym2
     
    interface  psym2::expsym2d_e
     
    interface  psym2::expsym2d_t
     
    interface  psym2::id2222
     
    interface  psym2::invsym2
     
    interface  psym2::logsym2
     
    interface  psym2::sqrtsym2
     
    interface  psym2::sqrtsym2d_e
     
    interface  psym2::sqrtsym2d_t
     
    + + + + +

    +Modules

    module  psym2
     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.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public psym2::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 psym2::eigensym2 (em, vv, oo)
     Get the orthogonal eigenvectors, vv, and diagonal matrix of eigenvalues, oo, of the symmetric 2*2 matrix, em. More...
     
    subroutine psym2::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 psym2::expsym2 (em, expem)
     Get the exp of a symmetric 2*2 matrix. More...
     
    subroutine psym2::expsym2d (x, z, zd)
     Get the exp of a symmetric 2*2 matrix, and its symmetric derivative. More...
     
    subroutine psym2::expsym2d_e (x, z, zd)
     Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition. More...
     
    subroutine psym2::expsym2d_t (x, z, zd)
     Use the Taylor-series method (eigenvalues both fairly close to zero). More...
     
    subroutine, public psym2::id2222 (em)
     General routine for a symmetrized 4th-rank tensor that acts as an effective identity for operations on symmetric matrices. More...
     
    subroutine, public psym2::invsym2 (em, z)
     Get the inverse of a 2*2 matrix (need not be symmetric in this case). More...
     
    subroutine psym2::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 psym2::logsym2 (em, logem)
     Get the log of a symmetric positive-definite 2*2 matrix. More...
     
    subroutine psym2::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 psym2::sqrtsym2 (em, z)
     Get the sqrt of a symmetric positive-definite 2*2 matrix. More...
     
    subroutine psym2::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 psym2::sqrtsym2d_e (x, z, zd)
     Eigen-method. More...
     
    subroutine psym2::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) psym2::id
     ID. More...
     
    +

    Detailed Description

    +

    Matrix routines.

    +
    Author
    R. J. Purser
    +
    Date
    September 2018
    + +

    Definition in file psym2.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/psym2_8f90.js b/ver-1.11.0/grid_tools/psym2_8f90.js new file mode 100644 index 000000000..e38fcee88 --- /dev/null +++ b/ver-1.11.0/grid_tools/psym2_8f90.js @@ -0,0 +1,31 @@ +var psym2_8f90 = +[ + [ "chol2", "interfacepsym2_1_1chol2.html", "interfacepsym2_1_1chol2" ], + [ "eigensym2", "interfacepsym2_1_1eigensym2.html", "interfacepsym2_1_1eigensym2" ], + [ "expsym2", "interfacepsym2_1_1expsym2.html", "interfacepsym2_1_1expsym2" ], + [ "expsym2d_e", "interfacepsym2_1_1expsym2d__e.html", "interfacepsym2_1_1expsym2d__e" ], + [ "expsym2d_t", "interfacepsym2_1_1expsym2d__t.html", "interfacepsym2_1_1expsym2d__t" ], + [ "id2222", "interfacepsym2_1_1id2222.html", "interfacepsym2_1_1id2222" ], + [ "invsym2", "interfacepsym2_1_1invsym2.html", "interfacepsym2_1_1invsym2" ], + [ "logsym2", "interfacepsym2_1_1logsym2.html", "interfacepsym2_1_1logsym2" ], + [ "sqrtsym2", "interfacepsym2_1_1sqrtsym2.html", "interfacepsym2_1_1sqrtsym2" ], + [ "sqrtsym2d_e", "interfacepsym2_1_1sqrtsym2d__e.html", "interfacepsym2_1_1sqrtsym2d__e" ], + [ "sqrtsym2d_t", "interfacepsym2_1_1sqrtsym2d__t.html", "interfacepsym2_1_1sqrtsym2d__t" ], + [ "chol2", "psym2_8f90.html#a4d9dbce09805280da5ab55a3d0ec0be6", null ], + [ "eigensym2", "psym2_8f90.html#a790d98323182c2f9bdd2cbbf4824a694", null ], + [ "eigensym2d", "psym2_8f90.html#a4a0b47ffdfde7631a62dba87d6d4e62c", null ], + [ "expsym2", "psym2_8f90.html#a4ed3850a40ba5cef460ff8fd032c1df5", null ], + [ "expsym2d", "psym2_8f90.html#a2eb5c916388fb0e526188b32d08986b7", null ], + [ "expsym2d_e", "psym2_8f90.html#a18dceeb94548f587a55d638463617c7f", null ], + [ "expsym2d_t", "psym2_8f90.html#ad9bc792f9b0c7b86306a4101a3af6ddb", null ], + [ "id2222", "psym2_8f90.html#a170abd6782770d7752a65bd53817a165", null ], + [ "invsym2", "psym2_8f90.html#a8df1637f27ef025b30e90ca7e97f2c4d", null ], + [ "invsym2d", "psym2_8f90.html#a895348d1d6e4bbebded2e0be29c50e18", null ], + [ "logsym2", "psym2_8f90.html#a14308a48d1f03e4660146aa91dbe4f50", null ], + [ "logsym2d", "psym2_8f90.html#a19364061a64c8eb98c82abb1b733b804", null ], + [ "sqrtsym2", "psym2_8f90.html#a534cceba99807ead1186e19061a18737", null ], + [ "sqrtsym2d", "psym2_8f90.html#ade22baac4882739dbd6ea74bd32e1073", null ], + [ "sqrtsym2d_e", "psym2_8f90.html#a06c0c59f9694d43ef6673a264c3597d7", null ], + [ "sqrtsym2d_t", "psym2_8f90.html#ae3afbf1fec606ee0f45f775176282542", null ], + [ "id", "psym2_8f90.html#ad501d59b45e349480e91f1ddfd1d8b08", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/psym2_8f90_source.html b/ver-1.11.0/grid_tools/psym2_8f90_source.html new file mode 100644 index 000000000..1ebe3adc4 --- /dev/null +++ b/ver-1.11.0/grid_tools/psym2_8f90_source.html @@ -0,0 +1,132 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/psym2.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    psym2.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    11 module psym2
    12 use pkind, only: spi,dp
    13 use pietc, only: u0,u1,o2
    14 implicit none
    15 private
    17 
    18 real(dp),dimension(2,2,2,2):: id
    19 data id/u1,u0,u0,u0, u0,o2,o2,u0, u0,o2,o2,u0, u0,u0,u0,u1/! Effective identity
    20 
    21 interface eigensym2; module procedure eigensym2,eigensym2d; end interface
    22 interface invsym2; module procedure invsym2,invsym2d; end interface
    23 interface sqrtsym2; module procedure sqrtsym2,sqrtsym2d; end interface
    24 interface sqrtsym2d_e; module procedure sqrtsym2d_e; end interface
    25 interface sqrtsym2d_t; module procedure sqrtsym2d_t; end interface
    26 interface expsym2; module procedure expsym2,expsym2d; end interface
    27 interface expsym2d_e; module procedure expsym2d_e; end interface
    28 interface expsym2d_t; module procedure expsym2d_t; end interface
    29 interface logsym2; module procedure logsym2,logsym2d; end interface
    30 interface id2222; module procedure id2222; end interface
    31 interface chol2; module procedure chol2; end interface
    32 
    33 contains
    34 
    42 subroutine eigensym2(em,vv,oo)! [eigensym2]
    43 implicit none
    44 real(dp),dimension(2,2),intent(in ):: em
    45 real(dp),dimension(2,2),intent(out):: vv,oo
    46 real(dp):: a,b,c,d,e,f,g,h
    47 a=em(1,1); b=em(1,2); c=em(2,2)
    48 d=a*c-b*b! <- det(em)
    49 e=(a+c)*o2; f=(a-c)*o2
    50 h=sqrt(f**2+b**2)
    51 g=sqrt(b**2+(h+abs(f))**2)
    52 if (g==u0)then; vv(:,1)=(/u1,u0/)
    53 elseif(f> u0)then; vv(:,1)=(/h+f,b/)/g
    54 else ; vv(:,1)=(/b,h-f/)/g
    55 endif
    56 vv(:,2)=(/-vv(2,1),vv(1,1)/)
    57 oo=matmul(transpose(vv),matmul(em,vv))
    58 oo(1,2)=u0; oo(2,1)=u0
    59 end subroutine eigensym2
    60 
    75 subroutine eigensym2d(em,vv,oo,vvd,ood,ff)! [eigensym2]
    76 implicit none
    77 real(dp),dimension(2,2), intent(in ):: em
    78 real(dp),dimension(2,2), intent(out):: vv,oo
    79 real(dp),dimension(2,2,2,2),intent(out):: vvd,ood
    80 logical, intent(out):: ff
    81 real(dp),dimension(2,2):: emd,tt,vvr
    82 real(dp) :: oodif,dtheta
    83 integer(spi) :: i,j
    84 call eigensym2(em,vv,oo); vvr(1,:)=-vv(2,:); vvr(2,:)=vv(1,:)
    85 oodif=oo(1,1)-oo(2,2); ff=oodif==u0; if(ff)return
    86 ood=0
    87 vvd=0
    88 do j=1,2
    89  do i=1,2
    90  emd=0
    91  if(i==j)then
    92  emd(i,j)=u1
    93  else
    94  emd(i,j)=o2; emd(j,i)=o2
    95  endif
    96  tt=matmul(transpose(vv),matmul(emd,vv))
    97  ood(1,1,i,j)=tt(1,1)
    98  ood(2,2,i,j)=tt(2,2)
    99  dtheta=tt(1,2)/oodif
    100  vvd(:,:,i,j)=vvr*dtheta
    101  enddo
    102 enddo
    103 end subroutine eigensym2d
    104 
    111 subroutine invsym2(em,z)! [invsym2]
    112 implicit none
    113 real(dp),dimension(2,2),intent(in ):: em
    114 real(dp),dimension(2,2),intent(out):: z
    115 real(dp):: detem
    116 z(1,1)=em(2,2); z(2,1)=-em(2,1); z(1,2)=-em(1,2); z(2,2)=em(1,1)
    117 detem=em(1,1)*em(2,2)-em(2,1)*em(1,2)
    118 z=z/detem
    119 end subroutine invsym2
    120 
    131 subroutine invsym2d(em,z,zd)! [invsym2]
    132 implicit none
    133 real(dp),dimension(2,2) ,intent(in ):: em
    134 real(dp),dimension(2,2) ,intent(out):: z
    135 real(dp),dimension(2,2,2,2),intent(out):: zd
    136 integer(spi):: k,l
    137 call invsym2(em,z)
    138 call id2222(zd)
    139 do l=1,2; do k=1,2
    140  zd(:,:,k,l)=-matmul(matmul(z,zd(:,:,k,l)),z)
    141 enddo; enddo
    142 end subroutine invsym2d
    143 
    149 subroutine sqrtsym2(em,z)! [sqrtsym2]
    150 implicit none
    151 real(dp),dimension(2,2),intent(in ):: em
    152 real(dp),dimension(2,2),intent(out):: z
    153 real(dp),dimension(2,2):: vv,oo
    154 integer(spi) :: i
    155 call eigensym2(em,vv,oo)
    156 do i=1,2
    157 if(oo(i,i)<0)stop 'In sqrtsym2; matrix em is not non-negative'
    158 oo(i,i)=sqrt(oo(i,i)); enddo
    159 z=matmul(vv,matmul(oo,transpose(vv)))
    160 end subroutine sqrtsym2
    161 
    176 subroutine sqrtsym2d(x,z,zd)! [sqrtsym2]
    177 implicit none
    178 real(dp),dimension(2,2), intent(in ):: x
    179 real(dp),dimension(2,2), intent(out):: z
    180 real(dp),dimension(2,2,2,2),intent(out):: zd
    181 real(dp),dimension(2,2):: px
    182 real(dp) :: rdetx,lrdetx,htrpxs,q
    183 rdetx=sqrt(x(1,1)*x(2,2)-x(1,2)*x(2,1)) ! <- sqrt(determinant of x)
    184 lrdetx=sqrt(rdetx)
    185 px=x/rdetx ! - preconditioned x (has unit determinant)
    186 htrpxs= ((px(1,1)+px(2,2))/2)**2 ! - {half-trace-px}-squared
    187 q=htrpxs-u1
    188 if(q<.05_dp)then ! - Taylor expansion method
    189  call sqrtsym2d_t(px,z,zd)
    190  z=z*lrdetx; zd=zd/lrdetx
    191 else
    192  call sqrtsym2d_e(x,z,zd) ! - Eigen-method
    193 endif
    194 end subroutine sqrtsym2d
    195 
    202 subroutine sqrtsym2d_e(x,z,zd)! [sqrtsym2d_e]
    203 implicit none
    204 real(dp),dimension(2,2), intent(in ):: x
    205 real(dp),dimension(2,2), intent(out):: z
    206 real(dp),dimension(2,2,2,2),intent(out):: zd
    207 real(dp),dimension(2,2,2,2):: vvd,ood
    208 real(dp),dimension(2,2) :: vv,oo,oori,tt
    209 integer(spi) :: i,j
    210 logical :: ff
    211 call eigensym2(x,vv,oo,vvd,ood,ff)
    212 z=u0; z(1,1)=sqrt(oo(1,1)); z(2,2)=sqrt(oo(2,2))
    213 z=matmul(matmul(vv,z),transpose(vv))
    214 oori=u0; oori(1,1)=u1/sqrt(oo(1,1)); oori(2,2)=u1/sqrt(oo(2,2))
    215 do j=1,2
    216 do i=1,2
    217  tt=matmul(vvd(:,:,i,j),transpose(vv))
    218  zd(:,:,i,j)=o2*matmul(matmul(matmul(vv,ood(:,:,i,j)),oori),transpose(vv))&
    219  +matmul(tt,z)-matmul(z,tt)
    220 enddo
    221 enddo
    222 end subroutine sqrtsym2d_e
    223 
    235 subroutine sqrtsym2d_t(x,z,zd)! [sqrtsym2d_t]
    236 implicit none
    237 real(dp),dimension(2,2), intent(in ):: x
    238 real(dp),dimension(2,2), intent(out):: z
    239 real(dp),dimension(2,2,2,2),intent(out):: zd
    240 integer(spi),parameter :: nit=300 ! number of iterative increments allowed
    241 real(dp),parameter :: crit=1.e-17
    242 real(dp),dimension(2,2) :: r,rp,rd,rpd
    243 real(dp) :: c
    244 integer(spi) :: i,j,n
    245 r=x; r(1,1)=x(1,1)-1; r(2,2)=x(2,2)-1
    246 z=u0; z(1,1)=u1; z(2,2)=u1
    247 rp=r
    248 c=o2
    249 do n=0,nit
    250  z=z+c*rp
    251  rp=matmul(rp,r)
    252  if(sum(abs(rp))<crit)exit
    253  c=-c*(n*2+1)/(2*(n+2))
    254 enddo
    255 do j=1,2; do i=1,2
    256  rd=id(:,:,i,j)
    257  rpd=rd
    258  zd(:,:,i,j)=0
    259  rp=r
    260  c=o2
    261  do n=0,nit
    262  zd(:,:,i,j)=zd(:,:,i,j)+c*rpd
    263  rpd=matmul(rd,rp)+matmul(r,rpd)
    264  rp=matmul(r,rp)
    265  if(sum(abs(rp))<crit)exit
    266  c=-c*(n*2+1)/(2*(n+2))
    267  enddo
    268 enddo; enddo
    269 end subroutine sqrtsym2d_t
    270 
    276 subroutine expsym2(em,expem)! [expsym2]
    277 implicit none
    278 real(dp),dimension(2,2),intent(in ):: em
    279 real(dp),dimension(2,2),intent(out):: expem
    280 real(dp),dimension(2,2):: vv,oo
    281 integer(spi) :: i
    282 call eigensym2(em,vv,oo)
    283 do i=1,2; oo(i,i)=exp(oo(i,i)); enddo
    284 expem=matmul(vv,matmul(oo,transpose(vv)))
    285 end subroutine expsym2
    286 
    293 subroutine expsym2d(x,z,zd)! [expsym2]
    294 implicit none
    295 real(dp),dimension(2,2), intent(in ):: x
    296 real(dp),dimension(2,2), intent(out):: z
    297 real(dp),dimension(2,2,2,2),intent(out):: zd
    298 real(dp),dimension(2,2):: px
    299 real(dp) :: trxh,detpx
    300 trxh=(x(1,1)+x(2,2))*o2
    301 px=x;px(1,1)=x(1,1)-trxh;px(2,2)=x(2,2)-trxh
    302 detpx=abs(px(1,1)*px(2,2)-px(1,2)*px(2,1))
    303 if(detpx<.1_dp)then; call expsym2d_t(px,z,zd)
    304 else ; call expsym2d_e(px,z,zd)
    305 endif
    306 z=z*exp(trxh)
    307 end subroutine expsym2d
    308 
    316 subroutine expsym2d_e(x,z,zd)! [expsym2d_e]
    317 implicit none
    318 real(dp),dimension(2,2), intent(in ):: x
    319 real(dp),dimension(2,2), intent(out):: z
    320 real(dp),dimension(2,2,2,2),intent(out):: zd
    321 real(dp),dimension(2,2,2,2):: vvd,ood
    322 real(dp),dimension(2,2) :: vv,oo,ooe,tt
    323 integer(spi) :: i,j
    324 logical :: ff
    325 call eigensym2(x,vv,oo,vvd,ood,ff)
    326 z=u0; z(1,1)=exp(oo(1,1)); z(2,2)=exp(oo(2,2))
    327 z=matmul(matmul(vv,z),transpose(vv))
    328 ooe=u0; ooe(1,1)=exp(oo(1,1)); ooe(2,2)=exp(oo(2,2))
    329 do j=1,2
    330 do i=1,2
    331  tt=matmul(vvd(:,:,i,j),transpose(vv))
    332  zd(:,:,i,j)=matmul(matmul(matmul(vv,ood(:,:,i,j)),ooe),transpose(vv))&
    333  +matmul(tt,z)-matmul(z,tt)
    334 enddo
    335 enddo
    336 end subroutine expsym2d_e
    337 
    346 subroutine expsym2d_t(x,z,zd)! [expsym2d_t]
    347 implicit none
    348 real(dp),dimension(2,2), intent(in ):: x
    349 real(dp),dimension(2,2), intent(out):: z
    350 real(dp),dimension(2,2,2,2),intent(out):: zd
    351 integer(spi),parameter :: nit=100 ! number of iterative increments allowed
    352 real(dp),parameter :: crit=1.e-17_dp
    353 real(dp),dimension(2,2) :: xp,xd,xpd
    354 real(dp) :: c
    355 integer(spi) :: i,j,n
    356 z=0; z(1,1)=u1; z(2,2)=u1
    357 xp=x
    358 c=u1
    359 do n=1,nit
    360  z=z+c*xp
    361  xp=matmul(xp,x)
    362  if(sum(abs(xp))<crit)exit
    363  c=c/(n+1)
    364 enddo
    365 do j=1,2; do i=1,2
    366  xd=id(:,:,i,j)
    367  xpd=xd
    368  zd(:,:,i,j)=0
    369  xp=x
    370  c=u1
    371  do n=1,nit
    372  zd(:,:,i,j)=zd(:,:,i,j)+c*xpd
    373  xpd=matmul(xd,xp)+matmul(x,xpd)
    374  xp=matmul(x,xp)
    375  if(sum(abs(xpd))<crit)exit
    376  c=c/(n+1)
    377  enddo
    378 enddo; enddo
    379 end subroutine expsym2d_t
    380 
    386 subroutine logsym2(em,logem)! [logsym2]
    387 implicit none
    388 real(dp),dimension(2,2),intent(in ):: em
    389 real(dp),dimension(2,2),intent(out):: logem
    390 real(dp),dimension(2,2):: vv,oo
    391 integer(spi) :: i
    392 call eigensym2(em,vv,oo)
    393 do i=1,2
    394  if(oo(i,i)<=u0)stop 'In logsym2; matrix em is not positive definite'
    395  oo(i,i)=log(oo(i,i))
    396 enddo
    397 logem=matmul(vv,matmul(oo,transpose(vv)))
    398 end subroutine logsym2
    399 
    408 subroutine logsym2d(x,z,zd)! [logsym2]
    409 use pfun, only: sinhox
    410 implicit none
    411 real(dp),dimension(2,2), intent(in ):: x
    412 real(dp),dimension(2,2), intent(out):: z
    413 real(dp),dimension(2,2,2,2),intent(out):: zd
    414 real(dp),dimension(2,2):: vv,oo,d11,d12,d22,pqr,d11pqr,d12pqr,d22pqr
    415 real(dp) :: c,s,cc,cs,ss,c2h,p,q,r,lp,lq,L
    416 integer(spi) :: i
    417 call eigensym2(x,vv,oo)
    418 if(oo(1,1)<=u0 .or. oo(2,2)<=u0)stop 'In logsym2; matrix x is not positive definite'
    419 c=vv(1,1); s=vv(1,2); cc=c*c; cs=c*s; ss=s*s; c2h=(cc-ss)*o2
    420 p=u1/oo(1,1); q=u1/oo(2,2); lp=log(p); lq=log(q); oo(1,1)=-lp; oo(2,2)=-lq
    421 z=matmul(vv,matmul(oo,transpose(vv)))
    422 l=(lp-lq)*o2; r=sqrt(p*q)/sinhox(l)
    423 d11(1,:)=(/ cc,cs /); d11(2,:)=(/ cs,ss/)
    424 d12(1,:)=(/-cs,c2h/); d12(2,:)=(/c2h,cs/)
    425 d22(1,:)=(/ ss,-cs/); d22(2,:)=(/-cs,cc/)
    426 pqr(1,:)=(/p,r/) ; pqr(2,:)=(/r,q/)
    427 d11pqr=d11*pqr
    428 d12pqr=d12*pqr
    429 d22pqr=d22*pqr
    430 zd(:,:,1,1)=matmul(vv,matmul(d11pqr,transpose(vv)))
    431 zd(:,:,1,2)=matmul(vv,matmul(d12pqr,transpose(vv)))
    432 zd(:,:,2,2)=matmul(vv,matmul(d22pqr,transpose(vv)))
    433 zd(:,:,2,1)=zd(:,:,1,2)
    434 end subroutine logsym2d
    435 
    441 subroutine id2222(em)! [id2222]
    442 implicit none
    443 real(dp),dimension(2,2,2,2),intent(out):: em
    444 real(dp),dimension(2,2,2,2) :: id
    445 !data id/u1,u0,u0,u0, u0,o2,o2,u0, u0,o2,o2,u0, u0,u0,u0,u1/! Effective identity
    446 em=id
    447 end subroutine id2222
    448 
    457 subroutine chol2(s,c,ff)! [chol2]
    458 use pietc, only: u0
    459 implicit none
    460 real(dp),dimension(2,2),intent(in ):: s
    461 real(dp),dimension(2,2),intent(out):: c
    462 logical ,intent(out):: ff
    463 real(dp):: r
    464 ff=s(1,1)<=u0; if(ff)return
    465 c(1,1)=sqrt(s(1,1))
    466 c(1,2)=u0
    467 c(2,1)=s(2,1)/c(1,1)
    468 r=s(2,2)-c(2,1)**2
    469 ff=r<=u0; if(ff)return
    470 c(2,2)=sqrt(r)
    471 end subroutine chol2
    472 
    473 end module psym2
    474 
    This module is for evaluating several useful real-valued functions that are not always available in F...
    Definition: pfun.f90:11
    +
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    + +
    real(dp), parameter u0
    zero
    Definition: pietc.f90:19
    +
    subroutine expsym2d(x, z, zd)
    Get the exp of a symmetric 2*2 matrix, and its symmetric derivative.
    Definition: psym2.f90:294
    + + + + + + + +
    subroutine sqrtsym2d(x, z, zd)
    General routine to evaluate z=sqrt(x), and the symmetric derivative, zd = dz/dx, where x is a symmetr...
    Definition: psym2.f90:177
    + + +
    A suite of routines to perform the eigen-decomposition of symmetric 2*2 matrices and to deliver basic...
    Definition: psym2.f90:11
    +
    subroutine invsym2d(em, z, zd)
    Get the inverse, z,of a 2*2 symmetric matrix, em, and its derivative, zd, with respect to symmetric v...
    Definition: psym2.f90:132
    +
    real(dp), parameter u1
    one
    Definition: pietc.f90:20
    +
    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.
    Definition: psym2.f90:409
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    + +
    integer, parameter spi
    Single precision integer kind.
    Definition: pkind.f90:8
    + +
    real(dp), parameter o2
    half
    Definition: pietc.f90:32
    +
    real(dp), dimension(2, 2, 2, 2) id
    ID.
    Definition: psym2.f90:18
    +
    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 ei...
    Definition: psym2.f90:76
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/regional__esg__grid_8f90.html b/ver-1.11.0/grid_tools/regional__esg__grid_8f90.html new file mode 100644 index 000000000..08b1a5baf --- /dev/null +++ b/ver-1.11.0/grid_tools/regional__esg__grid_8f90.html @@ -0,0 +1,191 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/regional_esg_grid.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    regional_esg_grid.f90 File Reference
    +
    +
    + +

    Compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine check (status)
     Check results of netCDF call. More...
     
    program regional_grid
     Driver routine to compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid. More...
     
    +

    Detailed Description

    +

    Compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid.

    +
    Author
    R. J. Purser
    + +

    Definition in file regional_esg_grid.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ check()

    + +
    +
    + + + + + + + + +
    subroutine check (integer, intent(in) status)
    +
    + +

    Check results of netCDF call.

    +
    Parameters
    + + +
    [in]statusreturn code to check
    +
    +
    +
    Author
    R. J. Purser
    + +

    Definition at line 191 of file regional_esg_grid.f90.

    + +
    +
    + +

    ◆ regional_grid()

    + +
    +
    + + + + + + + +
    program regional_grid ()
    +
    + +

    Driver routine to compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional grid.

    +

    The parameters are:

      +
    • Geographic longitude (degrees)
    • +
    • Geographic latitude (degrees)
    • +
    • Grid edge 'x' distance (meters)
    • +
    • Grid edge 'y' distance (meters)
    • +
    • Area (meters squared)
    • +
    • Grid vertex 'x' angle with respect to geographic east (degrees)
    • +
    • Grid vertex 'y' angle with respect to geographic north (degrees)
      Author
      R. J. Purser
      +
      Returns
      0 for success, error code otherwise.
      +
    • +
    + +

    Definition at line 18 of file regional_esg_grid.f90.

    + +

    References check(), pkind::dp, pietc::dtor, and pietc::rtod.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/regional__esg__grid_8f90.js b/ver-1.11.0/grid_tools/regional__esg__grid_8f90.js new file mode 100644 index 000000000..dce065bfc --- /dev/null +++ b/ver-1.11.0/grid_tools/regional__esg__grid_8f90.js @@ -0,0 +1,5 @@ +var regional__esg__grid_8f90 = +[ + [ "check", "regional__esg__grid_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50", null ], + [ "regional_grid", "regional__esg__grid_8f90.html#a5d27396a033fbebf9ad5e56a21048727", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/regional__esg__grid_8f90_source.html b/ver-1.11.0/grid_tools/regional__esg__grid_8f90_source.html new file mode 100644 index 000000000..8e560a298 --- /dev/null +++ b/ver-1.11.0/grid_tools/regional__esg__grid_8f90_source.html @@ -0,0 +1,115 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/regional_esg_grid.fd/regional_esg_grid.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    regional_esg_grid.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    19 
    20  use pkind, only: dp
    21  use pietc, only: dtor,rtod
    22  use pesg
    23  use netcdf
    24 
    25  implicit none
    26 
    27  ! namelist variables
    28  real(dp) :: plat,plon,pazi=0.0
    29  real(dp) :: delx,dely
    30  integer :: lx,ly
    31  namelist /regional_grid_nml/ plat,plon,pazi,delx,dely,lx,ly
    32 
    33  real(dp),parameter :: re=6371200.0
    34  real(dp),parameter :: lam=0.8
    35 
    36  integer :: nxh,nyh, nx,ny, nxm,nym
    37  logical :: ff
    38 
    39  real(dp),dimension(:,:),allocatable:: glat,glon
    40  real(dp),dimension(:,:),allocatable:: garea
    41  real(dp),dimension(:,:),allocatable:: dx,dy,angle_dx,angle_dy
    42 
    43  character(len=256) :: nml_fname
    44 
    45  ! netcdf
    46  integer :: ncid
    47  integer :: string_dimid, nxp_dimid, nyp_dimid, nx_dimid, ny_dimid
    48  integer :: tile_varid, x_varid, y_varid, area_varid
    49  integer :: dx_varid, dy_varid, angle_dx_varid, angle_dy_varid
    50  integer, dimension(2) :: dimids
    51 
    52  real(dp) :: a,k,m_arcx,m_arcy,q
    53  real(dp) :: m_delx,m_dely, delxre,delyre
    54  real(dp) :: arcx,arcy
    55 
    56 !=============================================================================
    57 
    58  if (command_argument_count() == 1) then
    59  call get_command_argument(1, nml_fname)
    60  else
    61  nml_fname = "regional_grid.nml"
    62  end if
    63 
    64  open(10,file=trim(nml_fname),status="old",action="read")
    65  read(10,nml=regional_grid_nml)
    66  close(10)
    67 
    68  nxh=-lx
    69  nyh=-ly
    70  nx=2*nxh
    71  ny=2*nyh
    72  nxm=nx-1
    73  nym=ny-1
    74 
    75  allocate(glat(0:nx,0:ny))
    76  allocate(glon(0:nx,0:ny))
    77  allocate(garea(0:nxm,0:nym))
    78 
    79  allocate(dx(0:nxm,0:ny))
    80  allocate(dy(0:nx,0:nym))
    81  allocate(angle_dx(0:nx,0:ny))
    82  allocate(angle_dy(0:nx,0:ny))
    83 
    84  arcx=delx*nxh
    85  arcy=dely*nyh
    86  print'("arcx, arcy ",f8.4,f8.4)',arcx,arcy
    87  call bestesg_geo(lam,arcx,arcy, a,k,m_arcx,m_arcy,q,ff)
    88  if(ff)stop 'Failure flag returned from get_bestesg'
    89  print'("For lam=",f8.2," the best [smallest possible]")',lam
    90  print'("optimality criterion, Q, for this domain: ",e13.6 )',q
    91  print'("The corresponding optimal A and K:",2(1x,f8.4))',a,k
    92  print'("The corresponding m_arcx,y:",2(1x,e20.13))',m_arcx,m_arcy
    93 
    94  m_delx=m_arcx/nxh ! Map-space grid steps in x
    95  m_dely=m_arcy/nyh ! Map-space grid steps in y
    96  print'("x and y central grid resolution in map units:",2(1x,e12.5))',m_delx,m_dely
    97 
    98  print'("Get additional diagnostics from hgrid_ak_rr")'
    99 
    100  delxre=m_delx*re
    101  delyre=m_dely*re
    102 
    103  call hgrid_ak(lx,ly, nx,ny, a,k, plat*dtor,plon*dtor,pazi*dtor, re,delxre,delyre, &
    104  glat,glon,garea, dx,dy,angle_dx,angle_dy, ff)
    105  if(ff)stop 'Failure flag raised in hgrid routine'
    106 
    107  glon = glon*rtod
    108  glat = glat*rtod
    109  where (glon < 0.0) glon = glon + 360.0
    110 
    111  call check( nf90_create("regional_grid.nc", nf90_64bit_offset, ncid) )
    112  call check( nf90_def_dim(ncid, "string", 255, string_dimid) )
    113  call check( nf90_def_dim(ncid, "nx", nx, nx_dimid) )
    114  call check( nf90_def_dim(ncid, "ny", ny, ny_dimid) )
    115  call check( nf90_def_dim(ncid, "nxp", nx+1, nxp_dimid) )
    116  call check( nf90_def_dim(ncid, "nyp", ny+1, nyp_dimid) )
    117 
    118  call check( nf90_def_var(ncid, "tile", nf90_char, [string_dimid], tile_varid) )
    119  call check( nf90_put_att(ncid, tile_varid, "standard_name", "grid_tile_spec") )
    120 
    121  dimids = (/ nxp_dimid, nyp_dimid /)
    122  call check( nf90_def_var(ncid, "x", nf90_double, dimids, x_varid) )
    123  call check( nf90_put_att(ncid, x_varid, "standard_name", "geographic_longitude") )
    124  call check( nf90_put_att(ncid, x_varid, "units", "degree_east") )
    125  call check( nf90_put_att(ncid, x_varid, "hstagger", "C") )
    126  call check( nf90_def_var(ncid, "y", nf90_double, dimids, y_varid) )
    127  call check( nf90_put_att(ncid, y_varid, "standard_name", "geographic_latitude") )
    128  call check( nf90_put_att(ncid, y_varid, "units", "degree_north") )
    129  call check( nf90_put_att(ncid, y_varid, "hstagger", "C") )
    130  dimids = (/ nx_dimid, ny_dimid /)
    131  call check( nf90_def_var(ncid, "area", nf90_double, dimids, area_varid) )
    132  call check( nf90_put_att(ncid, area_varid, "standard_name", "grid_cell_area") )
    133  call check( nf90_put_att(ncid, area_varid, "units", "m2") )
    134  call check( nf90_put_att(ncid, area_varid, "hstagger", "H") )
    135 
    136  dimids = (/ nx_dimid, nyp_dimid /)
    137  call check( nf90_def_var(ncid, "dx", nf90_double, dimids, dx_varid) )
    138  call check( nf90_put_att(ncid, dx_varid, "standard_name", "dx") )
    139  call check( nf90_put_att(ncid, dx_varid, "units", "m") )
    140  call check( nf90_put_att(ncid, dx_varid, "hstagger", "H") )
    141 
    142  dimids = (/ nxp_dimid, ny_dimid /)
    143  call check( nf90_def_var(ncid, "dy", nf90_double, dimids, dy_varid) )
    144  call check( nf90_put_att(ncid, dy_varid, "standard_name", "dy") )
    145  call check( nf90_put_att(ncid, dy_varid, "units", "m") )
    146  call check( nf90_put_att(ncid, dy_varid, "hstagger", "H") )
    147 
    148  dimids = (/ nxp_dimid, nyp_dimid /)
    149  call check( nf90_def_var(ncid, "angle_dx", nf90_double, dimids, angle_dx_varid) )
    150  call check( nf90_put_att(ncid, angle_dx_varid, "standard_name", "angle_dx") )
    151  call check( nf90_put_att(ncid, angle_dx_varid, "units", "deg") )
    152  call check( nf90_put_att(ncid, angle_dx_varid, "hstagger", "C") )
    153  call check( nf90_def_var(ncid, "angle_dy", nf90_double, dimids, angle_dy_varid) )
    154  call check( nf90_put_att(ncid, angle_dy_varid, "standard_name", "angle_dy") )
    155  call check( nf90_put_att(ncid, angle_dy_varid, "units", "deg") )
    156  call check( nf90_put_att(ncid, angle_dy_varid, "hstagger", "C") )
    157 
    158  call check( nf90_put_att(ncid, nf90_global, "history", "gnomonic_ed") )
    159  call check( nf90_put_att(ncid, nf90_global, "source", "FV3GFS") )
    160  call check( nf90_put_att(ncid, nf90_global, "grid", "akappa") )
    161  call check( nf90_put_att(ncid, nf90_global, "plat", plat) )
    162  call check( nf90_put_att(ncid, nf90_global, "plon", plon) )
    163  call check( nf90_put_att(ncid, nf90_global, "pazi", pazi) )
    164  call check( nf90_put_att(ncid, nf90_global, "delx", m_delx*rtod) )
    165  call check( nf90_put_att(ncid, nf90_global, "dely", m_dely*rtod) )
    166  call check( nf90_put_att(ncid, nf90_global, "lx", lx) )
    167  call check( nf90_put_att(ncid, nf90_global, "ly", ly) )
    168  call check( nf90_put_att(ncid, nf90_global, "a", a) )
    169  call check( nf90_put_att(ncid, nf90_global, "k", k) )
    170 
    171  call check( nf90_enddef(ncid) )
    172 
    173  call check( nf90_put_var(ncid, tile_varid, "tile7") )
    174  call check( nf90_put_var(ncid, x_varid, glon) )
    175  call check( nf90_put_var(ncid, y_varid, glat) )
    176  call check( nf90_put_var(ncid, area_varid, garea) )
    177  call check( nf90_put_var(ncid, dx_varid, dx) )
    178  call check( nf90_put_var(ncid, dy_varid, dy) )
    179  call check( nf90_put_var(ncid, angle_dx_varid, angle_dx) )
    180  call check( nf90_put_var(ncid, angle_dy_varid, angle_dy) )
    181 
    182  call check( nf90_close(ncid) )
    183 
    184 end program regional_grid
    185 
    190 subroutine check(status)
    191 use netcdf
    192 integer,intent(in) :: status
    193 !
    194 if(status /= nf90_noerr) then
    195  write(0,*)' check netcdf status=',status
    196  write(0,'("error ", a)')trim(nf90_strerror(status))
    197  stop "Stopped"
    198 endif
    199 end subroutine check
    integer, parameter dp
    Double precision real kind.
    Definition: pkind.f90:11
    +
    Standard integer, real, and complex single and double precision kinds.
    Definition: pkind.f90:7
    +
    Suite of routines to perform the 2-parameter family of Extended Schmidt Gnomonic (ESG) regional grid ...
    Definition: pesg.f90:15
    + + +
    real(dp), parameter dtor
    Degrees to radians.
    Definition: pietc.f90:54
    +
    real(dp), parameter rtod
    radians to degrees
    Definition: pietc.f90:55
    +
    Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
    Definition: pietc.f90:14
    +
    program regional_grid
    Driver routine to compute geo-referencing parameters for the Extended Schmidt Gnomonic (ESG) regional...
    +
    subroutine check(status)
    Check results of netCDF call.
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/resize.js b/ver-1.11.0/grid_tools/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/grid_tools/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/grid_tools/search/all_0.html b/ver-1.11.0/grid_tools/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_0.js b/ver-1.11.0/grid_tools/search/all_0.js new file mode 100644 index 000000000..04e8281b0 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_0.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['absv',['absv',['../interfacepmat4_1_1absv.html',1,'pmat4']]], + ['absv_5fd',['absv_d',['../interfacepmat4_1_1absv.html#ad61e1f7682aeffa661af6ad859f7d2bb',1,'pmat4::absv::absv_d()'],['../namespacepmat4.html#a1bd0a24f4302dafd8d2da8e9db3161bf',1,'pmat4::absv_d()']]], + ['absv_5fs',['absv_s',['../interfacepmat4_1_1absv.html#a1d066914e001461712300c0ff1442a90',1,'pmat4::absv::absv_s()'],['../namespacepmat4.html#a943a88c224ed6f395284e437e7703d66',1,'pmat4::absv_s()']]], + ['ahav',['ahav',['../interfacepfun_1_1ahav.html',1,'pfun']]], + ['ahav_5fd',['ahav_d',['../interfacepfun_1_1ahav.html#acf8305d2f736dd6391036ac3ab10c8f5',1,'pfun::ahav::ahav_d()'],['../namespacepfun.html#a7eb3f64f647bd19d04fc18d4cae97140',1,'pfun::ahav_d()']]], + ['ahav_5fs',['ahav_s',['../interfacepfun_1_1ahav.html#addfbc0f51d05a1dc198cac875e42cc64',1,'pfun::ahav::ahav_s()'],['../namespacepfun.html#a4b5788e629ba2dfae6f8c5c718266379',1,'pfun::ahav_s()']]], + ['ahavh',['ahavh',['../interfacepfun_1_1ahavh.html',1,'pfun']]], + ['ahavh_5fd',['ahavh_d',['../interfacepfun_1_1ahavh.html#ac5fabed789f0296b561e319c2beb2287',1,'pfun::ahavh::ahavh_d()'],['../namespacepfun.html#abb88923266701b775e808682ff5f936b',1,'pfun::ahavh_d()']]], + ['ahavh_5fs',['ahavh_s',['../interfacepfun_1_1ahavh.html#a284548e7ddf6c883e3be29f4d717a9c9',1,'pfun::ahavh::ahavh_s()'],['../namespacepfun.html#acd76f3add5d91f3224b4802ae313f252',1,'pfun::ahavh_s()']]], + ['atanh',['atanh',['../interfacepfun_1_1atanh.html',1,'pfun']]], + ['atanh_5fd',['atanh_d',['../interfacepfun_1_1atanh.html#a69517925b9443ce8bfa7d549c6f43984',1,'pfun::atanh::atanh_d()'],['../namespacepfun.html#a171cc2c59d8a9860987e85f11c964374',1,'pfun::atanh_d()']]], + ['atanh_5fs',['atanh_s',['../interfacepfun_1_1atanh.html#a42a7065ef14bd86c138feb75dcf3f0ca',1,'pfun::atanh::atanh_s()'],['../namespacepfun.html#a8c6f20ee161a494cb4c6c0ae770c258d',1,'pfun::atanh_s()']]], + ['avco',['avco',['../interfacepmat2_1_1avco.html',1,'pmat2::avco'],['../interfacepmat2_1_1avco.html#acef3e7182ff9a93770e768e27c3fc03f',1,'pmat2::avco::AVCO()'],['../namespacepmat2.html#a4e7ca88623c62560b1aa14a366c4f8a8',1,'pmat2::AVCO()']]], + ['axial',['axial',['../interfacepmat4_1_1axial.html',1,'pmat4']]], + ['axial33_5fd',['axial33_d',['../interfacepmat4_1_1axial.html#adbc12f84fb241ef4318d8a4900ea83f9',1,'pmat4::axial::axial33_d()'],['../namespacepmat4.html#a56de8198dc945b5cba6d1fd476f84d6f',1,'pmat4::axial33_d()']]], + ['axial33_5fs',['axial33_s',['../interfacepmat4_1_1axial.html#ac9f242df29ed977669424142336a12a1',1,'pmat4::axial::axial33_s()'],['../namespacepmat4.html#af4e70c88c7c2ed2a99e4921e19fc3e4b',1,'pmat4::axial33_s()']]], + ['axial3_5fd',['axial3_d',['../interfacepmat4_1_1axial.html#ab95014bb9b6e43cfccda873529eed272',1,'pmat4::axial::axial3_d()'],['../namespacepmat4.html#a97ea1886731d1484a5716985228ada3b',1,'pmat4::axial3_d()']]], + ['axial3_5fs',['axial3_s',['../interfacepmat4_1_1axial.html#a2518e84b302457403caf258ccc5a8f2a',1,'pmat4::axial::axial3_s()'],['../namespacepmat4.html#ae1601efcae5698513dbc0f7d2ca102a1',1,'pmat4::axial3_s()']]], + ['axtoq',['axtoq',['../interfacepmat4_1_1axtoq.html',1,'pmat4::axtoq'],['../interfacepmat4_1_1axtoq.html#a0c04b6458eeef33454c770e51850ce8c',1,'pmat4::axtoq::axtoq()'],['../namespacepmat4.html#afea8becd63ae1c05d62bb8331c3290f6',1,'pmat4::axtoq()']]], + ['axtorot',['axtorot',['../interfacepmat4_1_1axtorot.html',1,'pmat4::axtorot'],['../interfacepmat4_1_1axtorot.html#a1ed5a1b7d621e3c7c19b145d62185dca',1,'pmat4::axtorot::axtorot()'],['../namespacepmat4.html#af72975c3f38b66e654180148138a2ce1',1,'pmat4::axtorot()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_1.html b/ver-1.11.0/grid_tools/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_1.js b/ver-1.11.0/grid_tools/search/all_1.js new file mode 100644 index 000000000..0d08bbf10 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bestesg_5fgeo',['bestesg_geo',['../interfacepesg_1_1bestesg__geo.html',1,'pesg::bestesg_geo'],['../interfacepesg_1_1bestesg__geo.html#a2ab7bf5fe621ccf7e709fbd15af4dea9',1,'pesg::bestesg_geo::bestesg_geo()'],['../namespacepesg.html#abb391d45295581c1b15c7cb6d5c9afb6',1,'pesg::bestesg_geo()']]], + ['bestesg_5fmap',['bestesg_map',['../interfacepesg_1_1bestesg__map.html',1,'pesg::bestesg_map'],['../interfacepesg_1_1bestesg__map.html#aec609b83b6f4f05beaba28ce0b6144a7',1,'pesg::bestesg_map::bestesg_map()'],['../namespacepesg.html#a5c9f36282d23e5297d6a5ae71d60d6bf',1,'pesg::bestesg_map()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_10.html b/ver-1.11.0/grid_tools/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_10.js b/ver-1.11.0/grid_tools/search/all_10.js new file mode 100644 index 000000000..fc71f6206 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_10.js @@ -0,0 +1,100 @@ +var searchData= +[ + ['s10',['s10',['../namespacepietc.html#ac3b72078045420fb497782ddd5b16c50',1,'pietc::s10()'],['../pietc__s_8f90.html#a0f926ba1c07bbed0b4d60a3c6ce61f84',1,'pietc_s::s10()']]], + ['s11',['s11',['../namespacepietc.html#ad409b167e861a4656fa1f6e662ff8f9a',1,'pietc::s11()'],['../pietc__s_8f90.html#ab91bdf495f346e202ed225c73cbebcda',1,'pietc_s::s11()']]], + ['s13',['s13',['../namespacepietc.html#af234094d9b4647d52c5b5b987eaeb5c3',1,'pietc::s13()'],['../pietc__s_8f90.html#a23a51b01f50bee4d91370d6e65cfaee9',1,'pietc_s::s13()']]], + ['s15',['s15',['../namespacepietc.html#a44d7a0198a54e6f94aa98f8f400c55e8',1,'pietc::s15()'],['../pietc__s_8f90.html#ae10be280e8279758cc3be4a94e3af36a',1,'pietc_s::s15()']]], + ['s18',['s18',['../namespacepietc.html#a582df1eda80d9b8e7989c7b06fa00f9d',1,'pietc::s18()'],['../pietc__s_8f90.html#ae9f0f611b70a05365d57d08a235fcbb2',1,'pietc_s::s18()']]], + ['s20',['s20',['../namespacepietc.html#afb354d2b14ec6235e1eca7671ec01620',1,'pietc::s20()'],['../pietc__s_8f90.html#ab5d1f8f4a6556ee36cd3a5750ce517d3',1,'pietc_s::s20()']]], + ['s22',['s22',['../namespacepietc.html#a08fa55c7ef0a4fcb702b40cacfb1c505',1,'pietc::s22()'],['../pietc__s_8f90.html#af0e447bc5fe989550bb0bfc2729015d4',1,'pietc_s::s22()']]], + ['s26',['s26',['../namespacepietc.html#a2708b385f05478b9ea5fccd0ac4c9fc7',1,'pietc::s26()'],['../pietc__s_8f90.html#a61f587a87ed7c05a0044111206fb3dc8',1,'pietc_s::s26()']]], + ['s30',['s30',['../namespacepietc.html#a3ca30ab35c2374be0382986cab0ffb04',1,'pietc::s30()'],['../pietc__s_8f90.html#add60b96afbcbdff58f13bc0ad9c3fdc8',1,'pietc_s::s30()']]], + ['s34',['s34',['../namespacepietc.html#a1226f7daf08d5e48c06cb4808cfe0573',1,'pietc::s34()'],['../pietc__s_8f90.html#a21bb34d4e0d62565a6b2ca9dccd7d451',1,'pietc_s::s34()']]], + ['s36',['s36',['../namespacepietc.html#a69896ff84954d5b31e086153e5f9e0f6',1,'pietc::s36()'],['../pietc__s_8f90.html#a9b77358ea68cd5295368cfcd5dc9e350',1,'pietc_s::s36()']]], + ['s39',['s39',['../namespacepietc.html#aedca26d8a554f78dea5a2617a4b4a2a6',1,'pietc::s39()'],['../pietc__s_8f90.html#aa3db36ce4eee26c8443573589aa196a5',1,'pietc_s::s39()']]], + ['s40',['s40',['../namespacepietc.html#ae4c7304f5195fc56e355895f1c696def',1,'pietc::s40()'],['../pietc__s_8f90.html#a044c2cc54c95c27b703f539a5264b76f',1,'pietc_s::s40()']]], + ['s45',['s45',['../namespacepietc.html#a6ec618c042c266eebb9c8fe369d692be',1,'pietc::s45()'],['../pietc__s_8f90.html#aebf5a9ddfb89c17cd327acface976694',1,'pietc_s::s45()']]], + ['s50',['s50',['../namespacepietc.html#a1f13f6eca17fbfbb8e385f25c82bc9c2',1,'pietc::s50()'],['../pietc__s_8f90.html#a666697f14842c7f2cab1fdd214a647de',1,'pietc_s::s50()']]], + ['s51',['s51',['../namespacepietc.html#a35424b6416d73103c6d821c52d7284a2',1,'pietc::s51()'],['../pietc__s_8f90.html#a0e3e131e0b1179ddc2f276840f29276a',1,'pietc_s::s51()']]], + ['s54',['s54',['../namespacepietc.html#a4611c0657a12873ee8a29162c0ca150d',1,'pietc::s54()'],['../pietc__s_8f90.html#af90cd479cfeea6604524c509466c622d',1,'pietc_s::s54()']]], + ['s56',['s56',['../namespacepietc.html#ac06beca2bcaa201876833b4916a00545',1,'pietc::s56()'],['../pietc__s_8f90.html#a9e6867a44c77080afdfb04e04b67e052',1,'pietc_s::s56()']]], + ['s60',['s60',['../namespacepietc.html#ae307dcb26a4c4aaad8aeecbf38a9ae5a',1,'pietc::s60()'],['../pietc__s_8f90.html#a89091096d073098066efc0ad1bce6bde',1,'pietc_s::s60()']]], + ['s64',['s64',['../namespacepietc.html#a38eedf82788d5e3206b678ea21c3c070',1,'pietc::s64()'],['../pietc__s_8f90.html#a6865a52d1f2d4d686d5e7ed6ceda8314',1,'pietc_s::s64()']]], + ['s68',['s68',['../namespacepietc.html#a788eef5cd96c8c9b5d2f941f1c71c986',1,'pietc::s68()'],['../pietc__s_8f90.html#abfb56a32d06f10b0dee762ef9bfb270a',1,'pietc_s::s68()']]], + ['s70',['s70',['../namespacepietc.html#aac6789d00820c1735870df16b543fb9e',1,'pietc::s70()'],['../pietc__s_8f90.html#af972a379292c421f30cefe7e100da068',1,'pietc_s::s70()']]], + ['s72',['s72',['../namespacepietc.html#a752cd6e2509c06cc3f842439800f390d',1,'pietc::s72()'],['../pietc__s_8f90.html#aae82132c702b66ce1976c24eea6de11b',1,'pietc_s::s72()']]], + ['s75',['s75',['../namespacepietc.html#a92f549bfe71b473b1ee2e81493387bf9',1,'pietc::s75()'],['../pietc__s_8f90.html#a7d50358b4415fb6c2108dc15d5264287',1,'pietc_s::s75()']]], + ['s77',['s77',['../namespacepietc.html#a1941aac9a0ac3c7b2b4123c41e60c01c',1,'pietc::s77()'],['../pietc__s_8f90.html#a0e84a47a9deded8b33ba3568253acf9b',1,'pietc_s::s77()']]], + ['s79',['s79',['../namespacepietc.html#aa0aca0ec4b8a0eb192e2cc508bd78670',1,'pietc::s79()'],['../pietc__s_8f90.html#ad1499babe6c008001cf2dec6081b694f',1,'pietc_s::s79()']]], + ['s80',['s80',['../namespacepietc.html#a232707ecdb74237620f2673c8843a048',1,'pietc::s80()'],['../pietc__s_8f90.html#a7c460d20a4e97d6b6fd038f7ae1e6693',1,'pietc_s::s80()']]], + ['sarea',['sarea',['../interfacepmat4_1_1sarea.html',1,'pmat4']]], + ['sarea_5fd',['sarea_d',['../interfacepmat4_1_1sarea.html#a4209845703ee94e887eeaa958c71283e',1,'pmat4::sarea::sarea_d()'],['../namespacepmat4.html#a60825439c3ab3cdb5f56dde3905d6705',1,'pmat4::sarea_d()']]], + ['sarea_5fs',['sarea_s',['../interfacepmat4_1_1sarea.html#afa941100f8fab5668bd37a069e844725',1,'pmat4::sarea::sarea_s()'],['../namespacepmat4.html#aa1d04d9f7dc4104ed54af07a59e0741f',1,'pmat4::sarea_s()']]], + ['sc',['sc',['../namespacecstgeo.html#a64bcd54569dd77ca573f5ece7e2759e7',1,'cstgeo::sc()'],['../namespacedcstgeo.html#a7b21b371112f39f652fca028a7d5917e',1,'dcstgeo::sc()']]], + ['sci',['sci',['../namespacecstgeo.html#addbe59e962ad38732efb4adda0ec7b7f',1,'cstgeo::sci()'],['../namespacedcstgeo.html#a25d603dde5cb470f72b8dacbabbc8efd',1,'dcstgeo::sci()']]], + ['sctoc',['sctoc',['../interfacepmat5_1_1ctoc__schm.html#a1bd14814c1ce196e1fb1666d2c473168',1,'pmat5::ctoc_schm::sctoc()'],['../namespacepmat5.html#a86a7576b348a2747a7f7feb9a8bd60c8',1,'pmat5::sctoc()']]], + ['sctocd',['sctocd',['../interfacepmat5_1_1ctoc__schm.html#a59976cc91d66baa6eaa8aaaa132cea31',1,'pmat5::ctoc_schm::sctocd()'],['../namespacepmat5.html#a7248db240ab1a98ac980d3b4190e003e',1,'pmat5::sctocd()']]], + ['sctocdd',['sctocdd',['../interfacepmat5_1_1ctoc__schm.html#ad1519592ec41338f46f5e16811468796',1,'pmat5::ctoc_schm::sctocdd()'],['../namespacepmat5.html#ad04f85b3792a2b8d7d980a1ab2c8d2c4',1,'pmat5::sctocdd()']]], + ['sctog',['sctog',['../interfacepmat5_1_1ctog.html#a37ef6420049a2fd2ebcda896b53d5339',1,'pmat5::ctog::sctog()'],['../namespacepmat5.html#a5af7ff2967ce4feb2dbaad607b86b53c',1,'pmat5::sctog()']]], + ['sctogr',['sctogr',['../interfacepmat5_1_1ctogr.html#a0d2fb37c9fc083ced37ffd7967c95343',1,'pmat5::ctogr::sctogr()'],['../namespacepmat5.html#a7ae12feca1ae732c41143c9d1fb09a13',1,'pmat5::sctogr()']]], + ['sech',['sech',['../interfacepfun_1_1sech.html',1,'pfun']]], + ['sech_5fd',['sech_d',['../interfacepfun_1_1sech.html#aef9ac9a07c282fd90345f3905353659b',1,'pfun::sech::sech_d()'],['../namespacepfun.html#a194d1cbf0876b016e4c1465bc73629cb',1,'pfun::sech_d()']]], + ['sech_5fs',['sech_s',['../interfacepfun_1_1sech.html#a106d127499d43f402ea6589cef825d45',1,'pfun::sech::sech_s()'],['../namespacepfun.html#afde31ca448b75ea9feaa908ecd14b24e',1,'pfun::sech_s()']]], + ['sechs',['sechs',['../interfacepfun_1_1sechs.html',1,'pfun']]], + ['sechs_5fd',['sechs_d',['../interfacepfun_1_1sechs.html#a4f02efd305e6a2ceaac3414b4e233a98',1,'pfun::sechs::sechs_d()'],['../namespacepfun.html#a95e75a721fd184bc5df82206030aff90',1,'pfun::sechs_d()']]], + ['sechs_5fs',['sechs_s',['../interfacepfun_1_1sechs.html#a1323f4c401c15a81b02d42d3cc17a566',1,'pfun::sechs::sechs_s()'],['../namespacepfun.html#ae16f0b042839586e3f28a2d7e923a685',1,'pfun::sechs_s()']]], + ['setem',['setem',['../interfacepmat4_1_1setem.html',1,'pmat4::setem'],['../interfacepmat4_1_1setem.html#aebe672e27bf7de84d3568263017ed02c',1,'pmat4::setem::setem()'],['../namespacepmat4.html#a0967dfcd81af21a8224df0e9872f7636',1,'pmat4::setem()']]], + ['setmobius',['setmobius',['../interfacepmat4_1_1setmobius.html',1,'pmat4::setmobius'],['../interfacepmat4_1_1setmobius.html#a5cde6d13f26ca88a19af53f6c13032a5',1,'pmat4::setmobius::setmobius()'],['../namespacepmat4.html#acc922362fc8befbb9a24ee241227720a',1,'pmat4::setmobius()']]], + ['sframetwist',['sframetwist',['../interfacepmat5_1_1frametwist.html#a3a41677bae3596303c7e539f356595dd',1,'pmat5::frametwist::sframetwist()'],['../namespacepmat5.html#a3468057ec5bccd70177603e18d79e417',1,'pmat5::sframetwist()']]], + ['sgrtoc',['sgrtoc',['../interfacepmat5_1_1grtoc.html#a1b352ea961d84e67f2b691bde6329464',1,'pmat5::grtoc::sgrtoc()'],['../namespacepmat5.html#a45f0f8fc27cf94aa14980e2592ab4fa5',1,'pmat5::sgrtoc()']]], + ['sgrtocd',['sgrtocd',['../interfacepmat5_1_1grtoc.html#a469b3c08267d7c7569cdf455ad00310d',1,'pmat5::grtoc::sgrtocd()'],['../namespacepmat5.html#ae598bf2142d5bac03f4add7ab526d1d1',1,'pmat5::sgrtocd()']]], + ['sgrtocdd',['sgrtocdd',['../interfacepmat5_1_1grtoc.html#a3b648bea2b96e7c8898e1a25e73c2637',1,'pmat5::grtoc::sgrtocdd()'],['../namespacepmat5.html#a4a3c6fc6906b4d433f114b02b70b8781',1,'pmat5::sgrtocdd()']]], + ['sgtoc',['sgtoc',['../interfacepmat5_1_1gtoc.html#a35113c9ac6c87dc3467a8e951d547d9b',1,'pmat5::gtoc::sgtoc()'],['../namespacepmat5.html#a5fb323cf2d5049ca71cea8b093f246a5',1,'pmat5::sgtoc()']]], + ['sgtocd',['sgtocd',['../interfacepmat5_1_1gtoc.html#a820e349dffdd9a97b835d4f0ba09fa21',1,'pmat5::gtoc::sgtocd()'],['../namespacepmat5.html#a003a281787daf4e97fcaaa3b8c3274a3',1,'pmat5::sgtocd()']]], + ['sgtocdd',['sgtocdd',['../interfacepmat5_1_1gtoc.html#a27afb017885869e9d62e4ca3a57d2bb3',1,'pmat5::gtoc::sgtocdd()'],['../namespacepmat5.html#aff15189d640f2985c4cb86870fe939e3',1,'pmat5::sgtocdd()']]], + ['sgtoframem',['sgtoframem',['../interfacepmat5_1_1gtoframe.html#a20da5d35d41f32559a35e546864405b0',1,'pmat5::gtoframe::sgtoframem()'],['../namespacepmat5.html#ae6e7a5a97b413e17866c523ef49e5785',1,'pmat5::sgtoframem()']]], + ['sgtoframev',['sgtoframev',['../interfacepmat5_1_1gtoframe.html#a62ef0eb9d9bf3b4347490914ceae2a2d',1,'pmat5::gtoframe::sgtoframev()'],['../namespacepmat5.html#acce6c355875099aa350a33edf2a47680',1,'pmat5::sgtoframev()']]], + ['shave_5fnc',['shave_nc',['../shave__nc_8F90.html#a2af361e0786880807affb066c9678b17',1,'shave_nc.F90']]], + ['shave_5fnc_2ef90',['shave_nc.F90',['../shave__nc_8F90.html',1,'']]], + ['sinhox',['sinhox',['../interfacepfun_1_1sinhox.html',1,'pfun']]], + ['sinhox_5fd',['sinhox_d',['../interfacepfun_1_1sinhox.html#af3c51392433a4b18c9a7baad4b9cbd2b',1,'pfun::sinhox::sinhox_d()'],['../namespacepfun.html#a1305026f40bb5ea5e505daaaaa4765b1',1,'pfun::sinhox_d()']]], + ['sinhoxm',['sinhoxm',['../interfacepfun_1_1sinhoxm.html',1,'pfun']]], + ['sinhoxm_5fd',['sinhoxm_d',['../interfacepfun_1_1sinhoxm.html#ad6b249c10f7bc87358a6509e090e9417',1,'pfun::sinhoxm::sinhoxm_d()'],['../namespacepfun.html#a255912b9cb3ebb9f43f89ddc673022ad',1,'pfun::sinhoxm_d()']]], + ['sininmap',['sininmap',['../interfacepmat5_1_1ininmap.html#acfad2d8ddcde6ef47eaf59a1605218f1',1,'pmat5::ininmap::sininmap()'],['../namespacepmat5.html#ac90003637943f98a27697961f8383bb0',1,'pmat5::sininmap()']]], + ['sinivmap',['sinivmap',['../interfacepmat5_1_1inivmap.html#a252d4a4943465b8b99b71ec6f49a48c2',1,'pmat5::inivmap::sinivmap()'],['../namespacepmat5.html#a094c4f88c3584c4e81e87376c40b6823',1,'pmat5::sinivmap()']]], + ['sinox',['sinox',['../interfacepfun_1_1sinox.html',1,'pfun']]], + ['sinox_5fd',['sinox_d',['../interfacepfun_1_1sinox.html#a23275f052c82f47125d3b6118ffa0a7b',1,'pfun::sinox::sinox_d()'],['../namespacepfun.html#a8a8959ba3cccb06cad5a2a379f85e066',1,'pfun::sinox_d()']]], + ['sinoxm',['sinoxm',['../interfacepfun_1_1sinoxm.html',1,'pfun']]], + ['sinoxm_5fd',['sinoxm_d',['../interfacepfun_1_1sinoxm.html#a730c51002f428fd257ed50d3dd1d8aff',1,'pfun::sinoxm::sinoxm_d()'],['../namespacepfun.html#accb9c8adb4b2127c72962f1f7ce6214a',1,'pfun::sinoxm_d()']]], + ['sinvl',['sinvl',['../interfacepmat_1_1invl.html#abffb73fbc094035656ef45f729c83155',1,'pmat::invl::sinvl()'],['../pmat_8f90.html#a42525bcdb1bd741fabb1cc3df45393ac',1,'pmat::sinvl()']]], + ['sinvmt',['sinvmt',['../interfacepmat_1_1inv.html#a42370b46ba87997e7fc39715a05c68a5',1,'pmat::inv::sinvmt()'],['../pmat_8f90.html#aa39cfa5d6acc912cda77a29458af63ec',1,'pmat::sinvmt()']]], + ['sinvmtf',['sinvmtf',['../interfacepmat_1_1inv.html#a3bc4f0ba9fbbc209c86622da648483e5',1,'pmat::inv::sinvmtf()'],['../pmat_8f90.html#a462dc0fcae258db5e534c2581e83889e',1,'pmat::sinvmtf()']]], + ['sinvu',['sinvu',['../interfacepmat_1_1invu.html#a716a1d1dd2921f0646999a91e9622d0c',1,'pmat::invu::sinvu()'],['../pmat_8f90.html#a5bae9e9a492ac991e73e87775bbb77a5',1,'pmat::sinvu()']]], + ['sl1lm',['sl1lm',['../pmat_8f90.html#ac39b0c62c5d17cae755b5739251bc657',1,'pmat']]], + ['sl1lmf',['sl1lmf',['../pmat_8f90.html#a1c6ebdd10a0608e8759be8168fe4333d',1,'pmat']]], + ['sldlm',['sldlm',['../pmat_8f90.html#a2d81720fc6ed0437584df1f3a59500a2',1,'pmat']]], + ['sldlmf',['sldlmf',['../pmat_8f90.html#a1667dce1a775eb86325ca0dfb7718533',1,'pmat']]], + ['sldum',['sldum',['../interfacepmat_1_1ldum.html#a1fc1aa54e2c08e0310c651ac89280662',1,'pmat::ldum::sldum()'],['../pmat_8f90.html#a856ca83cb41eaf59ab60f8a37dbc930e',1,'pmat::sldum()']]], + ['sldumf',['sldumf',['../interfacepmat_1_1ldum.html#acda336a41affe9b10011c8e06203557b',1,'pmat::ldum::sldumf()'],['../pmat_8f90.html#a838016f3e2b24ba0f0d2870809d7ad65',1,'pmat::sldumf()']]], + ['slinlv',['slinlv',['../interfacepmat_1_1invl.html#a15704d7a0c0e755249ba7381990d9165',1,'pmat::invl::slinlv()'],['../pmat_8f90.html#a1887bccb02f53f4bb5f8812e349ab6f6',1,'pmat::slinlv()']]], + ['slinmmt',['slinmmt',['../interfacepmat_1_1inv.html#a22f25e2fcfe2e6352e8d2a2eaa636d9c',1,'pmat::inv::slinmmt()'],['../pmat_8f90.html#ae39bbc722548698b5477fb77eb5e6a9d',1,'pmat::slinmmt()']]], + ['slinmmtf',['slinmmtf',['../interfacepmat_1_1inv.html#a6c3368b428da394213d47bf5dfca0f29',1,'pmat::inv::slinmmtf()'],['../pmat_8f90.html#a5a24710e78c8fd7c353774b9682d6055',1,'pmat::slinmmtf()']]], + ['slinmvt',['slinmvt',['../interfacepmat_1_1inv.html#a44fa7dc12970f196eed1142e0933f409',1,'pmat::inv::slinmvt()'],['../pmat_8f90.html#a581402136224580895f89b639e43b2fa',1,'pmat::slinmvt()']]], + ['slinmvtf',['slinmvtf',['../interfacepmat_1_1inv.html#a1a011af54e8f29e0eef44b5714d68e81',1,'pmat::inv::slinmvtf()'],['../pmat_8f90.html#a5fd1ca9125b6165b24fb33ef92dbada9',1,'pmat::slinmvtf()']]], + ['slinuv',['slinuv',['../interfacepmat_1_1invu.html#a2ba603d3176c8c84a912ac35f4f01b79',1,'pmat::invu::slinuv()'],['../pmat_8f90.html#a7d5c37f047b3402981b9a789ae2142f3',1,'pmat::slinuv()']]], + ['sp',['sp',['../namespacepkind.html#a727a82a16402d4f765f2e806e0e9dbd2',1,'pkind']]], + ['sparaframe',['sparaframe',['../interfacepmat5_1_1paraframe.html#a1c78f9db9ac3151983ce3fde3d7e05e4',1,'pmat5::paraframe::sparaframe()'],['../namespacepmat5.html#a68ec9d48a671321dcd7e7ce5ddf8f973',1,'pmat5::sparaframe()']]], + ['spc',['spc',['../namespacepkind.html#a67080eb2b326d447c1b48c0afac26aa8',1,'pkind']]], + ['spherical_5fangle',['spherical_angle',['../filter__topo_8F90.html#a88eb7531b52377c9014425995013cd5f',1,'filter_topo.F90']]], + ['spi',['spi',['../namespacepkind.html#a8b510d5ba4b6a0d899e2ded9ea9c8bf0',1,'pkind']]], + ['spintoq',['spintoq',['../interfacepmat4_1_1spintoq.html',1,'pmat4::spintoq'],['../interfacepmat4_1_1spintoq.html#a79dfd6a747071d2c21648fb4eab286bd',1,'pmat4::spintoq::spintoq()'],['../namespacepmat4.html#aa16fe8967da6010dcda10b29d98ddb5d',1,'pmat4::spintoq()']]], + ['sqrtsym2',['sqrtsym2',['../interfacepsym2_1_1sqrtsym2.html',1,'psym2::sqrtsym2'],['../interfacepsym2_1_1sqrtsym2.html#a91c2bfaca9b8d158c938f60906175714',1,'psym2::sqrtsym2::sqrtsym2()'],['../namespacepsym2.html#a534cceba99807ead1186e19061a18737',1,'psym2::sqrtsym2()']]], + ['sqrtsym2d',['sqrtsym2d',['../interfacepsym2_1_1sqrtsym2.html#a39dbfbe97fd5fdec432b13664005af5a',1,'psym2::sqrtsym2::sqrtsym2d()'],['../namespacepsym2.html#ade22baac4882739dbd6ea74bd32e1073',1,'psym2::sqrtsym2d()']]], + ['sqrtsym2d_5fe',['sqrtsym2d_e',['../interfacepsym2_1_1sqrtsym2d__e.html',1,'psym2::sqrtsym2d_e'],['../interfacepsym2_1_1sqrtsym2d__e.html#a51ef15ca1dcebe6ff16b06b427712af8',1,'psym2::sqrtsym2d_e::sqrtsym2d_e()'],['../namespacepsym2.html#a06c0c59f9694d43ef6673a264c3597d7',1,'psym2::sqrtsym2d_e()']]], + ['sqrtsym2d_5ft',['sqrtsym2d_t',['../interfacepsym2_1_1sqrtsym2d__t.html',1,'psym2::sqrtsym2d_t'],['../interfacepsym2_1_1sqrtsym2d__t.html#ad9d2395c6e2d7a83870a40cac872b172',1,'psym2::sqrtsym2d_t::sqrtsym2d_t()'],['../namespacepsym2.html#ae3afbf1fec606ee0f45f775176282542',1,'psym2::sqrtsym2d_t()']]], + ['sswpvv',['sswpvv',['../interfacepmat_1_1swpvv.html#aa751eb31cea75bc4333f24c30ff45fc5',1,'pmat::swpvv::sswpvv()'],['../pmat_8f90.html#a8f0f2fac13558429889da5429d8530a9',1,'pmat::sswpvv()']]], + ['stretch_5ffac',['stretch_fac',['../namespaceutils.html#aad5ae4657c154fc643cf21e2cfe25bf5',1,'utils']]], + ['sudlmm',['sudlmm',['../interfacepmat_1_1udlmm.html#aa5f23a4cd06668ea6d0b23e1f2da406b',1,'pmat::udlmm::sudlmm()'],['../pmat_8f90.html#a4654b557988c2be5a7f648073128f70d',1,'pmat::sudlmm()']]], + ['sudlmv',['sudlmv',['../interfacepmat_1_1udlmm.html#a0d7cd9544bd3312cb16dc50cbec55fa7',1,'pmat::udlmm::sudlmv()'],['../pmat_8f90.html#ac7132279f375723b23d9fed6b93803f6',1,'pmat::sudlmv()']]], + ['swpvv',['swpvv',['../interfacepmat_1_1swpvv.html',1,'pmat']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_11.html b/ver-1.11.0/grid_tools/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_11.js b/ver-1.11.0/grid_tools/search/all_11.js new file mode 100644 index 000000000..e5ae96695 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_11.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['t',['t',['../namespacepietc.html#abc0f77ce68c79a5021a21d020cbf840d',1,'pietc::t()'],['../pietc__s_8f90.html#a352d186d9a30ce9f837cb012d4d7f727',1,'pietc_s::t()']]], + ['tavco',['TAVCO',['../interfacepmat2_1_1avco.html#a46787b6c53036556770602283a4826d1',1,'pmat2::avco::TAVCO()'],['../namespacepmat2.html#a6a89c3d2cf4cbeddf8794c0274983b85',1,'pmat2::TAVCO()']]], + ['tdfco',['TDFCO',['../interfacepmat2_1_1dfco.html#a106bf482522e94da7bbc9fa41e0d8e22',1,'pmat2::dfco::TDFCO()'],['../namespacepmat2.html#a1399ce91b0cdcd5b1efd02de702f8425',1,'pmat2::TDFCO()']]], + ['tdfco2',['TDFCO2',['../interfacepmat2_1_1dfco2.html#a3c1adfc240e174a0ecf0a5851825f7e2',1,'pmat2::dfco2::TDFCO2()'],['../namespacepmat2.html#a555c3f1fc401104d5f2c1ee28e310f84',1,'pmat2::TDFCO2()']]], + ['topo_5ffield',['topo_field',['../namespaceutils.html#a35ecc5fff8f111f49062e28462a51b8b',1,'utils']]], + ['topo_5ffile',['topo_file',['../namespaceutils.html#a6863f54503680867bc1a5bb6bf8eb206',1,'utils']]], + ['trace',['trace',['../interfacepmat4_1_1trace.html',1,'pmat4']]], + ['trace_5fd',['trace_d',['../interfacepmat4_1_1trace.html#aa2c2bbef4fa467ce9cd837a23862e9a2',1,'pmat4::trace::trace_d()'],['../namespacepmat4.html#ae6d759d7985b821fc2c878b6792cbdf0',1,'pmat4::trace_d()']]], + ['trace_5fi',['trace_i',['../interfacepmat4_1_1trace.html#aea18e45962fa63aad5b4f9df7fdf82e8',1,'pmat4::trace::trace_i()'],['../namespacepmat4.html#a75a91197fc4db33ab6bffc89ffa1ad41',1,'pmat4::trace_i()']]], + ['trace_5fs',['trace_s',['../interfacepmat4_1_1trace.html#a42d7a5957636ec0a12cb0d63a66acd1d',1,'pmat4::trace::trace_s()'],['../namespacepmat4.html#a62b53eb9a0798c65b9d9ead4c21e8ff9',1,'pmat4::trace_s()']]], + ['triple_5fcross_5fproduct_5fd',['triple_cross_product_d',['../interfacepmat4_1_1cross__product.html#a8bf4a28ffffdcc76b2477bae48a3891c',1,'pmat4::cross_product::triple_cross_product_d()'],['../namespacepmat4.html#a177d2fdb3121bbbb80bd7cac7fe93448',1,'pmat4::triple_cross_product_d()']]], + ['triple_5fcross_5fproduct_5fs',['triple_cross_product_s',['../interfacepmat4_1_1cross__product.html#a0569c6cff360d31c28ec3cc2272d695a',1,'pmat4::cross_product::triple_cross_product_s()'],['../namespacepmat4.html#a4eac3bd5e6768caaabf9f73710ee3a92',1,'pmat4::triple_cross_product_s()']]], + ['triple_5fproduct',['triple_product',['../interfacepmat4_1_1triple__product.html',1,'pmat4']]], + ['triple_5fproduct_5fd',['triple_product_d',['../interfacepmat4_1_1triple__product.html#ac09bbaf5240d1a38792f158863387ddc',1,'pmat4::triple_product::triple_product_d()'],['../namespacepmat4.html#a6cd1353e72eca489997010df919e99af',1,'pmat4::triple_product_d()']]], + ['triple_5fproduct_5fs',['triple_product_s',['../interfacepmat4_1_1triple__product.html#a51410aa7f8cfc45bbd697ed4517ad5b0',1,'pmat4::triple_product::triple_product_s()'],['../namespacepmat4.html#ad64d33605028491e5a859fbb732ee544',1,'pmat4::triple_product_s()']]], + ['two_5fdelta_5ffilter',['two_delta_filter',['../filter__topo_8F90.html#a36dff92b0a19ac712034eb203fda4f5d',1,'filter_topo.F90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_12.html b/ver-1.11.0/grid_tools/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_12.js b/ver-1.11.0/grid_tools/search/all_12.js new file mode 100644 index 000000000..99042c0ce --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_12.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['u0',['u0',['../namespacepietc.html#ac4b2c921dc2126df39de4d45ce464dc2',1,'pietc::u0()'],['../pietc__s_8f90.html#adcb44bd9276f44fa4f112451fc1447a8',1,'pietc_s::u0()']]], + ['u1',['u1',['../namespacepietc.html#a2c3ccea1400f40b1e25fd0b31079054c',1,'pietc::u1()'],['../pietc__s_8f90.html#a234638c3245e0481c8ba7cb132871cf8',1,'pietc_s::u1()']]], + ['u1lbv',['u1lbv',['../interfacepmat2_1_1u1lbv.html',1,'pmat2::u1lbv'],['../interfacepmat2_1_1u1lbv.html#ac60455dba7e5165d439a02017e79809e',1,'pmat2::u1lbv::U1LBV()'],['../namespacepmat2.html#ae522999da18bc2c8a721697220d0e2f3',1,'pmat2::U1LBV()']]], + ['u1lbx',['u1lbx',['../interfacepmat2_1_1u1lbx.html',1,'pmat2::u1lbx'],['../interfacepmat2_1_1u1lbx.html#a3aaf3850bc62ee13a92b8bfbcbe0021f',1,'pmat2::u1lbx::U1LBX()'],['../namespacepmat2.html#a728162304a5163d9833ddf0704425f0d',1,'pmat2::U1LBX()']]], + ['u1lby',['u1lby',['../interfacepmat2_1_1u1lby.html',1,'pmat2::u1lby'],['../interfacepmat2_1_1u1lby.html#adbba1c18a2842310e74d9a11fb1783ce',1,'pmat2::u1lby::U1LBY()'],['../namespacepmat2.html#afc803df6dd1d77e1cfc3a21444eac9df',1,'pmat2::U1LBY()']]], + ['u1lvb',['u1lvb',['../interfacepmat2_1_1u1lvb.html',1,'pmat2::u1lvb'],['../interfacepmat2_1_1u1lvb.html#a3f40924cfe1fc60e335b03a660e0ae6b',1,'pmat2::u1lvb::U1LVB()'],['../namespacepmat2.html#afb1b0a24d2b799039aa4574a0f5aaf7e',1,'pmat2::U1LVB()']]], + ['u1lxb',['u1lxb',['../interfacepmat2_1_1u1lxb.html',1,'pmat2::u1lxb'],['../interfacepmat2_1_1u1lxb.html#aa59d2b66c5cc4254a3edfbe7c3a3a80c',1,'pmat2::u1lxb::U1LXB()'],['../namespacepmat2.html#a61691d64fb0e3097006b0d60e6114c2a',1,'pmat2::U1LXB()']]], + ['u1lyb',['u1lyb',['../interfacepmat2_1_1u1lyb.html',1,'pmat2::u1lyb'],['../interfacepmat2_1_1u1lyb.html#a56892762cbe9e7e78262fd16517c3df1',1,'pmat2::u1lyb::U1LYB()'],['../namespacepmat2.html#a0bf86d7928a879540ffa1c73e437436d',1,'pmat2::U1LYB()']]], + ['u2',['u2',['../namespacepietc.html#ad40c60cf454a23bacb142e0e3af48960',1,'pietc::u2()'],['../pietc__s_8f90.html#a6be747b047f117a93ab29b374fdc1a6d',1,'pietc_s::u2()']]], + ['u3',['u3',['../namespacepietc.html#a6230c3fbe5dba6e11a215828c69a95f4',1,'pietc::u3()'],['../pietc__s_8f90.html#ab13b8f26144856bdb461571d0898d3e7',1,'pietc_s::u3()']]], + ['u4',['u4',['../namespacepietc.html#ab4764b5889301ae824fd970d633fbeae',1,'pietc::u4()'],['../pietc__s_8f90.html#a11feaf116766d164aff120d845b966e2',1,'pietc_s::u4()']]], + ['u5',['u5',['../namespacepietc.html#a70068593e935c2f3246cf67a8d43e80c',1,'pietc::u5()'],['../pietc__s_8f90.html#ab4ef2e76e02b74a99a4af8948a077b6c',1,'pietc_s::u5()']]], + ['u6',['u6',['../namespacepietc.html#a90a7adc3caa520b2ef619efb3ce5b11a',1,'pietc::u6()'],['../pietc__s_8f90.html#ae0cd95244a190a7f6671e5ab99257ea5',1,'pietc_s::u6()']]], + ['udlb',['udlb',['../interfacepmat2_1_1udlb.html',1,'pmat2::udlb'],['../interfacepmat2_1_1udlb.html#a89587252aaed7cac7df22a261b756633',1,'pmat2::udlb::UDLB()'],['../namespacepmat2.html#ac819a24eaae6006b6e84094f30c17eaa',1,'pmat2::UDLB()']]], + ['udlbv',['udlbv',['../interfacepmat2_1_1udlbv.html',1,'pmat2::udlbv'],['../interfacepmat2_1_1udlbv.html#a6b1f964739b2fa8954459733f572753c',1,'pmat2::udlbv::UDLBV()'],['../namespacepmat2.html#a87d11417e4326543ba1eea3404b72a59',1,'pmat2::UDLBV()']]], + ['udlbx',['udlbx',['../interfacepmat2_1_1udlbx.html',1,'pmat2::udlbx'],['../interfacepmat2_1_1udlbx.html#a70856e4cca6382bcc75f5a4444e58684',1,'pmat2::udlbx::UDLBX()'],['../namespacepmat2.html#af4e8be3e0e49b63ba9c0fa2daf9064ec',1,'pmat2::UDLBX()']]], + ['udlby',['udlby',['../interfacepmat2_1_1udlby.html',1,'pmat2::udlby'],['../interfacepmat2_1_1udlby.html#a1de60658e9a954b6016508f277d5001e',1,'pmat2::udlby::UDLBY()'],['../namespacepmat2.html#a55a220e28985cd8e5aa91f96922d0613',1,'pmat2::UDLBY()']]], + ['udlmm',['udlmm',['../interfacepmat_1_1udlmm.html',1,'pmat']]], + ['udlvb',['udlvb',['../interfacepmat2_1_1udlvb.html',1,'pmat2::udlvb'],['../interfacepmat2_1_1udlvb.html#a7e6d06999413052137202a76fcb4fa2e',1,'pmat2::udlvb::UDLVB()'],['../namespacepmat2.html#a16a31964a41ab5f370aa8ae186147f45',1,'pmat2::UDLVB()']]], + ['udlxb',['udlxb',['../interfacepmat2_1_1udlxb.html',1,'pmat2::udlxb'],['../interfacepmat2_1_1udlxb.html#a17d6ed2985c58e63aca41a575d52901b',1,'pmat2::udlxb::UDLXB()'],['../namespacepmat2.html#aae850dc55453bafbc6f8c5f8458d053f',1,'pmat2::UDLXB()']]], + ['udlyb',['udlyb',['../interfacepmat2_1_1udlyb.html',1,'pmat2::udlyb'],['../interfacepmat2_1_1udlyb.html#a5806f6e87d5c570438c4ff0296d30f3c',1,'pmat2::udlyb::UDLYB()'],['../namespacepmat2.html#a81321de544a43237d601519a37b392a6',1,'pmat2::UDLYB()']]], + ['utils',['utils',['../namespaceutils.html',1,'']]], + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_13.html b/ver-1.11.0/grid_tools/search/all_13.html new file mode 100644 index 000000000..04f66e2fe --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_13.js b/ver-1.11.0/grid_tools/search/all_13.js new file mode 100644 index 000000000..526ba52e7 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['write_5ftopo_5ffile',['write_topo_file',['../filter__topo_8F90.html#abdd604d14cb50cf80246aa580676ac9a',1,'filter_topo.F90']]], + ['wrtb',['wrtb',['../interfacepmat2_1_1wrtb.html',1,'pmat2::wrtb'],['../interfacepmat2_1_1wrtb.html#af16e1d62d14ccd82eeb805eb280e1578',1,'pmat2::wrtb::WRTB()'],['../namespacepmat2.html#a3970c08a38a54b29b664a1930f0de6bb',1,'pmat2::WRTB()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_14.html b/ver-1.11.0/grid_tools/search/all_14.html new file mode 100644 index 000000000..285f34bd2 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_14.js b/ver-1.11.0/grid_tools/search/all_14.js new file mode 100644 index 000000000..ca5800cc3 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_14.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['xctoxm_5fak',['xctoxm_ak',['../interfacepesg_1_1xctoxm__ak.html',1,'pesg::xctoxm_ak'],['../interfacepesg_1_1xctoxm__ak.html#af5e56d69fb6122348ea935542e358d0b',1,'pesg::xctoxm_ak::xctoxm_ak()'],['../namespacepesg.html#a7fa7090c8dad76b177fa350019faaed6',1,'pesg::xctoxm_ak()']]], + ['xctoxs',['xctoxs',['../interfacepesg_1_1xctoxs.html',1,'pesg::xctoxs'],['../interfacepesg_1_1xctoxs.html#a78f98f4fe9558ca1991c028280b31891',1,'pesg::xctoxs::xctoxs()'],['../namespacepesg.html#a13e4b5afc81f452f403a419f5dc407ea',1,'pesg::xctoxs()']]], + ['xmtog_5fak_5fdd',['xmtog_ak_dd',['../interfacepesg_1_1xmtog__ak__dd.html',1,'pesg']]], + ['xmtog_5fak_5fdd_5fg',['xmtog_ak_dd_g',['../interfacepesg_1_1xmtog__ak__dd.html#a2254f5d16f294c915a0fd39e2430d777',1,'pesg::xmtog_ak_dd::xmtog_ak_dd_g()'],['../namespacepesg.html#a5145974b344b9ed001bc1849ac33a947',1,'pesg::xmtog_ak_dd_g()']]], + ['xmtog_5fak_5fdd_5fm',['xmtog_ak_dd_m',['../interfacepesg_1_1xmtog__ak__dd.html#a0685fb23b5b0b364ee793c57998a43a1',1,'pesg::xmtog_ak_dd::xmtog_ak_dd_m()'],['../namespacepesg.html#a167d85418627ade97bf4cebfc26f5909',1,'pesg::xmtog_ak_dd_m()']]], + ['xmtog_5fak_5frr',['xmtog_ak_rr',['../interfacepesg_1_1xmtog__ak__rr.html',1,'pesg']]], + ['xmtog_5fak_5frr_5fg',['xmtog_ak_rr_g',['../interfacepesg_1_1xmtog__ak__rr.html#a436175556f7f34e2e0a2803ccb1df66d',1,'pesg::xmtog_ak_rr::xmtog_ak_rr_g()'],['../namespacepesg.html#a4fc7233669c1c84c4e6aa7b9bf8b988d',1,'pesg::xmtog_ak_rr_g()']]], + ['xmtog_5fak_5frr_5fm',['xmtog_ak_rr_m',['../interfacepesg_1_1xmtog__ak__rr.html#a1bf3a9ea52eab26a3aefafb34f6e8899',1,'pesg::xmtog_ak_rr::xmtog_ak_rr_m()'],['../namespacepesg.html#a07c56831f84286a46dcaa68a930145db',1,'pesg::xmtog_ak_rr_m()']]], + ['xmtoxc_5fak',['xmtoxc_ak',['../interfacepesg_1_1xmtoxc__ak.html',1,'pesg::xmtoxc_ak'],['../interfacepesg_1_1xmtoxc__ak.html#adbeb4657ddfbd8fc23adef0e0fe2d8d9',1,'pesg::xmtoxc_ak::xmtoxc_ak()'],['../namespacepesg.html#a386bd317b37c41032e6e3c4a701f3e29',1,'pesg::xmtoxc_ak()']]], + ['xmtoxc_5fvak',['xmtoxc_vak',['../interfacepesg_1_1xmtoxc__ak.html#a26cd804e7890507c4a18be58c8487658',1,'pesg::xmtoxc_ak::xmtoxc_vak()'],['../namespacepesg.html#a9efb048fa84ed3d734f02efc2df0d98a',1,'pesg::xmtoxc_vak()']]], + ['xmtoxc_5fvak1',['xmtoxc_vak1',['../interfacepesg_1_1xmtoxc__ak.html#ac6e70d6aff9245b40ff151c7b0304123',1,'pesg::xmtoxc_ak::xmtoxc_vak1()'],['../namespacepesg.html#aabb2932ac60546b36581f2e56bc8e317',1,'pesg::xmtoxc_vak1()']]], + ['xmtoxt',['xmtoxt',['../interfacepesg_1_1xmtoxt.html',1,'pesg::xmtoxt'],['../interfacepesg_1_1xmtoxt.html#a7433dcb5be1326e2881e179af74fe774',1,'pesg::xmtoxt::xmtoxt()'],['../namespacepesg.html#ad7a183e207dcfdd23ae9f575806c5482',1,'pesg::xmtoxt()']]], + ['xmtoxt1',['xmtoxt1',['../interfacepesg_1_1xmtoxt.html#aedcdd965e69afef31aedaeee1e2055f3',1,'pesg::xmtoxt::xmtoxt1()'],['../namespacepesg.html#af5737842678069610c479dd77d46c452',1,'pesg::xmtoxt1()']]], + ['xstoxc',['xstoxc',['../interfacepesg_1_1xstoxc.html',1,'pesg::xstoxc'],['../interfacepesg_1_1xstoxc.html#a696efa5221df9904b594a6dff690d37f',1,'pesg::xstoxc::xstoxc()'],['../namespacepesg.html#a336ba536d749c69bd169318933b6f56a',1,'pesg::xstoxc()']]], + ['xstoxc1',['xstoxc1',['../interfacepesg_1_1xstoxc.html#a3ed442df5562780bc67ed9f713589331',1,'pesg::xstoxc::xstoxc1()'],['../namespacepesg.html#a57ee40cd1877be7af503b57f3fab92ae',1,'pesg::xstoxc1()']]], + ['xstoxt',['xstoxt',['../interfacepesg_1_1xstoxt.html',1,'pesg::xstoxt'],['../interfacepesg_1_1xstoxt.html#a8ec61b7e39738a5551d52ad047deaf70',1,'pesg::xstoxt::xstoxt()'],['../namespacepesg.html#af3889ea46137e9a7dd0393fb320530f8',1,'pesg::xstoxt()']]], + ['xttoxm',['xttoxm',['../interfacepesg_1_1xttoxm.html',1,'pesg::xttoxm'],['../interfacepesg_1_1xttoxm.html#a57bcd6b7890fd9886bcc782e950341f2',1,'pesg::xttoxm::xttoxm()'],['../namespacepesg.html#a51ba9dc122f12506dbf2386650d68442',1,'pesg::xttoxm()']]], + ['xttoxs',['xttoxs',['../interfacepesg_1_1xttoxs.html',1,'pesg::xttoxs'],['../interfacepesg_1_1xttoxs.html#a24374fb1c1d555b1bd15ff563ea49ca1',1,'pesg::xttoxs::xttoxs()'],['../namespacepesg.html#a6d36430c0f064b067b79091386780ef5',1,'pesg::xttoxs()']]], + ['xttoxs1',['xttoxs1',['../interfacepesg_1_1xttoxs.html#a09bc292e06041cf476b307f5e637311a',1,'pesg::xttoxs::xttoxs1()'],['../namespacepesg.html#aaae81439717abc3303a0d6deda4f931f',1,'pesg::xttoxs1()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_15.html b/ver-1.11.0/grid_tools/search/all_15.html new file mode 100644 index 000000000..0ed74e012 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_15.js b/ver-1.11.0/grid_tools/search/all_15.js new file mode 100644 index 000000000..7b8dc3d20 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_15.js @@ -0,0 +1,127 @@ +var searchData= +[ + ['z000',['z000',['../namespacepietc.html#a6fe8e43040fb8ea6bd5fda08cd5abb05',1,'pietc::z000()'],['../pietc__s_8f90.html#af18a35a122394b76e098e763f8a6d9d4',1,'pietc_s::z000()']]], + ['z010',['z010',['../namespacepietc.html#ad0cab955384a4c1508fcb80b664d6b1f',1,'pietc::z010()'],['../pietc__s_8f90.html#a91506f00dc776db7d62464adb64937bf',1,'pietc_s::z010()']]], + ['z011',['z011',['../namespacepietc.html#a4156f9986d97aaa89b2dc0352e6150b8',1,'pietc::z011()'],['../pietc__s_8f90.html#a7196833a19947f798eaf7fb894f20f37',1,'pietc_s::z011()']]], + ['z013',['z013',['../namespacepietc.html#a3924a4ee9e826f8da350bcd363b1e692',1,'pietc::z013()'],['../pietc__s_8f90.html#a51b801ae6af1c1a56b43c2a62092794d',1,'pietc_s::z013()']]], + ['z015',['z015',['../namespacepietc.html#a759201aec96e392cc821b97e51f72254',1,'pietc::z015()'],['../pietc__s_8f90.html#abedc4d0b8c9fc174f2906370f66037fe',1,'pietc_s::z015()']]], + ['z018',['z018',['../namespacepietc.html#aef4690197a0da926947010773b0df79c',1,'pietc::z018()'],['../pietc__s_8f90.html#a487b5b801bb8e5e1d5318a05f4e86338',1,'pietc_s::z018()']]], + ['z020',['z020',['../namespacepietc.html#acf79e22731f12a6cb0f935a4c21c10be',1,'pietc::z020()'],['../pietc__s_8f90.html#aee9e809d3122906061252e12cacec81d',1,'pietc_s::z020()']]], + ['z022',['z022',['../namespacepietc.html#a3bcf3ca19122cd6ae9281fbd9b4dff4d',1,'pietc::z022()'],['../pietc__s_8f90.html#af74e6119268e65a2a637d0bfc47ad284',1,'pietc_s::z022()']]], + ['z026',['z026',['../namespacepietc.html#a9cc868bf116983e698dd4041ffe14c7f',1,'pietc::z026()'],['../pietc__s_8f90.html#a8f191bb882cbaa28867ee28175332ac5',1,'pietc_s::z026()']]], + ['z030',['z030',['../namespacepietc.html#a14fab1736a8cc0b8c59783473052397d',1,'pietc::z030()'],['../pietc__s_8f90.html#ae1945337fc395f0dce4d27c6ca889d7c',1,'pietc_s::z030()']]], + ['z034',['z034',['../namespacepietc.html#aeb5bd2514066fd9d82a5248b915120e2',1,'pietc::z034()'],['../pietc__s_8f90.html#a9c66e38b759a18b9f6a42985c9366354',1,'pietc_s::z034()']]], + ['z036',['z036',['../namespacepietc.html#a141e63663450c5c71ce1051bffd1a626',1,'pietc::z036()'],['../pietc__s_8f90.html#a71283c15b8ad74ad42cd0c70f44e0a4c',1,'pietc_s::z036()']]], + ['z039',['z039',['../namespacepietc.html#ac8377e16f05dc4f877208a7938a6a47c',1,'pietc::z039()'],['../pietc__s_8f90.html#a2febe73d189b17ed478913d5afe0ace4',1,'pietc_s::z039()']]], + ['z040',['z040',['../namespacepietc.html#a6659ff430a6d1e68da7dd4f723f3d9db',1,'pietc::z040()'],['../pietc__s_8f90.html#a13dae7f486fe9e36e9a5f00ce87a052c',1,'pietc_s::z040()']]], + ['z045',['z045',['../namespacepietc.html#a407c5127975ad67d25902e7b3428fb7d',1,'pietc::z045()'],['../pietc__s_8f90.html#ac92546135a29be90ecc078e6c4b1254f',1,'pietc_s::z045()']]], + ['z050',['z050',['../namespacepietc.html#a3aee859c34469c037ae41ef8a92cbb4b',1,'pietc::z050()'],['../pietc__s_8f90.html#ac088c7beaa2291a9259bd24f1d136e4d',1,'pietc_s::z050()']]], + ['z051',['z051',['../namespacepietc.html#a34ab6f14b7510ec8bbbb5e37a691d09d',1,'pietc::z051()'],['../pietc__s_8f90.html#af53ef31a78491b2acf8bdb5ee8ea4674',1,'pietc_s::z051()']]], + ['z054',['z054',['../namespacepietc.html#a5a53b481f932dafb6e5ae85267168fed',1,'pietc::z054()'],['../pietc__s_8f90.html#a6f972cc3b272ed5fca9fe855f387ab84',1,'pietc_s::z054()']]], + ['z056',['z056',['../namespacepietc.html#a036feef6a57b78288c26d63551888f3a',1,'pietc::z056()'],['../pietc__s_8f90.html#ac2408515f85c65fd06e49a6fae69370f',1,'pietc_s::z056()']]], + ['z060',['z060',['../namespacepietc.html#a3fd28f57b204952311b28513d41b2a73',1,'pietc::z060()'],['../pietc__s_8f90.html#a21214b4bf794a8e5f9be9ad5b1430259',1,'pietc_s::z060()']]], + ['z064',['z064',['../namespacepietc.html#aa6f2c8812cc45efc4c4f118d0ef240be',1,'pietc::z064()'],['../pietc__s_8f90.html#a96b958d95b35dd463b783c408f1fe268',1,'pietc_s::z064()']]], + ['z068',['z068',['../namespacepietc.html#a1d12ffc8657dd5f38dc3703e0f890d35',1,'pietc::z068()'],['../pietc__s_8f90.html#afc3b9e872a8f3e2b5adf51a6b63ae6e6',1,'pietc_s::z068()']]], + ['z070',['z070',['../namespacepietc.html#a16924a9d4535d729e6213aec2b68ef42',1,'pietc::z070()'],['../pietc__s_8f90.html#a888f72bed5320b69edc962d690e9d6fd',1,'pietc_s::z070()']]], + ['z072',['z072',['../namespacepietc.html#a5ca55f8fed660a452eb68cf863e49ebe',1,'pietc::z072()'],['../pietc__s_8f90.html#a797b3d4690cbe814f0c24cd51e725e59',1,'pietc_s::z072()']]], + ['z075',['z075',['../namespacepietc.html#a134326f3080e14924bdd20095e1e4846',1,'pietc::z075()'],['../pietc__s_8f90.html#a10c4f0d9ad11a0b2c5a1f27d8e3171ca',1,'pietc_s::z075()']]], + ['z077',['z077',['../namespacepietc.html#afb57bc20d995c6e1b3c9ac3fc7178148',1,'pietc::z077()'],['../pietc__s_8f90.html#a8993c78e94ca762842a027adc0bc3aff',1,'pietc_s::z077()']]], + ['z079',['z079',['../namespacepietc.html#ac0a07e1bebe9470834d617ece10cdab9',1,'pietc::z079()'],['../pietc__s_8f90.html#a71deaca3abd756d2dccc93ca7231de31',1,'pietc_s::z079()']]], + ['z080',['z080',['../namespacepietc.html#a796cbc1619ab79754488d3dcc180b4ac',1,'pietc::z080()'],['../pietc__s_8f90.html#a6d6755f9a501d098dd486c622a80bc71',1,'pietc_s::z080()']]], + ['z090',['z090',['../namespacepietc.html#a03495c821c9d26b5f8ee7f4089ebe38f',1,'pietc::z090()'],['../pietc__s_8f90.html#a46dcffedea219cd26aed6bcbb9fc4809',1,'pietc_s::z090()']]], + ['z100',['z100',['../namespacepietc.html#aafa31b87e4c7a748d5ef54abe2bea801',1,'pietc::z100()'],['../pietc__s_8f90.html#ab67437cd809b9d5537a7030aafe22450',1,'pietc_s::z100()']]], + ['z101',['z101',['../namespacepietc.html#a9956e19fb1bcdec045eb664e4563f6ba',1,'pietc::z101()'],['../pietc__s_8f90.html#a81d363045de2ce375f29bf62c9057bef',1,'pietc_s::z101()']]], + ['z103',['z103',['../namespacepietc.html#a05d2de09c9ef2adeb2dc68090cbbc424',1,'pietc::z103()'],['../pietc__s_8f90.html#a821fb974277ed7ba68114a260fbf0e22',1,'pietc_s::z103()']]], + ['z105',['z105',['../namespacepietc.html#ac6a5700a1a170b6e9fa3ccfe1aa79f7b',1,'pietc::z105()'],['../pietc__s_8f90.html#ad2288ae663e5444548b25eb64d43d56b',1,'pietc_s::z105()']]], + ['z108',['z108',['../namespacepietc.html#a5bf9578724b7dc8d63ab2465fd7a648e',1,'pietc::z108()'],['../pietc__s_8f90.html#ade304c9a8d97539489dc3e3352898ba4',1,'pietc_s::z108()']]], + ['z110',['z110',['../namespacepietc.html#a918f738909123fbce5bebc56d2fb569b',1,'pietc::z110()'],['../pietc__s_8f90.html#a5b6e9612730463635294c8625cc2dd6f',1,'pietc_s::z110()']]], + ['z112',['z112',['../namespacepietc.html#a43238308835a385f250c916490f93392',1,'pietc::z112()'],['../pietc__s_8f90.html#a57c1352db438d272c16bc0559dcafa6e',1,'pietc_s::z112()']]], + ['z116',['z116',['../namespacepietc.html#a136b91649432dbb459eeaffbce99759c',1,'pietc::z116()'],['../pietc__s_8f90.html#a9b74b914720c0b62cabf9e974cf53dd1',1,'pietc_s::z116()']]], + ['z120',['z120',['../namespacepietc.html#acaf0daa942c909756fedc2c2d7f4080e',1,'pietc::z120()'],['../pietc__s_8f90.html#a00846ccea13202740f301ef28ec0c2cf',1,'pietc_s::z120()']]], + ['z124',['z124',['../namespacepietc.html#a85f48cc7eeb261f2f02d222d3d7d509a',1,'pietc::z124()'],['../pietc__s_8f90.html#aa656eb37135a2901fe115434665cebd9',1,'pietc_s::z124()']]], + ['z126',['z126',['../namespacepietc.html#abcd3cf4c8c61854c8d2b355041baba70',1,'pietc::z126()'],['../pietc__s_8f90.html#ae7028347860c8eaec4acd6869c996e0d',1,'pietc_s::z126()']]], + ['z129',['z129',['../namespacepietc.html#ab76483c1df276fde3e4bda831868d89b',1,'pietc::z129()'],['../pietc__s_8f90.html#a0026c9b54a3caf043cd656fbefa98f02',1,'pietc_s::z129()']]], + ['z130',['z130',['../namespacepietc.html#abbf4bae10dcea1fcc9ccea09710934ea',1,'pietc::z130()'],['../pietc__s_8f90.html#a2458b30e63c7eb51715183fca9dcbd96',1,'pietc_s::z130()']]], + ['z135',['z135',['../namespacepietc.html#adef6f138be177dd15d5c027d63602b7a',1,'pietc::z135()'],['../pietc__s_8f90.html#ac071455e108c31860f3478e07f44b71b',1,'pietc_s::z135()']]], + ['z140',['z140',['../namespacepietc.html#ae52dcb68eed8c08b97f421256b967592',1,'pietc::z140()'],['../pietc__s_8f90.html#af8bf0a5e66c6393c06382b2dc54ede8e',1,'pietc_s::z140()']]], + ['z141',['z141',['../namespacepietc.html#aa63e99ec39ef39b50f066ddc78fc8049',1,'pietc::z141()'],['../pietc__s_8f90.html#ad6ab37ed9088afbfc9abf71e1b90a3bd',1,'pietc_s::z141()']]], + ['z144',['z144',['../namespacepietc.html#a4393d6e94693a4c1c8777b40e69c594c',1,'pietc::z144()'],['../pietc__s_8f90.html#ad36ae737181ca013c264882fe6d57447',1,'pietc_s::z144()']]], + ['z146',['z146',['../namespacepietc.html#aa372e74f0440b2dca8cddf831322a03b',1,'pietc::z146()'],['../pietc__s_8f90.html#ac2cc9be8f19f55fc7d71c3b47d7e6bb1',1,'pietc_s::z146()']]], + ['z150',['z150',['../namespacepietc.html#aad9515dd5cd46885a3e2906ba881c55e',1,'pietc::z150()'],['../pietc__s_8f90.html#a7e951c0cae4895b71ca7b9d84aa4850a',1,'pietc_s::z150()']]], + ['z154',['z154',['../namespacepietc.html#a0fcdc4afe577fa05115cac79522b337e',1,'pietc::z154()'],['../pietc__s_8f90.html#ac1934b401ff931edeb1a4bf2252c657e',1,'pietc_s::z154()']]], + ['z158',['z158',['../namespacepietc.html#a004b9989f6515b61d17da180d52ea8ca',1,'pietc::z158()'],['../pietc__s_8f90.html#ab6dd63af3f879af6d740144aef9931d6',1,'pietc_s::z158()']]], + ['z160',['z160',['../namespacepietc.html#ad03e0fe52b0d2b01c0b7c554c93210c8',1,'pietc::z160()'],['../pietc__s_8f90.html#a07b039fd5af68c51ad3c641c9fcd455b',1,'pietc_s::z160()']]], + ['z162',['z162',['../namespacepietc.html#ad5115a67dc95cac790feb3c536241c8e',1,'pietc::z162()'],['../pietc__s_8f90.html#abb6432643b4f214572403105f282aee2',1,'pietc_s::z162()']]], + ['z165',['z165',['../namespacepietc.html#a54ae507b146d830e0f4d4cf97766d122',1,'pietc::z165()'],['../pietc__s_8f90.html#ac65287d60f93e4d19ce42087a9c29a29',1,'pietc_s::z165()']]], + ['z167',['z167',['../namespacepietc.html#a3158d86a884e41f72b6d1a5f0af3e13a',1,'pietc::z167()'],['../pietc__s_8f90.html#ad5197b5ebea6e6d77e441200be045646',1,'pietc_s::z167()']]], + ['z169',['z169',['../namespacepietc.html#a9814cfa11c847f2922e420b5f13bc922',1,'pietc::z169()'],['../pietc__s_8f90.html#a7c5ad7e78daddbd2cded25446e8255e0',1,'pietc_s::z169()']]], + ['z170',['z170',['../namespacepietc.html#a52d26edcccb57167fad881e9381642bc',1,'pietc::z170()'],['../pietc__s_8f90.html#a11e14dd4189701bd5ce2ef98d15bf280',1,'pietc_s::z170()']]], + ['z180',['z180',['../namespacepietc.html#af209077c39f5de33599c3a66ebd87e28',1,'pietc::z180()'],['../pietc__s_8f90.html#ae4acd5b2a8846be147f868d25477a1fd',1,'pietc_s::z180()']]], + ['z190',['z190',['../namespacepietc.html#a668f71c7566fa3d817324f3b1e076dba',1,'pietc::z190()'],['../pietc__s_8f90.html#a7770e3049b5489c8d94c8018a1c78521',1,'pietc_s::z190()']]], + ['z191',['z191',['../namespacepietc.html#a3dd8d389a274427e7498308494f0242b',1,'pietc::z191()'],['../pietc__s_8f90.html#ad2999f3c3ad9fcd7d90b5a53af294252',1,'pietc_s::z191()']]], + ['z193',['z193',['../namespacepietc.html#aa465e2d8c2d6d59c4714ca5db1ce217c',1,'pietc::z193()'],['../pietc__s_8f90.html#a7f94e3d8e409ae2c48807bfc8c3c3fe7',1,'pietc_s::z193()']]], + ['z195',['z195',['../namespacepietc.html#aa597ef97a91353c0ad6b0747e9866c15',1,'pietc::z195()'],['../pietc__s_8f90.html#a7ec259770ffd7300894a8f79141298ea',1,'pietc_s::z195()']]], + ['z198',['z198',['../namespacepietc.html#ad0c4eaff456c60ba8aeb02ff48fc5928',1,'pietc::z198()'],['../pietc__s_8f90.html#ad126524d1ca33a5e2fd427c0a56b3a5c',1,'pietc_s::z198()']]], + ['z200',['z200',['../namespacepietc.html#acbab5752d5210932b057b47ae10b04ff',1,'pietc::z200()'],['../pietc__s_8f90.html#affc43998a7c8d03d61f7cec500282a79',1,'pietc_s::z200()']]], + ['z202',['z202',['../namespacepietc.html#a60586ba190013e0ebc085a32387477a6',1,'pietc::z202()'],['../pietc__s_8f90.html#adb5b7234588d651cbdc5d52bbecd2e47',1,'pietc_s::z202()']]], + ['z206',['z206',['../namespacepietc.html#aefad5c583c9169f82735409013d80ad6',1,'pietc::z206()'],['../pietc__s_8f90.html#a861d80b24e143bce9d9276c45432de3e',1,'pietc_s::z206()']]], + ['z210',['z210',['../namespacepietc.html#a4531d28424f2f92043bb84ee779cdcc4',1,'pietc::z210()'],['../pietc__s_8f90.html#ab0ffe4cd2becaf9f8e51864e38c37775',1,'pietc_s::z210()']]], + ['z214',['z214',['../namespacepietc.html#a34c6ad3dff8774e9269211fb6bf0bf58',1,'pietc::z214()'],['../pietc__s_8f90.html#aec6b719d43709674bd078f73cb847e15',1,'pietc_s::z214()']]], + ['z216',['z216',['../namespacepietc.html#a079caf28bb36054914ab0eb912783460',1,'pietc::z216()'],['../pietc__s_8f90.html#a90d493311a95ab88f47d5ab6e63a8d27',1,'pietc_s::z216()']]], + ['z219',['z219',['../namespacepietc.html#a3f0418bba35a8e10e87ba89b7047ab3c',1,'pietc::z219()'],['../pietc__s_8f90.html#a5d4aa196d00ed72aa3008d650146a401',1,'pietc_s::z219()']]], + ['z220',['z220',['../namespacepietc.html#a426ff692eeaedc647f9f26271b23db4a',1,'pietc::z220()'],['../pietc__s_8f90.html#aadfd1259d91df7899bfabb06218ef705',1,'pietc_s::z220()']]], + ['z225',['z225',['../namespacepietc.html#a19341afae8214bb379e57037d04ab7be',1,'pietc::z225()'],['../pietc__s_8f90.html#a8d42c6a5bd4877e419041d4401c87b88',1,'pietc_s::z225()']]], + ['z230',['z230',['../namespacepietc.html#ab33c1392c342552420c1ebfbbb41440b',1,'pietc::z230()'],['../pietc__s_8f90.html#a72904853a78f4d56e400c9a78e089301',1,'pietc_s::z230()']]], + ['z231',['z231',['../namespacepietc.html#a81d73f4af4b43a2bc2bde9a76f184f0e',1,'pietc::z231()'],['../pietc__s_8f90.html#a3112d76d5666ed00a0b04cfec0b58228',1,'pietc_s::z231()']]], + ['z234',['z234',['../namespacepietc.html#aac11c1594605c102664e86c6a36c77b7',1,'pietc::z234()'],['../pietc__s_8f90.html#ab67989d77b4175354736de9da574f56e',1,'pietc_s::z234()']]], + ['z236',['z236',['../namespacepietc.html#a0255030ec5fa5667aee368bef1b12b63',1,'pietc::z236()'],['../pietc__s_8f90.html#a48d4da45bfd7fa22de7886dc1891da99',1,'pietc_s::z236()']]], + ['z240',['z240',['../namespacepietc.html#a654cefc4aa3f41560c67df2e81c64a45',1,'pietc::z240()'],['../pietc__s_8f90.html#ae1d9681f2c89284a653d775e54e2c899',1,'pietc_s::z240()']]], + ['z244',['z244',['../namespacepietc.html#a44de80f54f3f0d41905a0b67023c58d0',1,'pietc::z244()'],['../pietc__s_8f90.html#a0ecc03208bc203944d2fb43c47bd273a',1,'pietc_s::z244()']]], + ['z248',['z248',['../namespacepietc.html#a8f05a913bd10c6bbec89b01999f0dcf7',1,'pietc::z248()'],['../pietc__s_8f90.html#ad0cc0aabe288b47faf29e84aa25da6a1',1,'pietc_s::z248()']]], + ['z250',['z250',['../namespacepietc.html#a3cf7dc3cc05c640669e17cbae5400216',1,'pietc::z250()'],['../pietc__s_8f90.html#a593c206ff024204bf7cec5f9da051be3',1,'pietc_s::z250()']]], + ['z252',['z252',['../namespacepietc.html#a14a0b5f701cdb1ec06b230244f01febf',1,'pietc::z252()'],['../pietc__s_8f90.html#a0e41a64994fe2b5166577324cdefc068',1,'pietc_s::z252()']]], + ['z255',['z255',['../namespacepietc.html#aa182fc75bf00384c3307afeb8f58c41e',1,'pietc::z255()'],['../pietc__s_8f90.html#aa052a2867c49a3455b870e93173115b4',1,'pietc_s::z255()']]], + ['z257',['z257',['../namespacepietc.html#a32a3ffbd503c846127175dc32e724ae0',1,'pietc::z257()'],['../pietc__s_8f90.html#a626ed5c3729ea8f1bce885521457da0e',1,'pietc_s::z257()']]], + ['z259',['z259',['../namespacepietc.html#ac45fb427cb825d281767678e16e8cf1a',1,'pietc::z259()'],['../pietc__s_8f90.html#a11d3d0e6faa7bbdf8ba0fe74eb6eed8d',1,'pietc_s::z259()']]], + ['z260',['z260',['../namespacepietc.html#a3652b8c5bfd5d7226d25941e49408209',1,'pietc::z260()'],['../pietc__s_8f90.html#a786cb13f3de57ad57ae04145936a0f0f',1,'pietc_s::z260()']]], + ['z270',['z270',['../namespacepietc.html#a414606ffb0174db322e33650080ac9e8',1,'pietc::z270()'],['../pietc__s_8f90.html#a85cadf667d71ef039c5a16e141864c96',1,'pietc_s::z270()']]], + ['z280',['z280',['../namespacepietc.html#a871ef6908570e0796561486385346940',1,'pietc::z280()'],['../pietc__s_8f90.html#aa3cd54c90325104e9088e72e4efa40d9',1,'pietc_s::z280()']]], + ['z281',['z281',['../namespacepietc.html#a5ad510619e59efe2e25d11238d8d2ab4',1,'pietc::z281()'],['../pietc__s_8f90.html#a353651fcd2b22054663923e66d8d7092',1,'pietc_s::z281()']]], + ['z283',['z283',['../namespacepietc.html#a7daf538d19c223405ac4a347e959c472',1,'pietc::z283()'],['../pietc__s_8f90.html#a68acc67fd5d89469cf23d4a15c69374d',1,'pietc_s::z283()']]], + ['z285',['z285',['../namespacepietc.html#a0bea68a75589f69fd555c13a2fa1d8c7',1,'pietc::z285()'],['../pietc__s_8f90.html#aa32d75bc0c607b3e6a0160dccf09bbb2',1,'pietc_s::z285()']]], + ['z288',['z288',['../namespacepietc.html#aed9d3ebf8c954b1a6b84be8448cf1c7a',1,'pietc::z288()'],['../pietc__s_8f90.html#ad67e316a1fc7d9a8211e16d6bb21ed6a',1,'pietc_s::z288()']]], + ['z290',['z290',['../namespacepietc.html#a725d036485b4bff0f97ac552dc5d999d',1,'pietc::z290()'],['../pietc__s_8f90.html#a2e4c7b60b97dd01d5128dd209e00d3c7',1,'pietc_s::z290()']]], + ['z292',['z292',['../namespacepietc.html#a10ca287138e3d8a341b094a6a1b0fb7b',1,'pietc::z292()'],['../pietc__s_8f90.html#a3d42e1551af446d3d44d8f857c4c69f3',1,'pietc_s::z292()']]], + ['z296',['z296',['../namespacepietc.html#aabf095168753591671ccd7d5fb0cc014',1,'pietc::z296()'],['../pietc__s_8f90.html#a3032f54abd13a6566903d078d2733618',1,'pietc_s::z296()']]], + ['z300',['z300',['../namespacepietc.html#aefe04ca970e600763144d6e280908902',1,'pietc::z300()'],['../pietc__s_8f90.html#ae5629376e55a289a1539183a616938bd',1,'pietc_s::z300()']]], + ['z304',['z304',['../namespacepietc.html#a10a40aacdf35d9a68bd513c733cc504d',1,'pietc::z304()'],['../pietc__s_8f90.html#ac8a2c760f6dca603a25f09bab009f06b',1,'pietc_s::z304()']]], + ['z306',['z306',['../namespacepietc.html#a1360826765c534a694ef654c2c60da75',1,'pietc::z306()'],['../pietc__s_8f90.html#a83f3f97a43622595866c595682fb0ece',1,'pietc_s::z306()']]], + ['z309',['z309',['../namespacepietc.html#a4b87788575836af16b786c4a5cb18035',1,'pietc::z309()'],['../pietc__s_8f90.html#a42313506a4bcce49ce523a3da76cad0d',1,'pietc_s::z309()']]], + ['z310',['z310',['../namespacepietc.html#a9ca0a5d2791bb66480ebbbe9e8259931',1,'pietc::z310()'],['../pietc__s_8f90.html#a2672d937ed2fff71a69526cb61615ab1',1,'pietc_s::z310()']]], + ['z315',['z315',['../namespacepietc.html#a41ff9d1f7cd25dd1977a12716cbda7b9',1,'pietc::z315()'],['../pietc__s_8f90.html#a0d0944f556c02ddd39f6fb643d0c4e42',1,'pietc_s::z315()']]], + ['z320',['z320',['../namespacepietc.html#a2e99f006f8f1af47b9433e76e57c9088',1,'pietc::z320()'],['../pietc__s_8f90.html#a854d1a278b145b3abab94de402e047aa',1,'pietc_s::z320()']]], + ['z321',['z321',['../namespacepietc.html#a9d19d472599c9c661922954d513e3892',1,'pietc::z321()'],['../pietc__s_8f90.html#a6dacd4d7c2ef58abfd7eec4d05768800',1,'pietc_s::z321()']]], + ['z324',['z324',['../namespacepietc.html#a71bece0f96e5b69335a64593753fd7f5',1,'pietc::z324()'],['../pietc__s_8f90.html#a4d163dccd5ccbe9210711b43e3c122a8',1,'pietc_s::z324()']]], + ['z326',['z326',['../namespacepietc.html#ad7d7b3e33bf302fe4fcfe5e3d2238320',1,'pietc::z326()'],['../pietc__s_8f90.html#ae127340bf7abcbe6bf05ad8f86bbe334',1,'pietc_s::z326()']]], + ['z330',['z330',['../namespacepietc.html#a3076260ef24ab5a537ca19ef044b76c6',1,'pietc::z330()'],['../pietc__s_8f90.html#ad4cecd2caa66219be25868d94a046342',1,'pietc_s::z330()']]], + ['z334',['z334',['../namespacepietc.html#aefebd4022ba86728225bce3f9e63a893',1,'pietc::z334()'],['../pietc__s_8f90.html#aed88ac48df98d4b20946c3a4f455986c',1,'pietc_s::z334()']]], + ['z338',['z338',['../namespacepietc.html#a19834289deef1d95d4cc4d718df17cb9',1,'pietc::z338()'],['../pietc__s_8f90.html#a9394cbf025c052e7d2a43ead45b21824',1,'pietc_s::z338()']]], + ['z340',['z340',['../namespacepietc.html#affa49e7bf3827daf11df126c3028db0e',1,'pietc::z340()'],['../pietc__s_8f90.html#aaa24511fc906b4d3b85806afa4f2c95d',1,'pietc_s::z340()']]], + ['z342',['z342',['../namespacepietc.html#ae44896b472c61e5b4f66de26a6e0de9a',1,'pietc::z342()'],['../pietc__s_8f90.html#aef09680abb1de2411be1ff6a360061d5',1,'pietc_s::z342()']]], + ['z345',['z345',['../namespacepietc.html#a525e095f3d019fa6c5578eba28882564',1,'pietc::z345()'],['../pietc__s_8f90.html#aa46a6ff92556a60a4afa4b6882fcc3a1',1,'pietc_s::z345()']]], + ['z347',['z347',['../namespacepietc.html#a11b5a7daffa81eecc573147e407df1df',1,'pietc::z347()'],['../pietc__s_8f90.html#ae68a00fac6a3cc400e79db13280b7dc8',1,'pietc_s::z347()']]], + ['z349',['z349',['../namespacepietc.html#af82e6daf64caa3880e7f9462a58ef185',1,'pietc::z349()'],['../pietc__s_8f90.html#a79b507b74c0331fafd8e4fc789d755ee',1,'pietc_s::z349()']]], + ['z350',['z350',['../namespacepietc.html#a2389cd56c4999e1a32d9ac98483f04ac',1,'pietc::z350()'],['../pietc__s_8f90.html#aa1620605d76075d3d45dd5afb7519ce1',1,'pietc_s::z350()']]], + ['zero',['zero',['../namespacepmat2.html#a22095c65d2859b45208b56d1733bf71c',1,'pmat2']]], + ['zero_5focean',['zero_ocean',['../namespaceutils.html#ab731343353e3c68060807456bc5b6e25',1,'utils']]], + ['zmobius',['zmobius',['../interfacepmat4_1_1mobius.html#ab142f5f19ee3bf4d4c98afa00c7ff9c2',1,'pmat4::mobius::zmobius()'],['../namespacepmat4.html#a52b430dec9d7fe8223ef11bcede76655',1,'pmat4::zmobius()']]], + ['zmobiusi',['zmobiusi',['../interfacepmat4_1_1mobiusi.html#a049b78e6eebd7aff8ce07ee47e308317',1,'pmat4::mobiusi::zmobiusi()'],['../namespacepmat4.html#af2b5d4c9d2a4d8ba9b815a8a50415374',1,'pmat4::zmobiusi()']]], + ['zmtozt',['zmtozt',['../interfacepesg_1_1zmtozt.html',1,'pesg::zmtozt'],['../interfacepesg_1_1zmtozt.html#afa1ce1f98f16e3bb96c90e2903a27e0f',1,'pesg::zmtozt::zmtozt()'],['../namespacepesg.html#a5805b6899bde8316ee20d3a6cc762c51',1,'pesg::zmtozt()']]], + ['zmtozt1',['zmtozt1',['../interfacepesg_1_1zmtozt.html#a832844d072bb50cf0fa1e211f9571f1b',1,'pesg::zmtozt::zmtozt1()'],['../namespacepesg.html#ae345af666f4c293be9d141003a6ac74d',1,'pesg::zmtozt1()']]], + ['znfun',['znfun',['../interfacepmat4_1_1znfun.html',1,'pmat4::znfun'],['../interfacepmat4_1_1znfun.html#af1af781fcc422c2aa4ca1dd1c8faab46',1,'pmat4::znfun::znfun()'],['../namespacepmat4.html#a6755e3cf7c76ad09408672b40f3ea38d',1,'pmat4::znfun()']]], + ['zntay',['zntay',['../interfacepmat4_1_1zntay.html',1,'pmat4::zntay'],['../interfacepmat4_1_1zntay.html#ad3e356698bbf2f8dcb481690b9ff180a',1,'pmat4::zntay::zntay()'],['../namespacepmat4.html#a4bb1210677198fe8815d210ebd41472e',1,'pmat4::zntay()']]], + ['zsetmobius',['zsetmobius',['../interfacepmat4_1_1setmobius.html#a6bda0c568ebb0f01acdcd3a4532f6723',1,'pmat4::setmobius::zsetmobius()'],['../namespacepmat4.html#ad783a79ba69276c0bd62daec786094b1',1,'pmat4::zsetmobius()']]], + ['ztoc',['ztoc',['../interfacepmat4_1_1ztoc.html',1,'pmat4::ztoc'],['../interfacepmat4_1_1ztoc.html#a941d83c0d2ab01d0061931077ff4fbf8',1,'pmat4::ztoc::ztoc()'],['../namespacepmat4.html#a58d3292ea5c5244b5498c32ae38a3b00',1,'pmat4::ztoc()']]], + ['ztocd',['ztocd',['../interfacepmat4_1_1ztoc.html#ad7f8402a748411412a6f374b0e10056c',1,'pmat4::ztoc::ztocd()'],['../namespacepmat4.html#acf0debe9fb3d6bdd10a2bf2bbabfe3ce',1,'pmat4::ztocd()']]], + ['zttozm',['zttozm',['../interfacepesg_1_1zttozm.html',1,'pesg::zttozm'],['../interfacepesg_1_1zttozm.html#a3c74fb087d1b650aabea418716fe8f8f',1,'pesg::zttozm::zttozm()'],['../namespacepesg.html#a9afca8c158609078be9a18b3bad46400',1,'pesg::zttozm()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_2.html b/ver-1.11.0/grid_tools/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_2.js b/ver-1.11.0/grid_tools/search/all_2.js new file mode 100644 index 000000000..83b52408a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_2.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['c0',['c0',['../namespacepietc.html#a8955ae3e4acf1e0c5d3141c9977cc62c',1,'pietc::c0()'],['../pietc__s_8f90.html#a7cb642d34b482c5dd4385e219049712e',1,'pietc_s::c0()']]], + ['c1',['c1',['../namespacepietc.html#aaf1b5a10ad0c38bb38ab850f2b36aafa',1,'pietc::c1()'],['../pietc__s_8f90.html#a7ab3f4129c5edbf0d6c2b2d9fefe9db4',1,'pietc_s::c1()']]], + ['cad1b',['cad1b',['../interfacepmat2_1_1cad1b.html',1,'pmat2::cad1b'],['../interfacepmat2_1_1cad1b.html#a306a30ff97349989c08d794df4d40781',1,'pmat2::cad1b::CAD1B()'],['../namespacepmat2.html#ae3e1102198412e1ccb5c95d69c19ab74',1,'pmat2::CAD1B()']]], + ['cad2b',['cad2b',['../interfacepmat2_1_1cad2b.html',1,'pmat2::cad2b'],['../interfacepmat2_1_1cad2b.html#a0f21eb55d9251b40ebd0d48222b9add7',1,'pmat2::cad2b::CAD2B()'],['../namespacepmat2.html#a997c67d15d657b6837efb77b59397bfd',1,'pmat2::CAD2B()']]], + ['cart_5fto_5flatlon',['cart_to_latlon',['../filter__topo_8F90.html#a29326a5d8919e362ef0f9f9f72b5ec7e',1,'filter_topo.F90']]], + ['cell_5fcenter2',['cell_center2',['../filter__topo_8F90.html#adda2d1676dfdde78cc80d9896bce881f',1,'filter_topo.F90']]], + ['check',['check',['../filter__topo_8F90.html#a5873370d008f550eebbd792e402ce3de',1,'check(status): filter_topo.F90'],['../global__equiv__resol_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50',1,'check(status): global_equiv_resol.f90'],['../regional__esg__grid_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50',1,'check(status): regional_esg_grid.f90'],['../shave__nc_8F90.html#af506435d12571939190a6f9be3034d42',1,'check(status): shave_nc.F90']]], + ['chol2',['chol2',['../interfacepsym2_1_1chol2.html',1,'psym2::chol2'],['../interfacepsym2_1_1chol2.html#a608222491243f89c60abc062b8cf832e',1,'psym2::chol2::chol2()'],['../namespacepsym2.html#a4d9dbce09805280da5ab55a3d0ec0be6',1,'psym2::chol2()']]], + ['ci',['ci',['../namespacepietc.html#a18214b0b284b2c628d9e7c848164b904',1,'pietc::ci()'],['../pietc__s_8f90.html#ad0d0376730501a650f809c618932a661',1,'pietc_s::ci()']]], + ['cinvmt',['cinvmt',['../interfacepmat_1_1inv.html#a986e4b50840bc8170e807503b74dfab5',1,'pmat::inv::cinvmt()'],['../pmat_8f90.html#a66211bbfe11ffae8c686f04052b9b264',1,'pmat::cinvmt()']]], + ['cinvmtf',['cinvmtf',['../interfacepmat_1_1inv.html#a7f91b603923e7c8f326979a96f369cf6',1,'pmat::inv::cinvmtf()'],['../pmat_8f90.html#a94d1e16e885b4c488589b98c5849fa83',1,'pmat::cinvmtf()']]], + ['cipi',['cipi',['../namespacepietc.html#a72d67cd59ffa7614f9de9e2f19d065aa',1,'pietc::cipi()'],['../pietc__s_8f90.html#a6068649aeb63677c9a26f5b898600d5d',1,'pietc_s::cipi()']]], + ['cldum',['cldum',['../interfacepmat_1_1ldum.html#a728a4a13d893dc4524a5387b826449e7',1,'pmat::ldum::cldum()'],['../pmat_8f90.html#a59e712821f27ada7cd57a4d93c70ca37',1,'pmat::cldum()']]], + ['cldumf',['cldumf',['../interfacepmat_1_1ldum.html#a44eebdd9fa3544d08abae813114678f9',1,'pmat::ldum::cldumf()'],['../pmat_8f90.html#a4fe736bfe557ab9a5cc8776d88393c1c',1,'pmat::cldumf()']]], + ['clib',['CLIB',['../namespacepmat2.html#a9b3a2e78b3bf02d0d602cd56f0ea9a75',1,'pmat2']]], + ['clib_5fc',['clib_c',['../interfacepmat2_1_1clipb.html#a63831c47a7c965d120e2ff4fcc861748',1,'pmat2::clipb::clib_c()'],['../namespacepmat2.html#af07afc4448a8b73ae9cfa06cee519e7d',1,'pmat2::clib_c()']]], + ['clib_5fd',['clib_d',['../interfacepmat2_1_1clipb.html#adcb065da7c0828a20e54c530ac7b3815',1,'pmat2::clipb::clib_d()'],['../namespacepmat2.html#acd69acd510090913b374553e76361266',1,'pmat2::clib_d()']]], + ['clinmmt',['clinmmt',['../interfacepmat_1_1inv.html#afee7b027ec0e78a0370824eca5cc8eaa',1,'pmat::inv::clinmmt()'],['../pmat_8f90.html#ac90feb7c74178faa8893d27633e2500b',1,'pmat::clinmmt()']]], + ['clinmmtf',['clinmmtf',['../interfacepmat_1_1inv.html#af225a1efb0329f70186a3ed2cca28015',1,'pmat::inv::clinmmtf()'],['../pmat_8f90.html#a2ffb1c02ee814c3ae2098d1853bf459f',1,'pmat::clinmmtf()']]], + ['clinmvt',['clinmvt',['../interfacepmat_1_1inv.html#ae4602598857143b359475ca605e3a013',1,'pmat::inv::clinmvt()'],['../pmat_8f90.html#a171b16d03b758c0b49b7737e943a37bc',1,'pmat::clinmvt()']]], + ['clinmvtf',['clinmvtf',['../interfacepmat_1_1inv.html#ab78dbc472c9f8068caa71cf6f1093e37',1,'pmat::inv::clinmvtf()'],['../pmat_8f90.html#a590b727eba1ad1ff53d83eeae7be4555',1,'pmat::clinmvtf()']]], + ['clipb',['clipb',['../interfacepmat2_1_1clipb.html',1,'pmat2']]], + ['cmobius',['cmobius',['../interfacepmat4_1_1mobius.html#af12b8eed2959582693ddf40f7d18bb66',1,'pmat4::mobius::cmobius()'],['../namespacepmat4.html#aba8e4c263e6d8f6b18179f3e56f9d912',1,'pmat4::cmobius()']]], + ['compute_5ffilter_5fconstants',['compute_filter_constants',['../filter__topo_8F90.html#a4c877441cf933bf55ddb18ec7e58d670',1,'filter_topo.F90']]], + ['corral',['corral',['../interfacepmat4_1_1corral.html',1,'pmat4::corral'],['../interfacepmat4_1_1corral.html#a0c6feac91e9c7063043ae92c5e824ac7',1,'pmat4::corral::corral()'],['../namespacepmat4.html#acf3408dd7b0d52727193c806c4c89e6d',1,'pmat4::corral()']]], + ['cos_5fangle',['cos_angle',['../filter__topo_8F90.html#ac8a1860db6999f6754e47d678d25661c',1,'filter_topo.F90']]], + ['cross_5fproduct',['cross_product',['../interfacepmat4_1_1cross__product.html',1,'pmat4']]], + ['cross_5fproduct_5fd',['cross_product_d',['../interfacepmat4_1_1cross__product.html#a9b26d781992da02d206cb1b8b93dc467',1,'pmat4::cross_product::cross_product_d()'],['../namespacepmat4.html#ac807f097241c0c5b0d0e8b8ecdbe5219',1,'pmat4::cross_product_d()']]], + ['cross_5fproduct_5fs',['cross_product_s',['../interfacepmat4_1_1cross__product.html#ab2c1dbadfbeda3cd9c20d67dd71e12b0',1,'pmat4::cross_product::cross_product_s()'],['../namespacepmat4.html#a4a16044b6e72303b3e18568dd7e6705a',1,'pmat4::cross_product_s()']]], + ['csb1b',['csb1b',['../interfacepmat2_1_1csb1b.html',1,'pmat2::csb1b'],['../interfacepmat2_1_1csb1b.html#a6d45411a82aaac14e7738cc8ada452cd',1,'pmat2::csb1b::CSB1B()'],['../namespacepmat2.html#a7b83fe4ffdd7f05f60d83bdcf30f9808',1,'pmat2::CSB1B()']]], + ['csb2b',['csb2b',['../interfacepmat2_1_1csb2b.html',1,'pmat2::csb2b'],['../interfacepmat2_1_1csb2b.html#ad5e4d44be479265a450e5a2589aa6130',1,'pmat2::csb2b::CSB2B()'],['../namespacepmat2.html#ac684270726dc33e8603bee1de42dbb1e',1,'pmat2::CSB2B()']]], + ['cstgeo',['cstgeo',['../namespacecstgeo.html',1,'']]], + ['cswpvv',['cswpvv',['../interfacepmat_1_1swpvv.html#a8cdf576cfc12bc6054e4b8613fe70eab',1,'pmat::swpvv::cswpvv()'],['../pmat_8f90.html#afc3f8ac9d411ec8f798a9f4d8b2b9cc0',1,'pmat::cswpvv()']]], + ['ctoc_5fschm',['ctoc_schm',['../interfacepmat5_1_1ctoc__schm.html',1,'pmat5']]], + ['ctog',['ctog',['../interfacepmat5_1_1ctog.html',1,'pmat5']]], + ['ctogr',['ctogr',['../interfacepmat5_1_1ctogr.html',1,'pmat5']]], + ['ctoz',['ctoz',['../interfacepmat4_1_1ctoz.html',1,'pmat4::ctoz'],['../interfacepmat4_1_1ctoz.html#ae980674157c37a8f668cf1a333aea194',1,'pmat4::ctoz::ctoz()'],['../namespacepmat4.html#a6825ba53d8a8cd4fa2989c98567ff13f',1,'pmat4::ctoz()']]], + ['cudlmm',['cudlmm',['../interfacepmat_1_1udlmm.html#abd389e3bb09960c4a8e556cec4cc5a64',1,'pmat::udlmm::cudlmm()'],['../pmat_8f90.html#a9419241750e7abcf568d22472fc4e995',1,'pmat::cudlmm()']]], + ['cudlmv',['cudlmv',['../interfacepmat_1_1udlmm.html#aa39bea367e415eb7e798b3a6ed698ed1',1,'pmat::udlmm::cudlmv()'],['../pmat_8f90.html#ac8e50cc3f472a5d643c01ba01c437f3e',1,'pmat::cudlmv()']]], + ['cyclic',['cyclic',['../pmat4_8f90.html#ac7e0d1ec024ec42e1905809ea150bf0a',1,'cyclic(u1, u2, u3, d1, d2, d3): pmat4.f90'],['../pmat4_8f90.html#a40db721f5c7e9df203fed326ff1825c8',1,'cyclic(u1, u2, u3, d1, d2, d3): pmat4.f90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_3.html b/ver-1.11.0/grid_tools/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_3.js b/ver-1.11.0/grid_tools/search/all_3.js new file mode 100644 index 000000000..3f17ba667 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_3.js @@ -0,0 +1,75 @@ +var searchData= +[ + ['davco',['DAVCO',['../interfacepmat2_1_1avco.html#a49f03de74302bfaaacaa8d1fc25636aa',1,'pmat2::avco::DAVCO()'],['../namespacepmat2.html#ae2b698fd63beb85c56181053fcf8a847',1,'pmat2::DAVCO()']]], + ['dcstgeo',['dcstgeo',['../namespacedcstgeo.html',1,'']]], + ['dctoc',['dctoc',['../interfacepmat5_1_1ctoc__schm.html#a311f99133c79c711c04bd4173d0de8d5',1,'pmat5::ctoc_schm::dctoc()'],['../namespacepmat5.html#a7db3de0fe562e88337558ea0bedf0694',1,'pmat5::dctoc()']]], + ['dctocd',['dctocd',['../interfacepmat5_1_1ctoc__schm.html#adbdfa6a3f889758f843c878a38bbcc1a',1,'pmat5::ctoc_schm::dctocd()'],['../namespacepmat5.html#a17df6aadf501db01b8eb5ea159a356fd',1,'pmat5::dctocd()']]], + ['dctocdd',['dctocdd',['../interfacepmat5_1_1ctoc__schm.html#afd7b5550f4af7b66058399e87b4e5c51',1,'pmat5::ctoc_schm::dctocdd()'],['../namespacepmat5.html#a1f36d39ea3a96f9644202ed9546a2f97',1,'pmat5::dctocdd()']]], + ['dctog',['dctog',['../interfacepmat5_1_1ctog.html#ac755ba2fe18671bc2dee359168399282',1,'pmat5::ctog::dctog()'],['../namespacepmat5.html#a4cdb980157241ae715742587a273d651',1,'pmat5::dctog()']]], + ['dctogr',['dctogr',['../interfacepmat5_1_1ctogr.html#a916a7f306cc4be4477a2aad997c1d3cc',1,'pmat5::ctogr::dctogr()'],['../namespacepmat5.html#ae29767929af2337004430fb7c1e9d469',1,'pmat5::dctogr()']]], + ['ddfco',['DDFCO',['../interfacepmat2_1_1dfco.html#aeaa94e95d5bfceb407ba3fa7164b9383',1,'pmat2::dfco::DDFCO()'],['../namespacepmat2.html#a0cf9170b832f290e7d6567f97fc3ea7a',1,'pmat2::DDFCO()']]], + ['ddfco2',['DDFCO2',['../interfacepmat2_1_1dfco2.html#aeb24962f4022807a2d8328fffb422c85',1,'pmat2::dfco2::DDFCO2()'],['../namespacepmat2.html#a8fc69994cb8d6cf9cb0b3c81895a42fc',1,'pmat2::DDFCO2()']]], + ['del2_5fcubed_5fsphere',['del2_cubed_sphere',['../filter__topo_8F90.html#a1e6b27b88552c78f37a77d10641951e6',1,'filter_topo.F90']]], + ['del4_5fcubed_5fsphere',['del4_cubed_sphere',['../filter__topo_8F90.html#a7b0818ef0ccc4ab0ff5670e5a4da31c7',1,'filter_topo.F90']]], + ['det',['det',['../interfacepmat4_1_1det.html',1,'pmat4']]], + ['det_5fd',['det_d',['../interfacepmat4_1_1det.html#a3d00c1e98678483a595804bb103d8954',1,'pmat4::det::det_d()'],['../namespacepmat4.html#a18568dcbabc7e3eeac4a3298aea55040',1,'pmat4::det_d()']]], + ['det_5fi',['det_i',['../interfacepmat4_1_1det.html#a4edb8d9e7cc76b817b06eaa2ff88b3dc',1,'pmat4::det::det_i()'],['../namespacepmat4.html#ad447bfb05988b6c3b7c5591bce7d8af1',1,'pmat4::det_i()']]], + ['det_5fid',['det_id',['../interfacepmat4_1_1det.html#a65cc061d4d6f6183e9aab890a7c8fd1e',1,'pmat4::det::det_id()'],['../namespacepmat4.html#a3d3d55e961fafd21095e75d49fe734b9',1,'pmat4::det_id()']]], + ['det_5fs',['det_s',['../interfacepmat4_1_1det.html#a71930e999c0fe3fa0dcae0aa0be1834b',1,'pmat4::det::det_s()'],['../namespacepmat4.html#a9ccfdef199705ecd023701ffff24344d',1,'pmat4::det_s()']]], + ['dfco',['dfco',['../interfacepmat2_1_1dfco.html',1,'pmat2::dfco'],['../interfacepmat2_1_1dfco.html#aab1b1da5fc6ea9d612ab05e7c8f33aff',1,'pmat2::dfco::DFCO()'],['../namespacepmat2.html#ab579c583d99c1ce10445025630e1b515',1,'pmat2::DFCO()']]], + ['dfco2',['dfco2',['../interfacepmat2_1_1dfco2.html',1,'pmat2::dfco2'],['../interfacepmat2_1_1dfco2.html#a8730b0e9971d89a27c8a9365f03a79a7',1,'pmat2::dfco2::DFCO2()'],['../namespacepmat2.html#a2529c4ad33ef09e3f098a504edf4cfa3',1,'pmat2::DFCO2()']]], + ['dgrtoc',['dgrtoc',['../interfacepmat5_1_1grtoc.html#ab41541e2ff5061658f10b4dc85dd6d41',1,'pmat5::grtoc::dgrtoc()'],['../namespacepmat5.html#a9b896d011fb1f3f31ce58837e63f24df',1,'pmat5::dgrtoc()']]], + ['dgrtocd',['dgrtocd',['../interfacepmat5_1_1grtoc.html#a72ddd04897b2bcb2afa988b9aa3a3951',1,'pmat5::grtoc::dgrtocd()'],['../namespacepmat5.html#a1997ebe527feb6466baac99464a8352b',1,'pmat5::dgrtocd()']]], + ['dgrtocdd',['dgrtocdd',['../interfacepmat5_1_1grtoc.html#a37bd8768b3cfe4d9d3fb35884cd7c22b',1,'pmat5::grtoc::dgrtocdd()'],['../namespacepmat5.html#a8a88a3f4d6997939589ad5305effe61b',1,'pmat5::dgrtocdd()']]], + ['dgtoc',['dgtoc',['../interfacepmat5_1_1gtoc.html#a252cff22deb3157eaa991c5d990202f9',1,'pmat5::gtoc::dgtoc()'],['../namespacepmat5.html#a46c54c999c0f22cfb21c14164f6afaee',1,'pmat5::dgtoc()']]], + ['dgtocd',['dgtocd',['../interfacepmat5_1_1gtoc.html#a08c47f8989a501fd922e760cc610ffd2',1,'pmat5::gtoc::dgtocd()'],['../namespacepmat5.html#a47cb195cf58372342e19e710030bf70b',1,'pmat5::dgtocd()']]], + ['dgtocdd',['dgtocdd',['../interfacepmat5_1_1gtoc.html#a721bdbf1c0add7f84e5e31e177356ea6',1,'pmat5::gtoc::dgtocdd()'],['../namespacepmat5.html#a43d7cd0b9288695a76ff704fbe1d95b3',1,'pmat5::dgtocdd()']]], + ['diag',['diag',['../interfacepmat4_1_1diag.html',1,'pmat4']]], + ['diagn_5fd',['diagn_d',['../interfacepmat4_1_1diag.html#a1f55d0ad7ab1625d3445b7a74f1a8c77',1,'pmat4::diag::diagn_d()'],['../namespacepmat4.html#a89b64fd3ed548a7a0a7f1c5b7c4f4c80',1,'pmat4::diagn_d()']]], + ['diagn_5fi',['diagn_i',['../interfacepmat4_1_1diag.html#ac5fbc7f86d1f4ed361d714faa8b038aa',1,'pmat4::diag::diagn_i()'],['../namespacepmat4.html#a20d6267f0bf16f8baac9f65b954dbe8f',1,'pmat4::diagn_i()']]], + ['diagn_5fs',['diagn_s',['../interfacepmat4_1_1diag.html#a4dd6db78976260e4249f2728ce19ea35',1,'pmat4::diag::diagn_s()'],['../namespacepmat4.html#a16c9e93c3d9b0bb670d9c3dfc2c93560',1,'pmat4::diagn_s()']]], + ['diagnn_5fd',['diagnn_d',['../interfacepmat4_1_1diag.html#aa485e86b81befb26a2389d74bfdda9ae',1,'pmat4::diag::diagnn_d()'],['../namespacepmat4.html#a97104962c25b160006ba28edf310a26b',1,'pmat4::diagnn_d()']]], + ['diagnn_5fi',['diagnn_i',['../interfacepmat4_1_1diag.html#a3144b17a1e8a1fa95e0f6276802c6019',1,'pmat4::diag::diagnn_i()'],['../namespacepmat4.html#a86bb5fbbb0977051c6f06e31ae5ab6c7',1,'pmat4::diagnn_i()']]], + ['diagnn_5fs',['diagnn_s',['../interfacepmat4_1_1diag.html#a24b47b48d57bdf6f694199d6a66e3077',1,'pmat4::diag::diagnn_s()'],['../namespacepmat4.html#ad1bcf950c1fa15a8c5b2e8a8b3584b95',1,'pmat4::diagnn_s()']]], + ['dininmap',['dininmap',['../interfacepmat5_1_1ininmap.html#abf455bc6bd0c29b61754960b53e8fb30',1,'pmat5::ininmap::dininmap()'],['../namespacepmat5.html#a0ab365448bc120e2e47f6e5caaf2cd1a',1,'pmat5::dininmap()']]], + ['dinivmap',['dinivmap',['../interfacepmat5_1_1inivmap.html#ab6820f511d2a1cc1b5659c4815a5aa25',1,'pmat5::inivmap::dinivmap()'],['../namespacepmat5.html#ade2ed1d8ce5fddd0cac9792ee83aa64f',1,'pmat5::dinivmap()']]], + ['dinvl',['dinvl',['../interfacepmat_1_1invl.html#adaf7eeb7db25b49f54360d8154ed9ee3',1,'pmat::invl::dinvl()'],['../pmat_8f90.html#a340a8e702bf9f2a53cf7d6d934f3516d',1,'pmat::dinvl()']]], + ['dinvmt',['dinvmt',['../interfacepmat_1_1inv.html#ab4527e2ff672c675bced9f9c0d686a0b',1,'pmat::inv::dinvmt()'],['../pmat_8f90.html#a71bc03f739c87071fb018f27aaf1d400',1,'pmat::dinvmt()']]], + ['dinvmtf',['dinvmtf',['../interfacepmat_1_1inv.html#a0e5af0717d280cd08ef53594d6162226',1,'pmat::inv::dinvmtf()'],['../pmat_8f90.html#a8299294f6e383b9be82dc715d9799994',1,'pmat::dinvmtf()']]], + ['dinvu',['dinvu',['../interfacepmat_1_1invu.html#a6ee1bcd5ad53fb336ec333f55a7354a0',1,'pmat::invu::dinvu()'],['../pmat_8f90.html#a5a0be795be2eb1a8b5fc32437056024e',1,'pmat::dinvu()']]], + ['dl1lm',['dl1lm',['../pmat_8f90.html#a581f37f3e10b26605939b9f5156c6739',1,'pmat']]], + ['dl1lmf',['dl1lmf',['../pmat_8f90.html#a3ce1933279800ac21369bff64c9d2a8f',1,'pmat']]], + ['dl1ubb',['DL1UBB',['../interfacepmat2_1_1l1ubb.html#a63e9d8d2a24ab985320bb1b97eedb179',1,'pmat2::l1ubb::DL1UBB()'],['../namespacepmat2.html#a62efec5006a8c9699b6ed7bbe2b3f160',1,'pmat2::DL1UBB()']]], + ['dl1ueb',['DL1UEB',['../interfacepmat2_1_1l1ueb.html#ad9ebaf4646bac275bc3509fe95c1ebd9',1,'pmat2::l1ueb::DL1UEB()'],['../namespacepmat2.html#a5a1def5de47df0f900e0744dffa418f8',1,'pmat2::DL1UEB()']]], + ['dldlm',['dldlm',['../pmat_8f90.html#ae3fb3004218867f277158575acedee5c',1,'pmat']]], + ['dldlmf',['dldlmf',['../pmat_8f90.html#af0dab32a7dd0aba890b0f63a112a8c80',1,'pmat']]], + ['dldltb',['DLDLTB',['../interfacepmat2_1_1ldltb.html#a9cd9c8a7e9598f2ea4e6fde216c0faae',1,'pmat2::ldltb::DLDLTB()'],['../namespacepmat2.html#a449c158bfacefb689c7a67d9d1f2e0fc',1,'pmat2::DLDLTB()']]], + ['dldub',['DLDUB',['../interfacepmat2_1_1ldub.html#a4f97445ab31ad5601c7d470c4889fb75',1,'pmat2::ldub::DLDUB()'],['../namespacepmat2.html#a13362c9a51bfa43b885e3e1dc0885feb',1,'pmat2::DLDUB()']]], + ['dldum',['dldum',['../interfacepmat_1_1ldum.html#a6a216a04983cffae1ee410a9a20c80fe',1,'pmat::ldum::dldum()'],['../pmat_8f90.html#a8a5e2dd82a077ac98f57ed1a4ed5e433',1,'pmat::dldum()']]], + ['dldumf',['dldumf',['../interfacepmat_1_1ldum.html#aa6f0f6dfba710cb16ff8263de6cfc1a8',1,'pmat::ldum::dldumf()'],['../pmat_8f90.html#a02ab16ee448b68fe02f74287fdd5258f',1,'pmat::dldumf()']]], + ['dlinlv',['dlinlv',['../interfacepmat_1_1invl.html#aa7e3ce03e5f8ab85ef0ab4ea76d99efa',1,'pmat::invl::dlinlv()'],['../pmat_8f90.html#a26a01faeaa2ef72c7e235fe9817cc3de',1,'pmat::dlinlv()']]], + ['dlinmmt',['dlinmmt',['../interfacepmat_1_1inv.html#ac852f38632b6af926623aa6ecb032602',1,'pmat::inv::dlinmmt()'],['../pmat_8f90.html#ad6dd2dbd4aefceee6ba7bc5358b46401',1,'pmat::dlinmmt()']]], + ['dlinmmtf',['dlinmmtf',['../interfacepmat_1_1inv.html#ad33a2f9c64003ef70aeb939e756acb1c',1,'pmat::inv::dlinmmtf()'],['../pmat_8f90.html#ad488bc4521e04843f72dc28f4653b1ff',1,'pmat::dlinmmtf()']]], + ['dlinmvt',['dlinmvt',['../interfacepmat_1_1inv.html#ad7c18732c70e958492f16f40ef771ae0',1,'pmat::inv::dlinmvt()'],['../pmat_8f90.html#ae18dfc718b63680ed68e2cfed436759d',1,'pmat::dlinmvt()']]], + ['dlinmvtf',['dlinmvtf',['../interfacepmat_1_1inv.html#a50026fe3078497880c97c984ce7de96d',1,'pmat::inv::dlinmvtf()'],['../pmat_8f90.html#a485292f517d1258b62751dcf116db133',1,'pmat::dlinmvtf()']]], + ['dlinuv',['dlinuv',['../interfacepmat_1_1invu.html#a8633f57d3ce40c0ecd00ec72d4254068',1,'pmat::invu::dlinuv()'],['../pmat_8f90.html#a7dc0cf519521ccaa2412ccc7e4f852f2',1,'pmat::dlinuv()']]], + ['dlltoxy',['dlltoxy',['../interfacepmat4_1_1dlltoxy.html',1,'pmat4']]], + ['dlltoxy_5fd',['dlltoxy_d',['../interfacepmat4_1_1dlltoxy.html#adaa9521f767a578f2d552e94359b1486',1,'pmat4::dlltoxy::dlltoxy_d()'],['../namespacepmat4.html#ab8e89e0ff71497684032ead204fd1491',1,'pmat4::dlltoxy_d()']]], + ['dlltoxy_5fs',['dlltoxy_s',['../interfacepmat4_1_1dlltoxy.html#a0ec2abbf63c29f2c3fb329353a13bde8',1,'pmat4::dlltoxy::dlltoxy_s()'],['../namespacepmat4.html#a8b9f878749f257db635b48ff1ba8bc9a',1,'pmat4::dlltoxy_s()']]], + ['dltdlbv',['dltdlbv',['../interfacepmat2_1_1ltdlbv.html#ad52a67325d4326691f4b633ab04c6c13',1,'pmat2::ltdlbv::dltdlbv()'],['../namespacepmat2.html#acdaee1ba7c588248c79f26462c84bf0c',1,'pmat2::dltdlbv()']]], + ['dp',['dp',['../namespacepkind.html#a00714eff0ad48c0f4d25ae66b0419c90',1,'pkind']]], + ['dpc',['dpc',['../namespacepkind.html#a05fae263265cc6c01576990bfa3b4c65',1,'pkind']]], + ['dpi',['dpi',['../namespacepkind.html#a78c6f106c3c9e7f3cd30458bc58c0242',1,'pkind']]], + ['dplrot',['dplrot',['../interfacepmat5_1_1plrot.html#a9947d2785405b248db1f652ebf4c2f3a',1,'pmat5::plrot::dplrot()'],['../namespacepmat5.html#ad70f27c21aac45e54af9b2b696419809',1,'pmat5::dplrot()']]], + ['dplroti',['dplroti',['../interfacepmat5_1_1plroti.html#afefd1c1a61a6e0e64d7ff7e30c2581dc',1,'pmat5::plroti::dplroti()'],['../namespacepmat5.html#a3069df15efa59d1d48a4c4a221dd201d',1,'pmat5::dplroti()']]], + ['dqarea_5fd',['dqarea_d',['../interfacepmat4_1_1sarea.html#a3ab1d3237c0e31432e8da680c59fd575',1,'pmat4::sarea::dqarea_d()'],['../namespacepmat4.html#abd57a3c8dd6d473a2b7a4e237bd9de0f',1,'pmat4::dqarea_d()']]], + ['dqarea_5fs',['dqarea_s',['../interfacepmat4_1_1sarea.html#a8c800004aa4b350ab40463a8abc3b85a',1,'pmat4::sarea::dqarea_s()'],['../namespacepmat4.html#a81a9dabd946a63e494f3e2a81d82f82a',1,'pmat4::dqarea_s()']]], + ['dswpvv',['dswpvv',['../interfacepmat_1_1swpvv.html#a9773c2718b70d805c2bb3aac6b448930',1,'pmat::swpvv::dswpvv()'],['../pmat_8f90.html#a74f5d0fdbcaf59bedf21da3432ea3a14',1,'pmat::dswpvv()']]], + ['dtarea_5fd',['dtarea_d',['../interfacepmat4_1_1sarea.html#a4362b81c866aa2319a5dc91dab11aeac',1,'pmat4::sarea::dtarea_d()'],['../namespacepmat4.html#aef0bd16dbf6eb59c5ee127188ac62a95',1,'pmat4::dtarea_d()']]], + ['dtarea_5fs',['dtarea_s',['../interfacepmat4_1_1sarea.html#a364f46cd3d4a9bec95d18398b2eff92c',1,'pmat4::sarea::dtarea_s()'],['../namespacepmat4.html#ae2a0a54e6946512c65585b15ecd2f112',1,'pmat4::dtarea_s()']]], + ['dtor',['dtor',['../namespacepietc.html#a0e5882b8de6720f66db6ce7dd8c2f856',1,'pietc::dtor()'],['../pietc__s_8f90.html#ab93de98ccaa79622a76a3ba1d8dcf107',1,'pietc_s::dtor()']]], + ['dudlb',['DUDLB',['../interfacepmat2_1_1udlb.html#a312cae0e3431b93713f6f770e00dce89',1,'pmat2::udlb::DUDLB()'],['../namespacepmat2.html#a8590ff2084555b8ade6ec593e92285a0',1,'pmat2::DUDLB()']]], + ['dudlbv',['dudlbv',['../interfacepmat2_1_1udlbv.html#ab38365f81aa10f5094ebdbc9646e6fd5',1,'pmat2::udlbv::dudlbv()'],['../namespacepmat2.html#a9798fa383265eeaf98c2d7400ef5bc8e',1,'pmat2::dudlbv()']]], + ['dudlmm',['dudlmm',['../interfacepmat_1_1udlmm.html#a73d9a8eea89f8091a7c37fcb058b47fa',1,'pmat::udlmm::dudlmm()'],['../pmat_8f90.html#af34f6abbad1377098823de8461ef3950',1,'pmat::dudlmm()']]], + ['dudlmv',['dudlmv',['../interfacepmat_1_1udlmm.html#a4e2544a369ccd3c02e71f04f1daee2f3',1,'pmat::udlmm::dudlmv()'],['../pmat_8f90.html#a9d1caf30f25b173377120f68e0549ebb',1,'pmat::dudlmv()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_4.html b/ver-1.11.0/grid_tools/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_4.js b/ver-1.11.0/grid_tools/search/all_4.js new file mode 100644 index 000000000..50ca9634e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_4.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['eigensym2',['eigensym2',['../interfacepsym2_1_1eigensym2.html',1,'psym2::eigensym2'],['../interfacepsym2_1_1eigensym2.html#a4fa5b26fc1796b8398f031756f62841c',1,'psym2::eigensym2::eigensym2()'],['../namespacepsym2.html#a790d98323182c2f9bdd2cbbf4824a694',1,'psym2::eigensym2()']]], + ['eigensym2d',['eigensym2d',['../interfacepsym2_1_1eigensym2.html#aecba5ed0693b6f83b9eb553bfe9d01b5',1,'psym2::eigensym2::eigensym2d()'],['../namespacepsym2.html#a4a0b47ffdfde7631a62dba87d6d4e62c',1,'psym2::eigensym2d()']]], + ['euler',['euler',['../namespacepietc.html#acdf00b4d494b3564fe56504d257cebb7',1,'pietc::euler()'],['../pietc__s_8f90.html#a498dbbe1374b2a2bca5901f0ac430664',1,'pietc_s::euler()']]], + ['expmat',['expmat',['../interfacepmat4_1_1expmat.html',1,'pmat4::expmat'],['../interfacepmat4_1_1expmat.html#abbd074f63d8c46aea50cbf6c2d0a1392',1,'pmat4::expmat::expmat()'],['../namespacepmat4.html#aabc881074a8327ba35e6e489b50d8d9b',1,'pmat4::expmat()']]], + ['expmatd',['expmatd',['../interfacepmat4_1_1expmat.html#a89b12c97be6694f6cbdeec7552d2222c',1,'pmat4::expmat::expmatd()'],['../namespacepmat4.html#a299ee2005b886da1f3a8372558355cbb',1,'pmat4::expmatd()']]], + ['expmatdd',['expmatdd',['../interfacepmat4_1_1expmat.html#a821d8d28424ffda8eab61dc18e916b8a',1,'pmat4::expmat::expmatdd()'],['../namespacepmat4.html#a7be59f4cbe597ab23b4fef5b2ddf4b70',1,'pmat4::expmatdd()']]], + ['expsym2',['expsym2',['../interfacepsym2_1_1expsym2.html',1,'psym2::expsym2'],['../interfacepsym2_1_1expsym2.html#a0538fbed93ca5ebf63a98118812c2108',1,'psym2::expsym2::expsym2()'],['../namespacepsym2.html#a4ed3850a40ba5cef460ff8fd032c1df5',1,'psym2::expsym2()']]], + ['expsym2d',['expsym2d',['../interfacepsym2_1_1expsym2.html#ac6c2a91a63d5c756abaa9e32c84009cd',1,'psym2::expsym2::expsym2d()'],['../namespacepsym2.html#a2eb5c916388fb0e526188b32d08986b7',1,'psym2::expsym2d()']]], + ['expsym2d_5fe',['expsym2d_e',['../interfacepsym2_1_1expsym2d__e.html',1,'psym2::expsym2d_e'],['../interfacepsym2_1_1expsym2d__e.html#a5cfc49bc53c06a47d49648bb401d4913',1,'psym2::expsym2d_e::expsym2d_e()'],['../namespacepsym2.html#a18dceeb94548f587a55d638463617c7f',1,'psym2::expsym2d_e()']]], + ['expsym2d_5ft',['expsym2d_t',['../interfacepsym2_1_1expsym2d__t.html',1,'psym2::expsym2d_t'],['../interfacepsym2_1_1expsym2d__t.html#a789a2d2a1d3aca671bf4de8997681ad3',1,'psym2::expsym2d_t::expsym2d_t()'],['../namespacepsym2.html#ad9bc792f9b0c7b86306a4101a3af6ddb',1,'psym2::expsym2d_t()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_5.html b/ver-1.11.0/grid_tools/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_5.js b/ver-1.11.0/grid_tools/search/all_5.js new file mode 100644 index 000000000..9d580980a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_5.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['f',['f',['../namespacepietc.html#a1a59f6eeafd9442451ae14323395e362',1,'pietc::f()'],['../pietc__s_8f90.html#a8d5c2d572cf1e87d48110c4fdc985ba0',1,'pietc_s::f()']]], + ['fill_5fagrid_5fscalar_5fcorners',['fill_AGRID_scalar_corners',['../filter__topo_8F90.html#afbf523660c495eba39b03c488603e39e',1,'filter_topo.F90']]], + ['fill_5fagrid_5fxy_5fcorners',['fill_AGRID_xy_corners',['../filter__topo_8F90.html#add46a0ed8b05639ed61af504527f279d',1,'filter_topo.F90']]], + ['fill_5fbgrid_5fscalar_5fcorners',['fill_BGRID_scalar_corners',['../filter__topo_8F90.html#a8909e0690277954b158ffb06ccaf99ed',1,'filter_topo.F90']]], + ['fill_5fcubic_5fgrid_5fhalo',['fill_cubic_grid_halo',['../filter__topo_8F90.html#aa4c33c4ce544e71e4f38da43fea552e0',1,'filter_topo.F90']]], + ['fill_5fdgrid_5fxy_5fcorners',['fill_DGRID_xy_corners',['../filter__topo_8F90.html#ada6d23dc5a282ec74dfd6191605d54e5',1,'filter_topo.F90']]], + ['fill_5fregional_5fhalo',['fill_regional_halo',['../namespaceutils.html#a3104e7e7b180787408ded9cfe521b7b8',1,'utils']]], + ['filter_5ftopo',['filter_topo',['../filter__topo_8F90.html#a8160043e7e9d4afe2362292926087e3f',1,'filter_topo.F90']]], + ['filter_5ftopo_2ef90',['filter_topo.F90',['../filter__topo_8F90.html',1,'']]], + ['frametwist',['frametwist',['../interfacepmat5_1_1frametwist.html',1,'pmat5::frametwist'],['../interfacepmat5_1_1frametwist.html#a1810c74f2b72abc08f36c26d20ee664c',1,'pmat5::frametwist::frametwist()'],['../namespacepmat5.html#a003130a328412d6651f2170670c67f33',1,'pmat5::frametwist()']]], + ['fv3_5fzs_5ffilter',['FV3_zs_filter',['../filter__topo_8F90.html#a53576f546c3c958cf8b95fdc01b063dd',1,'filter_topo.F90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_6.html b/ver-1.11.0/grid_tools/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_6.js b/ver-1.11.0/grid_tools/search/all_6.js new file mode 100644 index 000000000..5a0e05e23 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_6.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['gaulegh',['gaulegh',['../interfacepesg_1_1gaulegh.html',1,'pesg::gaulegh'],['../interfacepesg_1_1gaulegh.html#afe168e8a4b4e7d74529145284abe6f7d',1,'pesg::gaulegh::gaulegh()'],['../namespacepesg.html#a746e360a259db39d63e1158569a9fbb8',1,'pesg::gaulegh()']]], + ['gd',['gd',['../interfacepfun_1_1gd.html',1,'pfun']]], + ['gd_5fd',['gd_d',['../interfacepfun_1_1gd.html#a50c7186779f3277d102b48b4db383d82',1,'pfun::gd::gd_d()'],['../namespacepfun.html#a3355d682c6e07927413bdaff27ba7cc2',1,'pfun::gd_d()']]], + ['gd_5fs',['gd_s',['../interfacepfun_1_1gd.html#a66b921b3cfabbce309388eeb55329f08',1,'pfun::gd::gd_s()'],['../namespacepfun.html#a4b18f6596a6211a3454d798ca31bcdb8',1,'pfun::gd_s()']]], + ['gdi',['gdi',['../interfacepfun_1_1gdi.html',1,'pfun']]], + ['gdi_5fd',['gdi_d',['../interfacepfun_1_1gdi.html#a1670d15b2ef8d89eb4f803eda27fef9d',1,'pfun::gdi::gdi_d()'],['../namespacepfun.html#a611c488cc566733f2507a7bd368a5fc4',1,'pfun::gdi_d()']]], + ['gdi_5fs',['gdi_s',['../interfacepfun_1_1gdi.html#ad8f5d75ea5c9582a611896c9c8e2612b',1,'pfun::gdi::gdi_s()'],['../namespacepfun.html#a6255f8f40118b070a86cb9615d7f7101',1,'pfun::gdi_s()']]], + ['get_5farea',['get_area',['../filter__topo_8F90.html#a9d5af5d3196c9d664733b8c126d12656',1,'filter_topo.F90']]], + ['get_5fedges',['get_edges',['../interfacepesg_1_1get__edges.html',1,'pesg::get_edges'],['../interfacepesg_1_1get__edges.html#a2567fee33d1896d51f62813f9cc9edb0',1,'pesg::get_edges::get_edges()'],['../namespacepesg.html#ac2d1049cd6301974935cf9ffa9486616',1,'pesg::get_edges()']]], + ['get_5fmeanq',['get_meanq',['../interfacepesg_1_1get__meanq.html',1,'pesg']]], + ['get_5fmeanqd',['get_meanqd',['../interfacepesg_1_1get__meanq.html#a13bada4885b90600bffe0e72c198487f',1,'pesg::get_meanq::get_meanqd()'],['../namespacepesg.html#a0c2a93c3e3635de61d57ad3edd719a4c',1,'pesg::get_meanqd()']]], + ['get_5fmeanqs',['get_meanqs',['../interfacepesg_1_1get__meanq.html#afd5d2fefa922c7f25911d3ec85fdc2c9',1,'pesg::get_meanq::get_meanqs()'],['../namespacepesg.html#af356d7aa00db9deeaaf2223e2b9cf23f',1,'pesg::get_meanqs()']]], + ['get_5fqofv',['get_qofv',['../interfacepesg_1_1get__qofv.html',1,'pesg::get_qofv'],['../interfacepesg_1_1get__qofv.html#aeb424866c84641a3c74a385b45c6a4e2',1,'pesg::get_qofv::get_qofv()'],['../namespacepesg.html#a2d1f5bfe4e8ff8520662549860fb0048',1,'pesg::get_qofv()']]], + ['get_5fqofvd',['get_qofvd',['../interfacepesg_1_1get__qofv.html#a9c94c901c2a3489187295372cef8b978',1,'pesg::get_qofv::get_qofvd()'],['../namespacepesg.html#abd812e3b4e112502db1eefbc27687452',1,'pesg::get_qofvd()']]], + ['get_5fqsofvs',['get_qsofvs',['../interfacepesg_1_1get__qofv.html#a63a7edd08c8e3fd95e09a7fadb56db5a',1,'pesg::get_qofv::get_qsofvs()'],['../namespacepesg.html#a1ce5f976f4e335f7c3711c8262e0a7d7',1,'pesg::get_qsofvs()']]], + ['get_5fqx',['get_qx',['../interfacepesg_1_1get__qx.html',1,'pesg::get_qx'],['../interfacepesg_1_1get__qx.html#a7d66f24a78ff7ed91dbdb54ac0b9ccf6',1,'pesg::get_qx::get_qx()'],['../namespacepesg.html#af9c7f9dfc44f9638a3832c39cb87bf62',1,'pesg::get_qx()']]], + ['get_5fqxd',['get_qxd',['../interfacepesg_1_1get__qx.html#a2f9061aa3a42063e28bb379bc4d4e13c',1,'pesg::get_qx::get_qxd()'],['../namespacepesg.html#a6c51ec9c9b6f0396f6811afaf053003c',1,'pesg::get_qxd()']]], + ['global_5fequiv_5fresol',['global_equiv_resol',['../global__equiv__resol_8f90.html#ac7c17106d99b979f5c9b65d79b0faa95',1,'global_equiv_resol.f90']]], + ['global_5fequiv_5fresol_2ef90',['global_equiv_resol.f90',['../global__equiv__resol_8f90.html',1,'']]], + ['gram',['gram',['../interfacepmat4_1_1gram.html',1,'pmat4']]], + ['gram_5fd',['gram_d',['../interfacepmat4_1_1gram.html#ac99bc810d03adcde04de5082aa5d8ae6',1,'pmat4::gram::gram_d()'],['../namespacepmat4.html#ab7089a1ca01eb147693f2934c04d19a7',1,'pmat4::gram_d()']]], + ['gram_5fs',['gram_s',['../interfacepmat4_1_1gram.html#a3d5540c4a9a67523e3ef85b431b213a7',1,'pmat4::gram::gram_s()'],['../namespacepmat4.html#aade64d36f392c897af58d41439fd3901',1,'pmat4::gram_s()']]], + ['graml_5fd',['graml_d',['../interfacepmat4_1_1gram.html#a7bcd28377941ae9b77b1900ad6eed5ed',1,'pmat4::gram::graml_d()'],['../namespacepmat4.html#a258deaab20439a12318abdf11bcfb21c',1,'pmat4::graml_d()']]], + ['great_5fcircle_5fdist',['great_circle_dist',['../filter__topo_8F90.html#ab7efdbd3670acafb99d01346069d7c53',1,'filter_topo.F90']]], + ['grid_5ffile',['grid_file',['../namespaceutils.html#a66fef4a7e26a8d6cd8896fde50d69fe4',1,'utils']]], + ['grid_5ftype',['grid_type',['../namespaceutils.html#a80d365fe7e244336b4deba2fbe720758',1,'utils']]], + ['grtoc',['grtoc',['../interfacepmat5_1_1grtoc.html',1,'pmat5']]], + ['gtoc',['gtoc',['../interfacepmat5_1_1gtoc.html',1,'pmat5']]], + ['gtoframe',['gtoframe',['../interfacepmat5_1_1gtoframe.html',1,'pmat5']]], + ['gtoframem',['gtoframem',['../interfacepmat5_1_1gtoframe.html#aecd5c543114ed58377e9c6dca455182d',1,'pmat5::gtoframe::gtoframem()'],['../namespacepmat5.html#ac105f0c4e3ea9e7b2dbfb9a9d6f9f97e',1,'pmat5::gtoframem()']]], + ['gtoframev',['gtoframev',['../interfacepmat5_1_1gtoframe.html#a916e166ff2a86a9d3888728aa6d364dc',1,'pmat5::gtoframe::gtoframev()'],['../namespacepmat5.html#a277a5dc65adacdfda2ceefa3485a34a9',1,'pmat5::gtoframev()']]], + ['gtoxm_5fak_5fdd',['gtoxm_ak_dd',['../interfacepesg_1_1gtoxm__ak__dd.html',1,'pesg']]], + ['gtoxm_5fak_5fdd_5fg',['gtoxm_ak_dd_g',['../interfacepesg_1_1gtoxm__ak__dd.html#ac1071d57180a7703340a3ba0e9755d0b',1,'pesg::gtoxm_ak_dd::gtoxm_ak_dd_g()'],['../namespacepesg.html#aa65c5b5e54a03ce01b07070022dda5f5',1,'pesg::gtoxm_ak_dd_g()']]], + ['gtoxm_5fak_5fdd_5fm',['gtoxm_ak_dd_m',['../interfacepesg_1_1gtoxm__ak__dd.html#af90c23ad50d9a59a6c7fd4fda9f78195',1,'pesg::gtoxm_ak_dd::gtoxm_ak_dd_m()'],['../namespacepesg.html#ab803ad3d6f3cbf8858804822ffac2ac7',1,'pesg::gtoxm_ak_dd_m()']]], + ['gtoxm_5fak_5frr',['gtoxm_ak_rr',['../interfacepesg_1_1gtoxm__ak__rr.html',1,'pesg']]], + ['gtoxm_5fak_5frr_5fg',['gtoxm_ak_rr_g',['../interfacepesg_1_1gtoxm__ak__rr.html#a6eaa19a4e531fdc6fccb2fe9b3154443',1,'pesg::gtoxm_ak_rr::gtoxm_ak_rr_g()'],['../namespacepesg.html#a50c059ec290acbbd18d3be0a0a873517',1,'pesg::gtoxm_ak_rr_g()']]], + ['gtoxm_5fak_5frr_5fm',['gtoxm_ak_rr_m',['../interfacepesg_1_1gtoxm__ak__rr.html#a11e3d13ce4dc1c0ca5afcc890d2b0da1',1,'pesg::gtoxm_ak_rr::gtoxm_ak_rr_m()'],['../namespacepesg.html#ac0a284cc4ec645ebfe7ef4c01c18b930',1,'pesg::gtoxm_ak_rr_m()']]], + ['guessak_5fgeo',['guessak_geo',['../interfacepesg_1_1guessak__geo.html',1,'pesg::guessak_geo'],['../interfacepesg_1_1guessak__geo.html#ab956aa430e69602167fd715e75f85d29',1,'pesg::guessak_geo::guessak_geo()'],['../namespacepesg.html#ae76f750095dd1ba202e985abe4e487e8',1,'pesg::guessak_geo()']]], + ['guessak_5fmap',['guessak_map',['../interfacepesg_1_1guessak__map.html',1,'pesg::guessak_map'],['../interfacepesg_1_1guessak__map.html#a9e8b6c869d7c64a90e8d2482bf72c137',1,'pesg::guessak_map::guessak_map()'],['../namespacepesg.html#a475335b2f115cf7ddde8854249f4aaba',1,'pesg::guessak_map()']]], + ['grid_5ftools',['grid_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_7.html b/ver-1.11.0/grid_tools/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_7.js b/ver-1.11.0/grid_tools/search/all_7.js new file mode 100644 index 000000000..a434a6bf1 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_7.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['handle_5ferr',['handle_err',['../namespaceutils.html#a970642bec191e4bb7ee405787c192122',1,'utils']]], + ['hav',['hav',['../interfacepmat4_1_1hav.html',1,'pmat4::hav'],['../interfacepfun_1_1hav.html',1,'pfun::hav']]], + ['hav_5fd',['hav_d',['../interfacepfun_1_1hav.html#aaf9f06e8e5b6f13a13223303db85e839',1,'pfun::hav::hav_d()'],['../interfacepmat4_1_1hav.html#a7fb964d0334ded97b401e4c1fb7c6d19',1,'pmat4::hav::hav_d()'],['../namespacepfun.html#a9ed21fd1a8d21150853b573d9008f89d',1,'pfun::hav_d()'],['../namespacepmat4.html#ad6d025b44412ad3f00d78bf8349f9e29',1,'pmat4::hav_d()']]], + ['hav_5fs',['hav_s',['../interfacepfun_1_1hav.html#a464148193f6ee1520f1afa7be42ab7c2',1,'pfun::hav::hav_s()'],['../interfacepmat4_1_1hav.html#a86d62599792a20c1369f057c9f9aeaf1',1,'pmat4::hav::hav_s()'],['../namespacepfun.html#a26da582899cece6a52292d701e74e33b',1,'pfun::hav_s()'],['../namespacepmat4.html#a8bbb7bd988101945eb216beebc4fb2f0',1,'pmat4::hav_s()']]], + ['havh',['havh',['../interfacepfun_1_1havh.html',1,'pfun']]], + ['havh_5fd',['havh_d',['../interfacepfun_1_1havh.html#a8b5f748c23a72f0c0c8b29cbcffdf04e',1,'pfun::havh::havh_d()'],['../namespacepfun.html#a61e1cd121ac958c16818f19ce9f34646',1,'pfun::havh_d()']]], + ['havh_5fs',['havh_s',['../interfacepfun_1_1havh.html#a976cd89ada48113173bc41db19e3e31d',1,'pfun::havh::havh_s()'],['../namespacepfun.html#ab26cf04a050097dff9d91d000ec86eaa',1,'pfun::havh_s()']]], + ['hgrid_5fak',['hgrid_ak',['../interfacepesg_1_1hgrid__ak.html',1,'pesg::hgrid_ak'],['../interfacepesg_1_1hgrid__ak.html#a2c468c9be70c50df8666c7dec8969112',1,'pesg::hgrid_ak::hgrid_ak()'],['../namespacepesg.html#a0c7f1e64257cb704378e12591faf895d',1,'pesg::hgrid_ak()']]], + ['hgrid_5fak_5fc',['hgrid_ak_c',['../interfacepesg_1_1hgrid__ak.html#a3554220b0cd6349e118b780b1b430366',1,'pesg::hgrid_ak::hgrid_ak_c()'],['../namespacepesg.html#acf47d02792cc2e34cee6e20da25ee212',1,'pesg::hgrid_ak_c()']]], + ['hgrid_5fak_5fdc',['hgrid_ak_dc',['../interfacepesg_1_1hgrid__ak__dc.html',1,'pesg::hgrid_ak_dc'],['../interfacepesg_1_1hgrid__ak__dc.html#a1adcff5ff5e1af4ed869ca558273cbb4',1,'pesg::hgrid_ak_dc::hgrid_ak_dc()'],['../namespacepesg.html#a41d995a58d366d36942a51e0e88e9987',1,'pesg::hgrid_ak_dc()']]], + ['hgrid_5fak_5fdd',['hgrid_ak_dd',['../interfacepesg_1_1hgrid__ak__dd.html',1,'pesg::hgrid_ak_dd'],['../interfacepesg_1_1hgrid__ak__dd.html#adf29825e0ec6d723f1b34d603d54ce55',1,'pesg::hgrid_ak_dd::hgrid_ak_dd()'],['../namespacepesg.html#a8b4abffb6f22a026c43a960a524e711c',1,'pesg::hgrid_ak_dd()']]], + ['hgrid_5fak_5fdd_5fc',['hgrid_ak_dd_c',['../interfacepesg_1_1hgrid__ak__dd.html#a4c25db01cd4089ea7ddfb6e766200127',1,'pesg::hgrid_ak_dd::hgrid_ak_dd_c()'],['../namespacepesg.html#a8c7cd32a349e41308d43ccb10f47a5e9',1,'pesg::hgrid_ak_dd_c()']]], + ['hgrid_5fak_5frc',['hgrid_ak_rc',['../interfacepesg_1_1hgrid__ak__rc.html',1,'pesg::hgrid_ak_rc'],['../interfacepesg_1_1hgrid__ak__rc.html#a4c195203e881120327dab22b1ab5a288',1,'pesg::hgrid_ak_rc::hgrid_ak_rc()'],['../namespacepesg.html#afae7d39e7d0315a7b11db90f68231096',1,'pesg::hgrid_ak_rc()']]], + ['hgrid_5fak_5frr',['hgrid_ak_rr',['../interfacepesg_1_1hgrid__ak__rr.html',1,'pesg::hgrid_ak_rr'],['../interfacepesg_1_1hgrid__ak__rr.html#a05ca3c2a8715f34ff41cab3f46c0d58f',1,'pesg::hgrid_ak_rr::hgrid_ak_rr()'],['../namespacepesg.html#ad431931d2cd387f284d9fd7175d66a84',1,'pesg::hgrid_ak_rr()']]], + ['hgrid_5fak_5frr_5fc',['hgrid_ak_rr_c',['../interfacepesg_1_1hgrid__ak__rr.html#a61f700277c49083334f4defac4f44b93',1,'pesg::hgrid_ak_rr::hgrid_ak_rr_c()'],['../namespacepesg.html#a2a47e8a580093c4d81d1c413235dba5a',1,'pesg::hgrid_ak_rr_c()']]], + ['huarea',['huarea',['../interfacepmat4_1_1huarea.html',1,'pmat4']]], + ['huarea_5fd',['huarea_d',['../interfacepmat4_1_1huarea.html#aebe44782788b625f8e40564f01dfa2d9',1,'pmat4::huarea::huarea_d()'],['../namespacepmat4.html#a878838ecb93924d96ae6f2201d4e295e',1,'pmat4::huarea_d()']]], + ['huarea_5fs',['huarea_s',['../interfacepmat4_1_1huarea.html#abb9f1f858de9338733356011b044e8fb',1,'pmat4::huarea::huarea_s()'],['../namespacepmat4.html#ad8f31b798b7f9ef52558279f17cdb1e2',1,'pmat4::huarea_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_8.html b/ver-1.11.0/grid_tools/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_8.js b/ver-1.11.0/grid_tools/search/all_8.js new file mode 100644 index 000000000..8b40cc973 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_8.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['id',['id',['../namespacepsym2.html#ad501d59b45e349480e91f1ddfd1d8b08',1,'psym2']]], + ['id2222',['id2222',['../interfacepsym2_1_1id2222.html',1,'psym2::id2222'],['../interfacepsym2_1_1id2222.html#aaec218b49c942a7f18acbad232a5bb4c',1,'psym2::id2222::id2222()'],['../namespacepsym2.html#a170abd6782770d7752a65bd53817a165',1,'psym2::id2222()']]], + ['identity',['identity',['../interfacepmat4_1_1identity.html',1,'pmat4']]], + ['identity3_5fi',['identity3_i',['../interfacepmat4_1_1identity.html#a491591cb27e0cdd6cce72ed2e867f21a',1,'pmat4::identity::identity3_i()'],['../namespacepmat4.html#a50f1d1ef0c666fd608e635204a0d4650',1,'pmat4::identity3_i()']]], + ['identity_5fi',['identity_i',['../interfacepmat4_1_1identity.html#aba77f6a7758d868a477b371356536884',1,'pmat4::identity::identity_i()'],['../namespacepmat4.html#ab32d3dba8b9ac02e54b6147cec97ee54',1,'pmat4::identity_i()']]], + ['iinvf',['iinvf',['../interfacepmat_1_1inv.html#a1154ad662cfccc73ce167321b4d762df',1,'pmat::inv::iinvf()'],['../pmat_8f90.html#aa6c568105ff3348951ef98425fdfb46f',1,'pmat::iinvf()']]], + ['ininmap',['ininmap',['../interfacepmat5_1_1ininmap.html',1,'pmat5']]], + ['inivmap',['inivmap',['../interfacepmat5_1_1inivmap.html',1,'pmat5']]], + ['inv',['inv',['../interfacepmat_1_1inv.html',1,'pmat']]], + ['invl',['invl',['../interfacepmat_1_1invl.html',1,'pmat']]], + ['invsym2',['invsym2',['../interfacepsym2_1_1invsym2.html',1,'psym2::invsym2'],['../interfacepsym2_1_1invsym2.html#adddf4e696d07a189431ee07285d713d5',1,'psym2::invsym2::invsym2()'],['../namespacepsym2.html#a8df1637f27ef025b30e90ca7e97f2c4d',1,'psym2::invsym2()']]], + ['invsym2d',['invsym2d',['../interfacepsym2_1_1invsym2.html#ad70d53880de5c19aa0147d40e7fd3b31',1,'psym2::invsym2::invsym2d()'],['../namespacepsym2.html#a895348d1d6e4bbebded2e0be29c50e18',1,'psym2::invsym2d()']]], + ['invu',['invu',['../interfacepmat_1_1invu.html',1,'pmat']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_9.html b/ver-1.11.0/grid_tools/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_9.js b/ver-1.11.0/grid_tools/search/all_9.js new file mode 100644 index 000000000..b7f9ccaa1 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_9.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['l1lm',['l1lm',['../interfacepmat_1_1l1lm.html',1,'pmat']]], + ['l1ubb',['l1ubb',['../interfacepmat2_1_1l1ubb.html',1,'pmat2::l1ubb'],['../interfacepmat2_1_1l1ubb.html#aa9450336a73dd3f95870dd1d2623557f',1,'pmat2::l1ubb::L1UBB()'],['../namespacepmat2.html#af17823af72f85f8ee3d63b2e496366b6',1,'pmat2::L1UBB()']]], + ['l1ueb',['l1ueb',['../interfacepmat2_1_1l1ueb.html',1,'pmat2::l1ueb'],['../interfacepmat2_1_1l1ueb.html#adb4a6107e3e9389c7cdcfbc9ff76be02',1,'pmat2::l1ueb::L1UEB()'],['../namespacepmat2.html#a1d97a2f43e9e29c035c0a11fe4ae0c6f',1,'pmat2::L1UEB()']]], + ['latlon2xyz',['latlon2xyz',['../filter__topo_8F90.html#a269a68f22ed721deddc0c2c033796ebe',1,'filter_topo.F90']]], + ['ldlm',['ldlm',['../interfacepmat_1_1ldlm.html',1,'pmat']]], + ['ldltb',['ldltb',['../interfacepmat2_1_1ldltb.html',1,'pmat2::ldltb'],['../interfacepmat2_1_1ldltb.html#abd6f9634b50c0aa2b117f17f0fbc8571',1,'pmat2::ldltb::LDLTB()'],['../namespacepmat2.html#a24eaac0513ed6ae836f329464323bfcb',1,'pmat2::LDLTB()']]], + ['ldub',['ldub',['../interfacepmat2_1_1ldub.html',1,'pmat2::ldub'],['../interfacepmat2_1_1ldub.html#a0b6ba04df748e267fe8162929b30b31c',1,'pmat2::ldub::LDUB()'],['../namespacepmat2.html#a68c6ad18dd5b834d371bdbdec1438586',1,'pmat2::LDUB()']]], + ['ldum',['ldum',['../interfacepmat_1_1ldum.html',1,'pmat']]], + ['linbv',['linbv',['../interfacepmat2_1_1linbv.html',1,'pmat2::linbv'],['../interfacepmat2_1_1linbv.html#a1dd40614e16f594e05a811388a697cdd',1,'pmat2::linbv::LINBV()'],['../namespacepmat2.html#a50b8a82c6c2b60413602c81c7288cfe0',1,'pmat2::LINBV()']]], + ['logsym2',['logsym2',['../interfacepsym2_1_1logsym2.html',1,'psym2::logsym2'],['../interfacepsym2_1_1logsym2.html#ad4cfa73f0dd05dc012dfa2c48e06f12a',1,'psym2::logsym2::logsym2()'],['../namespacepsym2.html#a14308a48d1f03e4660146aa91dbe4f50',1,'psym2::logsym2()']]], + ['logsym2d',['logsym2d',['../interfacepsym2_1_1logsym2.html#a9f8f85214d8253acf9d4651c88e2ac1e',1,'psym2::logsym2::logsym2d()'],['../namespacepsym2.html#a19364061a64c8eb98c82abb1b733b804',1,'psym2::logsym2d()']]], + ['ltdlbv',['ltdlbv',['../interfacepmat2_1_1ltdlbv.html',1,'pmat2::ltdlbv'],['../interfacepmat2_1_1ltdlbv.html#a256952d13f24070b486c9243cd1aa270',1,'pmat2::ltdlbv::ltdlbv()'],['../namespacepmat2.html#abbddde193b71f87e3a9278b3829a132a',1,'pmat2::ltdlbv()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_a.html b/ver-1.11.0/grid_tools/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_a.js b/ver-1.11.0/grid_tools/search/all_a.js new file mode 100644 index 000000000..56bce0fde --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_a.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['mask_5ffield',['mask_field',['../namespaceutils.html#af55445de78a1c182c995ad92e2b1f367',1,'utils']]], + ['mc1',['mc1',['../namespacepietc.html#a66f66de805f3d59d5c1e718da6313584',1,'pietc::mc1()'],['../pietc__s_8f90.html#aa623c315afa6ebf68c8a6c61a67eafc6',1,'pietc_s::mc1()']]], + ['mci',['mci',['../namespacepietc.html#a4e58e0dd26c3e428bf75a19465f68377',1,'pietc::mci()'],['../pietc__s_8f90.html#aecc2d0bdcae1dc53a53817a092429384',1,'pietc_s::mci()']]], + ['mid_5fpt3_5fcart',['mid_pt3_cart',['../filter__topo_8F90.html#a0304bc57977aa4400723fcabaf77b730',1,'filter_topo.F90']]], + ['mid_5fpt_5fsphere',['mid_pt_sphere',['../filter__topo_8F90.html#ac0b3cdd4924ded0ba7623f19f3cca62f',1,'filter_topo.F90']]], + ['mo2',['mo2',['../namespacepietc.html#aa0c941809aa68996b652843685a9433e',1,'pietc::mo2()'],['../pietc__s_8f90.html#ada18a451ee0fcf1eb58a8a8b4fc1df56',1,'pietc_s::mo2()']]], + ['mo3',['mo3',['../namespacepietc.html#a2768edc18c2b2bd167887378e5de47e2',1,'pietc::mo3()'],['../pietc__s_8f90.html#a6f4c63c0e5ed77859ce7fb24829181fd',1,'pietc_s::mo3()']]], + ['mo4',['mo4',['../namespacepietc.html#a00b9bea516ae1b82199e9fd2eab930ea',1,'pietc::mo4()'],['../pietc__s_8f90.html#ad304d1504607f7e87fe1d06ba0d750a7',1,'pietc_s::mo4()']]], + ['mo5',['mo5',['../namespacepietc.html#a000aa8839ccd2689d9ef206336f59295',1,'pietc::mo5()'],['../pietc__s_8f90.html#a880b35e57f409f650a5242eb86f15da6',1,'pietc_s::mo5()']]], + ['mo6',['mo6',['../namespacepietc.html#a3ed566516e45ccace556a4ef84e1cb3f',1,'pietc::mo6()'],['../pietc__s_8f90.html#aca1c0bbf1eca5966f5bc7570d3d1388e',1,'pietc_s::mo6()']]], + ['mobius',['mobius',['../interfacepmat4_1_1mobius.html',1,'pmat4']]], + ['mobiusi',['mobiusi',['../interfacepmat4_1_1mobiusi.html',1,'pmat4']]], + ['ms10',['ms10',['../namespacepietc.html#af19bbd02505d4f191d4192a0ef98fe1a',1,'pietc::ms10()'],['../pietc__s_8f90.html#a91e99a7dc743bb8dd0089e81061c2672',1,'pietc_s::ms10()']]], + ['ms11',['ms11',['../namespacepietc.html#ae51b46e8e64165cd44fd6c43c377a0a1',1,'pietc::ms11()'],['../pietc__s_8f90.html#af1f9ed74c5b4a4a33624cd95f17aa00a',1,'pietc_s::ms11()']]], + ['ms13',['ms13',['../namespacepietc.html#a9a9d37a281e60cc0447442db2306bc87',1,'pietc::ms13()'],['../pietc__s_8f90.html#a84343423794212d4f040a437f429d54c',1,'pietc_s::ms13()']]], + ['ms15',['ms15',['../namespacepietc.html#a94d9c31511b78f80058aa0211314c144',1,'pietc::ms15()'],['../pietc__s_8f90.html#a4b5e199873b8bfb71ddf9db37d14f7fb',1,'pietc_s::ms15()']]], + ['ms18',['ms18',['../namespacepietc.html#a9f204852aef0e455941418681db54f87',1,'pietc::ms18()'],['../pietc__s_8f90.html#a4381c3ec60478ce7dd5ec2e4f41b3b64',1,'pietc_s::ms18()']]], + ['ms20',['ms20',['../namespacepietc.html#a6344dab263f2203e32ca685097de67ab',1,'pietc::ms20()'],['../pietc__s_8f90.html#abb7ee1b228b6bc46bebce35dfc0b3174',1,'pietc_s::ms20()']]], + ['ms22',['ms22',['../namespacepietc.html#a282b3ad95ab5dc0e3ad8ea73df787753',1,'pietc::ms22()'],['../pietc__s_8f90.html#affce1a0b84f3e62c760c5d9b674753cd',1,'pietc_s::ms22()']]], + ['ms26',['ms26',['../namespacepietc.html#a0cbb7dc002305869d04068e4180ba016',1,'pietc::ms26()'],['../pietc__s_8f90.html#aab2a6248f79fd41de453fedb733fe983',1,'pietc_s::ms26()']]], + ['ms30',['ms30',['../namespacepietc.html#a064ddae6da1c591bd29f809348a76adf',1,'pietc::ms30()'],['../pietc__s_8f90.html#a0323cdf932998dcb6486ac3319014b1e',1,'pietc_s::ms30()']]], + ['ms34',['ms34',['../namespacepietc.html#a2974bfaaa13ec9d0ef9246526dd50e76',1,'pietc::ms34()'],['../pietc__s_8f90.html#ac731f3246c7d5a35b1404933b6287c25',1,'pietc_s::ms34()']]], + ['ms36',['ms36',['../namespacepietc.html#ab2dbf2423954bed11ff54b0f20b8e530',1,'pietc::ms36()'],['../pietc__s_8f90.html#abc1a69344ac1c5ca9b1c2eb957dc38b2',1,'pietc_s::ms36()']]], + ['ms39',['ms39',['../namespacepietc.html#adca783e645fd9a8dd67df260c579c07e',1,'pietc::ms39()'],['../pietc__s_8f90.html#a9f4b41675fa331b74d91a2b2ec2a07eb',1,'pietc_s::ms39()']]], + ['ms40',['ms40',['../namespacepietc.html#a4974c9565fcef49b95197f1ff03f7cd5',1,'pietc::ms40()'],['../pietc__s_8f90.html#a722a807309cd046ba62fde85896125ad',1,'pietc_s::ms40()']]], + ['ms45',['ms45',['../namespacepietc.html#a792a5ce38e4d85e83845af700cae3a0b',1,'pietc::ms45()'],['../pietc__s_8f90.html#a5e7332f1c8cd12f77ac80f159ab61d35',1,'pietc_s::ms45()']]], + ['ms50',['ms50',['../namespacepietc.html#ae90680c017d96fe2d27e60ddc7a7c932',1,'pietc::ms50()'],['../pietc__s_8f90.html#a78a757122a79502072fb10e1ce5ee4c1',1,'pietc_s::ms50()']]], + ['ms51',['ms51',['../namespacepietc.html#a1dcc977f6cdc92ee0bb79afc06232105',1,'pietc::ms51()'],['../pietc__s_8f90.html#ad2a128f4448568563aaff9c05bd41639',1,'pietc_s::ms51()']]], + ['ms54',['ms54',['../namespacepietc.html#a65a2663e8f089efaf299d89469ccc02c',1,'pietc::ms54()'],['../pietc__s_8f90.html#aee2e28f56ae2bd3faaf9076001c46019',1,'pietc_s::ms54()']]], + ['ms56',['ms56',['../namespacepietc.html#a08f793f59d5dd69cd6f9487238cb438e',1,'pietc::ms56()'],['../pietc__s_8f90.html#a0f18539584a1b107f987fac03b3526a6',1,'pietc_s::ms56()']]], + ['ms60',['ms60',['../namespacepietc.html#afb0a7faf7bcd6a1137f055a6a6b305f7',1,'pietc::ms60()'],['../pietc__s_8f90.html#a26c92a5d3f049d43d8afe80c4c921115',1,'pietc_s::ms60()']]], + ['ms64',['ms64',['../namespacepietc.html#a0cb8874dcca15deeab71981da6bc8202',1,'pietc::ms64()'],['../pietc__s_8f90.html#ab3a4f17d61fd6be1b6a5d0ae5fb9aa73',1,'pietc_s::ms64()']]], + ['ms68',['ms68',['../namespacepietc.html#a58eea21cf1bc5b523e8cb3a2e1a29e56',1,'pietc::ms68()'],['../pietc__s_8f90.html#a58c6456f6e558d6e00977421e154b99b',1,'pietc_s::ms68()']]], + ['ms70',['ms70',['../namespacepietc.html#aaf59c9bcf264de2d31c9b01ebcfef75d',1,'pietc::ms70()'],['../pietc__s_8f90.html#af855cf038c59695e21e717e2f5cdf8b2',1,'pietc_s::ms70()']]], + ['ms72',['ms72',['../namespacepietc.html#aaf8809769769a5b4872d3e364a6fd3f4',1,'pietc::ms72()'],['../pietc__s_8f90.html#ab4a9b72c42ae68dac8ca20398e8ddb50',1,'pietc_s::ms72()']]], + ['ms75',['ms75',['../namespacepietc.html#a785daf753e83ef22611ee7093c19ebaf',1,'pietc::ms75()'],['../pietc__s_8f90.html#a4666bbf4f401c5907faf826e16f06072',1,'pietc_s::ms75()']]], + ['ms77',['ms77',['../namespacepietc.html#a620176f9018e3af1a59d6426794025ef',1,'pietc::ms77()'],['../pietc__s_8f90.html#a22de7d216cc531ed6f735218cfabbd7b',1,'pietc_s::ms77()']]], + ['ms79',['ms79',['../namespacepietc.html#aa9ecf48f808634547b32f6110c959439',1,'pietc::ms79()'],['../pietc__s_8f90.html#aac3727259a989bc49d55423bdacddfe2',1,'pietc_s::ms79()']]], + ['ms80',['ms80',['../namespacepietc.html#a1b1d0c87bd1ce4228c9c14c801de2001',1,'pietc::ms80()'],['../pietc__s_8f90.html#a9f36342ef17e8d24e4138570177f175f',1,'pietc_s::ms80()']]], + ['mu1',['mu1',['../namespacepietc.html#a05b8b7d4f69c62e830913d4b315272a6',1,'pietc::mu1()'],['../pietc__s_8f90.html#a6f12e3aebef29573741977e2284a5f0d',1,'pietc_s::mu1()']]], + ['mu2',['mu2',['../namespacepietc.html#a809453e744cb5a40dcde3576d2793384',1,'pietc::mu2()'],['../pietc__s_8f90.html#a49f25c285c156dc01f9b1de76c503cbe',1,'pietc_s::mu2()']]], + ['mu3',['mu3',['../namespacepietc.html#adaabe1e87566a8b2fce89167d20e1496',1,'pietc::mu3()'],['../pietc__s_8f90.html#a932636600a9b1ed1a6d475250ccf01c4',1,'pietc_s::mu3()']]], + ['mu4',['mu4',['../namespacepietc.html#a480b5baae7340bddd03111dbfc07afef',1,'pietc::mu4()'],['../pietc__s_8f90.html#a543dc1c3d0c3204a4ebb15d63d4107bf',1,'pietc_s::mu4()']]], + ['mu5',['mu5',['../namespacepietc.html#a985de8b447273b87e9ee1eb062153d8f',1,'pietc::mu5()'],['../pietc__s_8f90.html#a57bc0de1e6897ff4b6145d95772ff6cf',1,'pietc_s::mu5()']]], + ['mu6',['mu6',['../namespacepietc.html#a0f08c13dfca45ff682aa6d96dc0bf132',1,'pietc::mu6()'],['../pietc__s_8f90.html#a5d02eb02e85610a65914043b285b0293',1,'pietc_s::mu6()']]], + ['mulqq',['mulqq',['../interfacepmat4_1_1mulqq.html',1,'pmat4::mulqq'],['../interfacepmat4_1_1mulqq.html#af65882e7f4bb1c82c72983fb478b5640',1,'pmat4::mulqq::mulqq()'],['../namespacepmat4.html#a8c72227238a4a77ec3b8fa7d5b801a9f',1,'pmat4::mulqq()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_b.html b/ver-1.11.0/grid_tools/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_b.js b/ver-1.11.0/grid_tools/search/all_b.js new file mode 100644 index 000000000..2ef7a41ef --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['nested',['nested',['../namespaceutils.html#aeb1687b2bf37a75327268e2b19e0ff78',1,'utils']]], + ['normalize',['normalize',['../interfacepmat4_1_1normalize.html',1,'pmat4']]], + ['normalize_5fd',['normalize_d',['../interfacepmat4_1_1normalize.html#a0e97d1c0ce14237b2b2ac3f3ce908f4d',1,'pmat4::normalize::normalize_d()'],['../namespacepmat4.html#ac0d1be13ba1560f58f812bc6b81d998c',1,'pmat4::normalize_d()']]], + ['normalize_5fs',['normalize_s',['../interfacepmat4_1_1normalize.html#a125e1f3f3574d5d7d8976ad4de3940dd',1,'pmat4::normalize::normalize_s()'],['../namespacepmat4.html#ac1b8cee865a9391009abccaf9f7cfd50',1,'pmat4::normalize_s()']]], + ['normalized',['normalized',['../interfacepmat4_1_1normalized.html',1,'pmat4']]], + ['normalized_5fd',['normalized_d',['../interfacepmat4_1_1normalized.html#a773f419aed5b10a11409eadce15b7c4d',1,'pmat4::normalized::normalized_d()'],['../namespacepmat4.html#af9d31fb0571560ba46d2c2798bdbd6a8',1,'pmat4::normalized_d()']]], + ['normalized_5fs',['normalized_s',['../interfacepmat4_1_1normalized.html#af3d523bbef3d04c373c308706c96668b',1,'pmat4::normalized::normalized_s()'],['../namespacepmat4.html#a6a00630db390bcbc0588f5f22bf6db07',1,'pmat4::normalized_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_c.html b/ver-1.11.0/grid_tools/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_c.js b/ver-1.11.0/grid_tools/search/all_c.js new file mode 100644 index 000000000..bb5763a46 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_c.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['o2',['o2',['../namespacepietc.html#a31fe36a99e91fd868ca1f99359007416',1,'pietc::o2()'],['../pietc__s_8f90.html#ae506bdfa2f92be38fbbb8b81e9dd77c0',1,'pietc_s::o2()']]], + ['o3',['o3',['../namespacepietc.html#a6511999188177426a786497c7e87a41a',1,'pietc::o3()'],['../pietc__s_8f90.html#a7409753b3b4fdca5fc18b576e0efe020',1,'pietc_s::o3()']]], + ['o4',['o4',['../namespacepietc.html#a6ddd1baf56a1b87a2966bb34f467649a',1,'pietc::o4()'],['../pietc__s_8f90.html#ab2c4441fb72319b1765930d211f968f9',1,'pietc_s::o4()']]], + ['o5',['o5',['../namespacepietc.html#a1e87558f0d2b0d5a64dda49a44a4bacb',1,'pietc::o5()'],['../pietc__s_8f90.html#a45b918d6e65dd757512ae7ddcb6c0145',1,'pietc_s::o5()']]], + ['o6',['o6',['../namespacepietc.html#a8025ae9ef5f7e5f022429497a8abeef9',1,'pietc::o6()'],['../pietc__s_8f90.html#ab50be2d29b25e899332fe396f496ca6f',1,'pietc_s::o6()']]], + ['or2',['or2',['../namespacepietc.html#a98f9306c62c774f98a6f24c883f79032',1,'pietc::or2()'],['../pietc__s_8f90.html#af3ba8bcb517fa4360962e8aff9e89e63',1,'pietc_s::or2()']]], + ['or3',['or3',['../namespacepietc.html#a225f45c4bd75ad39053f8c58da7ad40b',1,'pietc::or3()'],['../pietc__s_8f90.html#af65f9aeb25e708e053e2a06fff4f1056',1,'pietc_s::or3()']]], + ['or5',['or5',['../namespacepietc.html#a0092887c19b4e6254b3d948a6f8bc94f',1,'pietc::or5()'],['../pietc__s_8f90.html#ad4919a540ebb22a8563ffefc0454efd1',1,'pietc_s::or5()']]], + ['orthogonalized',['orthogonalized',['../interfacepmat4_1_1orthogonalized.html',1,'pmat4']]], + ['orthogonalized_5fd',['orthogonalized_d',['../interfacepmat4_1_1orthogonalized.html#ac1115de7970e5376add791ed9be37378',1,'pmat4::orthogonalized::orthogonalized_d()'],['../namespacepmat4.html#ae6a1fd6367b43245e70f59952ffd7a57',1,'pmat4::orthogonalized_d()']]], + ['orthogonalized_5fs',['orthogonalized_s',['../interfacepmat4_1_1orthogonalized.html#aae6dfe3f9e03838ab8b26685e7ba4142',1,'pmat4::orthogonalized::orthogonalized_s()'],['../namespacepmat4.html#a4018eff72c43e01ab75164f6d71f694f',1,'pmat4::orthogonalized_s()']]], + ['outer_5fproduct',['outer_product',['../interfacepmat4_1_1outer__product.html',1,'pmat4']]], + ['outer_5fproduct_5fd',['outer_product_d',['../interfacepmat4_1_1outer__product.html#aa834bdb1756a4fe54ca51f210f57ea1e',1,'pmat4::outer_product::outer_product_d()'],['../namespacepmat4.html#a907c7e2db1047e361447671074f0200b',1,'pmat4::outer_product_d()']]], + ['outer_5fproduct_5fi',['outer_product_i',['../interfacepmat4_1_1outer__product.html#a6fc58c52c45a60a1c5ec7c75fbd1d8b9',1,'pmat4::outer_product::outer_product_i()'],['../namespacepmat4.html#a7fc06110c264999b4c64f346b1ff9bb0',1,'pmat4::outer_product_i()']]], + ['outer_5fproduct_5fs',['outer_product_s',['../interfacepmat4_1_1outer__product.html#a5fd0b14dfe070404214360293b3c8545',1,'pmat4::outer_product::outer_product_s()'],['../namespacepmat4.html#aed6c0b71d1632c507f4d8519de674d62',1,'pmat4::outer_product_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_d.html b/ver-1.11.0/grid_tools/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_d.js b/ver-1.11.0/grid_tools/search/all_d.js new file mode 100644 index 000000000..809714e7a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_d.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['paraframe',['paraframe',['../interfacepmat5_1_1paraframe.html',1,'pmat5::paraframe'],['../interfacepmat5_1_1paraframe.html#a096376a6e5b873c7aa2d20a42128506e',1,'pmat5::paraframe::paraframe()'],['../namespacepmat5.html#a78b960d2f79b61eb0b8ba948e7434b26',1,'pmat5::paraframe()']]], + ['pesg',['pesg',['../namespacepesg.html',1,'']]], + ['pesg_2ef90',['pesg.f90',['../pesg_8f90.html',1,'']]], + ['pfun',['pfun',['../namespacepfun.html',1,'']]], + ['pfun_2ef90',['pfun.f90',['../pfun_8f90.html',1,'']]], + ['phi',['phi',['../namespacepietc.html#a8a20e41dda229effcf92d22a70ce91d5',1,'pietc::phi()'],['../pietc__s_8f90.html#a2bdd911cd9e0b2845409835079d0e8ab',1,'pietc_s::phi()']]], + ['pi',['pi',['../namespacepietc.html#ac734e2e2645ccc50eb0c09e65fdd95ef',1,'pietc::pi()'],['../pietc__s_8f90.html#a77c1277f4677c202de8be67a9bdd97fe',1,'pietc_s::pi()']]], + ['pi2',['pi2',['../namespacepietc.html#ae492a70e0f3cf406be18932dc663cb15',1,'pietc::pi2()'],['../pietc__s_8f90.html#a4eba4f9674bc6ddd4707965fa5c0d486',1,'pietc_s::pi2()']]], + ['pietc',['pietc',['../namespacepietc.html',1,'']]], + ['pietc_2ef90',['pietc.f90',['../pietc_8f90.html',1,'']]], + ['pietc_5fs_2ef90',['pietc_s.f90',['../pietc__s_8f90.html',1,'']]], + ['pih',['pih',['../namespacepietc.html#a6a02b08d60e64caafe002e2d8b02efaf',1,'pietc::pih()'],['../pietc__s_8f90.html#a7b0c1ef4e5e55596e88096d68e5fe9e2',1,'pietc_s::pih()']]], + ['pkind',['pkind',['../namespacepkind.html',1,'']]], + ['pkind_2ef90',['pkind.f90',['../pkind_8f90.html',1,'']]], + ['plaingram_5fd',['plaingram_d',['../interfacepmat4_1_1gram.html#a603138feb36a4852fb47805ed57b5936',1,'pmat4::gram::plaingram_d()'],['../namespacepmat4.html#a9e4079cc069a9437a95fab4d685118cc',1,'pmat4::plaingram_d()']]], + ['plaingram_5fs',['plaingram_s',['../interfacepmat4_1_1gram.html#aa8d63ac5f26366320d83e91cd38ba0e6',1,'pmat4::gram::plaingram_s()'],['../namespacepmat4.html#ad3a4849081bf81dc9d37898d24d5b8a4',1,'pmat4::plaingram_s()']]], + ['plctoc',['plctoc',['../interfacepmat5_1_1plctoc.html',1,'pmat5::plctoc'],['../interfacepmat5_1_1plctoc.html#a68021c3029fa88132e844be08d4040cf',1,'pmat5::plctoc::plctoc()'],['../namespacepmat5.html#a9d457dd8eccb107f3759364690b747a5',1,'pmat5::plctoc()']]], + ['plrot',['plrot',['../interfacepmat5_1_1plrot.html',1,'pmat5::plrot'],['../interfacepmat5_1_1plrot.html#a8b2fdd45a529ed500bd71c219debfb45',1,'pmat5::plrot::plrot()'],['../namespacepmat5.html#a1b18ea18e804d2d7c8aa53156f88a01e',1,'pmat5::plrot()']]], + ['plroti',['plroti',['../interfacepmat5_1_1plroti.html',1,'pmat5::plroti'],['../interfacepmat5_1_1plroti.html#a6aa4b488c9d07d3549dab608e4f907a4',1,'pmat5::plroti::plroti()'],['../namespacepmat5.html#a24aab72dbcf7cf572f6c59a11586292a',1,'pmat5::plroti()']]], + ['pmat_2ef90',['pmat.f90',['../pmat_8f90.html',1,'']]], + ['pmat2',['pmat2',['../namespacepmat2.html',1,'']]], + ['pmat2_2ef90',['pmat2.f90',['../pmat2_8f90.html',1,'']]], + ['pmat4',['pmat4',['../namespacepmat4.html',1,'']]], + ['pmat4_2ef90',['pmat4.f90',['../pmat4_8f90.html',1,'']]], + ['pmat5',['pmat5',['../namespacepmat5.html',1,'']]], + ['pmat5_2ef90',['pmat5.f90',['../pmat5_8f90.html',1,'']]], + ['psym2',['psym2',['../namespacepsym2.html',1,'']]], + ['psym2_2ef90',['psym2.f90',['../psym2_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_e.html b/ver-1.11.0/grid_tools/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_e.js b/ver-1.11.0/grid_tools/search/all_e.js new file mode 100644 index 000000000..f9d4b3d7a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['qtoax',['qtoax',['../interfacepmat4_1_1qtoax.html',1,'pmat4::qtoax'],['../interfacepmat4_1_1qtoax.html#a0896b667b401c8a30cd25b77f8bacc1a',1,'pmat4::qtoax::qtoax()'],['../namespacepmat4.html#a76968a32e6d0f32973cacda59b8fbf91',1,'pmat4::qtoax()']]], + ['qtorot',['qtorot',['../interfacepmat4_1_1qtorot.html',1,'pmat4::qtorot'],['../interfacepmat4_1_1qtorot.html#a2bddedc08d01eaca9153d5766e67d779',1,'pmat4::qtorot::qtorot()'],['../namespacepmat4.html#ab6e7bf2144ab8823f02c6a9e5db1b993',1,'pmat4::qtorot()']]], + ['qtospin',['qtospin',['../interfacepmat4_1_1qtospin.html',1,'pmat4::qtospin'],['../interfacepmat4_1_1qtospin.html#abbef88d45c74716b3228ebadd2bbc995',1,'pmat4::qtospin::qtospin()'],['../namespacepmat4.html#a2fdbe8c6acdb340d51225420e9dbbfdf',1,'pmat4::qtospin()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/all_f.html b/ver-1.11.0/grid_tools/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/all_f.js b/ver-1.11.0/grid_tools/search/all_f.js new file mode 100644 index 000000000..bf7612b53 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/all_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_grid_tools_8fd_docs_README.html',1,'']]], + ['r2',['r2',['../namespacepietc.html#a3c11921c034ed0320b9902bf4b2a03d2',1,'pietc::r2()'],['../pietc__s_8f90.html#a9ae9dbd46993df536680eb423fc7116e',1,'pietc_s::r2()']]], + ['r3',['r3',['../namespacepietc.html#a59ed14f765e2aadca3f681e9ce3a04d1',1,'pietc::r3()'],['../pietc__s_8f90.html#ac9b719e709470919b3d636b2e8e97620',1,'pietc_s::r3()']]], + ['r5',['r5',['../namespacepietc.html#ab9dc3e6a41d4e9188d94995fc401bf60',1,'pietc::r5()'],['../pietc__s_8f90.html#a0e211899ead81f85d0a1ac1a9a764bdd',1,'pietc_s::r5()']]], + ['read_5fgrid_5ffile',['read_grid_file',['../filter__topo_8F90.html#a785f23018f914203386301fbcf662368',1,'filter_topo.F90']]], + ['read_5fnamelist',['read_namelist',['../namespaceutils.html#ac90e26fad77fd27d0910be99d80bab73',1,'utils']]], + ['read_5ftopo_5ffile',['read_topo_file',['../filter__topo_8F90.html#ab3abc977e2ff801f9d8413e0a42ddd69',1,'filter_topo.F90']]], + ['regional',['regional',['../namespaceutils.html#a255512c5e1b7091b5894376e1a74d237',1,'utils']]], + ['regional_5fesg_5fgrid_2ef90',['regional_esg_grid.f90',['../regional__esg__grid_8f90.html',1,'']]], + ['regional_5fgrid',['regional_grid',['../regional__esg__grid_8f90.html#a5d27396a033fbebf9ad5e56a21048727',1,'regional_esg_grid.f90']]], + ['res',['res',['../namespaceutils.html#aca2643d8c20b795e2d1dad945b07c136',1,'utils']]], + ['rotm',['rotm',['../namespacecstgeo.html#a9dfd1286dd56bbaa16f0e53a4b5463aa',1,'cstgeo::rotm()'],['../namespacedcstgeo.html#adad1a51af5095a868fea81876bc6f7ec',1,'dcstgeo::rotm()']]], + ['rottoax',['rottoax',['../interfacepmat4_1_1rottoax.html',1,'pmat4::rottoax'],['../interfacepmat4_1_1rottoax.html#a845bc750f57ee0372724bd8efe85ccb3',1,'pmat4::rottoax::rottoax()'],['../namespacepmat4.html#a3aebb288da3a12333ee14350e8db2e1e',1,'pmat4::rottoax()']]], + ['rottoq',['rottoq',['../interfacepmat4_1_1rottoq.html',1,'pmat4::rottoq'],['../interfacepmat4_1_1rottoq.html#a633827aeca9191e4a22aca3cf52fe7a1',1,'pmat4::rottoq::rottoq()'],['../namespacepmat4.html#ae16a6a537eb1fa4c611e7267973d7589',1,'pmat4::rottoq()']]], + ['rowgram',['rowgram',['../interfacepmat4_1_1gram.html#a908274e9676bb09bee522aefa6cef94a',1,'pmat4::gram::rowgram()'],['../namespacepmat4.html#a2187ea41676149982afbef613c2303d1',1,'pmat4::rowgram()']]], + ['rowops',['rowops',['../interfacepmat4_1_1rowops.html',1,'pmat4::rowops'],['../interfacepmat4_1_1rowops.html#a24860f75f7fca741d4e7595661bacce3',1,'pmat4::rowops::rowops()'],['../namespacepmat4.html#a013540db57612c537df459f6d209bb9e',1,'pmat4::rowops()']]], + ['rpi',['rpi',['../namespacepietc.html#a62333cfdbb14baa18091b4faa689f660',1,'pietc::rpi()'],['../pietc__s_8f90.html#aedc2b4e7a9560c9e6fed91df12e76201',1,'pietc_s::rpi()']]], + ['rtod',['rtod',['../namespacepietc.html#a57d89085283cb2a7bfd9152324b4b463',1,'pietc::rtod()'],['../pietc__s_8f90.html#ae5c15456f6df7899c647db6dcdf8af4c',1,'pietc_s::rtod()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_0.html b/ver-1.11.0/grid_tools/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_0.js b/ver-1.11.0/grid_tools/search/classes_0.js new file mode 100644 index 000000000..5936ba26e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['absv',['absv',['../interfacepmat4_1_1absv.html',1,'pmat4']]], + ['ahav',['ahav',['../interfacepfun_1_1ahav.html',1,'pfun']]], + ['ahavh',['ahavh',['../interfacepfun_1_1ahavh.html',1,'pfun']]], + ['atanh',['atanh',['../interfacepfun_1_1atanh.html',1,'pfun']]], + ['avco',['avco',['../interfacepmat2_1_1avco.html',1,'pmat2']]], + ['axial',['axial',['../interfacepmat4_1_1axial.html',1,'pmat4']]], + ['axtoq',['axtoq',['../interfacepmat4_1_1axtoq.html',1,'pmat4']]], + ['axtorot',['axtorot',['../interfacepmat4_1_1axtorot.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_1.html b/ver-1.11.0/grid_tools/search/classes_1.html new file mode 100644 index 000000000..3df6e80ac --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_1.js b/ver-1.11.0/grid_tools/search/classes_1.js new file mode 100644 index 000000000..9ab8fd968 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bestesg_5fgeo',['bestesg_geo',['../interfacepesg_1_1bestesg__geo.html',1,'pesg']]], + ['bestesg_5fmap',['bestesg_map',['../interfacepesg_1_1bestesg__map.html',1,'pesg']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_10.html b/ver-1.11.0/grid_tools/search/classes_10.html new file mode 100644 index 000000000..0477a2669 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_10.js b/ver-1.11.0/grid_tools/search/classes_10.js new file mode 100644 index 000000000..4dad2334b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_10.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['sarea',['sarea',['../interfacepmat4_1_1sarea.html',1,'pmat4']]], + ['sech',['sech',['../interfacepfun_1_1sech.html',1,'pfun']]], + ['sechs',['sechs',['../interfacepfun_1_1sechs.html',1,'pfun']]], + ['setem',['setem',['../interfacepmat4_1_1setem.html',1,'pmat4']]], + ['setmobius',['setmobius',['../interfacepmat4_1_1setmobius.html',1,'pmat4']]], + ['sinhox',['sinhox',['../interfacepfun_1_1sinhox.html',1,'pfun']]], + ['sinhoxm',['sinhoxm',['../interfacepfun_1_1sinhoxm.html',1,'pfun']]], + ['sinox',['sinox',['../interfacepfun_1_1sinox.html',1,'pfun']]], + ['sinoxm',['sinoxm',['../interfacepfun_1_1sinoxm.html',1,'pfun']]], + ['spintoq',['spintoq',['../interfacepmat4_1_1spintoq.html',1,'pmat4']]], + ['sqrtsym2',['sqrtsym2',['../interfacepsym2_1_1sqrtsym2.html',1,'psym2']]], + ['sqrtsym2d_5fe',['sqrtsym2d_e',['../interfacepsym2_1_1sqrtsym2d__e.html',1,'psym2']]], + ['sqrtsym2d_5ft',['sqrtsym2d_t',['../interfacepsym2_1_1sqrtsym2d__t.html',1,'psym2']]], + ['swpvv',['swpvv',['../interfacepmat_1_1swpvv.html',1,'pmat']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_11.html b/ver-1.11.0/grid_tools/search/classes_11.html new file mode 100644 index 000000000..6bbc0d142 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_11.js b/ver-1.11.0/grid_tools/search/classes_11.js new file mode 100644 index 000000000..327e99c96 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['trace',['trace',['../interfacepmat4_1_1trace.html',1,'pmat4']]], + ['triple_5fproduct',['triple_product',['../interfacepmat4_1_1triple__product.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_12.html b/ver-1.11.0/grid_tools/search/classes_12.html new file mode 100644 index 000000000..c889f6d63 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_12.js b/ver-1.11.0/grid_tools/search/classes_12.js new file mode 100644 index 000000000..c5f04e4cc --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_12.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['u1lbv',['u1lbv',['../interfacepmat2_1_1u1lbv.html',1,'pmat2']]], + ['u1lbx',['u1lbx',['../interfacepmat2_1_1u1lbx.html',1,'pmat2']]], + ['u1lby',['u1lby',['../interfacepmat2_1_1u1lby.html',1,'pmat2']]], + ['u1lvb',['u1lvb',['../interfacepmat2_1_1u1lvb.html',1,'pmat2']]], + ['u1lxb',['u1lxb',['../interfacepmat2_1_1u1lxb.html',1,'pmat2']]], + ['u1lyb',['u1lyb',['../interfacepmat2_1_1u1lyb.html',1,'pmat2']]], + ['udlb',['udlb',['../interfacepmat2_1_1udlb.html',1,'pmat2']]], + ['udlbv',['udlbv',['../interfacepmat2_1_1udlbv.html',1,'pmat2']]], + ['udlbx',['udlbx',['../interfacepmat2_1_1udlbx.html',1,'pmat2']]], + ['udlby',['udlby',['../interfacepmat2_1_1udlby.html',1,'pmat2']]], + ['udlmm',['udlmm',['../interfacepmat_1_1udlmm.html',1,'pmat']]], + ['udlvb',['udlvb',['../interfacepmat2_1_1udlvb.html',1,'pmat2']]], + ['udlxb',['udlxb',['../interfacepmat2_1_1udlxb.html',1,'pmat2']]], + ['udlyb',['udlyb',['../interfacepmat2_1_1udlyb.html',1,'pmat2']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_13.html b/ver-1.11.0/grid_tools/search/classes_13.html new file mode 100644 index 000000000..c38b027b0 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_13.js b/ver-1.11.0/grid_tools/search/classes_13.js new file mode 100644 index 000000000..9ff4ea15f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wrtb',['wrtb',['../interfacepmat2_1_1wrtb.html',1,'pmat2']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_14.html b/ver-1.11.0/grid_tools/search/classes_14.html new file mode 100644 index 000000000..c978bce03 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_14.js b/ver-1.11.0/grid_tools/search/classes_14.js new file mode 100644 index 000000000..2d74111b3 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_14.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['xctoxm_5fak',['xctoxm_ak',['../interfacepesg_1_1xctoxm__ak.html',1,'pesg']]], + ['xctoxs',['xctoxs',['../interfacepesg_1_1xctoxs.html',1,'pesg']]], + ['xmtog_5fak_5fdd',['xmtog_ak_dd',['../interfacepesg_1_1xmtog__ak__dd.html',1,'pesg']]], + ['xmtog_5fak_5frr',['xmtog_ak_rr',['../interfacepesg_1_1xmtog__ak__rr.html',1,'pesg']]], + ['xmtoxc_5fak',['xmtoxc_ak',['../interfacepesg_1_1xmtoxc__ak.html',1,'pesg']]], + ['xmtoxt',['xmtoxt',['../interfacepesg_1_1xmtoxt.html',1,'pesg']]], + ['xstoxc',['xstoxc',['../interfacepesg_1_1xstoxc.html',1,'pesg']]], + ['xstoxt',['xstoxt',['../interfacepesg_1_1xstoxt.html',1,'pesg']]], + ['xttoxm',['xttoxm',['../interfacepesg_1_1xttoxm.html',1,'pesg']]], + ['xttoxs',['xttoxs',['../interfacepesg_1_1xttoxs.html',1,'pesg']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_15.html b/ver-1.11.0/grid_tools/search/classes_15.html new file mode 100644 index 000000000..fe102e647 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_15.js b/ver-1.11.0/grid_tools/search/classes_15.js new file mode 100644 index 000000000..438450190 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_15.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['zmtozt',['zmtozt',['../interfacepesg_1_1zmtozt.html',1,'pesg']]], + ['znfun',['znfun',['../interfacepmat4_1_1znfun.html',1,'pmat4']]], + ['zntay',['zntay',['../interfacepmat4_1_1zntay.html',1,'pmat4']]], + ['ztoc',['ztoc',['../interfacepmat4_1_1ztoc.html',1,'pmat4']]], + ['zttozm',['zttozm',['../interfacepesg_1_1zttozm.html',1,'pesg']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_2.html b/ver-1.11.0/grid_tools/search/classes_2.html new file mode 100644 index 000000000..028694ffa --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_2.js b/ver-1.11.0/grid_tools/search/classes_2.js new file mode 100644 index 000000000..4fa19c4e4 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['cad1b',['cad1b',['../interfacepmat2_1_1cad1b.html',1,'pmat2']]], + ['cad2b',['cad2b',['../interfacepmat2_1_1cad2b.html',1,'pmat2']]], + ['chol2',['chol2',['../interfacepsym2_1_1chol2.html',1,'psym2']]], + ['clipb',['clipb',['../interfacepmat2_1_1clipb.html',1,'pmat2']]], + ['corral',['corral',['../interfacepmat4_1_1corral.html',1,'pmat4']]], + ['cross_5fproduct',['cross_product',['../interfacepmat4_1_1cross__product.html',1,'pmat4']]], + ['csb1b',['csb1b',['../interfacepmat2_1_1csb1b.html',1,'pmat2']]], + ['csb2b',['csb2b',['../interfacepmat2_1_1csb2b.html',1,'pmat2']]], + ['ctoc_5fschm',['ctoc_schm',['../interfacepmat5_1_1ctoc__schm.html',1,'pmat5']]], + ['ctog',['ctog',['../interfacepmat5_1_1ctog.html',1,'pmat5']]], + ['ctogr',['ctogr',['../interfacepmat5_1_1ctogr.html',1,'pmat5']]], + ['ctoz',['ctoz',['../interfacepmat4_1_1ctoz.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_3.html b/ver-1.11.0/grid_tools/search/classes_3.html new file mode 100644 index 000000000..2b1abe383 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_3.js b/ver-1.11.0/grid_tools/search/classes_3.js new file mode 100644 index 000000000..ad4f74ff4 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['det',['det',['../interfacepmat4_1_1det.html',1,'pmat4']]], + ['dfco',['dfco',['../interfacepmat2_1_1dfco.html',1,'pmat2']]], + ['dfco2',['dfco2',['../interfacepmat2_1_1dfco2.html',1,'pmat2']]], + ['diag',['diag',['../interfacepmat4_1_1diag.html',1,'pmat4']]], + ['dlltoxy',['dlltoxy',['../interfacepmat4_1_1dlltoxy.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_4.html b/ver-1.11.0/grid_tools/search/classes_4.html new file mode 100644 index 000000000..873521494 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_4.js b/ver-1.11.0/grid_tools/search/classes_4.js new file mode 100644 index 000000000..e70fb78e1 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['eigensym2',['eigensym2',['../interfacepsym2_1_1eigensym2.html',1,'psym2']]], + ['expmat',['expmat',['../interfacepmat4_1_1expmat.html',1,'pmat4']]], + ['expsym2',['expsym2',['../interfacepsym2_1_1expsym2.html',1,'psym2']]], + ['expsym2d_5fe',['expsym2d_e',['../interfacepsym2_1_1expsym2d__e.html',1,'psym2']]], + ['expsym2d_5ft',['expsym2d_t',['../interfacepsym2_1_1expsym2d__t.html',1,'psym2']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_5.html b/ver-1.11.0/grid_tools/search/classes_5.html new file mode 100644 index 000000000..ba8b1c69b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_5.js b/ver-1.11.0/grid_tools/search/classes_5.js new file mode 100644 index 000000000..441d29b0a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frametwist',['frametwist',['../interfacepmat5_1_1frametwist.html',1,'pmat5']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_6.html b/ver-1.11.0/grid_tools/search/classes_6.html new file mode 100644 index 000000000..f5850938d --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_6.js b/ver-1.11.0/grid_tools/search/classes_6.js new file mode 100644 index 000000000..8ba599ca0 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_6.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['gaulegh',['gaulegh',['../interfacepesg_1_1gaulegh.html',1,'pesg']]], + ['gd',['gd',['../interfacepfun_1_1gd.html',1,'pfun']]], + ['gdi',['gdi',['../interfacepfun_1_1gdi.html',1,'pfun']]], + ['get_5fedges',['get_edges',['../interfacepesg_1_1get__edges.html',1,'pesg']]], + ['get_5fmeanq',['get_meanq',['../interfacepesg_1_1get__meanq.html',1,'pesg']]], + ['get_5fqofv',['get_qofv',['../interfacepesg_1_1get__qofv.html',1,'pesg']]], + ['get_5fqx',['get_qx',['../interfacepesg_1_1get__qx.html',1,'pesg']]], + ['gram',['gram',['../interfacepmat4_1_1gram.html',1,'pmat4']]], + ['grtoc',['grtoc',['../interfacepmat5_1_1grtoc.html',1,'pmat5']]], + ['gtoc',['gtoc',['../interfacepmat5_1_1gtoc.html',1,'pmat5']]], + ['gtoframe',['gtoframe',['../interfacepmat5_1_1gtoframe.html',1,'pmat5']]], + ['gtoxm_5fak_5fdd',['gtoxm_ak_dd',['../interfacepesg_1_1gtoxm__ak__dd.html',1,'pesg']]], + ['gtoxm_5fak_5frr',['gtoxm_ak_rr',['../interfacepesg_1_1gtoxm__ak__rr.html',1,'pesg']]], + ['guessak_5fgeo',['guessak_geo',['../interfacepesg_1_1guessak__geo.html',1,'pesg']]], + ['guessak_5fmap',['guessak_map',['../interfacepesg_1_1guessak__map.html',1,'pesg']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_7.html b/ver-1.11.0/grid_tools/search/classes_7.html new file mode 100644 index 000000000..6418529c0 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_7.js b/ver-1.11.0/grid_tools/search/classes_7.js new file mode 100644 index 000000000..3474680d1 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['hav',['hav',['../interfacepmat4_1_1hav.html',1,'pmat4::hav'],['../interfacepfun_1_1hav.html',1,'pfun::hav']]], + ['havh',['havh',['../interfacepfun_1_1havh.html',1,'pfun']]], + ['hgrid_5fak',['hgrid_ak',['../interfacepesg_1_1hgrid__ak.html',1,'pesg']]], + ['hgrid_5fak_5fdc',['hgrid_ak_dc',['../interfacepesg_1_1hgrid__ak__dc.html',1,'pesg']]], + ['hgrid_5fak_5fdd',['hgrid_ak_dd',['../interfacepesg_1_1hgrid__ak__dd.html',1,'pesg']]], + ['hgrid_5fak_5frc',['hgrid_ak_rc',['../interfacepesg_1_1hgrid__ak__rc.html',1,'pesg']]], + ['hgrid_5fak_5frr',['hgrid_ak_rr',['../interfacepesg_1_1hgrid__ak__rr.html',1,'pesg']]], + ['huarea',['huarea',['../interfacepmat4_1_1huarea.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_8.html b/ver-1.11.0/grid_tools/search/classes_8.html new file mode 100644 index 000000000..87af6f601 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_8.js b/ver-1.11.0/grid_tools/search/classes_8.js new file mode 100644 index 000000000..228200ef7 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['id2222',['id2222',['../interfacepsym2_1_1id2222.html',1,'psym2']]], + ['identity',['identity',['../interfacepmat4_1_1identity.html',1,'pmat4']]], + ['ininmap',['ininmap',['../interfacepmat5_1_1ininmap.html',1,'pmat5']]], + ['inivmap',['inivmap',['../interfacepmat5_1_1inivmap.html',1,'pmat5']]], + ['inv',['inv',['../interfacepmat_1_1inv.html',1,'pmat']]], + ['invl',['invl',['../interfacepmat_1_1invl.html',1,'pmat']]], + ['invsym2',['invsym2',['../interfacepsym2_1_1invsym2.html',1,'psym2']]], + ['invu',['invu',['../interfacepmat_1_1invu.html',1,'pmat']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_9.html b/ver-1.11.0/grid_tools/search/classes_9.html new file mode 100644 index 000000000..f830ae04b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_9.js b/ver-1.11.0/grid_tools/search/classes_9.js new file mode 100644 index 000000000..42763eb0e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['l1lm',['l1lm',['../interfacepmat_1_1l1lm.html',1,'pmat']]], + ['l1ubb',['l1ubb',['../interfacepmat2_1_1l1ubb.html',1,'pmat2']]], + ['l1ueb',['l1ueb',['../interfacepmat2_1_1l1ueb.html',1,'pmat2']]], + ['ldlm',['ldlm',['../interfacepmat_1_1ldlm.html',1,'pmat']]], + ['ldltb',['ldltb',['../interfacepmat2_1_1ldltb.html',1,'pmat2']]], + ['ldub',['ldub',['../interfacepmat2_1_1ldub.html',1,'pmat2']]], + ['ldum',['ldum',['../interfacepmat_1_1ldum.html',1,'pmat']]], + ['linbv',['linbv',['../interfacepmat2_1_1linbv.html',1,'pmat2']]], + ['logsym2',['logsym2',['../interfacepsym2_1_1logsym2.html',1,'psym2']]], + ['ltdlbv',['ltdlbv',['../interfacepmat2_1_1ltdlbv.html',1,'pmat2']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_a.html b/ver-1.11.0/grid_tools/search/classes_a.html new file mode 100644 index 000000000..0fd3b7ac3 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_a.js b/ver-1.11.0/grid_tools/search/classes_a.js new file mode 100644 index 000000000..b2335406b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['mobius',['mobius',['../interfacepmat4_1_1mobius.html',1,'pmat4']]], + ['mobiusi',['mobiusi',['../interfacepmat4_1_1mobiusi.html',1,'pmat4']]], + ['mulqq',['mulqq',['../interfacepmat4_1_1mulqq.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_b.html b/ver-1.11.0/grid_tools/search/classes_b.html new file mode 100644 index 000000000..886abdfcd --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_b.js b/ver-1.11.0/grid_tools/search/classes_b.js new file mode 100644 index 000000000..4edd2cd8e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['normalize',['normalize',['../interfacepmat4_1_1normalize.html',1,'pmat4']]], + ['normalized',['normalized',['../interfacepmat4_1_1normalized.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_c.html b/ver-1.11.0/grid_tools/search/classes_c.html new file mode 100644 index 000000000..52ec26763 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_c.js b/ver-1.11.0/grid_tools/search/classes_c.js new file mode 100644 index 000000000..8d559562c --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['orthogonalized',['orthogonalized',['../interfacepmat4_1_1orthogonalized.html',1,'pmat4']]], + ['outer_5fproduct',['outer_product',['../interfacepmat4_1_1outer__product.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_d.html b/ver-1.11.0/grid_tools/search/classes_d.html new file mode 100644 index 000000000..652508df3 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_d.js b/ver-1.11.0/grid_tools/search/classes_d.js new file mode 100644 index 000000000..fbce2536a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paraframe',['paraframe',['../interfacepmat5_1_1paraframe.html',1,'pmat5']]], + ['plctoc',['plctoc',['../interfacepmat5_1_1plctoc.html',1,'pmat5']]], + ['plrot',['plrot',['../interfacepmat5_1_1plrot.html',1,'pmat5']]], + ['plroti',['plroti',['../interfacepmat5_1_1plroti.html',1,'pmat5']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_e.html b/ver-1.11.0/grid_tools/search/classes_e.html new file mode 100644 index 000000000..7d4e9a563 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_e.js b/ver-1.11.0/grid_tools/search/classes_e.js new file mode 100644 index 000000000..69c00ab03 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['qtoax',['qtoax',['../interfacepmat4_1_1qtoax.html',1,'pmat4']]], + ['qtorot',['qtorot',['../interfacepmat4_1_1qtorot.html',1,'pmat4']]], + ['qtospin',['qtospin',['../interfacepmat4_1_1qtospin.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/classes_f.html b/ver-1.11.0/grid_tools/search/classes_f.html new file mode 100644 index 000000000..fa6ed25ee --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/classes_f.js b/ver-1.11.0/grid_tools/search/classes_f.js new file mode 100644 index 000000000..112d4d4c4 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/classes_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rottoax',['rottoax',['../interfacepmat4_1_1rottoax.html',1,'pmat4']]], + ['rottoq',['rottoq',['../interfacepmat4_1_1rottoq.html',1,'pmat4']]], + ['rowops',['rowops',['../interfacepmat4_1_1rowops.html',1,'pmat4']]] +]; diff --git a/ver-1.11.0/grid_tools/search/close.png b/ver-1.11.0/grid_tools/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/search/files_0.html b/ver-1.11.0/grid_tools/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_0.js b/ver-1.11.0/grid_tools/search/files_0.js new file mode 100644 index 000000000..75a376335 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['filter_5ftopo_2ef90',['filter_topo.F90',['../filter__topo_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/files_1.html b/ver-1.11.0/grid_tools/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_1.js b/ver-1.11.0/grid_tools/search/files_1.js new file mode 100644 index 000000000..de45ccba6 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['global_5fequiv_5fresol_2ef90',['global_equiv_resol.f90',['../global__equiv__resol_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/files_2.html b/ver-1.11.0/grid_tools/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_2.js b/ver-1.11.0/grid_tools/search/files_2.js new file mode 100644 index 000000000..fd4a168fe --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['pesg_2ef90',['pesg.f90',['../pesg_8f90.html',1,'']]], + ['pfun_2ef90',['pfun.f90',['../pfun_8f90.html',1,'']]], + ['pietc_2ef90',['pietc.f90',['../pietc_8f90.html',1,'']]], + ['pietc_5fs_2ef90',['pietc_s.f90',['../pietc__s_8f90.html',1,'']]], + ['pkind_2ef90',['pkind.f90',['../pkind_8f90.html',1,'']]], + ['pmat_2ef90',['pmat.f90',['../pmat_8f90.html',1,'']]], + ['pmat2_2ef90',['pmat2.f90',['../pmat2_8f90.html',1,'']]], + ['pmat4_2ef90',['pmat4.f90',['../pmat4_8f90.html',1,'']]], + ['pmat5_2ef90',['pmat5.f90',['../pmat5_8f90.html',1,'']]], + ['psym2_2ef90',['psym2.f90',['../psym2_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/files_3.html b/ver-1.11.0/grid_tools/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_3.js b/ver-1.11.0/grid_tools/search/files_3.js new file mode 100644 index 000000000..889013fa2 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['regional_5fesg_5fgrid_2ef90',['regional_esg_grid.f90',['../regional__esg__grid_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/files_4.html b/ver-1.11.0/grid_tools/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_4.js b/ver-1.11.0/grid_tools/search/files_4.js new file mode 100644 index 000000000..9ffd9420f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['shave_5fnc_2ef90',['shave_nc.F90',['../shave__nc_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/files_5.html b/ver-1.11.0/grid_tools/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/files_5.js b/ver-1.11.0/grid_tools/search/files_5.js new file mode 100644 index 000000000..be5261352 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils_2ef90',['utils.F90',['../utils_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_0.html b/ver-1.11.0/grid_tools/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_0.js b/ver-1.11.0/grid_tools/search/functions_0.js new file mode 100644 index 000000000..5f4e1baf3 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_0.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['absv_5fd',['absv_d',['../interfacepmat4_1_1absv.html#ad61e1f7682aeffa661af6ad859f7d2bb',1,'pmat4::absv::absv_d()'],['../namespacepmat4.html#a1bd0a24f4302dafd8d2da8e9db3161bf',1,'pmat4::absv_d()']]], + ['absv_5fs',['absv_s',['../interfacepmat4_1_1absv.html#a1d066914e001461712300c0ff1442a90',1,'pmat4::absv::absv_s()'],['../namespacepmat4.html#a943a88c224ed6f395284e437e7703d66',1,'pmat4::absv_s()']]], + ['ahav_5fd',['ahav_d',['../interfacepfun_1_1ahav.html#acf8305d2f736dd6391036ac3ab10c8f5',1,'pfun::ahav::ahav_d()'],['../namespacepfun.html#a7eb3f64f647bd19d04fc18d4cae97140',1,'pfun::ahav_d()']]], + ['ahav_5fs',['ahav_s',['../interfacepfun_1_1ahav.html#addfbc0f51d05a1dc198cac875e42cc64',1,'pfun::ahav::ahav_s()'],['../namespacepfun.html#a4b5788e629ba2dfae6f8c5c718266379',1,'pfun::ahav_s()']]], + ['ahavh_5fd',['ahavh_d',['../interfacepfun_1_1ahavh.html#ac5fabed789f0296b561e319c2beb2287',1,'pfun::ahavh::ahavh_d()'],['../namespacepfun.html#abb88923266701b775e808682ff5f936b',1,'pfun::ahavh_d()']]], + ['ahavh_5fs',['ahavh_s',['../interfacepfun_1_1ahavh.html#a284548e7ddf6c883e3be29f4d717a9c9',1,'pfun::ahavh::ahavh_s()'],['../namespacepfun.html#acd76f3add5d91f3224b4802ae313f252',1,'pfun::ahavh_s()']]], + ['atanh_5fd',['atanh_d',['../interfacepfun_1_1atanh.html#a69517925b9443ce8bfa7d549c6f43984',1,'pfun::atanh::atanh_d()'],['../namespacepfun.html#a171cc2c59d8a9860987e85f11c964374',1,'pfun::atanh_d()']]], + ['atanh_5fs',['atanh_s',['../interfacepfun_1_1atanh.html#a42a7065ef14bd86c138feb75dcf3f0ca',1,'pfun::atanh::atanh_s()'],['../namespacepfun.html#a8c6f20ee161a494cb4c6c0ae770c258d',1,'pfun::atanh_s()']]], + ['avco',['AVCO',['../interfacepmat2_1_1avco.html#acef3e7182ff9a93770e768e27c3fc03f',1,'pmat2::avco::AVCO()'],['../namespacepmat2.html#a4e7ca88623c62560b1aa14a366c4f8a8',1,'pmat2::AVCO()']]], + ['axial33_5fd',['axial33_d',['../interfacepmat4_1_1axial.html#adbc12f84fb241ef4318d8a4900ea83f9',1,'pmat4::axial::axial33_d()'],['../namespacepmat4.html#a56de8198dc945b5cba6d1fd476f84d6f',1,'pmat4::axial33_d()']]], + ['axial33_5fs',['axial33_s',['../interfacepmat4_1_1axial.html#ac9f242df29ed977669424142336a12a1',1,'pmat4::axial::axial33_s()'],['../namespacepmat4.html#af4e70c88c7c2ed2a99e4921e19fc3e4b',1,'pmat4::axial33_s()']]], + ['axial3_5fd',['axial3_d',['../interfacepmat4_1_1axial.html#ab95014bb9b6e43cfccda873529eed272',1,'pmat4::axial::axial3_d()'],['../namespacepmat4.html#a97ea1886731d1484a5716985228ada3b',1,'pmat4::axial3_d()']]], + ['axial3_5fs',['axial3_s',['../interfacepmat4_1_1axial.html#a2518e84b302457403caf258ccc5a8f2a',1,'pmat4::axial::axial3_s()'],['../namespacepmat4.html#ae1601efcae5698513dbc0f7d2ca102a1',1,'pmat4::axial3_s()']]], + ['axtoq',['axtoq',['../interfacepmat4_1_1axtoq.html#a0c04b6458eeef33454c770e51850ce8c',1,'pmat4::axtoq::axtoq()'],['../namespacepmat4.html#afea8becd63ae1c05d62bb8331c3290f6',1,'pmat4::axtoq()']]], + ['axtorot',['axtorot',['../interfacepmat4_1_1axtorot.html#a1ed5a1b7d621e3c7c19b145d62185dca',1,'pmat4::axtorot::axtorot()'],['../namespacepmat4.html#af72975c3f38b66e654180148138a2ce1',1,'pmat4::axtorot()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_1.html b/ver-1.11.0/grid_tools/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_1.js b/ver-1.11.0/grid_tools/search/functions_1.js new file mode 100644 index 000000000..d89f56fd5 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bestesg_5fgeo',['bestesg_geo',['../interfacepesg_1_1bestesg__geo.html#a2ab7bf5fe621ccf7e709fbd15af4dea9',1,'pesg::bestesg_geo::bestesg_geo()'],['../namespacepesg.html#abb391d45295581c1b15c7cb6d5c9afb6',1,'pesg::bestesg_geo()']]], + ['bestesg_5fmap',['bestesg_map',['../interfacepesg_1_1bestesg__map.html#aec609b83b6f4f05beaba28ce0b6144a7',1,'pesg::bestesg_map::bestesg_map()'],['../namespacepesg.html#a5c9f36282d23e5297d6a5ae71d60d6bf',1,'pesg::bestesg_map()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_10.html b/ver-1.11.0/grid_tools/search/functions_10.html new file mode 100644 index 000000000..6f6fbae23 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_10.js b/ver-1.11.0/grid_tools/search/functions_10.js new file mode 100644 index 000000000..bffd53d0b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_10.js @@ -0,0 +1,58 @@ +var searchData= +[ + ['sarea_5fd',['sarea_d',['../interfacepmat4_1_1sarea.html#a4209845703ee94e887eeaa958c71283e',1,'pmat4::sarea::sarea_d()'],['../namespacepmat4.html#a60825439c3ab3cdb5f56dde3905d6705',1,'pmat4::sarea_d()']]], + ['sarea_5fs',['sarea_s',['../interfacepmat4_1_1sarea.html#afa941100f8fab5668bd37a069e844725',1,'pmat4::sarea::sarea_s()'],['../namespacepmat4.html#aa1d04d9f7dc4104ed54af07a59e0741f',1,'pmat4::sarea_s()']]], + ['sctoc',['sctoc',['../interfacepmat5_1_1ctoc__schm.html#a1bd14814c1ce196e1fb1666d2c473168',1,'pmat5::ctoc_schm::sctoc()'],['../namespacepmat5.html#a86a7576b348a2747a7f7feb9a8bd60c8',1,'pmat5::sctoc()']]], + ['sctocd',['sctocd',['../interfacepmat5_1_1ctoc__schm.html#a59976cc91d66baa6eaa8aaaa132cea31',1,'pmat5::ctoc_schm::sctocd()'],['../namespacepmat5.html#a7248db240ab1a98ac980d3b4190e003e',1,'pmat5::sctocd()']]], + ['sctocdd',['sctocdd',['../interfacepmat5_1_1ctoc__schm.html#ad1519592ec41338f46f5e16811468796',1,'pmat5::ctoc_schm::sctocdd()'],['../namespacepmat5.html#ad04f85b3792a2b8d7d980a1ab2c8d2c4',1,'pmat5::sctocdd()']]], + ['sctog',['sctog',['../interfacepmat5_1_1ctog.html#a37ef6420049a2fd2ebcda896b53d5339',1,'pmat5::ctog::sctog()'],['../namespacepmat5.html#a5af7ff2967ce4feb2dbaad607b86b53c',1,'pmat5::sctog()']]], + ['sctogr',['sctogr',['../interfacepmat5_1_1ctogr.html#a0d2fb37c9fc083ced37ffd7967c95343',1,'pmat5::ctogr::sctogr()'],['../namespacepmat5.html#a7ae12feca1ae732c41143c9d1fb09a13',1,'pmat5::sctogr()']]], + ['sech_5fd',['sech_d',['../interfacepfun_1_1sech.html#aef9ac9a07c282fd90345f3905353659b',1,'pfun::sech::sech_d()'],['../namespacepfun.html#a194d1cbf0876b016e4c1465bc73629cb',1,'pfun::sech_d()']]], + ['sech_5fs',['sech_s',['../interfacepfun_1_1sech.html#a106d127499d43f402ea6589cef825d45',1,'pfun::sech::sech_s()'],['../namespacepfun.html#afde31ca448b75ea9feaa908ecd14b24e',1,'pfun::sech_s()']]], + ['sechs_5fd',['sechs_d',['../interfacepfun_1_1sechs.html#a4f02efd305e6a2ceaac3414b4e233a98',1,'pfun::sechs::sechs_d()'],['../namespacepfun.html#a95e75a721fd184bc5df82206030aff90',1,'pfun::sechs_d()']]], + ['sechs_5fs',['sechs_s',['../interfacepfun_1_1sechs.html#a1323f4c401c15a81b02d42d3cc17a566',1,'pfun::sechs::sechs_s()'],['../namespacepfun.html#ae16f0b042839586e3f28a2d7e923a685',1,'pfun::sechs_s()']]], + ['setem',['setem',['../interfacepmat4_1_1setem.html#aebe672e27bf7de84d3568263017ed02c',1,'pmat4::setem::setem()'],['../namespacepmat4.html#a0967dfcd81af21a8224df0e9872f7636',1,'pmat4::setem()']]], + ['setmobius',['setmobius',['../interfacepmat4_1_1setmobius.html#a5cde6d13f26ca88a19af53f6c13032a5',1,'pmat4::setmobius::setmobius()'],['../namespacepmat4.html#acc922362fc8befbb9a24ee241227720a',1,'pmat4::setmobius()']]], + ['sframetwist',['sframetwist',['../interfacepmat5_1_1frametwist.html#a3a41677bae3596303c7e539f356595dd',1,'pmat5::frametwist::sframetwist()'],['../namespacepmat5.html#a3468057ec5bccd70177603e18d79e417',1,'pmat5::sframetwist()']]], + ['sgrtoc',['sgrtoc',['../interfacepmat5_1_1grtoc.html#a1b352ea961d84e67f2b691bde6329464',1,'pmat5::grtoc::sgrtoc()'],['../namespacepmat5.html#a45f0f8fc27cf94aa14980e2592ab4fa5',1,'pmat5::sgrtoc()']]], + ['sgrtocd',['sgrtocd',['../interfacepmat5_1_1grtoc.html#a469b3c08267d7c7569cdf455ad00310d',1,'pmat5::grtoc::sgrtocd()'],['../namespacepmat5.html#ae598bf2142d5bac03f4add7ab526d1d1',1,'pmat5::sgrtocd()']]], + ['sgrtocdd',['sgrtocdd',['../interfacepmat5_1_1grtoc.html#a3b648bea2b96e7c8898e1a25e73c2637',1,'pmat5::grtoc::sgrtocdd()'],['../namespacepmat5.html#a4a3c6fc6906b4d433f114b02b70b8781',1,'pmat5::sgrtocdd()']]], + ['sgtoc',['sgtoc',['../interfacepmat5_1_1gtoc.html#a35113c9ac6c87dc3467a8e951d547d9b',1,'pmat5::gtoc::sgtoc()'],['../namespacepmat5.html#a5fb323cf2d5049ca71cea8b093f246a5',1,'pmat5::sgtoc()']]], + ['sgtocd',['sgtocd',['../interfacepmat5_1_1gtoc.html#a820e349dffdd9a97b835d4f0ba09fa21',1,'pmat5::gtoc::sgtocd()'],['../namespacepmat5.html#a003a281787daf4e97fcaaa3b8c3274a3',1,'pmat5::sgtocd()']]], + ['sgtocdd',['sgtocdd',['../interfacepmat5_1_1gtoc.html#a27afb017885869e9d62e4ca3a57d2bb3',1,'pmat5::gtoc::sgtocdd()'],['../namespacepmat5.html#aff15189d640f2985c4cb86870fe939e3',1,'pmat5::sgtocdd()']]], + ['sgtoframem',['sgtoframem',['../interfacepmat5_1_1gtoframe.html#a20da5d35d41f32559a35e546864405b0',1,'pmat5::gtoframe::sgtoframem()'],['../namespacepmat5.html#ae6e7a5a97b413e17866c523ef49e5785',1,'pmat5::sgtoframem()']]], + ['sgtoframev',['sgtoframev',['../interfacepmat5_1_1gtoframe.html#a62ef0eb9d9bf3b4347490914ceae2a2d',1,'pmat5::gtoframe::sgtoframev()'],['../namespacepmat5.html#acce6c355875099aa350a33edf2a47680',1,'pmat5::sgtoframev()']]], + ['shave_5fnc',['shave_nc',['../shave__nc_8F90.html#a2af361e0786880807affb066c9678b17',1,'shave_nc.F90']]], + ['sinhox_5fd',['sinhox_d',['../interfacepfun_1_1sinhox.html#af3c51392433a4b18c9a7baad4b9cbd2b',1,'pfun::sinhox::sinhox_d()'],['../namespacepfun.html#a1305026f40bb5ea5e505daaaaa4765b1',1,'pfun::sinhox_d()']]], + ['sinhoxm_5fd',['sinhoxm_d',['../interfacepfun_1_1sinhoxm.html#ad6b249c10f7bc87358a6509e090e9417',1,'pfun::sinhoxm::sinhoxm_d()'],['../namespacepfun.html#a255912b9cb3ebb9f43f89ddc673022ad',1,'pfun::sinhoxm_d()']]], + ['sininmap',['sininmap',['../interfacepmat5_1_1ininmap.html#acfad2d8ddcde6ef47eaf59a1605218f1',1,'pmat5::ininmap::sininmap()'],['../namespacepmat5.html#ac90003637943f98a27697961f8383bb0',1,'pmat5::sininmap()']]], + ['sinivmap',['sinivmap',['../interfacepmat5_1_1inivmap.html#a252d4a4943465b8b99b71ec6f49a48c2',1,'pmat5::inivmap::sinivmap()'],['../namespacepmat5.html#a094c4f88c3584c4e81e87376c40b6823',1,'pmat5::sinivmap()']]], + ['sinox_5fd',['sinox_d',['../interfacepfun_1_1sinox.html#a23275f052c82f47125d3b6118ffa0a7b',1,'pfun::sinox::sinox_d()'],['../namespacepfun.html#a8a8959ba3cccb06cad5a2a379f85e066',1,'pfun::sinox_d()']]], + ['sinoxm_5fd',['sinoxm_d',['../interfacepfun_1_1sinoxm.html#a730c51002f428fd257ed50d3dd1d8aff',1,'pfun::sinoxm::sinoxm_d()'],['../namespacepfun.html#accb9c8adb4b2127c72962f1f7ce6214a',1,'pfun::sinoxm_d()']]], + ['sinvl',['sinvl',['../interfacepmat_1_1invl.html#abffb73fbc094035656ef45f729c83155',1,'pmat::invl::sinvl()'],['../pmat_8f90.html#a42525bcdb1bd741fabb1cc3df45393ac',1,'pmat::sinvl()']]], + ['sinvmt',['sinvmt',['../interfacepmat_1_1inv.html#a42370b46ba87997e7fc39715a05c68a5',1,'pmat::inv::sinvmt()'],['../pmat_8f90.html#aa39cfa5d6acc912cda77a29458af63ec',1,'pmat::sinvmt()']]], + ['sinvmtf',['sinvmtf',['../interfacepmat_1_1inv.html#a3bc4f0ba9fbbc209c86622da648483e5',1,'pmat::inv::sinvmtf()'],['../pmat_8f90.html#a462dc0fcae258db5e534c2581e83889e',1,'pmat::sinvmtf()']]], + ['sinvu',['sinvu',['../interfacepmat_1_1invu.html#a716a1d1dd2921f0646999a91e9622d0c',1,'pmat::invu::sinvu()'],['../pmat_8f90.html#a5bae9e9a492ac991e73e87775bbb77a5',1,'pmat::sinvu()']]], + ['sl1lm',['sl1lm',['../pmat_8f90.html#ac39b0c62c5d17cae755b5739251bc657',1,'pmat']]], + ['sl1lmf',['sl1lmf',['../pmat_8f90.html#a1c6ebdd10a0608e8759be8168fe4333d',1,'pmat']]], + ['sldlm',['sldlm',['../pmat_8f90.html#a2d81720fc6ed0437584df1f3a59500a2',1,'pmat']]], + ['sldlmf',['sldlmf',['../pmat_8f90.html#a1667dce1a775eb86325ca0dfb7718533',1,'pmat']]], + ['sldum',['sldum',['../interfacepmat_1_1ldum.html#a1fc1aa54e2c08e0310c651ac89280662',1,'pmat::ldum::sldum()'],['../pmat_8f90.html#a856ca83cb41eaf59ab60f8a37dbc930e',1,'pmat::sldum()']]], + ['sldumf',['sldumf',['../interfacepmat_1_1ldum.html#acda336a41affe9b10011c8e06203557b',1,'pmat::ldum::sldumf()'],['../pmat_8f90.html#a838016f3e2b24ba0f0d2870809d7ad65',1,'pmat::sldumf()']]], + ['slinlv',['slinlv',['../interfacepmat_1_1invl.html#a15704d7a0c0e755249ba7381990d9165',1,'pmat::invl::slinlv()'],['../pmat_8f90.html#a1887bccb02f53f4bb5f8812e349ab6f6',1,'pmat::slinlv()']]], + ['slinmmt',['slinmmt',['../interfacepmat_1_1inv.html#a22f25e2fcfe2e6352e8d2a2eaa636d9c',1,'pmat::inv::slinmmt()'],['../pmat_8f90.html#ae39bbc722548698b5477fb77eb5e6a9d',1,'pmat::slinmmt()']]], + ['slinmmtf',['slinmmtf',['../interfacepmat_1_1inv.html#a6c3368b428da394213d47bf5dfca0f29',1,'pmat::inv::slinmmtf()'],['../pmat_8f90.html#a5a24710e78c8fd7c353774b9682d6055',1,'pmat::slinmmtf()']]], + ['slinmvt',['slinmvt',['../interfacepmat_1_1inv.html#a44fa7dc12970f196eed1142e0933f409',1,'pmat::inv::slinmvt()'],['../pmat_8f90.html#a581402136224580895f89b639e43b2fa',1,'pmat::slinmvt()']]], + ['slinmvtf',['slinmvtf',['../interfacepmat_1_1inv.html#a1a011af54e8f29e0eef44b5714d68e81',1,'pmat::inv::slinmvtf()'],['../pmat_8f90.html#a5fd1ca9125b6165b24fb33ef92dbada9',1,'pmat::slinmvtf()']]], + ['slinuv',['slinuv',['../interfacepmat_1_1invu.html#a2ba603d3176c8c84a912ac35f4f01b79',1,'pmat::invu::slinuv()'],['../pmat_8f90.html#a7d5c37f047b3402981b9a789ae2142f3',1,'pmat::slinuv()']]], + ['sparaframe',['sparaframe',['../interfacepmat5_1_1paraframe.html#a1c78f9db9ac3151983ce3fde3d7e05e4',1,'pmat5::paraframe::sparaframe()'],['../namespacepmat5.html#a68ec9d48a671321dcd7e7ce5ddf8f973',1,'pmat5::sparaframe()']]], + ['spherical_5fangle',['spherical_angle',['../filter__topo_8F90.html#a88eb7531b52377c9014425995013cd5f',1,'filter_topo.F90']]], + ['spintoq',['spintoq',['../interfacepmat4_1_1spintoq.html#a79dfd6a747071d2c21648fb4eab286bd',1,'pmat4::spintoq::spintoq()'],['../namespacepmat4.html#aa16fe8967da6010dcda10b29d98ddb5d',1,'pmat4::spintoq()']]], + ['sqrtsym2',['sqrtsym2',['../interfacepsym2_1_1sqrtsym2.html#a91c2bfaca9b8d158c938f60906175714',1,'psym2::sqrtsym2::sqrtsym2()'],['../namespacepsym2.html#a534cceba99807ead1186e19061a18737',1,'psym2::sqrtsym2()']]], + ['sqrtsym2d',['sqrtsym2d',['../interfacepsym2_1_1sqrtsym2.html#a39dbfbe97fd5fdec432b13664005af5a',1,'psym2::sqrtsym2::sqrtsym2d()'],['../namespacepsym2.html#ade22baac4882739dbd6ea74bd32e1073',1,'psym2::sqrtsym2d()']]], + ['sqrtsym2d_5fe',['sqrtsym2d_e',['../interfacepsym2_1_1sqrtsym2d__e.html#a51ef15ca1dcebe6ff16b06b427712af8',1,'psym2::sqrtsym2d_e::sqrtsym2d_e()'],['../namespacepsym2.html#a06c0c59f9694d43ef6673a264c3597d7',1,'psym2::sqrtsym2d_e()']]], + ['sqrtsym2d_5ft',['sqrtsym2d_t',['../interfacepsym2_1_1sqrtsym2d__t.html#ad9d2395c6e2d7a83870a40cac872b172',1,'psym2::sqrtsym2d_t::sqrtsym2d_t()'],['../namespacepsym2.html#ae3afbf1fec606ee0f45f775176282542',1,'psym2::sqrtsym2d_t()']]], + ['sswpvv',['sswpvv',['../interfacepmat_1_1swpvv.html#aa751eb31cea75bc4333f24c30ff45fc5',1,'pmat::swpvv::sswpvv()'],['../pmat_8f90.html#a8f0f2fac13558429889da5429d8530a9',1,'pmat::sswpvv()']]], + ['sudlmm',['sudlmm',['../interfacepmat_1_1udlmm.html#aa5f23a4cd06668ea6d0b23e1f2da406b',1,'pmat::udlmm::sudlmm()'],['../pmat_8f90.html#a4654b557988c2be5a7f648073128f70d',1,'pmat::sudlmm()']]], + ['sudlmv',['sudlmv',['../interfacepmat_1_1udlmm.html#a0d7cd9544bd3312cb16dc50cbec55fa7',1,'pmat::udlmm::sudlmv()'],['../pmat_8f90.html#ac7132279f375723b23d9fed6b93803f6',1,'pmat::sudlmv()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_11.html b/ver-1.11.0/grid_tools/search/functions_11.html new file mode 100644 index 000000000..dd88d8b7e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_11.js b/ver-1.11.0/grid_tools/search/functions_11.js new file mode 100644 index 000000000..a635b88db --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_11.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['tavco',['TAVCO',['../interfacepmat2_1_1avco.html#a46787b6c53036556770602283a4826d1',1,'pmat2::avco::TAVCO()'],['../namespacepmat2.html#a6a89c3d2cf4cbeddf8794c0274983b85',1,'pmat2::TAVCO()']]], + ['tdfco',['TDFCO',['../interfacepmat2_1_1dfco.html#a106bf482522e94da7bbc9fa41e0d8e22',1,'pmat2::dfco::TDFCO()'],['../namespacepmat2.html#a1399ce91b0cdcd5b1efd02de702f8425',1,'pmat2::TDFCO()']]], + ['tdfco2',['TDFCO2',['../interfacepmat2_1_1dfco2.html#a3c1adfc240e174a0ecf0a5851825f7e2',1,'pmat2::dfco2::TDFCO2()'],['../namespacepmat2.html#a555c3f1fc401104d5f2c1ee28e310f84',1,'pmat2::TDFCO2()']]], + ['trace_5fd',['trace_d',['../interfacepmat4_1_1trace.html#aa2c2bbef4fa467ce9cd837a23862e9a2',1,'pmat4::trace::trace_d()'],['../namespacepmat4.html#ae6d759d7985b821fc2c878b6792cbdf0',1,'pmat4::trace_d()']]], + ['trace_5fi',['trace_i',['../interfacepmat4_1_1trace.html#aea18e45962fa63aad5b4f9df7fdf82e8',1,'pmat4::trace::trace_i()'],['../namespacepmat4.html#a75a91197fc4db33ab6bffc89ffa1ad41',1,'pmat4::trace_i()']]], + ['trace_5fs',['trace_s',['../interfacepmat4_1_1trace.html#a42d7a5957636ec0a12cb0d63a66acd1d',1,'pmat4::trace::trace_s()'],['../namespacepmat4.html#a62b53eb9a0798c65b9d9ead4c21e8ff9',1,'pmat4::trace_s()']]], + ['triple_5fcross_5fproduct_5fd',['triple_cross_product_d',['../interfacepmat4_1_1cross__product.html#a8bf4a28ffffdcc76b2477bae48a3891c',1,'pmat4::cross_product::triple_cross_product_d()'],['../namespacepmat4.html#a177d2fdb3121bbbb80bd7cac7fe93448',1,'pmat4::triple_cross_product_d()']]], + ['triple_5fcross_5fproduct_5fs',['triple_cross_product_s',['../interfacepmat4_1_1cross__product.html#a0569c6cff360d31c28ec3cc2272d695a',1,'pmat4::cross_product::triple_cross_product_s()'],['../namespacepmat4.html#a4eac3bd5e6768caaabf9f73710ee3a92',1,'pmat4::triple_cross_product_s()']]], + ['triple_5fproduct_5fd',['triple_product_d',['../interfacepmat4_1_1triple__product.html#ac09bbaf5240d1a38792f158863387ddc',1,'pmat4::triple_product::triple_product_d()'],['../namespacepmat4.html#a6cd1353e72eca489997010df919e99af',1,'pmat4::triple_product_d()']]], + ['triple_5fproduct_5fs',['triple_product_s',['../interfacepmat4_1_1triple__product.html#a51410aa7f8cfc45bbd697ed4517ad5b0',1,'pmat4::triple_product::triple_product_s()'],['../namespacepmat4.html#ad64d33605028491e5a859fbb732ee544',1,'pmat4::triple_product_s()']]], + ['two_5fdelta_5ffilter',['two_delta_filter',['../filter__topo_8F90.html#a36dff92b0a19ac712034eb203fda4f5d',1,'filter_topo.F90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_12.html b/ver-1.11.0/grid_tools/search/functions_12.html new file mode 100644 index 000000000..7093d19fe --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_12.js b/ver-1.11.0/grid_tools/search/functions_12.js new file mode 100644 index 000000000..abc0cedb8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_12.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['u1lbv',['U1LBV',['../interfacepmat2_1_1u1lbv.html#ac60455dba7e5165d439a02017e79809e',1,'pmat2::u1lbv::U1LBV()'],['../namespacepmat2.html#ae522999da18bc2c8a721697220d0e2f3',1,'pmat2::U1LBV()']]], + ['u1lbx',['U1LBX',['../interfacepmat2_1_1u1lbx.html#a3aaf3850bc62ee13a92b8bfbcbe0021f',1,'pmat2::u1lbx::U1LBX()'],['../namespacepmat2.html#a728162304a5163d9833ddf0704425f0d',1,'pmat2::U1LBX()']]], + ['u1lby',['U1LBY',['../interfacepmat2_1_1u1lby.html#adbba1c18a2842310e74d9a11fb1783ce',1,'pmat2::u1lby::U1LBY()'],['../namespacepmat2.html#afc803df6dd1d77e1cfc3a21444eac9df',1,'pmat2::U1LBY()']]], + ['u1lvb',['U1LVB',['../interfacepmat2_1_1u1lvb.html#a3f40924cfe1fc60e335b03a660e0ae6b',1,'pmat2::u1lvb::U1LVB()'],['../namespacepmat2.html#afb1b0a24d2b799039aa4574a0f5aaf7e',1,'pmat2::U1LVB()']]], + ['u1lxb',['U1LXB',['../interfacepmat2_1_1u1lxb.html#aa59d2b66c5cc4254a3edfbe7c3a3a80c',1,'pmat2::u1lxb::U1LXB()'],['../namespacepmat2.html#a61691d64fb0e3097006b0d60e6114c2a',1,'pmat2::U1LXB()']]], + ['u1lyb',['U1LYB',['../interfacepmat2_1_1u1lyb.html#a56892762cbe9e7e78262fd16517c3df1',1,'pmat2::u1lyb::U1LYB()'],['../namespacepmat2.html#a0bf86d7928a879540ffa1c73e437436d',1,'pmat2::U1LYB()']]], + ['udlb',['UDLB',['../interfacepmat2_1_1udlb.html#a89587252aaed7cac7df22a261b756633',1,'pmat2::udlb::UDLB()'],['../namespacepmat2.html#ac819a24eaae6006b6e84094f30c17eaa',1,'pmat2::UDLB()']]], + ['udlbv',['UDLBV',['../interfacepmat2_1_1udlbv.html#a6b1f964739b2fa8954459733f572753c',1,'pmat2::udlbv::UDLBV()'],['../namespacepmat2.html#a87d11417e4326543ba1eea3404b72a59',1,'pmat2::UDLBV()']]], + ['udlbx',['UDLBX',['../interfacepmat2_1_1udlbx.html#a70856e4cca6382bcc75f5a4444e58684',1,'pmat2::udlbx::UDLBX()'],['../namespacepmat2.html#af4e8be3e0e49b63ba9c0fa2daf9064ec',1,'pmat2::UDLBX()']]], + ['udlby',['UDLBY',['../interfacepmat2_1_1udlby.html#a1de60658e9a954b6016508f277d5001e',1,'pmat2::udlby::UDLBY()'],['../namespacepmat2.html#a55a220e28985cd8e5aa91f96922d0613',1,'pmat2::UDLBY()']]], + ['udlvb',['UDLVB',['../interfacepmat2_1_1udlvb.html#a7e6d06999413052137202a76fcb4fa2e',1,'pmat2::udlvb::UDLVB()'],['../namespacepmat2.html#a16a31964a41ab5f370aa8ae186147f45',1,'pmat2::UDLVB()']]], + ['udlxb',['UDLXB',['../interfacepmat2_1_1udlxb.html#a17d6ed2985c58e63aca41a575d52901b',1,'pmat2::udlxb::UDLXB()'],['../namespacepmat2.html#aae850dc55453bafbc6f8c5f8458d053f',1,'pmat2::UDLXB()']]], + ['udlyb',['UDLYB',['../interfacepmat2_1_1udlyb.html#a5806f6e87d5c570438c4ff0296d30f3c',1,'pmat2::udlyb::UDLYB()'],['../namespacepmat2.html#a81321de544a43237d601519a37b392a6',1,'pmat2::UDLYB()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_13.html b/ver-1.11.0/grid_tools/search/functions_13.html new file mode 100644 index 000000000..051a1eb82 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_13.js b/ver-1.11.0/grid_tools/search/functions_13.js new file mode 100644 index 000000000..05ccc267f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['write_5ftopo_5ffile',['write_topo_file',['../filter__topo_8F90.html#abdd604d14cb50cf80246aa580676ac9a',1,'filter_topo.F90']]], + ['wrtb',['WRTB',['../interfacepmat2_1_1wrtb.html#af16e1d62d14ccd82eeb805eb280e1578',1,'pmat2::wrtb::WRTB()'],['../namespacepmat2.html#a3970c08a38a54b29b664a1930f0de6bb',1,'pmat2::WRTB()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_14.html b/ver-1.11.0/grid_tools/search/functions_14.html new file mode 100644 index 000000000..d5fdbda44 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_14.js b/ver-1.11.0/grid_tools/search/functions_14.js new file mode 100644 index 000000000..cd2fe3d41 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_14.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['xctoxm_5fak',['xctoxm_ak',['../interfacepesg_1_1xctoxm__ak.html#af5e56d69fb6122348ea935542e358d0b',1,'pesg::xctoxm_ak::xctoxm_ak()'],['../namespacepesg.html#a7fa7090c8dad76b177fa350019faaed6',1,'pesg::xctoxm_ak()']]], + ['xctoxs',['xctoxs',['../interfacepesg_1_1xctoxs.html#a78f98f4fe9558ca1991c028280b31891',1,'pesg::xctoxs::xctoxs()'],['../namespacepesg.html#a13e4b5afc81f452f403a419f5dc407ea',1,'pesg::xctoxs()']]], + ['xmtog_5fak_5fdd_5fg',['xmtog_ak_dd_g',['../interfacepesg_1_1xmtog__ak__dd.html#a2254f5d16f294c915a0fd39e2430d777',1,'pesg::xmtog_ak_dd::xmtog_ak_dd_g()'],['../namespacepesg.html#a5145974b344b9ed001bc1849ac33a947',1,'pesg::xmtog_ak_dd_g()']]], + ['xmtog_5fak_5fdd_5fm',['xmtog_ak_dd_m',['../interfacepesg_1_1xmtog__ak__dd.html#a0685fb23b5b0b364ee793c57998a43a1',1,'pesg::xmtog_ak_dd::xmtog_ak_dd_m()'],['../namespacepesg.html#a167d85418627ade97bf4cebfc26f5909',1,'pesg::xmtog_ak_dd_m()']]], + ['xmtog_5fak_5frr_5fg',['xmtog_ak_rr_g',['../interfacepesg_1_1xmtog__ak__rr.html#a436175556f7f34e2e0a2803ccb1df66d',1,'pesg::xmtog_ak_rr::xmtog_ak_rr_g()'],['../namespacepesg.html#a4fc7233669c1c84c4e6aa7b9bf8b988d',1,'pesg::xmtog_ak_rr_g()']]], + ['xmtog_5fak_5frr_5fm',['xmtog_ak_rr_m',['../interfacepesg_1_1xmtog__ak__rr.html#a1bf3a9ea52eab26a3aefafb34f6e8899',1,'pesg::xmtog_ak_rr::xmtog_ak_rr_m()'],['../namespacepesg.html#a07c56831f84286a46dcaa68a930145db',1,'pesg::xmtog_ak_rr_m()']]], + ['xmtoxc_5fak',['xmtoxc_ak',['../interfacepesg_1_1xmtoxc__ak.html#adbeb4657ddfbd8fc23adef0e0fe2d8d9',1,'pesg::xmtoxc_ak::xmtoxc_ak()'],['../namespacepesg.html#a386bd317b37c41032e6e3c4a701f3e29',1,'pesg::xmtoxc_ak()']]], + ['xmtoxc_5fvak',['xmtoxc_vak',['../interfacepesg_1_1xmtoxc__ak.html#a26cd804e7890507c4a18be58c8487658',1,'pesg::xmtoxc_ak::xmtoxc_vak()'],['../namespacepesg.html#a9efb048fa84ed3d734f02efc2df0d98a',1,'pesg::xmtoxc_vak()']]], + ['xmtoxc_5fvak1',['xmtoxc_vak1',['../interfacepesg_1_1xmtoxc__ak.html#ac6e70d6aff9245b40ff151c7b0304123',1,'pesg::xmtoxc_ak::xmtoxc_vak1()'],['../namespacepesg.html#aabb2932ac60546b36581f2e56bc8e317',1,'pesg::xmtoxc_vak1()']]], + ['xmtoxt',['xmtoxt',['../interfacepesg_1_1xmtoxt.html#a7433dcb5be1326e2881e179af74fe774',1,'pesg::xmtoxt::xmtoxt()'],['../namespacepesg.html#ad7a183e207dcfdd23ae9f575806c5482',1,'pesg::xmtoxt()']]], + ['xmtoxt1',['xmtoxt1',['../interfacepesg_1_1xmtoxt.html#aedcdd965e69afef31aedaeee1e2055f3',1,'pesg::xmtoxt::xmtoxt1()'],['../namespacepesg.html#af5737842678069610c479dd77d46c452',1,'pesg::xmtoxt1()']]], + ['xstoxc',['xstoxc',['../interfacepesg_1_1xstoxc.html#a696efa5221df9904b594a6dff690d37f',1,'pesg::xstoxc::xstoxc()'],['../namespacepesg.html#a336ba536d749c69bd169318933b6f56a',1,'pesg::xstoxc()']]], + ['xstoxc1',['xstoxc1',['../interfacepesg_1_1xstoxc.html#a3ed442df5562780bc67ed9f713589331',1,'pesg::xstoxc::xstoxc1()'],['../namespacepesg.html#a57ee40cd1877be7af503b57f3fab92ae',1,'pesg::xstoxc1()']]], + ['xstoxt',['xstoxt',['../interfacepesg_1_1xstoxt.html#a8ec61b7e39738a5551d52ad047deaf70',1,'pesg::xstoxt::xstoxt()'],['../namespacepesg.html#af3889ea46137e9a7dd0393fb320530f8',1,'pesg::xstoxt()']]], + ['xttoxm',['xttoxm',['../interfacepesg_1_1xttoxm.html#a57bcd6b7890fd9886bcc782e950341f2',1,'pesg::xttoxm::xttoxm()'],['../namespacepesg.html#a51ba9dc122f12506dbf2386650d68442',1,'pesg::xttoxm()']]], + ['xttoxs',['xttoxs',['../interfacepesg_1_1xttoxs.html#a24374fb1c1d555b1bd15ff563ea49ca1',1,'pesg::xttoxs::xttoxs()'],['../namespacepesg.html#a6d36430c0f064b067b79091386780ef5',1,'pesg::xttoxs()']]], + ['xttoxs1',['xttoxs1',['../interfacepesg_1_1xttoxs.html#a09bc292e06041cf476b307f5e637311a',1,'pesg::xttoxs::xttoxs1()'],['../namespacepesg.html#aaae81439717abc3303a0d6deda4f931f',1,'pesg::xttoxs1()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_15.html b/ver-1.11.0/grid_tools/search/functions_15.html new file mode 100644 index 000000000..546d13e65 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_15.js b/ver-1.11.0/grid_tools/search/functions_15.js new file mode 100644 index 000000000..ee939e8fc --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_15.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['zmobius',['zmobius',['../interfacepmat4_1_1mobius.html#ab142f5f19ee3bf4d4c98afa00c7ff9c2',1,'pmat4::mobius::zmobius()'],['../namespacepmat4.html#a52b430dec9d7fe8223ef11bcede76655',1,'pmat4::zmobius()']]], + ['zmobiusi',['zmobiusi',['../interfacepmat4_1_1mobiusi.html#a049b78e6eebd7aff8ce07ee47e308317',1,'pmat4::mobiusi::zmobiusi()'],['../namespacepmat4.html#af2b5d4c9d2a4d8ba9b815a8a50415374',1,'pmat4::zmobiusi()']]], + ['zmtozt',['zmtozt',['../interfacepesg_1_1zmtozt.html#afa1ce1f98f16e3bb96c90e2903a27e0f',1,'pesg::zmtozt::zmtozt()'],['../namespacepesg.html#a5805b6899bde8316ee20d3a6cc762c51',1,'pesg::zmtozt()']]], + ['zmtozt1',['zmtozt1',['../interfacepesg_1_1zmtozt.html#a832844d072bb50cf0fa1e211f9571f1b',1,'pesg::zmtozt::zmtozt1()'],['../namespacepesg.html#ae345af666f4c293be9d141003a6ac74d',1,'pesg::zmtozt1()']]], + ['znfun',['znfun',['../interfacepmat4_1_1znfun.html#af1af781fcc422c2aa4ca1dd1c8faab46',1,'pmat4::znfun::znfun()'],['../namespacepmat4.html#a6755e3cf7c76ad09408672b40f3ea38d',1,'pmat4::znfun()']]], + ['zntay',['zntay',['../interfacepmat4_1_1zntay.html#ad3e356698bbf2f8dcb481690b9ff180a',1,'pmat4::zntay::zntay()'],['../namespacepmat4.html#a4bb1210677198fe8815d210ebd41472e',1,'pmat4::zntay()']]], + ['zsetmobius',['zsetmobius',['../interfacepmat4_1_1setmobius.html#a6bda0c568ebb0f01acdcd3a4532f6723',1,'pmat4::setmobius::zsetmobius()'],['../namespacepmat4.html#ad783a79ba69276c0bd62daec786094b1',1,'pmat4::zsetmobius()']]], + ['ztoc',['ztoc',['../interfacepmat4_1_1ztoc.html#a941d83c0d2ab01d0061931077ff4fbf8',1,'pmat4::ztoc::ztoc()'],['../namespacepmat4.html#a58d3292ea5c5244b5498c32ae38a3b00',1,'pmat4::ztoc()']]], + ['ztocd',['ztocd',['../interfacepmat4_1_1ztoc.html#ad7f8402a748411412a6f374b0e10056c',1,'pmat4::ztoc::ztocd()'],['../namespacepmat4.html#acf0debe9fb3d6bdd10a2bf2bbabfe3ce',1,'pmat4::ztocd()']]], + ['zttozm',['zttozm',['../interfacepesg_1_1zttozm.html#a3c74fb087d1b650aabea418716fe8f8f',1,'pesg::zttozm::zttozm()'],['../namespacepesg.html#a9afca8c158609078be9a18b3bad46400',1,'pesg::zttozm()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_2.html b/ver-1.11.0/grid_tools/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_2.js b/ver-1.11.0/grid_tools/search/functions_2.js new file mode 100644 index 000000000..7298bbf57 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_2.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['cad1b',['CAD1B',['../interfacepmat2_1_1cad1b.html#a306a30ff97349989c08d794df4d40781',1,'pmat2::cad1b::CAD1B()'],['../namespacepmat2.html#ae3e1102198412e1ccb5c95d69c19ab74',1,'pmat2::CAD1B()']]], + ['cad2b',['CAD2B',['../interfacepmat2_1_1cad2b.html#a0f21eb55d9251b40ebd0d48222b9add7',1,'pmat2::cad2b::CAD2B()'],['../namespacepmat2.html#a997c67d15d657b6837efb77b59397bfd',1,'pmat2::CAD2B()']]], + ['cart_5fto_5flatlon',['cart_to_latlon',['../filter__topo_8F90.html#a29326a5d8919e362ef0f9f9f72b5ec7e',1,'filter_topo.F90']]], + ['cell_5fcenter2',['cell_center2',['../filter__topo_8F90.html#adda2d1676dfdde78cc80d9896bce881f',1,'filter_topo.F90']]], + ['check',['check',['../filter__topo_8F90.html#a5873370d008f550eebbd792e402ce3de',1,'check(status): filter_topo.F90'],['../global__equiv__resol_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50',1,'check(status): global_equiv_resol.f90'],['../regional__esg__grid_8f90.html#a4eaa745ba73f3614e5bfbfb2b0fd3a50',1,'check(status): regional_esg_grid.f90'],['../shave__nc_8F90.html#af506435d12571939190a6f9be3034d42',1,'check(status): shave_nc.F90']]], + ['chol2',['chol2',['../interfacepsym2_1_1chol2.html#a608222491243f89c60abc062b8cf832e',1,'psym2::chol2::chol2()'],['../namespacepsym2.html#a4d9dbce09805280da5ab55a3d0ec0be6',1,'psym2::chol2()']]], + ['cinvmt',['cinvmt',['../interfacepmat_1_1inv.html#a986e4b50840bc8170e807503b74dfab5',1,'pmat::inv::cinvmt()'],['../pmat_8f90.html#a66211bbfe11ffae8c686f04052b9b264',1,'pmat::cinvmt()']]], + ['cinvmtf',['cinvmtf',['../interfacepmat_1_1inv.html#a7f91b603923e7c8f326979a96f369cf6',1,'pmat::inv::cinvmtf()'],['../pmat_8f90.html#a94d1e16e885b4c488589b98c5849fa83',1,'pmat::cinvmtf()']]], + ['cldum',['cldum',['../interfacepmat_1_1ldum.html#a728a4a13d893dc4524a5387b826449e7',1,'pmat::ldum::cldum()'],['../pmat_8f90.html#a59e712821f27ada7cd57a4d93c70ca37',1,'pmat::cldum()']]], + ['cldumf',['cldumf',['../interfacepmat_1_1ldum.html#a44eebdd9fa3544d08abae813114678f9',1,'pmat::ldum::cldumf()'],['../pmat_8f90.html#a4fe736bfe557ab9a5cc8776d88393c1c',1,'pmat::cldumf()']]], + ['clib',['CLIB',['../namespacepmat2.html#a9b3a2e78b3bf02d0d602cd56f0ea9a75',1,'pmat2']]], + ['clib_5fc',['clib_c',['../interfacepmat2_1_1clipb.html#a63831c47a7c965d120e2ff4fcc861748',1,'pmat2::clipb::clib_c()'],['../namespacepmat2.html#af07afc4448a8b73ae9cfa06cee519e7d',1,'pmat2::clib_c()']]], + ['clib_5fd',['clib_d',['../interfacepmat2_1_1clipb.html#adcb065da7c0828a20e54c530ac7b3815',1,'pmat2::clipb::clib_d()'],['../namespacepmat2.html#acd69acd510090913b374553e76361266',1,'pmat2::clib_d()']]], + ['clinmmt',['clinmmt',['../interfacepmat_1_1inv.html#afee7b027ec0e78a0370824eca5cc8eaa',1,'pmat::inv::clinmmt()'],['../pmat_8f90.html#ac90feb7c74178faa8893d27633e2500b',1,'pmat::clinmmt()']]], + ['clinmmtf',['clinmmtf',['../interfacepmat_1_1inv.html#af225a1efb0329f70186a3ed2cca28015',1,'pmat::inv::clinmmtf()'],['../pmat_8f90.html#a2ffb1c02ee814c3ae2098d1853bf459f',1,'pmat::clinmmtf()']]], + ['clinmvt',['clinmvt',['../interfacepmat_1_1inv.html#ae4602598857143b359475ca605e3a013',1,'pmat::inv::clinmvt()'],['../pmat_8f90.html#a171b16d03b758c0b49b7737e943a37bc',1,'pmat::clinmvt()']]], + ['clinmvtf',['clinmvtf',['../interfacepmat_1_1inv.html#ab78dbc472c9f8068caa71cf6f1093e37',1,'pmat::inv::clinmvtf()'],['../pmat_8f90.html#a590b727eba1ad1ff53d83eeae7be4555',1,'pmat::clinmvtf()']]], + ['cmobius',['cmobius',['../interfacepmat4_1_1mobius.html#af12b8eed2959582693ddf40f7d18bb66',1,'pmat4::mobius::cmobius()'],['../namespacepmat4.html#aba8e4c263e6d8f6b18179f3e56f9d912',1,'pmat4::cmobius()']]], + ['compute_5ffilter_5fconstants',['compute_filter_constants',['../filter__topo_8F90.html#a4c877441cf933bf55ddb18ec7e58d670',1,'filter_topo.F90']]], + ['corral',['corral',['../interfacepmat4_1_1corral.html#a0c6feac91e9c7063043ae92c5e824ac7',1,'pmat4::corral::corral()'],['../namespacepmat4.html#acf3408dd7b0d52727193c806c4c89e6d',1,'pmat4::corral()']]], + ['cos_5fangle',['cos_angle',['../filter__topo_8F90.html#ac8a1860db6999f6754e47d678d25661c',1,'filter_topo.F90']]], + ['cross_5fproduct_5fd',['cross_product_d',['../interfacepmat4_1_1cross__product.html#a9b26d781992da02d206cb1b8b93dc467',1,'pmat4::cross_product::cross_product_d()'],['../namespacepmat4.html#ac807f097241c0c5b0d0e8b8ecdbe5219',1,'pmat4::cross_product_d()']]], + ['cross_5fproduct_5fs',['cross_product_s',['../interfacepmat4_1_1cross__product.html#ab2c1dbadfbeda3cd9c20d67dd71e12b0',1,'pmat4::cross_product::cross_product_s()'],['../namespacepmat4.html#a4a16044b6e72303b3e18568dd7e6705a',1,'pmat4::cross_product_s()']]], + ['csb1b',['CSB1B',['../interfacepmat2_1_1csb1b.html#a6d45411a82aaac14e7738cc8ada452cd',1,'pmat2::csb1b::CSB1B()'],['../namespacepmat2.html#a7b83fe4ffdd7f05f60d83bdcf30f9808',1,'pmat2::CSB1B()']]], + ['csb2b',['CSB2B',['../interfacepmat2_1_1csb2b.html#ad5e4d44be479265a450e5a2589aa6130',1,'pmat2::csb2b::CSB2B()'],['../namespacepmat2.html#ac684270726dc33e8603bee1de42dbb1e',1,'pmat2::CSB2B()']]], + ['cswpvv',['cswpvv',['../interfacepmat_1_1swpvv.html#a8cdf576cfc12bc6054e4b8613fe70eab',1,'pmat::swpvv::cswpvv()'],['../pmat_8f90.html#afc3f8ac9d411ec8f798a9f4d8b2b9cc0',1,'pmat::cswpvv()']]], + ['ctoz',['ctoz',['../interfacepmat4_1_1ctoz.html#ae980674157c37a8f668cf1a333aea194',1,'pmat4::ctoz::ctoz()'],['../namespacepmat4.html#a6825ba53d8a8cd4fa2989c98567ff13f',1,'pmat4::ctoz()']]], + ['cudlmm',['cudlmm',['../interfacepmat_1_1udlmm.html#abd389e3bb09960c4a8e556cec4cc5a64',1,'pmat::udlmm::cudlmm()'],['../pmat_8f90.html#a9419241750e7abcf568d22472fc4e995',1,'pmat::cudlmm()']]], + ['cudlmv',['cudlmv',['../interfacepmat_1_1udlmm.html#aa39bea367e415eb7e798b3a6ed698ed1',1,'pmat::udlmm::cudlmv()'],['../pmat_8f90.html#ac8e50cc3f472a5d643c01ba01c437f3e',1,'pmat::cudlmv()']]], + ['cyclic',['cyclic',['../pmat4_8f90.html#ac7e0d1ec024ec42e1905809ea150bf0a',1,'cyclic(u1, u2, u3, d1, d2, d3): pmat4.f90'],['../pmat4_8f90.html#a40db721f5c7e9df203fed326ff1825c8',1,'cyclic(u1, u2, u3, d1, d2, d3): pmat4.f90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_3.html b/ver-1.11.0/grid_tools/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_3.js b/ver-1.11.0/grid_tools/search/functions_3.js new file mode 100644 index 000000000..77e93b2db --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_3.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['davco',['DAVCO',['../interfacepmat2_1_1avco.html#a49f03de74302bfaaacaa8d1fc25636aa',1,'pmat2::avco::DAVCO()'],['../namespacepmat2.html#ae2b698fd63beb85c56181053fcf8a847',1,'pmat2::DAVCO()']]], + ['dctoc',['dctoc',['../interfacepmat5_1_1ctoc__schm.html#a311f99133c79c711c04bd4173d0de8d5',1,'pmat5::ctoc_schm::dctoc()'],['../namespacepmat5.html#a7db3de0fe562e88337558ea0bedf0694',1,'pmat5::dctoc()']]], + ['dctocd',['dctocd',['../interfacepmat5_1_1ctoc__schm.html#adbdfa6a3f889758f843c878a38bbcc1a',1,'pmat5::ctoc_schm::dctocd()'],['../namespacepmat5.html#a17df6aadf501db01b8eb5ea159a356fd',1,'pmat5::dctocd()']]], + ['dctocdd',['dctocdd',['../interfacepmat5_1_1ctoc__schm.html#afd7b5550f4af7b66058399e87b4e5c51',1,'pmat5::ctoc_schm::dctocdd()'],['../namespacepmat5.html#a1f36d39ea3a96f9644202ed9546a2f97',1,'pmat5::dctocdd()']]], + ['dctog',['dctog',['../interfacepmat5_1_1ctog.html#ac755ba2fe18671bc2dee359168399282',1,'pmat5::ctog::dctog()'],['../namespacepmat5.html#a4cdb980157241ae715742587a273d651',1,'pmat5::dctog()']]], + ['dctogr',['dctogr',['../interfacepmat5_1_1ctogr.html#a916a7f306cc4be4477a2aad997c1d3cc',1,'pmat5::ctogr::dctogr()'],['../namespacepmat5.html#ae29767929af2337004430fb7c1e9d469',1,'pmat5::dctogr()']]], + ['ddfco',['DDFCO',['../interfacepmat2_1_1dfco.html#aeaa94e95d5bfceb407ba3fa7164b9383',1,'pmat2::dfco::DDFCO()'],['../namespacepmat2.html#a0cf9170b832f290e7d6567f97fc3ea7a',1,'pmat2::DDFCO()']]], + ['ddfco2',['DDFCO2',['../interfacepmat2_1_1dfco2.html#aeb24962f4022807a2d8328fffb422c85',1,'pmat2::dfco2::DDFCO2()'],['../namespacepmat2.html#a8fc69994cb8d6cf9cb0b3c81895a42fc',1,'pmat2::DDFCO2()']]], + ['del2_5fcubed_5fsphere',['del2_cubed_sphere',['../filter__topo_8F90.html#a1e6b27b88552c78f37a77d10641951e6',1,'filter_topo.F90']]], + ['del4_5fcubed_5fsphere',['del4_cubed_sphere',['../filter__topo_8F90.html#a7b0818ef0ccc4ab0ff5670e5a4da31c7',1,'filter_topo.F90']]], + ['det_5fd',['det_d',['../interfacepmat4_1_1det.html#a3d00c1e98678483a595804bb103d8954',1,'pmat4::det::det_d()'],['../namespacepmat4.html#a18568dcbabc7e3eeac4a3298aea55040',1,'pmat4::det_d()']]], + ['det_5fi',['det_i',['../interfacepmat4_1_1det.html#a4edb8d9e7cc76b817b06eaa2ff88b3dc',1,'pmat4::det::det_i()'],['../namespacepmat4.html#ad447bfb05988b6c3b7c5591bce7d8af1',1,'pmat4::det_i()']]], + ['det_5fid',['det_id',['../interfacepmat4_1_1det.html#a65cc061d4d6f6183e9aab890a7c8fd1e',1,'pmat4::det::det_id()'],['../namespacepmat4.html#a3d3d55e961fafd21095e75d49fe734b9',1,'pmat4::det_id()']]], + ['det_5fs',['det_s',['../interfacepmat4_1_1det.html#a71930e999c0fe3fa0dcae0aa0be1834b',1,'pmat4::det::det_s()'],['../namespacepmat4.html#a9ccfdef199705ecd023701ffff24344d',1,'pmat4::det_s()']]], + ['dfco',['DFCO',['../interfacepmat2_1_1dfco.html#aab1b1da5fc6ea9d612ab05e7c8f33aff',1,'pmat2::dfco::DFCO()'],['../namespacepmat2.html#ab579c583d99c1ce10445025630e1b515',1,'pmat2::DFCO()']]], + ['dfco2',['DFCO2',['../interfacepmat2_1_1dfco2.html#a8730b0e9971d89a27c8a9365f03a79a7',1,'pmat2::dfco2::DFCO2()'],['../namespacepmat2.html#a2529c4ad33ef09e3f098a504edf4cfa3',1,'pmat2::DFCO2()']]], + ['dgrtoc',['dgrtoc',['../interfacepmat5_1_1grtoc.html#ab41541e2ff5061658f10b4dc85dd6d41',1,'pmat5::grtoc::dgrtoc()'],['../namespacepmat5.html#a9b896d011fb1f3f31ce58837e63f24df',1,'pmat5::dgrtoc()']]], + ['dgrtocd',['dgrtocd',['../interfacepmat5_1_1grtoc.html#a72ddd04897b2bcb2afa988b9aa3a3951',1,'pmat5::grtoc::dgrtocd()'],['../namespacepmat5.html#a1997ebe527feb6466baac99464a8352b',1,'pmat5::dgrtocd()']]], + ['dgrtocdd',['dgrtocdd',['../interfacepmat5_1_1grtoc.html#a37bd8768b3cfe4d9d3fb35884cd7c22b',1,'pmat5::grtoc::dgrtocdd()'],['../namespacepmat5.html#a8a88a3f4d6997939589ad5305effe61b',1,'pmat5::dgrtocdd()']]], + ['dgtoc',['dgtoc',['../interfacepmat5_1_1gtoc.html#a252cff22deb3157eaa991c5d990202f9',1,'pmat5::gtoc::dgtoc()'],['../namespacepmat5.html#a46c54c999c0f22cfb21c14164f6afaee',1,'pmat5::dgtoc()']]], + ['dgtocd',['dgtocd',['../interfacepmat5_1_1gtoc.html#a08c47f8989a501fd922e760cc610ffd2',1,'pmat5::gtoc::dgtocd()'],['../namespacepmat5.html#a47cb195cf58372342e19e710030bf70b',1,'pmat5::dgtocd()']]], + ['dgtocdd',['dgtocdd',['../interfacepmat5_1_1gtoc.html#a721bdbf1c0add7f84e5e31e177356ea6',1,'pmat5::gtoc::dgtocdd()'],['../namespacepmat5.html#a43d7cd0b9288695a76ff704fbe1d95b3',1,'pmat5::dgtocdd()']]], + ['diagn_5fd',['diagn_d',['../interfacepmat4_1_1diag.html#a1f55d0ad7ab1625d3445b7a74f1a8c77',1,'pmat4::diag::diagn_d()'],['../namespacepmat4.html#a89b64fd3ed548a7a0a7f1c5b7c4f4c80',1,'pmat4::diagn_d()']]], + ['diagn_5fi',['diagn_i',['../interfacepmat4_1_1diag.html#ac5fbc7f86d1f4ed361d714faa8b038aa',1,'pmat4::diag::diagn_i()'],['../namespacepmat4.html#a20d6267f0bf16f8baac9f65b954dbe8f',1,'pmat4::diagn_i()']]], + ['diagn_5fs',['diagn_s',['../interfacepmat4_1_1diag.html#a4dd6db78976260e4249f2728ce19ea35',1,'pmat4::diag::diagn_s()'],['../namespacepmat4.html#a16c9e93c3d9b0bb670d9c3dfc2c93560',1,'pmat4::diagn_s()']]], + ['diagnn_5fd',['diagnn_d',['../interfacepmat4_1_1diag.html#aa485e86b81befb26a2389d74bfdda9ae',1,'pmat4::diag::diagnn_d()'],['../namespacepmat4.html#a97104962c25b160006ba28edf310a26b',1,'pmat4::diagnn_d()']]], + ['diagnn_5fi',['diagnn_i',['../interfacepmat4_1_1diag.html#a3144b17a1e8a1fa95e0f6276802c6019',1,'pmat4::diag::diagnn_i()'],['../namespacepmat4.html#a86bb5fbbb0977051c6f06e31ae5ab6c7',1,'pmat4::diagnn_i()']]], + ['diagnn_5fs',['diagnn_s',['../interfacepmat4_1_1diag.html#a24b47b48d57bdf6f694199d6a66e3077',1,'pmat4::diag::diagnn_s()'],['../namespacepmat4.html#ad1bcf950c1fa15a8c5b2e8a8b3584b95',1,'pmat4::diagnn_s()']]], + ['dininmap',['dininmap',['../interfacepmat5_1_1ininmap.html#abf455bc6bd0c29b61754960b53e8fb30',1,'pmat5::ininmap::dininmap()'],['../namespacepmat5.html#a0ab365448bc120e2e47f6e5caaf2cd1a',1,'pmat5::dininmap()']]], + ['dinivmap',['dinivmap',['../interfacepmat5_1_1inivmap.html#ab6820f511d2a1cc1b5659c4815a5aa25',1,'pmat5::inivmap::dinivmap()'],['../namespacepmat5.html#ade2ed1d8ce5fddd0cac9792ee83aa64f',1,'pmat5::dinivmap()']]], + ['dinvl',['dinvl',['../interfacepmat_1_1invl.html#adaf7eeb7db25b49f54360d8154ed9ee3',1,'pmat::invl::dinvl()'],['../pmat_8f90.html#a340a8e702bf9f2a53cf7d6d934f3516d',1,'pmat::dinvl()']]], + ['dinvmt',['dinvmt',['../interfacepmat_1_1inv.html#ab4527e2ff672c675bced9f9c0d686a0b',1,'pmat::inv::dinvmt()'],['../pmat_8f90.html#a71bc03f739c87071fb018f27aaf1d400',1,'pmat::dinvmt()']]], + ['dinvmtf',['dinvmtf',['../interfacepmat_1_1inv.html#a0e5af0717d280cd08ef53594d6162226',1,'pmat::inv::dinvmtf()'],['../pmat_8f90.html#a8299294f6e383b9be82dc715d9799994',1,'pmat::dinvmtf()']]], + ['dinvu',['dinvu',['../interfacepmat_1_1invu.html#a6ee1bcd5ad53fb336ec333f55a7354a0',1,'pmat::invu::dinvu()'],['../pmat_8f90.html#a5a0be795be2eb1a8b5fc32437056024e',1,'pmat::dinvu()']]], + ['dl1lm',['dl1lm',['../pmat_8f90.html#a581f37f3e10b26605939b9f5156c6739',1,'pmat']]], + ['dl1lmf',['dl1lmf',['../pmat_8f90.html#a3ce1933279800ac21369bff64c9d2a8f',1,'pmat']]], + ['dl1ubb',['DL1UBB',['../interfacepmat2_1_1l1ubb.html#a63e9d8d2a24ab985320bb1b97eedb179',1,'pmat2::l1ubb::DL1UBB()'],['../namespacepmat2.html#a62efec5006a8c9699b6ed7bbe2b3f160',1,'pmat2::DL1UBB()']]], + ['dl1ueb',['DL1UEB',['../interfacepmat2_1_1l1ueb.html#ad9ebaf4646bac275bc3509fe95c1ebd9',1,'pmat2::l1ueb::DL1UEB()'],['../namespacepmat2.html#a5a1def5de47df0f900e0744dffa418f8',1,'pmat2::DL1UEB()']]], + ['dldlm',['dldlm',['../pmat_8f90.html#ae3fb3004218867f277158575acedee5c',1,'pmat']]], + ['dldlmf',['dldlmf',['../pmat_8f90.html#af0dab32a7dd0aba890b0f63a112a8c80',1,'pmat']]], + ['dldltb',['DLDLTB',['../interfacepmat2_1_1ldltb.html#a9cd9c8a7e9598f2ea4e6fde216c0faae',1,'pmat2::ldltb::DLDLTB()'],['../namespacepmat2.html#a449c158bfacefb689c7a67d9d1f2e0fc',1,'pmat2::DLDLTB()']]], + ['dldub',['DLDUB',['../interfacepmat2_1_1ldub.html#a4f97445ab31ad5601c7d470c4889fb75',1,'pmat2::ldub::DLDUB()'],['../namespacepmat2.html#a13362c9a51bfa43b885e3e1dc0885feb',1,'pmat2::DLDUB()']]], + ['dldum',['dldum',['../interfacepmat_1_1ldum.html#a6a216a04983cffae1ee410a9a20c80fe',1,'pmat::ldum::dldum()'],['../pmat_8f90.html#a8a5e2dd82a077ac98f57ed1a4ed5e433',1,'pmat::dldum()']]], + ['dldumf',['dldumf',['../interfacepmat_1_1ldum.html#aa6f0f6dfba710cb16ff8263de6cfc1a8',1,'pmat::ldum::dldumf()'],['../pmat_8f90.html#a02ab16ee448b68fe02f74287fdd5258f',1,'pmat::dldumf()']]], + ['dlinlv',['dlinlv',['../interfacepmat_1_1invl.html#aa7e3ce03e5f8ab85ef0ab4ea76d99efa',1,'pmat::invl::dlinlv()'],['../pmat_8f90.html#a26a01faeaa2ef72c7e235fe9817cc3de',1,'pmat::dlinlv()']]], + ['dlinmmt',['dlinmmt',['../interfacepmat_1_1inv.html#ac852f38632b6af926623aa6ecb032602',1,'pmat::inv::dlinmmt()'],['../pmat_8f90.html#ad6dd2dbd4aefceee6ba7bc5358b46401',1,'pmat::dlinmmt()']]], + ['dlinmmtf',['dlinmmtf',['../interfacepmat_1_1inv.html#ad33a2f9c64003ef70aeb939e756acb1c',1,'pmat::inv::dlinmmtf()'],['../pmat_8f90.html#ad488bc4521e04843f72dc28f4653b1ff',1,'pmat::dlinmmtf()']]], + ['dlinmvt',['dlinmvt',['../interfacepmat_1_1inv.html#ad7c18732c70e958492f16f40ef771ae0',1,'pmat::inv::dlinmvt()'],['../pmat_8f90.html#ae18dfc718b63680ed68e2cfed436759d',1,'pmat::dlinmvt()']]], + ['dlinmvtf',['dlinmvtf',['../interfacepmat_1_1inv.html#a50026fe3078497880c97c984ce7de96d',1,'pmat::inv::dlinmvtf()'],['../pmat_8f90.html#a485292f517d1258b62751dcf116db133',1,'pmat::dlinmvtf()']]], + ['dlinuv',['dlinuv',['../interfacepmat_1_1invu.html#a8633f57d3ce40c0ecd00ec72d4254068',1,'pmat::invu::dlinuv()'],['../pmat_8f90.html#a7dc0cf519521ccaa2412ccc7e4f852f2',1,'pmat::dlinuv()']]], + ['dlltoxy_5fd',['dlltoxy_d',['../interfacepmat4_1_1dlltoxy.html#adaa9521f767a578f2d552e94359b1486',1,'pmat4::dlltoxy::dlltoxy_d()'],['../namespacepmat4.html#ab8e89e0ff71497684032ead204fd1491',1,'pmat4::dlltoxy_d()']]], + ['dlltoxy_5fs',['dlltoxy_s',['../interfacepmat4_1_1dlltoxy.html#a0ec2abbf63c29f2c3fb329353a13bde8',1,'pmat4::dlltoxy::dlltoxy_s()'],['../namespacepmat4.html#a8b9f878749f257db635b48ff1ba8bc9a',1,'pmat4::dlltoxy_s()']]], + ['dltdlbv',['dltdlbv',['../interfacepmat2_1_1ltdlbv.html#ad52a67325d4326691f4b633ab04c6c13',1,'pmat2::ltdlbv::dltdlbv()'],['../namespacepmat2.html#acdaee1ba7c588248c79f26462c84bf0c',1,'pmat2::dltdlbv()']]], + ['dplrot',['dplrot',['../interfacepmat5_1_1plrot.html#a9947d2785405b248db1f652ebf4c2f3a',1,'pmat5::plrot::dplrot()'],['../namespacepmat5.html#ad70f27c21aac45e54af9b2b696419809',1,'pmat5::dplrot()']]], + ['dplroti',['dplroti',['../interfacepmat5_1_1plroti.html#afefd1c1a61a6e0e64d7ff7e30c2581dc',1,'pmat5::plroti::dplroti()'],['../namespacepmat5.html#a3069df15efa59d1d48a4c4a221dd201d',1,'pmat5::dplroti()']]], + ['dqarea_5fd',['dqarea_d',['../interfacepmat4_1_1sarea.html#a3ab1d3237c0e31432e8da680c59fd575',1,'pmat4::sarea::dqarea_d()'],['../namespacepmat4.html#abd57a3c8dd6d473a2b7a4e237bd9de0f',1,'pmat4::dqarea_d()']]], + ['dqarea_5fs',['dqarea_s',['../interfacepmat4_1_1sarea.html#a8c800004aa4b350ab40463a8abc3b85a',1,'pmat4::sarea::dqarea_s()'],['../namespacepmat4.html#a81a9dabd946a63e494f3e2a81d82f82a',1,'pmat4::dqarea_s()']]], + ['dswpvv',['dswpvv',['../interfacepmat_1_1swpvv.html#a9773c2718b70d805c2bb3aac6b448930',1,'pmat::swpvv::dswpvv()'],['../pmat_8f90.html#a74f5d0fdbcaf59bedf21da3432ea3a14',1,'pmat::dswpvv()']]], + ['dtarea_5fd',['dtarea_d',['../interfacepmat4_1_1sarea.html#a4362b81c866aa2319a5dc91dab11aeac',1,'pmat4::sarea::dtarea_d()'],['../namespacepmat4.html#aef0bd16dbf6eb59c5ee127188ac62a95',1,'pmat4::dtarea_d()']]], + ['dtarea_5fs',['dtarea_s',['../interfacepmat4_1_1sarea.html#a364f46cd3d4a9bec95d18398b2eff92c',1,'pmat4::sarea::dtarea_s()'],['../namespacepmat4.html#ae2a0a54e6946512c65585b15ecd2f112',1,'pmat4::dtarea_s()']]], + ['dudlb',['DUDLB',['../interfacepmat2_1_1udlb.html#a312cae0e3431b93713f6f770e00dce89',1,'pmat2::udlb::DUDLB()'],['../namespacepmat2.html#a8590ff2084555b8ade6ec593e92285a0',1,'pmat2::DUDLB()']]], + ['dudlbv',['dudlbv',['../interfacepmat2_1_1udlbv.html#ab38365f81aa10f5094ebdbc9646e6fd5',1,'pmat2::udlbv::dudlbv()'],['../namespacepmat2.html#a9798fa383265eeaf98c2d7400ef5bc8e',1,'pmat2::dudlbv()']]], + ['dudlmm',['dudlmm',['../interfacepmat_1_1udlmm.html#a73d9a8eea89f8091a7c37fcb058b47fa',1,'pmat::udlmm::dudlmm()'],['../pmat_8f90.html#af34f6abbad1377098823de8461ef3950',1,'pmat::dudlmm()']]], + ['dudlmv',['dudlmv',['../interfacepmat_1_1udlmm.html#a4e2544a369ccd3c02e71f04f1daee2f3',1,'pmat::udlmm::dudlmv()'],['../pmat_8f90.html#a9d1caf30f25b173377120f68e0549ebb',1,'pmat::dudlmv()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_4.html b/ver-1.11.0/grid_tools/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_4.js b/ver-1.11.0/grid_tools/search/functions_4.js new file mode 100644 index 000000000..22dcb0003 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_4.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['eigensym2',['eigensym2',['../interfacepsym2_1_1eigensym2.html#a4fa5b26fc1796b8398f031756f62841c',1,'psym2::eigensym2::eigensym2()'],['../namespacepsym2.html#a790d98323182c2f9bdd2cbbf4824a694',1,'psym2::eigensym2()']]], + ['eigensym2d',['eigensym2d',['../interfacepsym2_1_1eigensym2.html#aecba5ed0693b6f83b9eb553bfe9d01b5',1,'psym2::eigensym2::eigensym2d()'],['../namespacepsym2.html#a4a0b47ffdfde7631a62dba87d6d4e62c',1,'psym2::eigensym2d()']]], + ['expmat',['expmat',['../interfacepmat4_1_1expmat.html#abbd074f63d8c46aea50cbf6c2d0a1392',1,'pmat4::expmat::expmat()'],['../namespacepmat4.html#aabc881074a8327ba35e6e489b50d8d9b',1,'pmat4::expmat()']]], + ['expmatd',['expmatd',['../interfacepmat4_1_1expmat.html#a89b12c97be6694f6cbdeec7552d2222c',1,'pmat4::expmat::expmatd()'],['../namespacepmat4.html#a299ee2005b886da1f3a8372558355cbb',1,'pmat4::expmatd()']]], + ['expmatdd',['expmatdd',['../interfacepmat4_1_1expmat.html#a821d8d28424ffda8eab61dc18e916b8a',1,'pmat4::expmat::expmatdd()'],['../namespacepmat4.html#a7be59f4cbe597ab23b4fef5b2ddf4b70',1,'pmat4::expmatdd()']]], + ['expsym2',['expsym2',['../interfacepsym2_1_1expsym2.html#a0538fbed93ca5ebf63a98118812c2108',1,'psym2::expsym2::expsym2()'],['../namespacepsym2.html#a4ed3850a40ba5cef460ff8fd032c1df5',1,'psym2::expsym2()']]], + ['expsym2d',['expsym2d',['../interfacepsym2_1_1expsym2.html#ac6c2a91a63d5c756abaa9e32c84009cd',1,'psym2::expsym2::expsym2d()'],['../namespacepsym2.html#a2eb5c916388fb0e526188b32d08986b7',1,'psym2::expsym2d()']]], + ['expsym2d_5fe',['expsym2d_e',['../interfacepsym2_1_1expsym2d__e.html#a5cfc49bc53c06a47d49648bb401d4913',1,'psym2::expsym2d_e::expsym2d_e()'],['../namespacepsym2.html#a18dceeb94548f587a55d638463617c7f',1,'psym2::expsym2d_e()']]], + ['expsym2d_5ft',['expsym2d_t',['../interfacepsym2_1_1expsym2d__t.html#a789a2d2a1d3aca671bf4de8997681ad3',1,'psym2::expsym2d_t::expsym2d_t()'],['../namespacepsym2.html#ad9bc792f9b0c7b86306a4101a3af6ddb',1,'psym2::expsym2d_t()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_5.html b/ver-1.11.0/grid_tools/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_5.js b/ver-1.11.0/grid_tools/search/functions_5.js new file mode 100644 index 000000000..6a6ef213e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['fill_5fagrid_5fscalar_5fcorners',['fill_AGRID_scalar_corners',['../filter__topo_8F90.html#afbf523660c495eba39b03c488603e39e',1,'filter_topo.F90']]], + ['fill_5fagrid_5fxy_5fcorners',['fill_AGRID_xy_corners',['../filter__topo_8F90.html#add46a0ed8b05639ed61af504527f279d',1,'filter_topo.F90']]], + ['fill_5fbgrid_5fscalar_5fcorners',['fill_BGRID_scalar_corners',['../filter__topo_8F90.html#a8909e0690277954b158ffb06ccaf99ed',1,'filter_topo.F90']]], + ['fill_5fcubic_5fgrid_5fhalo',['fill_cubic_grid_halo',['../filter__topo_8F90.html#aa4c33c4ce544e71e4f38da43fea552e0',1,'filter_topo.F90']]], + ['fill_5fdgrid_5fxy_5fcorners',['fill_DGRID_xy_corners',['../filter__topo_8F90.html#ada6d23dc5a282ec74dfd6191605d54e5',1,'filter_topo.F90']]], + ['fill_5fregional_5fhalo',['fill_regional_halo',['../namespaceutils.html#a3104e7e7b180787408ded9cfe521b7b8',1,'utils']]], + ['filter_5ftopo',['filter_topo',['../filter__topo_8F90.html#a8160043e7e9d4afe2362292926087e3f',1,'filter_topo.F90']]], + ['frametwist',['frametwist',['../interfacepmat5_1_1frametwist.html#a1810c74f2b72abc08f36c26d20ee664c',1,'pmat5::frametwist::frametwist()'],['../namespacepmat5.html#a003130a328412d6651f2170670c67f33',1,'pmat5::frametwist()']]], + ['fv3_5fzs_5ffilter',['FV3_zs_filter',['../filter__topo_8F90.html#a53576f546c3c958cf8b95fdc01b063dd',1,'filter_topo.F90']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_6.html b/ver-1.11.0/grid_tools/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_6.js b/ver-1.11.0/grid_tools/search/functions_6.js new file mode 100644 index 000000000..f9e6de2ad --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_6.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['gaulegh',['gaulegh',['../interfacepesg_1_1gaulegh.html#afe168e8a4b4e7d74529145284abe6f7d',1,'pesg::gaulegh::gaulegh()'],['../namespacepesg.html#a746e360a259db39d63e1158569a9fbb8',1,'pesg::gaulegh()']]], + ['gd_5fd',['gd_d',['../interfacepfun_1_1gd.html#a50c7186779f3277d102b48b4db383d82',1,'pfun::gd::gd_d()'],['../namespacepfun.html#a3355d682c6e07927413bdaff27ba7cc2',1,'pfun::gd_d()']]], + ['gd_5fs',['gd_s',['../interfacepfun_1_1gd.html#a66b921b3cfabbce309388eeb55329f08',1,'pfun::gd::gd_s()'],['../namespacepfun.html#a4b18f6596a6211a3454d798ca31bcdb8',1,'pfun::gd_s()']]], + ['gdi_5fd',['gdi_d',['../interfacepfun_1_1gdi.html#a1670d15b2ef8d89eb4f803eda27fef9d',1,'pfun::gdi::gdi_d()'],['../namespacepfun.html#a611c488cc566733f2507a7bd368a5fc4',1,'pfun::gdi_d()']]], + ['gdi_5fs',['gdi_s',['../interfacepfun_1_1gdi.html#ad8f5d75ea5c9582a611896c9c8e2612b',1,'pfun::gdi::gdi_s()'],['../namespacepfun.html#a6255f8f40118b070a86cb9615d7f7101',1,'pfun::gdi_s()']]], + ['get_5farea',['get_area',['../filter__topo_8F90.html#a9d5af5d3196c9d664733b8c126d12656',1,'filter_topo.F90']]], + ['get_5fedges',['get_edges',['../interfacepesg_1_1get__edges.html#a2567fee33d1896d51f62813f9cc9edb0',1,'pesg::get_edges::get_edges()'],['../namespacepesg.html#ac2d1049cd6301974935cf9ffa9486616',1,'pesg::get_edges()']]], + ['get_5fmeanqd',['get_meanqd',['../interfacepesg_1_1get__meanq.html#a13bada4885b90600bffe0e72c198487f',1,'pesg::get_meanq::get_meanqd()'],['../namespacepesg.html#a0c2a93c3e3635de61d57ad3edd719a4c',1,'pesg::get_meanqd()']]], + ['get_5fmeanqs',['get_meanqs',['../interfacepesg_1_1get__meanq.html#afd5d2fefa922c7f25911d3ec85fdc2c9',1,'pesg::get_meanq::get_meanqs()'],['../namespacepesg.html#af356d7aa00db9deeaaf2223e2b9cf23f',1,'pesg::get_meanqs()']]], + ['get_5fqofv',['get_qofv',['../interfacepesg_1_1get__qofv.html#aeb424866c84641a3c74a385b45c6a4e2',1,'pesg::get_qofv::get_qofv()'],['../namespacepesg.html#a2d1f5bfe4e8ff8520662549860fb0048',1,'pesg::get_qofv()']]], + ['get_5fqofvd',['get_qofvd',['../interfacepesg_1_1get__qofv.html#a9c94c901c2a3489187295372cef8b978',1,'pesg::get_qofv::get_qofvd()'],['../namespacepesg.html#abd812e3b4e112502db1eefbc27687452',1,'pesg::get_qofvd()']]], + ['get_5fqsofvs',['get_qsofvs',['../interfacepesg_1_1get__qofv.html#a63a7edd08c8e3fd95e09a7fadb56db5a',1,'pesg::get_qofv::get_qsofvs()'],['../namespacepesg.html#a1ce5f976f4e335f7c3711c8262e0a7d7',1,'pesg::get_qsofvs()']]], + ['get_5fqx',['get_qx',['../interfacepesg_1_1get__qx.html#a7d66f24a78ff7ed91dbdb54ac0b9ccf6',1,'pesg::get_qx::get_qx()'],['../namespacepesg.html#af9c7f9dfc44f9638a3832c39cb87bf62',1,'pesg::get_qx()']]], + ['get_5fqxd',['get_qxd',['../interfacepesg_1_1get__qx.html#a2f9061aa3a42063e28bb379bc4d4e13c',1,'pesg::get_qx::get_qxd()'],['../namespacepesg.html#a6c51ec9c9b6f0396f6811afaf053003c',1,'pesg::get_qxd()']]], + ['global_5fequiv_5fresol',['global_equiv_resol',['../global__equiv__resol_8f90.html#ac7c17106d99b979f5c9b65d79b0faa95',1,'global_equiv_resol.f90']]], + ['gram_5fd',['gram_d',['../interfacepmat4_1_1gram.html#ac99bc810d03adcde04de5082aa5d8ae6',1,'pmat4::gram::gram_d()'],['../namespacepmat4.html#ab7089a1ca01eb147693f2934c04d19a7',1,'pmat4::gram_d()']]], + ['gram_5fs',['gram_s',['../interfacepmat4_1_1gram.html#a3d5540c4a9a67523e3ef85b431b213a7',1,'pmat4::gram::gram_s()'],['../namespacepmat4.html#aade64d36f392c897af58d41439fd3901',1,'pmat4::gram_s()']]], + ['graml_5fd',['graml_d',['../interfacepmat4_1_1gram.html#a7bcd28377941ae9b77b1900ad6eed5ed',1,'pmat4::gram::graml_d()'],['../namespacepmat4.html#a258deaab20439a12318abdf11bcfb21c',1,'pmat4::graml_d()']]], + ['great_5fcircle_5fdist',['great_circle_dist',['../filter__topo_8F90.html#ab7efdbd3670acafb99d01346069d7c53',1,'filter_topo.F90']]], + ['gtoframem',['gtoframem',['../interfacepmat5_1_1gtoframe.html#aecd5c543114ed58377e9c6dca455182d',1,'pmat5::gtoframe::gtoframem()'],['../namespacepmat5.html#ac105f0c4e3ea9e7b2dbfb9a9d6f9f97e',1,'pmat5::gtoframem()']]], + ['gtoframev',['gtoframev',['../interfacepmat5_1_1gtoframe.html#a916e166ff2a86a9d3888728aa6d364dc',1,'pmat5::gtoframe::gtoframev()'],['../namespacepmat5.html#a277a5dc65adacdfda2ceefa3485a34a9',1,'pmat5::gtoframev()']]], + ['gtoxm_5fak_5fdd_5fg',['gtoxm_ak_dd_g',['../interfacepesg_1_1gtoxm__ak__dd.html#ac1071d57180a7703340a3ba0e9755d0b',1,'pesg::gtoxm_ak_dd::gtoxm_ak_dd_g()'],['../namespacepesg.html#aa65c5b5e54a03ce01b07070022dda5f5',1,'pesg::gtoxm_ak_dd_g()']]], + ['gtoxm_5fak_5fdd_5fm',['gtoxm_ak_dd_m',['../interfacepesg_1_1gtoxm__ak__dd.html#af90c23ad50d9a59a6c7fd4fda9f78195',1,'pesg::gtoxm_ak_dd::gtoxm_ak_dd_m()'],['../namespacepesg.html#ab803ad3d6f3cbf8858804822ffac2ac7',1,'pesg::gtoxm_ak_dd_m()']]], + ['gtoxm_5fak_5frr_5fg',['gtoxm_ak_rr_g',['../interfacepesg_1_1gtoxm__ak__rr.html#a6eaa19a4e531fdc6fccb2fe9b3154443',1,'pesg::gtoxm_ak_rr::gtoxm_ak_rr_g()'],['../namespacepesg.html#a50c059ec290acbbd18d3be0a0a873517',1,'pesg::gtoxm_ak_rr_g()']]], + ['gtoxm_5fak_5frr_5fm',['gtoxm_ak_rr_m',['../interfacepesg_1_1gtoxm__ak__rr.html#a11e3d13ce4dc1c0ca5afcc890d2b0da1',1,'pesg::gtoxm_ak_rr::gtoxm_ak_rr_m()'],['../namespacepesg.html#ac0a284cc4ec645ebfe7ef4c01c18b930',1,'pesg::gtoxm_ak_rr_m()']]], + ['guessak_5fgeo',['guessak_geo',['../interfacepesg_1_1guessak__geo.html#ab956aa430e69602167fd715e75f85d29',1,'pesg::guessak_geo::guessak_geo()'],['../namespacepesg.html#ae76f750095dd1ba202e985abe4e487e8',1,'pesg::guessak_geo()']]], + ['guessak_5fmap',['guessak_map',['../interfacepesg_1_1guessak__map.html#a9e8b6c869d7c64a90e8d2482bf72c137',1,'pesg::guessak_map::guessak_map()'],['../namespacepesg.html#a475335b2f115cf7ddde8854249f4aaba',1,'pesg::guessak_map()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_7.html b/ver-1.11.0/grid_tools/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_7.js b/ver-1.11.0/grid_tools/search/functions_7.js new file mode 100644 index 000000000..90783e954 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_7.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['handle_5ferr',['handle_err',['../namespaceutils.html#a970642bec191e4bb7ee405787c192122',1,'utils']]], + ['hav_5fd',['hav_d',['../interfacepfun_1_1hav.html#aaf9f06e8e5b6f13a13223303db85e839',1,'pfun::hav::hav_d()'],['../interfacepmat4_1_1hav.html#a7fb964d0334ded97b401e4c1fb7c6d19',1,'pmat4::hav::hav_d()'],['../namespacepfun.html#a9ed21fd1a8d21150853b573d9008f89d',1,'pfun::hav_d()'],['../namespacepmat4.html#ad6d025b44412ad3f00d78bf8349f9e29',1,'pmat4::hav_d()']]], + ['hav_5fs',['hav_s',['../interfacepfun_1_1hav.html#a464148193f6ee1520f1afa7be42ab7c2',1,'pfun::hav::hav_s()'],['../interfacepmat4_1_1hav.html#a86d62599792a20c1369f057c9f9aeaf1',1,'pmat4::hav::hav_s()'],['../namespacepfun.html#a26da582899cece6a52292d701e74e33b',1,'pfun::hav_s()'],['../namespacepmat4.html#a8bbb7bd988101945eb216beebc4fb2f0',1,'pmat4::hav_s()']]], + ['havh_5fd',['havh_d',['../interfacepfun_1_1havh.html#a8b5f748c23a72f0c0c8b29cbcffdf04e',1,'pfun::havh::havh_d()'],['../namespacepfun.html#a61e1cd121ac958c16818f19ce9f34646',1,'pfun::havh_d()']]], + ['havh_5fs',['havh_s',['../interfacepfun_1_1havh.html#a976cd89ada48113173bc41db19e3e31d',1,'pfun::havh::havh_s()'],['../namespacepfun.html#ab26cf04a050097dff9d91d000ec86eaa',1,'pfun::havh_s()']]], + ['hgrid_5fak',['hgrid_ak',['../interfacepesg_1_1hgrid__ak.html#a2c468c9be70c50df8666c7dec8969112',1,'pesg::hgrid_ak::hgrid_ak()'],['../namespacepesg.html#a0c7f1e64257cb704378e12591faf895d',1,'pesg::hgrid_ak()']]], + ['hgrid_5fak_5fc',['hgrid_ak_c',['../interfacepesg_1_1hgrid__ak.html#a3554220b0cd6349e118b780b1b430366',1,'pesg::hgrid_ak::hgrid_ak_c()'],['../namespacepesg.html#acf47d02792cc2e34cee6e20da25ee212',1,'pesg::hgrid_ak_c()']]], + ['hgrid_5fak_5fdc',['hgrid_ak_dc',['../interfacepesg_1_1hgrid__ak__dc.html#a1adcff5ff5e1af4ed869ca558273cbb4',1,'pesg::hgrid_ak_dc::hgrid_ak_dc()'],['../namespacepesg.html#a41d995a58d366d36942a51e0e88e9987',1,'pesg::hgrid_ak_dc()']]], + ['hgrid_5fak_5fdd',['hgrid_ak_dd',['../interfacepesg_1_1hgrid__ak__dd.html#adf29825e0ec6d723f1b34d603d54ce55',1,'pesg::hgrid_ak_dd::hgrid_ak_dd()'],['../namespacepesg.html#a8b4abffb6f22a026c43a960a524e711c',1,'pesg::hgrid_ak_dd()']]], + ['hgrid_5fak_5fdd_5fc',['hgrid_ak_dd_c',['../interfacepesg_1_1hgrid__ak__dd.html#a4c25db01cd4089ea7ddfb6e766200127',1,'pesg::hgrid_ak_dd::hgrid_ak_dd_c()'],['../namespacepesg.html#a8c7cd32a349e41308d43ccb10f47a5e9',1,'pesg::hgrid_ak_dd_c()']]], + ['hgrid_5fak_5frc',['hgrid_ak_rc',['../interfacepesg_1_1hgrid__ak__rc.html#a4c195203e881120327dab22b1ab5a288',1,'pesg::hgrid_ak_rc::hgrid_ak_rc()'],['../namespacepesg.html#afae7d39e7d0315a7b11db90f68231096',1,'pesg::hgrid_ak_rc()']]], + ['hgrid_5fak_5frr',['hgrid_ak_rr',['../interfacepesg_1_1hgrid__ak__rr.html#a05ca3c2a8715f34ff41cab3f46c0d58f',1,'pesg::hgrid_ak_rr::hgrid_ak_rr()'],['../namespacepesg.html#ad431931d2cd387f284d9fd7175d66a84',1,'pesg::hgrid_ak_rr()']]], + ['hgrid_5fak_5frr_5fc',['hgrid_ak_rr_c',['../interfacepesg_1_1hgrid__ak__rr.html#a61f700277c49083334f4defac4f44b93',1,'pesg::hgrid_ak_rr::hgrid_ak_rr_c()'],['../namespacepesg.html#a2a47e8a580093c4d81d1c413235dba5a',1,'pesg::hgrid_ak_rr_c()']]], + ['huarea_5fd',['huarea_d',['../interfacepmat4_1_1huarea.html#aebe44782788b625f8e40564f01dfa2d9',1,'pmat4::huarea::huarea_d()'],['../namespacepmat4.html#a878838ecb93924d96ae6f2201d4e295e',1,'pmat4::huarea_d()']]], + ['huarea_5fs',['huarea_s',['../interfacepmat4_1_1huarea.html#abb9f1f858de9338733356011b044e8fb',1,'pmat4::huarea::huarea_s()'],['../namespacepmat4.html#ad8f31b798b7f9ef52558279f17cdb1e2',1,'pmat4::huarea_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_8.html b/ver-1.11.0/grid_tools/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_8.js b/ver-1.11.0/grid_tools/search/functions_8.js new file mode 100644 index 000000000..556288d03 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['id2222',['id2222',['../interfacepsym2_1_1id2222.html#aaec218b49c942a7f18acbad232a5bb4c',1,'psym2::id2222::id2222()'],['../namespacepsym2.html#a170abd6782770d7752a65bd53817a165',1,'psym2::id2222()']]], + ['identity3_5fi',['identity3_i',['../interfacepmat4_1_1identity.html#a491591cb27e0cdd6cce72ed2e867f21a',1,'pmat4::identity::identity3_i()'],['../namespacepmat4.html#a50f1d1ef0c666fd608e635204a0d4650',1,'pmat4::identity3_i()']]], + ['identity_5fi',['identity_i',['../interfacepmat4_1_1identity.html#aba77f6a7758d868a477b371356536884',1,'pmat4::identity::identity_i()'],['../namespacepmat4.html#ab32d3dba8b9ac02e54b6147cec97ee54',1,'pmat4::identity_i()']]], + ['iinvf',['iinvf',['../interfacepmat_1_1inv.html#a1154ad662cfccc73ce167321b4d762df',1,'pmat::inv::iinvf()'],['../pmat_8f90.html#aa6c568105ff3348951ef98425fdfb46f',1,'pmat::iinvf()']]], + ['invsym2',['invsym2',['../interfacepsym2_1_1invsym2.html#adddf4e696d07a189431ee07285d713d5',1,'psym2::invsym2::invsym2()'],['../namespacepsym2.html#a8df1637f27ef025b30e90ca7e97f2c4d',1,'psym2::invsym2()']]], + ['invsym2d',['invsym2d',['../interfacepsym2_1_1invsym2.html#ad70d53880de5c19aa0147d40e7fd3b31',1,'psym2::invsym2::invsym2d()'],['../namespacepsym2.html#a895348d1d6e4bbebded2e0be29c50e18',1,'psym2::invsym2d()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_9.html b/ver-1.11.0/grid_tools/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_9.js b/ver-1.11.0/grid_tools/search/functions_9.js new file mode 100644 index 000000000..f979a1a6e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['l1ubb',['L1UBB',['../interfacepmat2_1_1l1ubb.html#aa9450336a73dd3f95870dd1d2623557f',1,'pmat2::l1ubb::L1UBB()'],['../namespacepmat2.html#af17823af72f85f8ee3d63b2e496366b6',1,'pmat2::L1UBB()']]], + ['l1ueb',['L1UEB',['../interfacepmat2_1_1l1ueb.html#adb4a6107e3e9389c7cdcfbc9ff76be02',1,'pmat2::l1ueb::L1UEB()'],['../namespacepmat2.html#a1d97a2f43e9e29c035c0a11fe4ae0c6f',1,'pmat2::L1UEB()']]], + ['latlon2xyz',['latlon2xyz',['../filter__topo_8F90.html#a269a68f22ed721deddc0c2c033796ebe',1,'filter_topo.F90']]], + ['ldltb',['LDLTB',['../interfacepmat2_1_1ldltb.html#abd6f9634b50c0aa2b117f17f0fbc8571',1,'pmat2::ldltb::LDLTB()'],['../namespacepmat2.html#a24eaac0513ed6ae836f329464323bfcb',1,'pmat2::LDLTB()']]], + ['ldub',['LDUB',['../interfacepmat2_1_1ldub.html#a0b6ba04df748e267fe8162929b30b31c',1,'pmat2::ldub::LDUB()'],['../namespacepmat2.html#a68c6ad18dd5b834d371bdbdec1438586',1,'pmat2::LDUB()']]], + ['linbv',['LINBV',['../interfacepmat2_1_1linbv.html#a1dd40614e16f594e05a811388a697cdd',1,'pmat2::linbv::LINBV()'],['../namespacepmat2.html#a50b8a82c6c2b60413602c81c7288cfe0',1,'pmat2::LINBV()']]], + ['logsym2',['logsym2',['../interfacepsym2_1_1logsym2.html#ad4cfa73f0dd05dc012dfa2c48e06f12a',1,'psym2::logsym2::logsym2()'],['../namespacepsym2.html#a14308a48d1f03e4660146aa91dbe4f50',1,'psym2::logsym2()']]], + ['logsym2d',['logsym2d',['../interfacepsym2_1_1logsym2.html#a9f8f85214d8253acf9d4651c88e2ac1e',1,'psym2::logsym2::logsym2d()'],['../namespacepsym2.html#a19364061a64c8eb98c82abb1b733b804',1,'psym2::logsym2d()']]], + ['ltdlbv',['ltdlbv',['../interfacepmat2_1_1ltdlbv.html#a256952d13f24070b486c9243cd1aa270',1,'pmat2::ltdlbv::ltdlbv()'],['../namespacepmat2.html#abbddde193b71f87e3a9278b3829a132a',1,'pmat2::ltdlbv()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_a.html b/ver-1.11.0/grid_tools/search/functions_a.html new file mode 100644 index 000000000..3958eb7b9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_a.js b/ver-1.11.0/grid_tools/search/functions_a.js new file mode 100644 index 000000000..13f355661 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['mid_5fpt3_5fcart',['mid_pt3_cart',['../filter__topo_8F90.html#a0304bc57977aa4400723fcabaf77b730',1,'filter_topo.F90']]], + ['mid_5fpt_5fsphere',['mid_pt_sphere',['../filter__topo_8F90.html#ac0b3cdd4924ded0ba7623f19f3cca62f',1,'filter_topo.F90']]], + ['mulqq',['mulqq',['../interfacepmat4_1_1mulqq.html#af65882e7f4bb1c82c72983fb478b5640',1,'pmat4::mulqq::mulqq()'],['../namespacepmat4.html#a8c72227238a4a77ec3b8fa7d5b801a9f',1,'pmat4::mulqq()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_b.html b/ver-1.11.0/grid_tools/search/functions_b.html new file mode 100644 index 000000000..b99b702d2 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_b.js b/ver-1.11.0/grid_tools/search/functions_b.js new file mode 100644 index 000000000..509cd4d2c --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['normalize_5fd',['normalize_d',['../interfacepmat4_1_1normalize.html#a0e97d1c0ce14237b2b2ac3f3ce908f4d',1,'pmat4::normalize::normalize_d()'],['../namespacepmat4.html#ac0d1be13ba1560f58f812bc6b81d998c',1,'pmat4::normalize_d()']]], + ['normalize_5fs',['normalize_s',['../interfacepmat4_1_1normalize.html#a125e1f3f3574d5d7d8976ad4de3940dd',1,'pmat4::normalize::normalize_s()'],['../namespacepmat4.html#ac1b8cee865a9391009abccaf9f7cfd50',1,'pmat4::normalize_s()']]], + ['normalized_5fd',['normalized_d',['../interfacepmat4_1_1normalized.html#a773f419aed5b10a11409eadce15b7c4d',1,'pmat4::normalized::normalized_d()'],['../namespacepmat4.html#af9d31fb0571560ba46d2c2798bdbd6a8',1,'pmat4::normalized_d()']]], + ['normalized_5fs',['normalized_s',['../interfacepmat4_1_1normalized.html#af3d523bbef3d04c373c308706c96668b',1,'pmat4::normalized::normalized_s()'],['../namespacepmat4.html#a6a00630db390bcbc0588f5f22bf6db07',1,'pmat4::normalized_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_c.html b/ver-1.11.0/grid_tools/search/functions_c.html new file mode 100644 index 000000000..3a33d874d --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_c.js b/ver-1.11.0/grid_tools/search/functions_c.js new file mode 100644 index 000000000..414da6815 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['orthogonalized_5fd',['orthogonalized_d',['../interfacepmat4_1_1orthogonalized.html#ac1115de7970e5376add791ed9be37378',1,'pmat4::orthogonalized::orthogonalized_d()'],['../namespacepmat4.html#ae6a1fd6367b43245e70f59952ffd7a57',1,'pmat4::orthogonalized_d()']]], + ['orthogonalized_5fs',['orthogonalized_s',['../interfacepmat4_1_1orthogonalized.html#aae6dfe3f9e03838ab8b26685e7ba4142',1,'pmat4::orthogonalized::orthogonalized_s()'],['../namespacepmat4.html#a4018eff72c43e01ab75164f6d71f694f',1,'pmat4::orthogonalized_s()']]], + ['outer_5fproduct_5fd',['outer_product_d',['../interfacepmat4_1_1outer__product.html#aa834bdb1756a4fe54ca51f210f57ea1e',1,'pmat4::outer_product::outer_product_d()'],['../namespacepmat4.html#a907c7e2db1047e361447671074f0200b',1,'pmat4::outer_product_d()']]], + ['outer_5fproduct_5fi',['outer_product_i',['../interfacepmat4_1_1outer__product.html#a6fc58c52c45a60a1c5ec7c75fbd1d8b9',1,'pmat4::outer_product::outer_product_i()'],['../namespacepmat4.html#a7fc06110c264999b4c64f346b1ff9bb0',1,'pmat4::outer_product_i()']]], + ['outer_5fproduct_5fs',['outer_product_s',['../interfacepmat4_1_1outer__product.html#a5fd0b14dfe070404214360293b3c8545',1,'pmat4::outer_product::outer_product_s()'],['../namespacepmat4.html#aed6c0b71d1632c507f4d8519de674d62',1,'pmat4::outer_product_s()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_d.html b/ver-1.11.0/grid_tools/search/functions_d.html new file mode 100644 index 000000000..31b75b889 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_d.js b/ver-1.11.0/grid_tools/search/functions_d.js new file mode 100644 index 000000000..7e689ffa6 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['paraframe',['paraframe',['../interfacepmat5_1_1paraframe.html#a096376a6e5b873c7aa2d20a42128506e',1,'pmat5::paraframe::paraframe()'],['../namespacepmat5.html#a78b960d2f79b61eb0b8ba948e7434b26',1,'pmat5::paraframe()']]], + ['plaingram_5fd',['plaingram_d',['../interfacepmat4_1_1gram.html#a603138feb36a4852fb47805ed57b5936',1,'pmat4::gram::plaingram_d()'],['../namespacepmat4.html#a9e4079cc069a9437a95fab4d685118cc',1,'pmat4::plaingram_d()']]], + ['plaingram_5fs',['plaingram_s',['../interfacepmat4_1_1gram.html#aa8d63ac5f26366320d83e91cd38ba0e6',1,'pmat4::gram::plaingram_s()'],['../namespacepmat4.html#ad3a4849081bf81dc9d37898d24d5b8a4',1,'pmat4::plaingram_s()']]], + ['plctoc',['plctoc',['../interfacepmat5_1_1plctoc.html#a68021c3029fa88132e844be08d4040cf',1,'pmat5::plctoc::plctoc()'],['../namespacepmat5.html#a9d457dd8eccb107f3759364690b747a5',1,'pmat5::plctoc()']]], + ['plrot',['plrot',['../interfacepmat5_1_1plrot.html#a8b2fdd45a529ed500bd71c219debfb45',1,'pmat5::plrot::plrot()'],['../namespacepmat5.html#a1b18ea18e804d2d7c8aa53156f88a01e',1,'pmat5::plrot()']]], + ['plroti',['plroti',['../interfacepmat5_1_1plroti.html#a6aa4b488c9d07d3549dab608e4f907a4',1,'pmat5::plroti::plroti()'],['../namespacepmat5.html#a24aab72dbcf7cf572f6c59a11586292a',1,'pmat5::plroti()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_e.html b/ver-1.11.0/grid_tools/search/functions_e.html new file mode 100644 index 000000000..cddb9bb58 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_e.js b/ver-1.11.0/grid_tools/search/functions_e.js new file mode 100644 index 000000000..1a2095c34 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['qtoax',['qtoax',['../interfacepmat4_1_1qtoax.html#a0896b667b401c8a30cd25b77f8bacc1a',1,'pmat4::qtoax::qtoax()'],['../namespacepmat4.html#a76968a32e6d0f32973cacda59b8fbf91',1,'pmat4::qtoax()']]], + ['qtorot',['qtorot',['../interfacepmat4_1_1qtorot.html#a2bddedc08d01eaca9153d5766e67d779',1,'pmat4::qtorot::qtorot()'],['../namespacepmat4.html#ab6e7bf2144ab8823f02c6a9e5db1b993',1,'pmat4::qtorot()']]], + ['qtospin',['qtospin',['../interfacepmat4_1_1qtospin.html#abbef88d45c74716b3228ebadd2bbc995',1,'pmat4::qtospin::qtospin()'],['../namespacepmat4.html#a2fdbe8c6acdb340d51225420e9dbbfdf',1,'pmat4::qtospin()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/functions_f.html b/ver-1.11.0/grid_tools/search/functions_f.html new file mode 100644 index 000000000..496729261 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/functions_f.js b/ver-1.11.0/grid_tools/search/functions_f.js new file mode 100644 index 000000000..1e60fc321 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/functions_f.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['read_5fgrid_5ffile',['read_grid_file',['../filter__topo_8F90.html#a785f23018f914203386301fbcf662368',1,'filter_topo.F90']]], + ['read_5fnamelist',['read_namelist',['../namespaceutils.html#ac90e26fad77fd27d0910be99d80bab73',1,'utils']]], + ['read_5ftopo_5ffile',['read_topo_file',['../filter__topo_8F90.html#ab3abc977e2ff801f9d8413e0a42ddd69',1,'filter_topo.F90']]], + ['regional_5fgrid',['regional_grid',['../regional__esg__grid_8f90.html#a5d27396a033fbebf9ad5e56a21048727',1,'regional_esg_grid.f90']]], + ['rottoax',['rottoax',['../interfacepmat4_1_1rottoax.html#a845bc750f57ee0372724bd8efe85ccb3',1,'pmat4::rottoax::rottoax()'],['../namespacepmat4.html#a3aebb288da3a12333ee14350e8db2e1e',1,'pmat4::rottoax()']]], + ['rottoq',['rottoq',['../interfacepmat4_1_1rottoq.html#a633827aeca9191e4a22aca3cf52fe7a1',1,'pmat4::rottoq::rottoq()'],['../namespacepmat4.html#ae16a6a537eb1fa4c611e7267973d7589',1,'pmat4::rottoq()']]], + ['rowgram',['rowgram',['../interfacepmat4_1_1gram.html#a908274e9676bb09bee522aefa6cef94a',1,'pmat4::gram::rowgram()'],['../namespacepmat4.html#a2187ea41676149982afbef613c2303d1',1,'pmat4::rowgram()']]], + ['rowops',['rowops',['../interfacepmat4_1_1rowops.html#a24860f75f7fca741d4e7595661bacce3',1,'pmat4::rowops::rowops()'],['../namespacepmat4.html#a013540db57612c537df459f6d209bb9e',1,'pmat4::rowops()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/mag_sel.png b/ver-1.11.0/grid_tools/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/search/namespaces_0.html b/ver-1.11.0/grid_tools/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/namespaces_0.js b/ver-1.11.0/grid_tools/search/namespaces_0.js new file mode 100644 index 000000000..dd1f50f18 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cstgeo',['cstgeo',['../namespacecstgeo.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/namespaces_1.html b/ver-1.11.0/grid_tools/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/namespaces_1.js b/ver-1.11.0/grid_tools/search/namespaces_1.js new file mode 100644 index 000000000..dfb9ae0b5 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dcstgeo',['dcstgeo',['../namespacedcstgeo.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/namespaces_2.html b/ver-1.11.0/grid_tools/search/namespaces_2.html new file mode 100644 index 000000000..0a9167460 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/namespaces_2.js b/ver-1.11.0/grid_tools/search/namespaces_2.js new file mode 100644 index 000000000..99dbb971d --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_2.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pesg',['pesg',['../namespacepesg.html',1,'']]], + ['pfun',['pfun',['../namespacepfun.html',1,'']]], + ['pietc',['pietc',['../namespacepietc.html',1,'']]], + ['pkind',['pkind',['../namespacepkind.html',1,'']]], + ['pmat2',['pmat2',['../namespacepmat2.html',1,'']]], + ['pmat4',['pmat4',['../namespacepmat4.html',1,'']]], + ['pmat5',['pmat5',['../namespacepmat5.html',1,'']]], + ['psym2',['psym2',['../namespacepsym2.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/namespaces_3.html b/ver-1.11.0/grid_tools/search/namespaces_3.html new file mode 100644 index 000000000..9c35eb2f9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/namespaces_3.js b/ver-1.11.0/grid_tools/search/namespaces_3.js new file mode 100644 index 000000000..83b3e7052 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils',['utils',['../namespaceutils.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/nomatches.html b/ver-1.11.0/grid_tools/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/grid_tools/search/pages_0.html b/ver-1.11.0/grid_tools/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/grid_tools/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/pages_0.js b/ver-1.11.0/grid_tools/search/pages_0.js new file mode 100644 index 000000000..484bb167a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grid_5ftools',['grid_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/pages_1.html b/ver-1.11.0/grid_tools/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/pages_1.js b/ver-1.11.0/grid_tools/search/pages_1.js new file mode 100644 index 000000000..cb4dcba98 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_grid_tools_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/grid_tools/search/search.css b/ver-1.11.0/grid_tools/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/grid_tools/search/search.js b/ver-1.11.0/grid_tools/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/grid_tools/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/search/search_r.png b/ver-1.11.0/grid_tools/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_0.js b/ver-1.11.0/grid_tools/search/variables_0.js new file mode 100644 index 000000000..21ec34d14 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['c0',['c0',['../namespacepietc.html#a8955ae3e4acf1e0c5d3141c9977cc62c',1,'pietc::c0()'],['../pietc__s_8f90.html#a7cb642d34b482c5dd4385e219049712e',1,'pietc_s::c0()']]], + ['c1',['c1',['../namespacepietc.html#aaf1b5a10ad0c38bb38ab850f2b36aafa',1,'pietc::c1()'],['../pietc__s_8f90.html#a7ab3f4129c5edbf0d6c2b2d9fefe9db4',1,'pietc_s::c1()']]], + ['ci',['ci',['../namespacepietc.html#a18214b0b284b2c628d9e7c848164b904',1,'pietc::ci()'],['../pietc__s_8f90.html#ad0d0376730501a650f809c618932a661',1,'pietc_s::ci()']]], + ['cipi',['cipi',['../namespacepietc.html#a72d67cd59ffa7614f9de9e2f19d065aa',1,'pietc::cipi()'],['../pietc__s_8f90.html#a6068649aeb63677c9a26f5b898600d5d',1,'pietc_s::cipi()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_1.html b/ver-1.11.0/grid_tools/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_1.js b/ver-1.11.0/grid_tools/search/variables_1.js new file mode 100644 index 000000000..e38d1c4c8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['dp',['dp',['../namespacepkind.html#a00714eff0ad48c0f4d25ae66b0419c90',1,'pkind']]], + ['dpc',['dpc',['../namespacepkind.html#a05fae263265cc6c01576990bfa3b4c65',1,'pkind']]], + ['dpi',['dpi',['../namespacepkind.html#a78c6f106c3c9e7f3cd30458bc58c0242',1,'pkind']]], + ['dtor',['dtor',['../namespacepietc.html#a0e5882b8de6720f66db6ce7dd8c2f856',1,'pietc::dtor()'],['../pietc__s_8f90.html#ab93de98ccaa79622a76a3ba1d8dcf107',1,'pietc_s::dtor()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_2.html b/ver-1.11.0/grid_tools/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_2.js b/ver-1.11.0/grid_tools/search/variables_2.js new file mode 100644 index 000000000..886040546 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['euler',['euler',['../namespacepietc.html#acdf00b4d494b3564fe56504d257cebb7',1,'pietc::euler()'],['../pietc__s_8f90.html#a498dbbe1374b2a2bca5901f0ac430664',1,'pietc_s::euler()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_3.html b/ver-1.11.0/grid_tools/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_3.js b/ver-1.11.0/grid_tools/search/variables_3.js new file mode 100644 index 000000000..eb02d5927 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['f',['f',['../namespacepietc.html#a1a59f6eeafd9442451ae14323395e362',1,'pietc::f()'],['../pietc__s_8f90.html#a8d5c2d572cf1e87d48110c4fdc985ba0',1,'pietc_s::f()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_4.html b/ver-1.11.0/grid_tools/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_4.js b/ver-1.11.0/grid_tools/search/variables_4.js new file mode 100644 index 000000000..dbef6a41e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['grid_5ffile',['grid_file',['../namespaceutils.html#a66fef4a7e26a8d6cd8896fde50d69fe4',1,'utils']]], + ['grid_5ftype',['grid_type',['../namespaceutils.html#a80d365fe7e244336b4deba2fbe720758',1,'utils']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_5.html b/ver-1.11.0/grid_tools/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_5.js b/ver-1.11.0/grid_tools/search/variables_5.js new file mode 100644 index 000000000..0e7fcae7f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['id',['id',['../namespacepsym2.html#ad501d59b45e349480e91f1ddfd1d8b08',1,'psym2']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_6.html b/ver-1.11.0/grid_tools/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_6.js b/ver-1.11.0/grid_tools/search/variables_6.js new file mode 100644 index 000000000..77f4696c9 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_6.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['mask_5ffield',['mask_field',['../namespaceutils.html#af55445de78a1c182c995ad92e2b1f367',1,'utils']]], + ['mc1',['mc1',['../namespacepietc.html#a66f66de805f3d59d5c1e718da6313584',1,'pietc::mc1()'],['../pietc__s_8f90.html#aa623c315afa6ebf68c8a6c61a67eafc6',1,'pietc_s::mc1()']]], + ['mci',['mci',['../namespacepietc.html#a4e58e0dd26c3e428bf75a19465f68377',1,'pietc::mci()'],['../pietc__s_8f90.html#aecc2d0bdcae1dc53a53817a092429384',1,'pietc_s::mci()']]], + ['mo2',['mo2',['../namespacepietc.html#aa0c941809aa68996b652843685a9433e',1,'pietc::mo2()'],['../pietc__s_8f90.html#ada18a451ee0fcf1eb58a8a8b4fc1df56',1,'pietc_s::mo2()']]], + ['mo3',['mo3',['../namespacepietc.html#a2768edc18c2b2bd167887378e5de47e2',1,'pietc::mo3()'],['../pietc__s_8f90.html#a6f4c63c0e5ed77859ce7fb24829181fd',1,'pietc_s::mo3()']]], + ['mo4',['mo4',['../namespacepietc.html#a00b9bea516ae1b82199e9fd2eab930ea',1,'pietc::mo4()'],['../pietc__s_8f90.html#ad304d1504607f7e87fe1d06ba0d750a7',1,'pietc_s::mo4()']]], + ['mo5',['mo5',['../namespacepietc.html#a000aa8839ccd2689d9ef206336f59295',1,'pietc::mo5()'],['../pietc__s_8f90.html#a880b35e57f409f650a5242eb86f15da6',1,'pietc_s::mo5()']]], + ['mo6',['mo6',['../namespacepietc.html#a3ed566516e45ccace556a4ef84e1cb3f',1,'pietc::mo6()'],['../pietc__s_8f90.html#aca1c0bbf1eca5966f5bc7570d3d1388e',1,'pietc_s::mo6()']]], + ['ms10',['ms10',['../namespacepietc.html#af19bbd02505d4f191d4192a0ef98fe1a',1,'pietc::ms10()'],['../pietc__s_8f90.html#a91e99a7dc743bb8dd0089e81061c2672',1,'pietc_s::ms10()']]], + ['ms11',['ms11',['../namespacepietc.html#ae51b46e8e64165cd44fd6c43c377a0a1',1,'pietc::ms11()'],['../pietc__s_8f90.html#af1f9ed74c5b4a4a33624cd95f17aa00a',1,'pietc_s::ms11()']]], + ['ms13',['ms13',['../namespacepietc.html#a9a9d37a281e60cc0447442db2306bc87',1,'pietc::ms13()'],['../pietc__s_8f90.html#a84343423794212d4f040a437f429d54c',1,'pietc_s::ms13()']]], + ['ms15',['ms15',['../namespacepietc.html#a94d9c31511b78f80058aa0211314c144',1,'pietc::ms15()'],['../pietc__s_8f90.html#a4b5e199873b8bfb71ddf9db37d14f7fb',1,'pietc_s::ms15()']]], + ['ms18',['ms18',['../namespacepietc.html#a9f204852aef0e455941418681db54f87',1,'pietc::ms18()'],['../pietc__s_8f90.html#a4381c3ec60478ce7dd5ec2e4f41b3b64',1,'pietc_s::ms18()']]], + ['ms20',['ms20',['../namespacepietc.html#a6344dab263f2203e32ca685097de67ab',1,'pietc::ms20()'],['../pietc__s_8f90.html#abb7ee1b228b6bc46bebce35dfc0b3174',1,'pietc_s::ms20()']]], + ['ms22',['ms22',['../namespacepietc.html#a282b3ad95ab5dc0e3ad8ea73df787753',1,'pietc::ms22()'],['../pietc__s_8f90.html#affce1a0b84f3e62c760c5d9b674753cd',1,'pietc_s::ms22()']]], + ['ms26',['ms26',['../namespacepietc.html#a0cbb7dc002305869d04068e4180ba016',1,'pietc::ms26()'],['../pietc__s_8f90.html#aab2a6248f79fd41de453fedb733fe983',1,'pietc_s::ms26()']]], + ['ms30',['ms30',['../namespacepietc.html#a064ddae6da1c591bd29f809348a76adf',1,'pietc::ms30()'],['../pietc__s_8f90.html#a0323cdf932998dcb6486ac3319014b1e',1,'pietc_s::ms30()']]], + ['ms34',['ms34',['../namespacepietc.html#a2974bfaaa13ec9d0ef9246526dd50e76',1,'pietc::ms34()'],['../pietc__s_8f90.html#ac731f3246c7d5a35b1404933b6287c25',1,'pietc_s::ms34()']]], + ['ms36',['ms36',['../namespacepietc.html#ab2dbf2423954bed11ff54b0f20b8e530',1,'pietc::ms36()'],['../pietc__s_8f90.html#abc1a69344ac1c5ca9b1c2eb957dc38b2',1,'pietc_s::ms36()']]], + ['ms39',['ms39',['../namespacepietc.html#adca783e645fd9a8dd67df260c579c07e',1,'pietc::ms39()'],['../pietc__s_8f90.html#a9f4b41675fa331b74d91a2b2ec2a07eb',1,'pietc_s::ms39()']]], + ['ms40',['ms40',['../namespacepietc.html#a4974c9565fcef49b95197f1ff03f7cd5',1,'pietc::ms40()'],['../pietc__s_8f90.html#a722a807309cd046ba62fde85896125ad',1,'pietc_s::ms40()']]], + ['ms45',['ms45',['../namespacepietc.html#a792a5ce38e4d85e83845af700cae3a0b',1,'pietc::ms45()'],['../pietc__s_8f90.html#a5e7332f1c8cd12f77ac80f159ab61d35',1,'pietc_s::ms45()']]], + ['ms50',['ms50',['../namespacepietc.html#ae90680c017d96fe2d27e60ddc7a7c932',1,'pietc::ms50()'],['../pietc__s_8f90.html#a78a757122a79502072fb10e1ce5ee4c1',1,'pietc_s::ms50()']]], + ['ms51',['ms51',['../namespacepietc.html#a1dcc977f6cdc92ee0bb79afc06232105',1,'pietc::ms51()'],['../pietc__s_8f90.html#ad2a128f4448568563aaff9c05bd41639',1,'pietc_s::ms51()']]], + ['ms54',['ms54',['../namespacepietc.html#a65a2663e8f089efaf299d89469ccc02c',1,'pietc::ms54()'],['../pietc__s_8f90.html#aee2e28f56ae2bd3faaf9076001c46019',1,'pietc_s::ms54()']]], + ['ms56',['ms56',['../namespacepietc.html#a08f793f59d5dd69cd6f9487238cb438e',1,'pietc::ms56()'],['../pietc__s_8f90.html#a0f18539584a1b107f987fac03b3526a6',1,'pietc_s::ms56()']]], + ['ms60',['ms60',['../namespacepietc.html#afb0a7faf7bcd6a1137f055a6a6b305f7',1,'pietc::ms60()'],['../pietc__s_8f90.html#a26c92a5d3f049d43d8afe80c4c921115',1,'pietc_s::ms60()']]], + ['ms64',['ms64',['../namespacepietc.html#a0cb8874dcca15deeab71981da6bc8202',1,'pietc::ms64()'],['../pietc__s_8f90.html#ab3a4f17d61fd6be1b6a5d0ae5fb9aa73',1,'pietc_s::ms64()']]], + ['ms68',['ms68',['../namespacepietc.html#a58eea21cf1bc5b523e8cb3a2e1a29e56',1,'pietc::ms68()'],['../pietc__s_8f90.html#a58c6456f6e558d6e00977421e154b99b',1,'pietc_s::ms68()']]], + ['ms70',['ms70',['../namespacepietc.html#aaf59c9bcf264de2d31c9b01ebcfef75d',1,'pietc::ms70()'],['../pietc__s_8f90.html#af855cf038c59695e21e717e2f5cdf8b2',1,'pietc_s::ms70()']]], + ['ms72',['ms72',['../namespacepietc.html#aaf8809769769a5b4872d3e364a6fd3f4',1,'pietc::ms72()'],['../pietc__s_8f90.html#ab4a9b72c42ae68dac8ca20398e8ddb50',1,'pietc_s::ms72()']]], + ['ms75',['ms75',['../namespacepietc.html#a785daf753e83ef22611ee7093c19ebaf',1,'pietc::ms75()'],['../pietc__s_8f90.html#a4666bbf4f401c5907faf826e16f06072',1,'pietc_s::ms75()']]], + ['ms77',['ms77',['../namespacepietc.html#a620176f9018e3af1a59d6426794025ef',1,'pietc::ms77()'],['../pietc__s_8f90.html#a22de7d216cc531ed6f735218cfabbd7b',1,'pietc_s::ms77()']]], + ['ms79',['ms79',['../namespacepietc.html#aa9ecf48f808634547b32f6110c959439',1,'pietc::ms79()'],['../pietc__s_8f90.html#aac3727259a989bc49d55423bdacddfe2',1,'pietc_s::ms79()']]], + ['ms80',['ms80',['../namespacepietc.html#a1b1d0c87bd1ce4228c9c14c801de2001',1,'pietc::ms80()'],['../pietc__s_8f90.html#a9f36342ef17e8d24e4138570177f175f',1,'pietc_s::ms80()']]], + ['mu1',['mu1',['../namespacepietc.html#a05b8b7d4f69c62e830913d4b315272a6',1,'pietc::mu1()'],['../pietc__s_8f90.html#a6f12e3aebef29573741977e2284a5f0d',1,'pietc_s::mu1()']]], + ['mu2',['mu2',['../namespacepietc.html#a809453e744cb5a40dcde3576d2793384',1,'pietc::mu2()'],['../pietc__s_8f90.html#a49f25c285c156dc01f9b1de76c503cbe',1,'pietc_s::mu2()']]], + ['mu3',['mu3',['../namespacepietc.html#adaabe1e87566a8b2fce89167d20e1496',1,'pietc::mu3()'],['../pietc__s_8f90.html#a932636600a9b1ed1a6d475250ccf01c4',1,'pietc_s::mu3()']]], + ['mu4',['mu4',['../namespacepietc.html#a480b5baae7340bddd03111dbfc07afef',1,'pietc::mu4()'],['../pietc__s_8f90.html#a543dc1c3d0c3204a4ebb15d63d4107bf',1,'pietc_s::mu4()']]], + ['mu5',['mu5',['../namespacepietc.html#a985de8b447273b87e9ee1eb062153d8f',1,'pietc::mu5()'],['../pietc__s_8f90.html#a57bc0de1e6897ff4b6145d95772ff6cf',1,'pietc_s::mu5()']]], + ['mu6',['mu6',['../namespacepietc.html#a0f08c13dfca45ff682aa6d96dc0bf132',1,'pietc::mu6()'],['../pietc__s_8f90.html#a5d02eb02e85610a65914043b285b0293',1,'pietc_s::mu6()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_7.html b/ver-1.11.0/grid_tools/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_7.js b/ver-1.11.0/grid_tools/search/variables_7.js new file mode 100644 index 000000000..e7a000a86 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nested',['nested',['../namespaceutils.html#aeb1687b2bf37a75327268e2b19e0ff78',1,'utils']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_8.html b/ver-1.11.0/grid_tools/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_8.js b/ver-1.11.0/grid_tools/search/variables_8.js new file mode 100644 index 000000000..7945dca4d --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['o2',['o2',['../namespacepietc.html#a31fe36a99e91fd868ca1f99359007416',1,'pietc::o2()'],['../pietc__s_8f90.html#ae506bdfa2f92be38fbbb8b81e9dd77c0',1,'pietc_s::o2()']]], + ['o3',['o3',['../namespacepietc.html#a6511999188177426a786497c7e87a41a',1,'pietc::o3()'],['../pietc__s_8f90.html#a7409753b3b4fdca5fc18b576e0efe020',1,'pietc_s::o3()']]], + ['o4',['o4',['../namespacepietc.html#a6ddd1baf56a1b87a2966bb34f467649a',1,'pietc::o4()'],['../pietc__s_8f90.html#ab2c4441fb72319b1765930d211f968f9',1,'pietc_s::o4()']]], + ['o5',['o5',['../namespacepietc.html#a1e87558f0d2b0d5a64dda49a44a4bacb',1,'pietc::o5()'],['../pietc__s_8f90.html#a45b918d6e65dd757512ae7ddcb6c0145',1,'pietc_s::o5()']]], + ['o6',['o6',['../namespacepietc.html#a8025ae9ef5f7e5f022429497a8abeef9',1,'pietc::o6()'],['../pietc__s_8f90.html#ab50be2d29b25e899332fe396f496ca6f',1,'pietc_s::o6()']]], + ['or2',['or2',['../namespacepietc.html#a98f9306c62c774f98a6f24c883f79032',1,'pietc::or2()'],['../pietc__s_8f90.html#af3ba8bcb517fa4360962e8aff9e89e63',1,'pietc_s::or2()']]], + ['or3',['or3',['../namespacepietc.html#a225f45c4bd75ad39053f8c58da7ad40b',1,'pietc::or3()'],['../pietc__s_8f90.html#af65f9aeb25e708e053e2a06fff4f1056',1,'pietc_s::or3()']]], + ['or5',['or5',['../namespacepietc.html#a0092887c19b4e6254b3d948a6f8bc94f',1,'pietc::or5()'],['../pietc__s_8f90.html#ad4919a540ebb22a8563ffefc0454efd1',1,'pietc_s::or5()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_9.html b/ver-1.11.0/grid_tools/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_9.js b/ver-1.11.0/grid_tools/search/variables_9.js new file mode 100644 index 000000000..455256de8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['phi',['phi',['../namespacepietc.html#a8a20e41dda229effcf92d22a70ce91d5',1,'pietc::phi()'],['../pietc__s_8f90.html#a2bdd911cd9e0b2845409835079d0e8ab',1,'pietc_s::phi()']]], + ['pi',['pi',['../namespacepietc.html#ac734e2e2645ccc50eb0c09e65fdd95ef',1,'pietc::pi()'],['../pietc__s_8f90.html#a77c1277f4677c202de8be67a9bdd97fe',1,'pietc_s::pi()']]], + ['pi2',['pi2',['../namespacepietc.html#ae492a70e0f3cf406be18932dc663cb15',1,'pietc::pi2()'],['../pietc__s_8f90.html#a4eba4f9674bc6ddd4707965fa5c0d486',1,'pietc_s::pi2()']]], + ['pih',['pih',['../namespacepietc.html#a6a02b08d60e64caafe002e2d8b02efaf',1,'pietc::pih()'],['../pietc__s_8f90.html#a7b0c1ef4e5e55596e88096d68e5fe9e2',1,'pietc_s::pih()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_a.html b/ver-1.11.0/grid_tools/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_a.js b/ver-1.11.0/grid_tools/search/variables_a.js new file mode 100644 index 000000000..4b8a4cec8 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['r2',['r2',['../namespacepietc.html#a3c11921c034ed0320b9902bf4b2a03d2',1,'pietc::r2()'],['../pietc__s_8f90.html#a9ae9dbd46993df536680eb423fc7116e',1,'pietc_s::r2()']]], + ['r3',['r3',['../namespacepietc.html#a59ed14f765e2aadca3f681e9ce3a04d1',1,'pietc::r3()'],['../pietc__s_8f90.html#ac9b719e709470919b3d636b2e8e97620',1,'pietc_s::r3()']]], + ['r5',['r5',['../namespacepietc.html#ab9dc3e6a41d4e9188d94995fc401bf60',1,'pietc::r5()'],['../pietc__s_8f90.html#a0e211899ead81f85d0a1ac1a9a764bdd',1,'pietc_s::r5()']]], + ['regional',['regional',['../namespaceutils.html#a255512c5e1b7091b5894376e1a74d237',1,'utils']]], + ['res',['res',['../namespaceutils.html#aca2643d8c20b795e2d1dad945b07c136',1,'utils']]], + ['rotm',['rotm',['../namespacecstgeo.html#a9dfd1286dd56bbaa16f0e53a4b5463aa',1,'cstgeo::rotm()'],['../namespacedcstgeo.html#adad1a51af5095a868fea81876bc6f7ec',1,'dcstgeo::rotm()']]], + ['rpi',['rpi',['../namespacepietc.html#a62333cfdbb14baa18091b4faa689f660',1,'pietc::rpi()'],['../pietc__s_8f90.html#aedc2b4e7a9560c9e6fed91df12e76201',1,'pietc_s::rpi()']]], + ['rtod',['rtod',['../namespacepietc.html#a57d89085283cb2a7bfd9152324b4b463',1,'pietc::rtod()'],['../pietc__s_8f90.html#ae5c15456f6df7899c647db6dcdf8af4c',1,'pietc_s::rtod()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_b.html b/ver-1.11.0/grid_tools/search/variables_b.html new file mode 100644 index 000000000..b306931e2 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_b.js b/ver-1.11.0/grid_tools/search/variables_b.js new file mode 100644 index 000000000..a7b177894 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_b.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['s10',['s10',['../namespacepietc.html#ac3b72078045420fb497782ddd5b16c50',1,'pietc::s10()'],['../pietc__s_8f90.html#a0f926ba1c07bbed0b4d60a3c6ce61f84',1,'pietc_s::s10()']]], + ['s11',['s11',['../namespacepietc.html#ad409b167e861a4656fa1f6e662ff8f9a',1,'pietc::s11()'],['../pietc__s_8f90.html#ab91bdf495f346e202ed225c73cbebcda',1,'pietc_s::s11()']]], + ['s13',['s13',['../namespacepietc.html#af234094d9b4647d52c5b5b987eaeb5c3',1,'pietc::s13()'],['../pietc__s_8f90.html#a23a51b01f50bee4d91370d6e65cfaee9',1,'pietc_s::s13()']]], + ['s15',['s15',['../namespacepietc.html#a44d7a0198a54e6f94aa98f8f400c55e8',1,'pietc::s15()'],['../pietc__s_8f90.html#ae10be280e8279758cc3be4a94e3af36a',1,'pietc_s::s15()']]], + ['s18',['s18',['../namespacepietc.html#a582df1eda80d9b8e7989c7b06fa00f9d',1,'pietc::s18()'],['../pietc__s_8f90.html#ae9f0f611b70a05365d57d08a235fcbb2',1,'pietc_s::s18()']]], + ['s20',['s20',['../namespacepietc.html#afb354d2b14ec6235e1eca7671ec01620',1,'pietc::s20()'],['../pietc__s_8f90.html#ab5d1f8f4a6556ee36cd3a5750ce517d3',1,'pietc_s::s20()']]], + ['s22',['s22',['../namespacepietc.html#a08fa55c7ef0a4fcb702b40cacfb1c505',1,'pietc::s22()'],['../pietc__s_8f90.html#af0e447bc5fe989550bb0bfc2729015d4',1,'pietc_s::s22()']]], + ['s26',['s26',['../namespacepietc.html#a2708b385f05478b9ea5fccd0ac4c9fc7',1,'pietc::s26()'],['../pietc__s_8f90.html#a61f587a87ed7c05a0044111206fb3dc8',1,'pietc_s::s26()']]], + ['s30',['s30',['../namespacepietc.html#a3ca30ab35c2374be0382986cab0ffb04',1,'pietc::s30()'],['../pietc__s_8f90.html#add60b96afbcbdff58f13bc0ad9c3fdc8',1,'pietc_s::s30()']]], + ['s34',['s34',['../namespacepietc.html#a1226f7daf08d5e48c06cb4808cfe0573',1,'pietc::s34()'],['../pietc__s_8f90.html#a21bb34d4e0d62565a6b2ca9dccd7d451',1,'pietc_s::s34()']]], + ['s36',['s36',['../namespacepietc.html#a69896ff84954d5b31e086153e5f9e0f6',1,'pietc::s36()'],['../pietc__s_8f90.html#a9b77358ea68cd5295368cfcd5dc9e350',1,'pietc_s::s36()']]], + ['s39',['s39',['../namespacepietc.html#aedca26d8a554f78dea5a2617a4b4a2a6',1,'pietc::s39()'],['../pietc__s_8f90.html#aa3db36ce4eee26c8443573589aa196a5',1,'pietc_s::s39()']]], + ['s40',['s40',['../namespacepietc.html#ae4c7304f5195fc56e355895f1c696def',1,'pietc::s40()'],['../pietc__s_8f90.html#a044c2cc54c95c27b703f539a5264b76f',1,'pietc_s::s40()']]], + ['s45',['s45',['../namespacepietc.html#a6ec618c042c266eebb9c8fe369d692be',1,'pietc::s45()'],['../pietc__s_8f90.html#aebf5a9ddfb89c17cd327acface976694',1,'pietc_s::s45()']]], + ['s50',['s50',['../namespacepietc.html#a1f13f6eca17fbfbb8e385f25c82bc9c2',1,'pietc::s50()'],['../pietc__s_8f90.html#a666697f14842c7f2cab1fdd214a647de',1,'pietc_s::s50()']]], + ['s51',['s51',['../namespacepietc.html#a35424b6416d73103c6d821c52d7284a2',1,'pietc::s51()'],['../pietc__s_8f90.html#a0e3e131e0b1179ddc2f276840f29276a',1,'pietc_s::s51()']]], + ['s54',['s54',['../namespacepietc.html#a4611c0657a12873ee8a29162c0ca150d',1,'pietc::s54()'],['../pietc__s_8f90.html#af90cd479cfeea6604524c509466c622d',1,'pietc_s::s54()']]], + ['s56',['s56',['../namespacepietc.html#ac06beca2bcaa201876833b4916a00545',1,'pietc::s56()'],['../pietc__s_8f90.html#a9e6867a44c77080afdfb04e04b67e052',1,'pietc_s::s56()']]], + ['s60',['s60',['../namespacepietc.html#ae307dcb26a4c4aaad8aeecbf38a9ae5a',1,'pietc::s60()'],['../pietc__s_8f90.html#a89091096d073098066efc0ad1bce6bde',1,'pietc_s::s60()']]], + ['s64',['s64',['../namespacepietc.html#a38eedf82788d5e3206b678ea21c3c070',1,'pietc::s64()'],['../pietc__s_8f90.html#a6865a52d1f2d4d686d5e7ed6ceda8314',1,'pietc_s::s64()']]], + ['s68',['s68',['../namespacepietc.html#a788eef5cd96c8c9b5d2f941f1c71c986',1,'pietc::s68()'],['../pietc__s_8f90.html#abfb56a32d06f10b0dee762ef9bfb270a',1,'pietc_s::s68()']]], + ['s70',['s70',['../namespacepietc.html#aac6789d00820c1735870df16b543fb9e',1,'pietc::s70()'],['../pietc__s_8f90.html#af972a379292c421f30cefe7e100da068',1,'pietc_s::s70()']]], + ['s72',['s72',['../namespacepietc.html#a752cd6e2509c06cc3f842439800f390d',1,'pietc::s72()'],['../pietc__s_8f90.html#aae82132c702b66ce1976c24eea6de11b',1,'pietc_s::s72()']]], + ['s75',['s75',['../namespacepietc.html#a92f549bfe71b473b1ee2e81493387bf9',1,'pietc::s75()'],['../pietc__s_8f90.html#a7d50358b4415fb6c2108dc15d5264287',1,'pietc_s::s75()']]], + ['s77',['s77',['../namespacepietc.html#a1941aac9a0ac3c7b2b4123c41e60c01c',1,'pietc::s77()'],['../pietc__s_8f90.html#a0e84a47a9deded8b33ba3568253acf9b',1,'pietc_s::s77()']]], + ['s79',['s79',['../namespacepietc.html#aa0aca0ec4b8a0eb192e2cc508bd78670',1,'pietc::s79()'],['../pietc__s_8f90.html#ad1499babe6c008001cf2dec6081b694f',1,'pietc_s::s79()']]], + ['s80',['s80',['../namespacepietc.html#a232707ecdb74237620f2673c8843a048',1,'pietc::s80()'],['../pietc__s_8f90.html#a7c460d20a4e97d6b6fd038f7ae1e6693',1,'pietc_s::s80()']]], + ['sc',['sc',['../namespacecstgeo.html#a64bcd54569dd77ca573f5ece7e2759e7',1,'cstgeo::sc()'],['../namespacedcstgeo.html#a7b21b371112f39f652fca028a7d5917e',1,'dcstgeo::sc()']]], + ['sci',['sci',['../namespacecstgeo.html#addbe59e962ad38732efb4adda0ec7b7f',1,'cstgeo::sci()'],['../namespacedcstgeo.html#a25d603dde5cb470f72b8dacbabbc8efd',1,'dcstgeo::sci()']]], + ['sp',['sp',['../namespacepkind.html#a727a82a16402d4f765f2e806e0e9dbd2',1,'pkind']]], + ['spc',['spc',['../namespacepkind.html#a67080eb2b326d447c1b48c0afac26aa8',1,'pkind']]], + ['spi',['spi',['../namespacepkind.html#a8b510d5ba4b6a0d899e2ded9ea9c8bf0',1,'pkind']]], + ['stretch_5ffac',['stretch_fac',['../namespaceutils.html#aad5ae4657c154fc643cf21e2cfe25bf5',1,'utils']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_c.html b/ver-1.11.0/grid_tools/search/variables_c.html new file mode 100644 index 000000000..75709df8f --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_c.js b/ver-1.11.0/grid_tools/search/variables_c.js new file mode 100644 index 000000000..0eb980b33 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['t',['t',['../namespacepietc.html#abc0f77ce68c79a5021a21d020cbf840d',1,'pietc::t()'],['../pietc__s_8f90.html#a352d186d9a30ce9f837cb012d4d7f727',1,'pietc_s::t()']]], + ['topo_5ffield',['topo_field',['../namespaceutils.html#a35ecc5fff8f111f49062e28462a51b8b',1,'utils']]], + ['topo_5ffile',['topo_file',['../namespaceutils.html#a6863f54503680867bc1a5bb6bf8eb206',1,'utils']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_d.html b/ver-1.11.0/grid_tools/search/variables_d.html new file mode 100644 index 000000000..34c80a486 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_d.js b/ver-1.11.0/grid_tools/search/variables_d.js new file mode 100644 index 000000000..b35a66f94 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['u0',['u0',['../namespacepietc.html#ac4b2c921dc2126df39de4d45ce464dc2',1,'pietc::u0()'],['../pietc__s_8f90.html#adcb44bd9276f44fa4f112451fc1447a8',1,'pietc_s::u0()']]], + ['u1',['u1',['../namespacepietc.html#a2c3ccea1400f40b1e25fd0b31079054c',1,'pietc::u1()'],['../pietc__s_8f90.html#a234638c3245e0481c8ba7cb132871cf8',1,'pietc_s::u1()']]], + ['u2',['u2',['../namespacepietc.html#ad40c60cf454a23bacb142e0e3af48960',1,'pietc::u2()'],['../pietc__s_8f90.html#a6be747b047f117a93ab29b374fdc1a6d',1,'pietc_s::u2()']]], + ['u3',['u3',['../namespacepietc.html#a6230c3fbe5dba6e11a215828c69a95f4',1,'pietc::u3()'],['../pietc__s_8f90.html#ab13b8f26144856bdb461571d0898d3e7',1,'pietc_s::u3()']]], + ['u4',['u4',['../namespacepietc.html#ab4764b5889301ae824fd970d633fbeae',1,'pietc::u4()'],['../pietc__s_8f90.html#a11feaf116766d164aff120d845b966e2',1,'pietc_s::u4()']]], + ['u5',['u5',['../namespacepietc.html#a70068593e935c2f3246cf67a8d43e80c',1,'pietc::u5()'],['../pietc__s_8f90.html#ab4ef2e76e02b74a99a4af8948a077b6c',1,'pietc_s::u5()']]], + ['u6',['u6',['../namespacepietc.html#a90a7adc3caa520b2ef619efb3ce5b11a',1,'pietc::u6()'],['../pietc__s_8f90.html#ae0cd95244a190a7f6671e5ab99257ea5',1,'pietc_s::u6()']]] +]; diff --git a/ver-1.11.0/grid_tools/search/variables_e.html b/ver-1.11.0/grid_tools/search/variables_e.html new file mode 100644 index 000000000..4a1c8a614 --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/grid_tools/search/variables_e.js b/ver-1.11.0/grid_tools/search/variables_e.js new file mode 100644 index 000000000..1ff4ab2cf --- /dev/null +++ b/ver-1.11.0/grid_tools/search/variables_e.js @@ -0,0 +1,117 @@ +var searchData= +[ + ['z000',['z000',['../namespacepietc.html#a6fe8e43040fb8ea6bd5fda08cd5abb05',1,'pietc::z000()'],['../pietc__s_8f90.html#af18a35a122394b76e098e763f8a6d9d4',1,'pietc_s::z000()']]], + ['z010',['z010',['../namespacepietc.html#ad0cab955384a4c1508fcb80b664d6b1f',1,'pietc::z010()'],['../pietc__s_8f90.html#a91506f00dc776db7d62464adb64937bf',1,'pietc_s::z010()']]], + ['z011',['z011',['../namespacepietc.html#a4156f9986d97aaa89b2dc0352e6150b8',1,'pietc::z011()'],['../pietc__s_8f90.html#a7196833a19947f798eaf7fb894f20f37',1,'pietc_s::z011()']]], + ['z013',['z013',['../namespacepietc.html#a3924a4ee9e826f8da350bcd363b1e692',1,'pietc::z013()'],['../pietc__s_8f90.html#a51b801ae6af1c1a56b43c2a62092794d',1,'pietc_s::z013()']]], + ['z015',['z015',['../namespacepietc.html#a759201aec96e392cc821b97e51f72254',1,'pietc::z015()'],['../pietc__s_8f90.html#abedc4d0b8c9fc174f2906370f66037fe',1,'pietc_s::z015()']]], + ['z018',['z018',['../namespacepietc.html#aef4690197a0da926947010773b0df79c',1,'pietc::z018()'],['../pietc__s_8f90.html#a487b5b801bb8e5e1d5318a05f4e86338',1,'pietc_s::z018()']]], + ['z020',['z020',['../namespacepietc.html#acf79e22731f12a6cb0f935a4c21c10be',1,'pietc::z020()'],['../pietc__s_8f90.html#aee9e809d3122906061252e12cacec81d',1,'pietc_s::z020()']]], + ['z022',['z022',['../namespacepietc.html#a3bcf3ca19122cd6ae9281fbd9b4dff4d',1,'pietc::z022()'],['../pietc__s_8f90.html#af74e6119268e65a2a637d0bfc47ad284',1,'pietc_s::z022()']]], + ['z026',['z026',['../namespacepietc.html#a9cc868bf116983e698dd4041ffe14c7f',1,'pietc::z026()'],['../pietc__s_8f90.html#a8f191bb882cbaa28867ee28175332ac5',1,'pietc_s::z026()']]], + ['z030',['z030',['../namespacepietc.html#a14fab1736a8cc0b8c59783473052397d',1,'pietc::z030()'],['../pietc__s_8f90.html#ae1945337fc395f0dce4d27c6ca889d7c',1,'pietc_s::z030()']]], + ['z034',['z034',['../namespacepietc.html#aeb5bd2514066fd9d82a5248b915120e2',1,'pietc::z034()'],['../pietc__s_8f90.html#a9c66e38b759a18b9f6a42985c9366354',1,'pietc_s::z034()']]], + ['z036',['z036',['../namespacepietc.html#a141e63663450c5c71ce1051bffd1a626',1,'pietc::z036()'],['../pietc__s_8f90.html#a71283c15b8ad74ad42cd0c70f44e0a4c',1,'pietc_s::z036()']]], + ['z039',['z039',['../namespacepietc.html#ac8377e16f05dc4f877208a7938a6a47c',1,'pietc::z039()'],['../pietc__s_8f90.html#a2febe73d189b17ed478913d5afe0ace4',1,'pietc_s::z039()']]], + ['z040',['z040',['../namespacepietc.html#a6659ff430a6d1e68da7dd4f723f3d9db',1,'pietc::z040()'],['../pietc__s_8f90.html#a13dae7f486fe9e36e9a5f00ce87a052c',1,'pietc_s::z040()']]], + ['z045',['z045',['../namespacepietc.html#a407c5127975ad67d25902e7b3428fb7d',1,'pietc::z045()'],['../pietc__s_8f90.html#ac92546135a29be90ecc078e6c4b1254f',1,'pietc_s::z045()']]], + ['z050',['z050',['../namespacepietc.html#a3aee859c34469c037ae41ef8a92cbb4b',1,'pietc::z050()'],['../pietc__s_8f90.html#ac088c7beaa2291a9259bd24f1d136e4d',1,'pietc_s::z050()']]], + ['z051',['z051',['../namespacepietc.html#a34ab6f14b7510ec8bbbb5e37a691d09d',1,'pietc::z051()'],['../pietc__s_8f90.html#af53ef31a78491b2acf8bdb5ee8ea4674',1,'pietc_s::z051()']]], + ['z054',['z054',['../namespacepietc.html#a5a53b481f932dafb6e5ae85267168fed',1,'pietc::z054()'],['../pietc__s_8f90.html#a6f972cc3b272ed5fca9fe855f387ab84',1,'pietc_s::z054()']]], + ['z056',['z056',['../namespacepietc.html#a036feef6a57b78288c26d63551888f3a',1,'pietc::z056()'],['../pietc__s_8f90.html#ac2408515f85c65fd06e49a6fae69370f',1,'pietc_s::z056()']]], + ['z060',['z060',['../namespacepietc.html#a3fd28f57b204952311b28513d41b2a73',1,'pietc::z060()'],['../pietc__s_8f90.html#a21214b4bf794a8e5f9be9ad5b1430259',1,'pietc_s::z060()']]], + ['z064',['z064',['../namespacepietc.html#aa6f2c8812cc45efc4c4f118d0ef240be',1,'pietc::z064()'],['../pietc__s_8f90.html#a96b958d95b35dd463b783c408f1fe268',1,'pietc_s::z064()']]], + ['z068',['z068',['../namespacepietc.html#a1d12ffc8657dd5f38dc3703e0f890d35',1,'pietc::z068()'],['../pietc__s_8f90.html#afc3b9e872a8f3e2b5adf51a6b63ae6e6',1,'pietc_s::z068()']]], + ['z070',['z070',['../namespacepietc.html#a16924a9d4535d729e6213aec2b68ef42',1,'pietc::z070()'],['../pietc__s_8f90.html#a888f72bed5320b69edc962d690e9d6fd',1,'pietc_s::z070()']]], + ['z072',['z072',['../namespacepietc.html#a5ca55f8fed660a452eb68cf863e49ebe',1,'pietc::z072()'],['../pietc__s_8f90.html#a797b3d4690cbe814f0c24cd51e725e59',1,'pietc_s::z072()']]], + ['z075',['z075',['../namespacepietc.html#a134326f3080e14924bdd20095e1e4846',1,'pietc::z075()'],['../pietc__s_8f90.html#a10c4f0d9ad11a0b2c5a1f27d8e3171ca',1,'pietc_s::z075()']]], + ['z077',['z077',['../namespacepietc.html#afb57bc20d995c6e1b3c9ac3fc7178148',1,'pietc::z077()'],['../pietc__s_8f90.html#a8993c78e94ca762842a027adc0bc3aff',1,'pietc_s::z077()']]], + ['z079',['z079',['../namespacepietc.html#ac0a07e1bebe9470834d617ece10cdab9',1,'pietc::z079()'],['../pietc__s_8f90.html#a71deaca3abd756d2dccc93ca7231de31',1,'pietc_s::z079()']]], + ['z080',['z080',['../namespacepietc.html#a796cbc1619ab79754488d3dcc180b4ac',1,'pietc::z080()'],['../pietc__s_8f90.html#a6d6755f9a501d098dd486c622a80bc71',1,'pietc_s::z080()']]], + ['z090',['z090',['../namespacepietc.html#a03495c821c9d26b5f8ee7f4089ebe38f',1,'pietc::z090()'],['../pietc__s_8f90.html#a46dcffedea219cd26aed6bcbb9fc4809',1,'pietc_s::z090()']]], + ['z100',['z100',['../namespacepietc.html#aafa31b87e4c7a748d5ef54abe2bea801',1,'pietc::z100()'],['../pietc__s_8f90.html#ab67437cd809b9d5537a7030aafe22450',1,'pietc_s::z100()']]], + ['z101',['z101',['../namespacepietc.html#a9956e19fb1bcdec045eb664e4563f6ba',1,'pietc::z101()'],['../pietc__s_8f90.html#a81d363045de2ce375f29bf62c9057bef',1,'pietc_s::z101()']]], + ['z103',['z103',['../namespacepietc.html#a05d2de09c9ef2adeb2dc68090cbbc424',1,'pietc::z103()'],['../pietc__s_8f90.html#a821fb974277ed7ba68114a260fbf0e22',1,'pietc_s::z103()']]], + ['z105',['z105',['../namespacepietc.html#ac6a5700a1a170b6e9fa3ccfe1aa79f7b',1,'pietc::z105()'],['../pietc__s_8f90.html#ad2288ae663e5444548b25eb64d43d56b',1,'pietc_s::z105()']]], + ['z108',['z108',['../namespacepietc.html#a5bf9578724b7dc8d63ab2465fd7a648e',1,'pietc::z108()'],['../pietc__s_8f90.html#ade304c9a8d97539489dc3e3352898ba4',1,'pietc_s::z108()']]], + ['z110',['z110',['../namespacepietc.html#a918f738909123fbce5bebc56d2fb569b',1,'pietc::z110()'],['../pietc__s_8f90.html#a5b6e9612730463635294c8625cc2dd6f',1,'pietc_s::z110()']]], + ['z112',['z112',['../namespacepietc.html#a43238308835a385f250c916490f93392',1,'pietc::z112()'],['../pietc__s_8f90.html#a57c1352db438d272c16bc0559dcafa6e',1,'pietc_s::z112()']]], + ['z116',['z116',['../namespacepietc.html#a136b91649432dbb459eeaffbce99759c',1,'pietc::z116()'],['../pietc__s_8f90.html#a9b74b914720c0b62cabf9e974cf53dd1',1,'pietc_s::z116()']]], + ['z120',['z120',['../namespacepietc.html#acaf0daa942c909756fedc2c2d7f4080e',1,'pietc::z120()'],['../pietc__s_8f90.html#a00846ccea13202740f301ef28ec0c2cf',1,'pietc_s::z120()']]], + ['z124',['z124',['../namespacepietc.html#a85f48cc7eeb261f2f02d222d3d7d509a',1,'pietc::z124()'],['../pietc__s_8f90.html#aa656eb37135a2901fe115434665cebd9',1,'pietc_s::z124()']]], + ['z126',['z126',['../namespacepietc.html#abcd3cf4c8c61854c8d2b355041baba70',1,'pietc::z126()'],['../pietc__s_8f90.html#ae7028347860c8eaec4acd6869c996e0d',1,'pietc_s::z126()']]], + ['z129',['z129',['../namespacepietc.html#ab76483c1df276fde3e4bda831868d89b',1,'pietc::z129()'],['../pietc__s_8f90.html#a0026c9b54a3caf043cd656fbefa98f02',1,'pietc_s::z129()']]], + ['z130',['z130',['../namespacepietc.html#abbf4bae10dcea1fcc9ccea09710934ea',1,'pietc::z130()'],['../pietc__s_8f90.html#a2458b30e63c7eb51715183fca9dcbd96',1,'pietc_s::z130()']]], + ['z135',['z135',['../namespacepietc.html#adef6f138be177dd15d5c027d63602b7a',1,'pietc::z135()'],['../pietc__s_8f90.html#ac071455e108c31860f3478e07f44b71b',1,'pietc_s::z135()']]], + ['z140',['z140',['../namespacepietc.html#ae52dcb68eed8c08b97f421256b967592',1,'pietc::z140()'],['../pietc__s_8f90.html#af8bf0a5e66c6393c06382b2dc54ede8e',1,'pietc_s::z140()']]], + ['z141',['z141',['../namespacepietc.html#aa63e99ec39ef39b50f066ddc78fc8049',1,'pietc::z141()'],['../pietc__s_8f90.html#ad6ab37ed9088afbfc9abf71e1b90a3bd',1,'pietc_s::z141()']]], + ['z144',['z144',['../namespacepietc.html#a4393d6e94693a4c1c8777b40e69c594c',1,'pietc::z144()'],['../pietc__s_8f90.html#ad36ae737181ca013c264882fe6d57447',1,'pietc_s::z144()']]], + ['z146',['z146',['../namespacepietc.html#aa372e74f0440b2dca8cddf831322a03b',1,'pietc::z146()'],['../pietc__s_8f90.html#ac2cc9be8f19f55fc7d71c3b47d7e6bb1',1,'pietc_s::z146()']]], + ['z150',['z150',['../namespacepietc.html#aad9515dd5cd46885a3e2906ba881c55e',1,'pietc::z150()'],['../pietc__s_8f90.html#a7e951c0cae4895b71ca7b9d84aa4850a',1,'pietc_s::z150()']]], + ['z154',['z154',['../namespacepietc.html#a0fcdc4afe577fa05115cac79522b337e',1,'pietc::z154()'],['../pietc__s_8f90.html#ac1934b401ff931edeb1a4bf2252c657e',1,'pietc_s::z154()']]], + ['z158',['z158',['../namespacepietc.html#a004b9989f6515b61d17da180d52ea8ca',1,'pietc::z158()'],['../pietc__s_8f90.html#ab6dd63af3f879af6d740144aef9931d6',1,'pietc_s::z158()']]], + ['z160',['z160',['../namespacepietc.html#ad03e0fe52b0d2b01c0b7c554c93210c8',1,'pietc::z160()'],['../pietc__s_8f90.html#a07b039fd5af68c51ad3c641c9fcd455b',1,'pietc_s::z160()']]], + ['z162',['z162',['../namespacepietc.html#ad5115a67dc95cac790feb3c536241c8e',1,'pietc::z162()'],['../pietc__s_8f90.html#abb6432643b4f214572403105f282aee2',1,'pietc_s::z162()']]], + ['z165',['z165',['../namespacepietc.html#a54ae507b146d830e0f4d4cf97766d122',1,'pietc::z165()'],['../pietc__s_8f90.html#ac65287d60f93e4d19ce42087a9c29a29',1,'pietc_s::z165()']]], + ['z167',['z167',['../namespacepietc.html#a3158d86a884e41f72b6d1a5f0af3e13a',1,'pietc::z167()'],['../pietc__s_8f90.html#ad5197b5ebea6e6d77e441200be045646',1,'pietc_s::z167()']]], + ['z169',['z169',['../namespacepietc.html#a9814cfa11c847f2922e420b5f13bc922',1,'pietc::z169()'],['../pietc__s_8f90.html#a7c5ad7e78daddbd2cded25446e8255e0',1,'pietc_s::z169()']]], + ['z170',['z170',['../namespacepietc.html#a52d26edcccb57167fad881e9381642bc',1,'pietc::z170()'],['../pietc__s_8f90.html#a11e14dd4189701bd5ce2ef98d15bf280',1,'pietc_s::z170()']]], + ['z180',['z180',['../namespacepietc.html#af209077c39f5de33599c3a66ebd87e28',1,'pietc::z180()'],['../pietc__s_8f90.html#ae4acd5b2a8846be147f868d25477a1fd',1,'pietc_s::z180()']]], + ['z190',['z190',['../namespacepietc.html#a668f71c7566fa3d817324f3b1e076dba',1,'pietc::z190()'],['../pietc__s_8f90.html#a7770e3049b5489c8d94c8018a1c78521',1,'pietc_s::z190()']]], + ['z191',['z191',['../namespacepietc.html#a3dd8d389a274427e7498308494f0242b',1,'pietc::z191()'],['../pietc__s_8f90.html#ad2999f3c3ad9fcd7d90b5a53af294252',1,'pietc_s::z191()']]], + ['z193',['z193',['../namespacepietc.html#aa465e2d8c2d6d59c4714ca5db1ce217c',1,'pietc::z193()'],['../pietc__s_8f90.html#a7f94e3d8e409ae2c48807bfc8c3c3fe7',1,'pietc_s::z193()']]], + ['z195',['z195',['../namespacepietc.html#aa597ef97a91353c0ad6b0747e9866c15',1,'pietc::z195()'],['../pietc__s_8f90.html#a7ec259770ffd7300894a8f79141298ea',1,'pietc_s::z195()']]], + ['z198',['z198',['../namespacepietc.html#ad0c4eaff456c60ba8aeb02ff48fc5928',1,'pietc::z198()'],['../pietc__s_8f90.html#ad126524d1ca33a5e2fd427c0a56b3a5c',1,'pietc_s::z198()']]], + ['z200',['z200',['../namespacepietc.html#acbab5752d5210932b057b47ae10b04ff',1,'pietc::z200()'],['../pietc__s_8f90.html#affc43998a7c8d03d61f7cec500282a79',1,'pietc_s::z200()']]], + ['z202',['z202',['../namespacepietc.html#a60586ba190013e0ebc085a32387477a6',1,'pietc::z202()'],['../pietc__s_8f90.html#adb5b7234588d651cbdc5d52bbecd2e47',1,'pietc_s::z202()']]], + ['z206',['z206',['../namespacepietc.html#aefad5c583c9169f82735409013d80ad6',1,'pietc::z206()'],['../pietc__s_8f90.html#a861d80b24e143bce9d9276c45432de3e',1,'pietc_s::z206()']]], + ['z210',['z210',['../namespacepietc.html#a4531d28424f2f92043bb84ee779cdcc4',1,'pietc::z210()'],['../pietc__s_8f90.html#ab0ffe4cd2becaf9f8e51864e38c37775',1,'pietc_s::z210()']]], + ['z214',['z214',['../namespacepietc.html#a34c6ad3dff8774e9269211fb6bf0bf58',1,'pietc::z214()'],['../pietc__s_8f90.html#aec6b719d43709674bd078f73cb847e15',1,'pietc_s::z214()']]], + ['z216',['z216',['../namespacepietc.html#a079caf28bb36054914ab0eb912783460',1,'pietc::z216()'],['../pietc__s_8f90.html#a90d493311a95ab88f47d5ab6e63a8d27',1,'pietc_s::z216()']]], + ['z219',['z219',['../namespacepietc.html#a3f0418bba35a8e10e87ba89b7047ab3c',1,'pietc::z219()'],['../pietc__s_8f90.html#a5d4aa196d00ed72aa3008d650146a401',1,'pietc_s::z219()']]], + ['z220',['z220',['../namespacepietc.html#a426ff692eeaedc647f9f26271b23db4a',1,'pietc::z220()'],['../pietc__s_8f90.html#aadfd1259d91df7899bfabb06218ef705',1,'pietc_s::z220()']]], + ['z225',['z225',['../namespacepietc.html#a19341afae8214bb379e57037d04ab7be',1,'pietc::z225()'],['../pietc__s_8f90.html#a8d42c6a5bd4877e419041d4401c87b88',1,'pietc_s::z225()']]], + ['z230',['z230',['../namespacepietc.html#ab33c1392c342552420c1ebfbbb41440b',1,'pietc::z230()'],['../pietc__s_8f90.html#a72904853a78f4d56e400c9a78e089301',1,'pietc_s::z230()']]], + ['z231',['z231',['../namespacepietc.html#a81d73f4af4b43a2bc2bde9a76f184f0e',1,'pietc::z231()'],['../pietc__s_8f90.html#a3112d76d5666ed00a0b04cfec0b58228',1,'pietc_s::z231()']]], + ['z234',['z234',['../namespacepietc.html#aac11c1594605c102664e86c6a36c77b7',1,'pietc::z234()'],['../pietc__s_8f90.html#ab67989d77b4175354736de9da574f56e',1,'pietc_s::z234()']]], + ['z236',['z236',['../namespacepietc.html#a0255030ec5fa5667aee368bef1b12b63',1,'pietc::z236()'],['../pietc__s_8f90.html#a48d4da45bfd7fa22de7886dc1891da99',1,'pietc_s::z236()']]], + ['z240',['z240',['../namespacepietc.html#a654cefc4aa3f41560c67df2e81c64a45',1,'pietc::z240()'],['../pietc__s_8f90.html#ae1d9681f2c89284a653d775e54e2c899',1,'pietc_s::z240()']]], + ['z244',['z244',['../namespacepietc.html#a44de80f54f3f0d41905a0b67023c58d0',1,'pietc::z244()'],['../pietc__s_8f90.html#a0ecc03208bc203944d2fb43c47bd273a',1,'pietc_s::z244()']]], + ['z248',['z248',['../namespacepietc.html#a8f05a913bd10c6bbec89b01999f0dcf7',1,'pietc::z248()'],['../pietc__s_8f90.html#ad0cc0aabe288b47faf29e84aa25da6a1',1,'pietc_s::z248()']]], + ['z250',['z250',['../namespacepietc.html#a3cf7dc3cc05c640669e17cbae5400216',1,'pietc::z250()'],['../pietc__s_8f90.html#a593c206ff024204bf7cec5f9da051be3',1,'pietc_s::z250()']]], + ['z252',['z252',['../namespacepietc.html#a14a0b5f701cdb1ec06b230244f01febf',1,'pietc::z252()'],['../pietc__s_8f90.html#a0e41a64994fe2b5166577324cdefc068',1,'pietc_s::z252()']]], + ['z255',['z255',['../namespacepietc.html#aa182fc75bf00384c3307afeb8f58c41e',1,'pietc::z255()'],['../pietc__s_8f90.html#aa052a2867c49a3455b870e93173115b4',1,'pietc_s::z255()']]], + ['z257',['z257',['../namespacepietc.html#a32a3ffbd503c846127175dc32e724ae0',1,'pietc::z257()'],['../pietc__s_8f90.html#a626ed5c3729ea8f1bce885521457da0e',1,'pietc_s::z257()']]], + ['z259',['z259',['../namespacepietc.html#ac45fb427cb825d281767678e16e8cf1a',1,'pietc::z259()'],['../pietc__s_8f90.html#a11d3d0e6faa7bbdf8ba0fe74eb6eed8d',1,'pietc_s::z259()']]], + ['z260',['z260',['../namespacepietc.html#a3652b8c5bfd5d7226d25941e49408209',1,'pietc::z260()'],['../pietc__s_8f90.html#a786cb13f3de57ad57ae04145936a0f0f',1,'pietc_s::z260()']]], + ['z270',['z270',['../namespacepietc.html#a414606ffb0174db322e33650080ac9e8',1,'pietc::z270()'],['../pietc__s_8f90.html#a85cadf667d71ef039c5a16e141864c96',1,'pietc_s::z270()']]], + ['z280',['z280',['../namespacepietc.html#a871ef6908570e0796561486385346940',1,'pietc::z280()'],['../pietc__s_8f90.html#aa3cd54c90325104e9088e72e4efa40d9',1,'pietc_s::z280()']]], + ['z281',['z281',['../namespacepietc.html#a5ad510619e59efe2e25d11238d8d2ab4',1,'pietc::z281()'],['../pietc__s_8f90.html#a353651fcd2b22054663923e66d8d7092',1,'pietc_s::z281()']]], + ['z283',['z283',['../namespacepietc.html#a7daf538d19c223405ac4a347e959c472',1,'pietc::z283()'],['../pietc__s_8f90.html#a68acc67fd5d89469cf23d4a15c69374d',1,'pietc_s::z283()']]], + ['z285',['z285',['../namespacepietc.html#a0bea68a75589f69fd555c13a2fa1d8c7',1,'pietc::z285()'],['../pietc__s_8f90.html#aa32d75bc0c607b3e6a0160dccf09bbb2',1,'pietc_s::z285()']]], + ['z288',['z288',['../namespacepietc.html#aed9d3ebf8c954b1a6b84be8448cf1c7a',1,'pietc::z288()'],['../pietc__s_8f90.html#ad67e316a1fc7d9a8211e16d6bb21ed6a',1,'pietc_s::z288()']]], + ['z290',['z290',['../namespacepietc.html#a725d036485b4bff0f97ac552dc5d999d',1,'pietc::z290()'],['../pietc__s_8f90.html#a2e4c7b60b97dd01d5128dd209e00d3c7',1,'pietc_s::z290()']]], + ['z292',['z292',['../namespacepietc.html#a10ca287138e3d8a341b094a6a1b0fb7b',1,'pietc::z292()'],['../pietc__s_8f90.html#a3d42e1551af446d3d44d8f857c4c69f3',1,'pietc_s::z292()']]], + ['z296',['z296',['../namespacepietc.html#aabf095168753591671ccd7d5fb0cc014',1,'pietc::z296()'],['../pietc__s_8f90.html#a3032f54abd13a6566903d078d2733618',1,'pietc_s::z296()']]], + ['z300',['z300',['../namespacepietc.html#aefe04ca970e600763144d6e280908902',1,'pietc::z300()'],['../pietc__s_8f90.html#ae5629376e55a289a1539183a616938bd',1,'pietc_s::z300()']]], + ['z304',['z304',['../namespacepietc.html#a10a40aacdf35d9a68bd513c733cc504d',1,'pietc::z304()'],['../pietc__s_8f90.html#ac8a2c760f6dca603a25f09bab009f06b',1,'pietc_s::z304()']]], + ['z306',['z306',['../namespacepietc.html#a1360826765c534a694ef654c2c60da75',1,'pietc::z306()'],['../pietc__s_8f90.html#a83f3f97a43622595866c595682fb0ece',1,'pietc_s::z306()']]], + ['z309',['z309',['../namespacepietc.html#a4b87788575836af16b786c4a5cb18035',1,'pietc::z309()'],['../pietc__s_8f90.html#a42313506a4bcce49ce523a3da76cad0d',1,'pietc_s::z309()']]], + ['z310',['z310',['../namespacepietc.html#a9ca0a5d2791bb66480ebbbe9e8259931',1,'pietc::z310()'],['../pietc__s_8f90.html#a2672d937ed2fff71a69526cb61615ab1',1,'pietc_s::z310()']]], + ['z315',['z315',['../namespacepietc.html#a41ff9d1f7cd25dd1977a12716cbda7b9',1,'pietc::z315()'],['../pietc__s_8f90.html#a0d0944f556c02ddd39f6fb643d0c4e42',1,'pietc_s::z315()']]], + ['z320',['z320',['../namespacepietc.html#a2e99f006f8f1af47b9433e76e57c9088',1,'pietc::z320()'],['../pietc__s_8f90.html#a854d1a278b145b3abab94de402e047aa',1,'pietc_s::z320()']]], + ['z321',['z321',['../namespacepietc.html#a9d19d472599c9c661922954d513e3892',1,'pietc::z321()'],['../pietc__s_8f90.html#a6dacd4d7c2ef58abfd7eec4d05768800',1,'pietc_s::z321()']]], + ['z324',['z324',['../namespacepietc.html#a71bece0f96e5b69335a64593753fd7f5',1,'pietc::z324()'],['../pietc__s_8f90.html#a4d163dccd5ccbe9210711b43e3c122a8',1,'pietc_s::z324()']]], + ['z326',['z326',['../namespacepietc.html#ad7d7b3e33bf302fe4fcfe5e3d2238320',1,'pietc::z326()'],['../pietc__s_8f90.html#ae127340bf7abcbe6bf05ad8f86bbe334',1,'pietc_s::z326()']]], + ['z330',['z330',['../namespacepietc.html#a3076260ef24ab5a537ca19ef044b76c6',1,'pietc::z330()'],['../pietc__s_8f90.html#ad4cecd2caa66219be25868d94a046342',1,'pietc_s::z330()']]], + ['z334',['z334',['../namespacepietc.html#aefebd4022ba86728225bce3f9e63a893',1,'pietc::z334()'],['../pietc__s_8f90.html#aed88ac48df98d4b20946c3a4f455986c',1,'pietc_s::z334()']]], + ['z338',['z338',['../namespacepietc.html#a19834289deef1d95d4cc4d718df17cb9',1,'pietc::z338()'],['../pietc__s_8f90.html#a9394cbf025c052e7d2a43ead45b21824',1,'pietc_s::z338()']]], + ['z340',['z340',['../namespacepietc.html#affa49e7bf3827daf11df126c3028db0e',1,'pietc::z340()'],['../pietc__s_8f90.html#aaa24511fc906b4d3b85806afa4f2c95d',1,'pietc_s::z340()']]], + ['z342',['z342',['../namespacepietc.html#ae44896b472c61e5b4f66de26a6e0de9a',1,'pietc::z342()'],['../pietc__s_8f90.html#aef09680abb1de2411be1ff6a360061d5',1,'pietc_s::z342()']]], + ['z345',['z345',['../namespacepietc.html#a525e095f3d019fa6c5578eba28882564',1,'pietc::z345()'],['../pietc__s_8f90.html#aa46a6ff92556a60a4afa4b6882fcc3a1',1,'pietc_s::z345()']]], + ['z347',['z347',['../namespacepietc.html#a11b5a7daffa81eecc573147e407df1df',1,'pietc::z347()'],['../pietc__s_8f90.html#ae68a00fac6a3cc400e79db13280b7dc8',1,'pietc_s::z347()']]], + ['z349',['z349',['../namespacepietc.html#af82e6daf64caa3880e7f9462a58ef185',1,'pietc::z349()'],['../pietc__s_8f90.html#a79b507b74c0331fafd8e4fc789d755ee',1,'pietc_s::z349()']]], + ['z350',['z350',['../namespacepietc.html#a2389cd56c4999e1a32d9ac98483f04ac',1,'pietc::z350()'],['../pietc__s_8f90.html#aa1620605d76075d3d45dd5afb7519ce1',1,'pietc_s::z350()']]], + ['zero',['zero',['../namespacepmat2.html#a22095c65d2859b45208b56d1733bf71c',1,'pmat2']]], + ['zero_5focean',['zero_ocean',['../namespaceutils.html#ab731343353e3c68060807456bc5b6e25',1,'utils']]] +]; diff --git a/ver-1.11.0/grid_tools/shave__nc_8F90.html b/ver-1.11.0/grid_tools/shave__nc_8F90.html new file mode 100644 index 000000000..ee948597e --- /dev/null +++ b/ver-1.11.0/grid_tools/shave__nc_8F90.html @@ -0,0 +1,183 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/shave.fd/shave_nc.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    shave_nc.F90 File Reference
    +
    +
    + +

    Utility to shave down domains of FV3 files. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine check (status)
     Handle netCDF return codes. More...
     
    program shave_nc
     The grid driver step in FV3 preprocessing generates a grid_tile file and an oro_tile file for the regional domain. More...
     
    +

    Detailed Description

    +

    Utility to shave down domains of FV3 files.

    +
    Author
    Tom Black
    + +

    Definition in file shave_nc.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ check()

    + +
    +
    + + + + + + + + +
    subroutine shave_nc::check (integer, intent(in) status)
    +
    + +

    Handle netCDF return codes.

    +
    Parameters
    + + +
    statuserror code
    +
    +
    +
    Author
    Tom Black
    + +

    Definition at line 267 of file shave_nc.F90.

    + +
    +
    + +

    ◆ shave_nc()

    + +
    +
    + + + + + + + +
    program shave_nc ()
    +
    + +

    The grid driver step in FV3 preprocessing generates a grid_tile file and an oro_tile file for the regional domain.

    +

    The final size of these files' domains must include the halo surrounding the computational domain. However the original size of these domains must exceed the domain size plus haloes so that the topography filtering program can produce correct values over the halo region. Then before the files go into the chgres job their domains must be shaved down to only the computational interior and the halo which is what this code does.

    +
    Returns
    0 for success, error code otherwise.
    +
    Author
    Tom Black
    + +

    Definition at line 17 of file shave_nc.F90.

    + +

    References check().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/shave__nc_8F90.js b/ver-1.11.0/grid_tools/shave__nc_8F90.js new file mode 100644 index 000000000..11a20fa40 --- /dev/null +++ b/ver-1.11.0/grid_tools/shave__nc_8F90.js @@ -0,0 +1,5 @@ +var shave__nc_8F90 = +[ + [ "check", "shave__nc_8F90.html#af506435d12571939190a6f9be3034d42", null ], + [ "shave_nc", "shave__nc_8F90.html#a2af361e0786880807affb066c9678b17", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/shave__nc_8F90_source.html b/ver-1.11.0/grid_tools/shave__nc_8F90_source.html new file mode 100644 index 000000000..8ee4e087e --- /dev/null +++ b/ver-1.11.0/grid_tools/shave__nc_8F90_source.html @@ -0,0 +1,107 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/shave.fd/shave_nc.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    shave_nc.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    17  program shave_nc
    18  use netcdf
    19  implicit none
    20  integer,parameter :: kdbl=selected_real_kind(p=13,r=200)
    21  character(len=255) :: filename_full ! the netcdf input file
    22  character(len=255) :: filename_shaved ! the NetCDF file for shaved data
    23  integer :: idim_compute,jdim_compute,halo
    24  integer :: i_count_compute,j_count_compute &
    25  ,i_count_super,j_count_super
    26  integer :: i_start ! starting i of 2-D data with halo rows
    27  integer :: j_start ! starting j of 2-D data with halo rows
    28  integer :: i_count ! i extent of 2-D data with halo rows
    29  integer :: j_count ! j extent of 2-D data with halo rows
    30  integer :: n_count
    31  integer :: n_shave ! number of rows to shave off full data to leave halo rows
    32  integer :: n_start ! location where Start reading incoming character data
    33 
    34  integer :: n,na,ncid_in,ncid_out,nd,ndims,ngatts &
    35  ,nvars,unlimdimid
    36  integer :: natts ! # of attributes
    37  integer :: nctype ! type of the nth variable
    38  integer :: dim_id,len_dim,len_x,len_y,var_id,xdim_id,xdim_id_out &
    39  ,ydim_id,ydim_id_out
    40  integer :: istat
    41  integer,dimension(1:2) :: dimids=(/0,0/)
    42  real,dimension(:) ,allocatable :: var_1d_with_halo
    43  real,dimension(:,:),allocatable :: var_2d_with_halo
    44  real(kind=kdbl),dimension(:,:),allocatable :: var_2d_dbl_with_halo
    45 ! real*8,dimension(:,:),allocatable :: var_2d_dbl_with_halo
    46  character(len=50) :: file,name_dim,name_xdim,name_ydim &
    47  ,xdim,ydim
    48  character(len=50) :: name_att ! the attribute's name
    49  character(len=50) :: name_var ! the name of the nth variable
    50  character(len=255) :: att=' '
    51  character(len=255),dimension(:),allocatable :: var_1d_char
    52 
    53 !-----------------------------------------------------------------------
    54 !*** Read in the required compute dimensions, halo size, and filenames.
    55 !-----------------------------------------------------------------------
    56  read(5,*)idim_compute,jdim_compute,halo,filename_full,filename_shaved
    57  write(6,*)' id ',idim_compute,' jd ',jdim_compute,' halo ',halo
    58  write(6,*)' fn_f ',trim(filename_full)
    59  write(6,*)' fn_s ',trim(filename_shaved)
    60  i_count_compute=idim_compute+2*halo
    61  j_count_compute=jdim_compute+2*halo
    62  i_count_super =2*i_count_compute
    63  j_count_super =2*j_count_compute
    64 
    65 !-----------------------------------------------------------------------
    66 !*** Open the netcdf file with the incoming data to be shaved.
    67 !-----------------------------------------------------------------------
    68  call check(nf90_open(filename_full,nf90_nowrite,ncid_in)) ! Open the netcdf file; get the file ID.
    69  call check(nf90_inquire(ncid_in,ndims,nvars,ngatts,unlimdimid)) ! Find the number of variables in the file.
    70 
    71 !-----------------------------------------------------------------------
    72 !*** Create the NetCDF file that the shaved data will be written into.
    73 !*** Match the NetCDF format of the input file.
    74 !-----------------------------------------------------------------------
    75  call check(nf90_create(filename_shaved & !
    76  ,or(nf90_classic_model,nf90_netcdf4) & ! Create NetCDF file for shaved data.
    77  ,ncid_out)) !
    78 
    79 !-----------------------------------------------------------------------
    80 !*** Replicate the dimensions from the input to the output file
    81 !*** but change values as needed to account for the shaving. We
    82 !*** know the grid file and orog file have given names for their
    83 !*** x and y dimensions so use those to adjust to shaved values.
    84 !*** NOTE: Gridpoints in the grid file are on the domain's
    85 !*** supergrid while points in the orog file are on the
    86 !*** compute grid.
    87 !-----------------------------------------------------------------------
    88  do nd=1,ndims
    89  call check(nf90_inquire_dimension(ncid_in,nd,name_dim,len_dim)) ! Get this dimension's name and value.
    90  select case (name_dim)
    91  case ('nx') !---
    92  len_dim=i_count_super !
    93  xdim=name_dim !
    94  file='grid_file' !
    95  case ('nxp') ! Used by the
    96  len_dim=i_count_super+1 ! grid file.
    97  case ('ny') !
    98  len_dim=j_count_super !
    99  ydim=name_dim !
    100  case ('nyp') !
    101  len_dim=j_count_super+1 !---
    102  case ('lon') !---
    103  len_dim=i_count_compute !
    104  xdim=name_dim ! Used by the
    105  file='orog_file' ! orog file.
    106  case ('lat') !
    107  len_dim=j_count_compute !
    108  ydim=name_dim !---
    109  end select
    110  dim_id=nd
    111  call check(nf90_def_dim(ncid_out,name_dim,len_dim,dim_id)) !-- Insert dimension into the output file.
    112  enddo
    113 
    114 !-----------------------------------------------------------------------
    115 !*** The output file's variables must be defined while that file
    116 !*** is still in define mode. Loop through the variables in the
    117 !*** input file and define each of them in the output file.
    118 !-----------------------------------------------------------------------
    119  do n=1,nvars
    120  var_id=n
    121  call check(nf90_inquire_variable(ncid_in,var_id,name_var,nctype & !-- name and type of this variable
    122  ,ndims,dimids,natts)) !-- # of dimensions, ID, and attributes in this variable
    123  if(ndims==1)then
    124  call check(nf90_def_var(ncid_out,name_var,nctype,dimids(1),var_id)) !-- Define this 1-D variable in the output file.
    125  elseif(ndims==2)then
    126  call check(nf90_def_var(ncid_out,name_var,nctype,dimids,var_id)) !-- Define this 2-D variable in the output file.
    127  endif
    128 
    129 !-----------------------------------------------------------------------
    130 !*** Copy this variable's attributes to the output file's variable.
    131 !-----------------------------------------------------------------------
    132  if(natts>0)then
    133  do na=1,natts
    134  call check(nf90_inq_attname(ncid_in,var_id,na,name_att)) !-- Get the attribute's name and ID from input file.
    135  call check(nf90_copy_att(ncid_in,var_id,name_att,ncid_out,var_id)) !-- Copy to output file.
    136  enddo
    137  endif
    138  enddo
    139 
    140 !-----------------------------------------------------------------------
    141 !*** Copy the global attributes to the output file.
    142 !-----------------------------------------------------------------------
    143  do n=1,ngatts
    144  call check(nf90_inq_attname(ncid_in,nf90_global,n,name_att))
    145  call check(nf90_copy_att(ncid_in,nf90_global,name_att,ncid_out,nf90_global))
    146  enddo
    147  call check(nf90_enddef(ncid_out)) !-- Put the output file into data mode.
    148 
    149 !-----------------------------------------------------------------------
    150 !*** Get the x and y extents of the incoming grid with extra rows
    151 !*** so we can find determine how many rows to shave off.
    152 !-----------------------------------------------------------------------
    153  call check(nf90_inq_dimid(ncid_in,xdim,xdim_id)) !-- Find the ID of the x dimension.
    154  call check(nf90_inq_dimid(ncid_in,ydim,ydim_id)) !-- Find the ID of the y dimension.
    155  call check(nf90_inquire_dimension(ncid_in,xdim_id,name_xdim,len_x)) !-- Length of x dimension of vars in incoming file.
    156  call check(nf90_inquire_dimension(ncid_in,ydim_id,name_ydim,len_y)) !-- Length of y dimension of vars in incoming file.
    157  if(trim(file)=='orog_file')then
    158  i_start=(len_x-idim_compute)/2-halo+1 !-- Starting i of 2-D data with halo rows on compute grid.
    159  j_start=(len_y-jdim_compute)/2-halo+1 !-- Starting j of 2-D data with halo rows on compute grid.
    160 
    161  elseif(trim(file)=='grid_file')then
    162  i_start=(len_x-2*idim_compute)/2-2*halo+1 !-- Starting i of 2-D data with halo rows on supergrid.
    163  j_start=(len_y-2*jdim_compute)/2-2*halo+1 !-- Starting j of 2-D data with halo rows on supergrid.
    164  endif
    165 
    166 !-----------------------------------------------------------------------
    167 !*** We assume the # of extra rows on the incoming data is the same
    168 !*** in both x and y so the # of rows to shave off to leave the
    169 !*** halo rows is also the same in x and y. So consider only the
    170 !*** values from the x dimension.
    171 !-----------------------------------------------------------------------
    172  n_shave=i_start-1 !-- # of rows to shave off full data to leave halo rows.
    173 
    174 !-----------------------------------------------------------------------
    175 !*** Now loop through all the variables in the input netcdf file,
    176 !*** read in the data excluding all extra rows except for halo rows,
    177 !*** and then write that out to the output file.
    178 !-----------------------------------------------------------------------
    179  var_loop: do n=1,nvars
    180  var_id=n
    181  call check(nf90_inquire_variable(ncid_in,var_id,name_var,nctype & !-- The name and type of the nth variable
    182  ,ndims,dimids,natts)) !-- The dimensions, ID, and attributes in the nth variable
    183  call check(nf90_inquire_dimension(ncid_in,dimids(1),name_xdim,len_x)) !-- Get the length of the input 1st dimension.
    184  if(ndims==2)then
    185  call check(nf90_inquire_dimension(ncid_in,dimids(2),name_ydim,len_y)) !-- Get the length of the input y dimension.
    186  endif
    187 
    188 !-------------------
    189 !*** 1-D variables
    190 !-------------------
    191  if(ndims==1)then
    192 
    193 !---------------
    194 !*** Character
    195 !---------------
    196  if(nctype==nf90_char)then
    197  n_start=1 !-- Start reading incoming character data at this location.
    198  n_count=len_x !-- Character data is not gridded so not shaved.
    199  allocate(var_1d_char(1:n_count),stat=istat)
    200  call check(nf90_get_var(ncid_in,var_id,var_1d_char(:) & !-- Fill the 1-D character variable.
    201  ,start=(/n_start/) &
    202  ,count=(/n_count/)))
    203  call check(nf90_put_var(ncid_out,var_id,var_1d_char)) !-- Write out the 1-D character variable.
    204  deallocate(var_1d_char)
    205 
    206 !---------------
    207 !*** Numerical
    208 !---------------
    209  else
    210  n_start=n_shave+1 !-- Start reading incoming data at this location.
    211  n_count=len_dim-2*n_shave !-- # of datapoints to fill in the shaved 1-D variable.
    212  allocate(var_1d_with_halo(1:n_count),stat=istat)
    213  call check(nf90_get_var(ncid_in,var_id,var_1d_with_halo(:) & !-- Fill the shaved 1-D variable.
    214  ,start=(/n_start/) &
    215  ,count=(/n_count/)))
    216  call check(nf90_put_var(ncid_out,var_id,var_1d_with_halo)) !-- Write out the shaved 1-D variable.
    217  deallocate(var_1d_with_halo)
    218  endif
    219 
    220 !-------------------
    221 !*** 2-D variables
    222 !-------------------
    223  elseif(ndims==2)then
    224  if(trim(file)=='orog_file')then
    225  i_start=(len_x-idim_compute)/2-halo+1 !-- Starting i of 2-D data with halo rows on compute grid.
    226  j_start=(len_y-jdim_compute)/2-halo+1 !-- Starting j of 2-D data with halo rows on compute grid.
    227  i_count=i_count_compute !-- i extent of 2-D data with halo rows on compute grid.
    228  j_count=j_count_compute !-- j extent of 2-D data with halo rows on compute grid.
    229  elseif(trim(file)=='grid_file')then
    230  i_start=(len_x-2*idim_compute)/2-2*halo+1 !-- Starting i of 2-D data with halo rows on supergrid.
    231  j_start=(len_y-2*jdim_compute)/2-2*halo+1 !-- Starting j of 2-D data with halo rows on supergrid.
    232  i_count=i_count_super !-- i extent of 2-D data with halo rows on supergrid.
    233  j_count=j_count_super !-- j extent of 2-D data with halo rows on supergrid.
    234  if(trim(name_xdim)=='nxp')then
    235  i_count=i_count+1 !-- nxp is # of cell corners in x, not centers.
    236  endif
    237  if(trim(name_ydim)=='nyp')then
    238  j_count=j_count+1 !-- nyp is # of cell corners in y, not centers.
    239  endif
    240  endif
    241  if(nctype==nf90_float)then !-- Single precision real variables
    242  allocate(var_2d_with_halo(i_count,j_count),stat=istat)
    243  call check(nf90_get_var(ncid_in,var_id,var_2d_with_halo(:,:) & !-- Fill array with compute data plus halo rows.
    244  ,start=(/i_start,j_start/) &
    245  ,count=(/i_count,j_count/)))
    246  call check(nf90_put_var(ncid_out,var_id,var_2d_with_halo)) !-- Write out the shaved 2-D single precision variable.
    247  deallocate(var_2d_with_halo)
    248  elseif(nctype==nf90_double)then !-- Double precision real variables
    249  allocate(var_2d_dbl_with_halo(i_count,j_count),stat=istat)
    250  call check(nf90_get_var(ncid_in,var_id,var_2d_dbl_with_halo(:,:) & !-- Fill array with compute data plus halo rows.
    251  ,start=(/i_start,j_start/) &
    252  ,count=(/i_count,j_count/)))
    253  call check(nf90_put_var(ncid_out,var_id,var_2d_dbl_with_halo)) !-- Write out the shaved 2-D double precision variable.
    254  deallocate(var_2d_dbl_with_halo)
    255  endif
    256  endif
    257  enddo var_loop
    258  call check(nf90_close(ncid_out))
    259  call check(nf90_close(ncid_in))
    260 
    261  contains
    262 
    266  subroutine check(status)
    267  integer,intent(in) :: status
    268  if(status /= nf90_noerr) then
    269  print *, trim(nf90_strerror(status))
    270  stop "Stopped"
    271  end if
    272  end subroutine check
    273  end program shave_nc
    program shave_nc
    The grid driver step in FV3 preprocessing generates a grid_tile file and an oro_tile file for the reg...
    Definition: shave_nc.F90:17
    +
    subroutine check(status)
    Check results of netCDF call.
    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/splitbar.png b/ver-1.11.0/grid_tools/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/sync_off.png b/ver-1.11.0/grid_tools/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/sync_on.png b/ver-1.11.0/grid_tools/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/tab_a.png b/ver-1.11.0/grid_tools/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/tab_b.png b/ver-1.11.0/grid_tools/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/grid_tools/tabs.css b/ver-1.11.0/grid_tools/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/grid_tools/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/utils_8F90.html b/ver-1.11.0/grid_tools/utils_8F90.html new file mode 100644 index 000000000..28d904c93 --- /dev/null +++ b/ver-1.11.0/grid_tools/utils_8F90.html @@ -0,0 +1,172 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/filter_topo.fd/utils.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils.F90 File Reference
    +
    +
    + +

    Utility routines. +More...

    +
    #include <netcdf.inc>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  utils
     Module that contains general utility routines.
     
    + + + + + + + + + + +

    +Functions/Subroutines

    subroutine utils::fill_regional_halo (data, halo)
     This routine extrapolate geolat_c and geolon_c halo points for the regional standalone grid. More...
     
    subroutine utils::handle_err (status, string)
     Prints an error message to standard output, then halts program execution with a bad status. More...
     
    subroutine utils::read_namelist
     Read the program namelist file. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    character(len=512) utils::grid_file = "atmos_mosaic.nc"
     Path/name of the grid mosaic file. More...
     
    integer utils::grid_type = 0
     Grid type. More...
     
    character(len=128) utils::mask_field = "slmsk"
     NetCDF record name of the land/sea mask. More...
     
    logical utils::nested = .false.
     If true, process a global grid with a nest. More...
     
    logical utils::regional = .false.
     If true, process a stand-alone regional grid. More...
     
    real utils::res = 48.
     The 'CRES' resolution. More...
     
    real utils::stretch_fac = 1.0
     Grid stretching factor. More...
     
    character(len=128) utils::topo_field = "orog_filt"
     NetCDF record name of the filtered topography (or orography). More...
     
    character(len=512) utils::topo_file = "orog"
     Path/name of the topography (or orography) file. More...
     
    logical utils::zero_ocean = .true.
     If true, no diffusive flux into water/ocean area (preserve islands). More...
     
    +

    Detailed Description

    +

    Utility routines.

    +
    Author
    GFDL programmer
    + +

    Definition in file utils.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/grid_tools/utils_8F90.js b/ver-1.11.0/grid_tools/utils_8F90.js new file mode 100644 index 000000000..e73b1ae96 --- /dev/null +++ b/ver-1.11.0/grid_tools/utils_8F90.js @@ -0,0 +1,16 @@ +var utils_8F90 = +[ + [ "fill_regional_halo", "utils_8F90.html#a3104e7e7b180787408ded9cfe521b7b8", null ], + [ "handle_err", "utils_8F90.html#a970642bec191e4bb7ee405787c192122", null ], + [ "read_namelist", "utils_8F90.html#ac90e26fad77fd27d0910be99d80bab73", null ], + [ "grid_file", "utils_8F90.html#a66fef4a7e26a8d6cd8896fde50d69fe4", null ], + [ "grid_type", "utils_8F90.html#a80d365fe7e244336b4deba2fbe720758", null ], + [ "mask_field", "utils_8F90.html#af55445de78a1c182c995ad92e2b1f367", null ], + [ "nested", "utils_8F90.html#aeb1687b2bf37a75327268e2b19e0ff78", null ], + [ "regional", "utils_8F90.html#a255512c5e1b7091b5894376e1a74d237", null ], + [ "res", "utils_8F90.html#aca2643d8c20b795e2d1dad945b07c136", null ], + [ "stretch_fac", "utils_8F90.html#aad5ae4657c154fc643cf21e2cfe25bf5", null ], + [ "topo_field", "utils_8F90.html#a35ecc5fff8f111f49062e28462a51b8b", null ], + [ "topo_file", "utils_8F90.html#a6863f54503680867bc1a5bb6bf8eb206", null ], + [ "zero_ocean", "utils_8F90.html#ab731343353e3c68060807456bc5b6e25", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/grid_tools/utils_8F90_source.html b/ver-1.11.0/grid_tools/utils_8F90_source.html new file mode 100644 index 000000000..3e6d1fdda --- /dev/null +++ b/ver-1.11.0/grid_tools/utils_8F90_source.html @@ -0,0 +1,119 @@ + + + + + + + +grid_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/grid_tools.fd/filter_topo.fd/utils.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    grid_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utils.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    8  module utils
    9 
    10  implicit none
    11 
    12  public
    13 
    14  character(len=512) :: topo_file = "orog"
    15  character(len=128) :: topo_field = "orog_filt"
    17  character(len=128) :: mask_field = "slmsk"
    18  character(len=512) :: grid_file = "atmos_mosaic.nc"
    19 
    20  logical :: zero_ocean = .true.
    22  logical :: nested = .false.
    23  logical :: regional = .false.
    24 
    25  integer :: grid_type = 0
    26 
    27  real :: stretch_fac = 1.0
    28  real :: res = 48.
    29 
    30  contains
    31 
    36  subroutine read_namelist
    37 
    38  implicit none
    39 
    40  integer :: stdunit = 6, unit=7, io_status
    41  logical :: opened
    42 
    43  namelist /filter_topo_nml/ topo_file, topo_field, mask_field, grid_file, zero_ocean, &
    45 
    46  do
    47  inquire( unit=unit, opened=opened )
    48  if( .NOT.opened )exit
    49  unit = unit + 1
    50  if( unit.EQ.100 )call handle_err(-1, 'Unable to locate unit number.' )
    51  end do
    52 
    53  open( unit=unit, file='input.nml', iostat=io_status )
    54  read( unit,filter_topo_nml, iostat=io_status )
    55  close(unit)
    56 
    57  if (io_status > 0) call handle_err(-1, 'Error reading input.nml')
    58 
    59  write (stdunit, nml=filter_topo_nml)
    60 
    61  end subroutine read_namelist
    62 
    70  subroutine fill_regional_halo(data, halo)
    71  integer, intent(in) :: halo
    72  real, dimension(1-halo:,1-halo:,:), intent(inout) :: data
    73  integer :: h, i_st, i_ed, j_st, j_ed
    74 
    75  i_st=lbound(data,1)+halo
    76  i_ed=ubound(data,1)-halo
    77  j_st=lbound(data,2)+halo
    78  j_ed=ubound(data,2)-halo
    79 
    80  do h = 1, halo
    81  data(i_st:i_ed, j_st-1 , :) = 2* data(i_st:i_ed, j_st , :) - data(i_st:i_ed, j_st+1 , :)! north
    82  data(i_st:i_ed, j_ed+1 , :) = 2* data(i_st:i_ed, j_ed , :) - data(i_st:i_ed, j_ed-1 , :)! south
    83  data(i_st-1 , j_st:j_ed, :) = 2* data(i_st , j_st:j_ed, :) - data(i_st+1 , j_st:j_ed, :)! east
    84  data(i_ed+1 , j_st:j_ed, :) = 2* data(i_ed , j_st:j_ed, :) - data(i_ed-1 , j_st:j_ed, :)! west
    85 
    86  data(i_st-1, j_st-1, :) = (data(i_st-1, j_st, :) + data(i_st, j_st-1, :))*0.5 !NW Corner
    87  data(i_ed+1, j_st-1, :) = (data(i_ed+1, j_st, :) + data(i_ed, j_st-1, :))*0.5 !NE Corner
    88  data(i_st-1, j_ed+1, :) = (data(i_st-1, j_ed, :) + data(i_st, j_ed+1, :))*0.5 !SW Corner
    89  data(i_ed+1, j_ed+1, :) = (data(i_ed+1, j_ed, :) + data(i_ed, j_ed+1, :))*0.5 !SE Corner
    90 
    91  i_st=i_st-1
    92  i_ed=i_ed+1
    93  j_st=j_st-1
    94  j_ed=j_ed+1
    95  enddo
    96 
    97  end subroutine fill_regional_halo
    98 
    106  subroutine handle_err(status, string)
    108  implicit none
    109 
    110 #include <netcdf.inc>
    111 
    112  integer, intent(in) :: status
    113  character(len=*), intent(in) :: string
    114  character(len=256) :: errmsg
    115 
    116  if (status .ne. nf_noerr) then
    117  errmsg = nf_strerror(status)
    118  errmsg = trim(errmsg) // " " // trim(string)
    119  print *, "FATAL ERROR:"
    120  print *, trim(errmsg)
    121  error stop 'Stopped'
    122  endif
    123 
    124  end subroutine handle_err
    125 
    126  end module utils
    subroutine fill_regional_halo(data, halo)
    This routine extrapolate geolat_c and geolon_c halo points for the regional standalone grid...
    Definition: utils.F90:71
    +
    character(len=128) topo_field
    NetCDF record name of the filtered topography (or orography).
    Definition: utils.F90:15
    +
    character(len=128) mask_field
    NetCDF record name of the land/sea mask.
    Definition: utils.F90:17
    +
    logical nested
    If true, process a global grid with a nest.
    Definition: utils.F90:22
    +
    subroutine handle_err(status, string)
    Prints an error message to standard output, then halts program execution with a bad status...
    Definition: utils.F90:107
    +
    subroutine read_namelist
    Read the program namelist file.
    Definition: utils.F90:37
    +
    character(len=512) grid_file
    Path/name of the grid mosaic file.
    Definition: utils.F90:18
    +
    real res
    The &#39;CRES&#39; resolution.
    Definition: utils.F90:28
    +
    logical regional
    If true, process a stand-alone regional grid.
    Definition: utils.F90:23
    +
    integer grid_type
    Grid type.
    Definition: utils.F90:25
    +
    real stretch_fac
    Grid stretching factor.
    Definition: utils.F90:27
    +
    Module that contains general utility routines.
    Definition: utils.F90:8
    +
    logical zero_ocean
    If true, no diffusive flux into water/ocean area (preserve islands).
    Definition: utils.F90:20
    +
    character(len=512) topo_file
    Path/name of the topography (or orography) file.
    Definition: utils.F90:14
    +
    +
    + + + + diff --git a/ver-1.11.0/index.html b/ver-1.11.0/index.html new file mode 100644 index 000000000..9bccf55c2 --- /dev/null +++ b/ver-1.11.0/index.html @@ -0,0 +1,126 @@ + + + + + + + +UFS_UTILS: Main Page + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    UFS_UTILS +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    UFS_UTILS Documentation
    +
    +
    +

    +UFS_UTILS

    +

    Utilities for the NCEP Unified Forecast System.

    +

    The UFS_UTILS code can be found here: https://github.com/ufs-community/UFS_UTILS.

    +

    +The Utilities

    +
      +
    • chgres_cube - Creates cold start initial conditions for FV3 model runs.
    • +
    • emcsfc_ice_blend - Blends National Ice Center sea ice cover and EMC sea ice concentration data to create a global sea ice analysis used to update the GFS once per day.
    • +
    • emcsfc_snow2mdl - Blends National Ice Center snow cover and Air Force snow depth data to create a global depth analysis used to update the GFS snow field once per day.
    • +
    • fre-nctools - Tools to remap data; and to create the geo-reference fields (latitude, longitude, etc.) for an FV3 grid.
    • +
    • fvcom_tools - Replaces lake surface and lake ice temperature along with aerial ice concentration generated from the Great Lakes Operational Forecast System (GLOFS) in an FV3 surface restart file.
    • +
    • gblevents - Prepares observational prepbufr reports for subsequent quality control and analysis programs.
    • +
    • global_cycle - Updates the GFS surface conditions using external snow and sea ice analyses. Updates monthly climatological fields such as plant greenness fraction and albedo. Runs as part of the GFS and GDAS cycles.
    • +
    • grid_tools - Utilities to filter topography, to create regional extended Schmidt gnomonic grids, and to compute the equivalent global resolution of a regional grid.
    • +
    • orog_mask_tools - Utilities to create land mask, terrain and gravity wave drag fields; set lake fraction and depth; creates an inland land mask.
    • +
    • sfc_climo_gen - Creates surface climatological fields, such as vegetation type and albedo, for an FV3 grid.
    • +
    • vcoord_gen - Generates hybrid coordinate parameters from fields such as surface pressure, model top and the number of vertical levels. Outputs the 'ak' and 'bk' parameters used by the forecast model to define the hybrid levels.
    • +
    • lsm_routines - Land surface model-specific routines that are utilised elsewhere within UFS_UTILS. Currently, contains the routines required by global_cycle to perform data assimilation updates to land model states
    • +
    • cpld_gridgen - Utility to create the Fix and IC files for the S2SW and S2S applications
    • +
    • weight_gen - Utility to create gaussian grid ESMF 'scrip' files for use in creating ESMF interpolation weight files.
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/jquery.js b/ver-1.11.0/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    lsm_routines
    +
    +
    +

    +Introduction

    +

    This directory contains sub-directories with land surface model-specific routines that are utilised elsewhere within UFS_UTILS. Currently, it contains the routines required by global_cycle to perform data assimilation updates to land model states.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The land models included are:

    +
      +
    • Noah - routines for the Noah land surface model.
    • +
    +

    The lsm_routines libraries are used in the UFS_UTILS project.

    +
    + + + + + diff --git a/ver-1.11.0/lsm_routines/jquery.js b/ver-1.11.0/lsm_routines/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/lsm_routines/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/docs/lsm_routines.md
    +
    +
    +
    1 
    2 # lsm_routines
    3 
    4 # Introduction
    5 
    6 This directory contains sub-directories with land surface model-specific routines that are utilised elsewhere within UFS_UTILS. Currently, it contains the routines required by global_cycle to perform data assimilation updates to land model states.
    7 
    8 This document is part of the <a href="../index.html">UFS_UTILS
    9 documentation</a>.
    10 
    11 The land models included are:
    12 
    13 - <a href="../noah/index.html">Noah</a> - routines
    14  for the Noah land surface model.
    15 
    16 The lsm_routines libraries are used in the
    17 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    + + + + + diff --git a/ver-1.11.0/lsm_routines/menu.js b/ver-1.11.0/lsm_routines/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/lsm_routines/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/lsm_routines/menudata.js b/ver-1.11.0/lsm_routines/menudata.js new file mode 100644 index 000000000..03b9351f6 --- /dev/null +++ b/ver-1.11.0/lsm_routines/menudata.js @@ -0,0 +1,25 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}]} diff --git a/ver-1.11.0/lsm_routines/nav_f.png b/ver-1.11.0/lsm_routines/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/nav_g.png b/ver-1.11.0/lsm_routines/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/lsm_routines/search/all_0.html b/ver-1.11.0/lsm_routines/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/lsm_routines/search/all_0.js b/ver-1.11.0/lsm_routines/search/all_0.js new file mode 100644 index 000000000..8781ceaee --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lsm_5froutines',['lsm_routines',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/lsm_routines/search/close.png b/ver-1.11.0/lsm_routines/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/search/mag_sel.png b/ver-1.11.0/lsm_routines/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/search/nomatches.html b/ver-1.11.0/lsm_routines/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/lsm_routines/search/pages_0.html b/ver-1.11.0/lsm_routines/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/lsm_routines/search/pages_0.js b/ver-1.11.0/lsm_routines/search/pages_0.js new file mode 100644 index 000000000..8781ceaee --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lsm_5froutines',['lsm_routines',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/lsm_routines/search/search.css b/ver-1.11.0/lsm_routines/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/lsm_routines/search/search.js b/ver-1.11.0/lsm_routines/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/lsm_routines/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/search/search_r.png b/ver-1.11.0/lsm_routines/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/sync_off.png b/ver-1.11.0/lsm_routines/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/sync_on.png b/ver-1.11.0/lsm_routines/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/tab_a.png b/ver-1.11.0/lsm_routines/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/tab_b.png b/ver-1.11.0/lsm_routines/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/lsm_routines/tabs.css b/ver-1.11.0/lsm_routines/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/lsm_routines/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/main_8md_source.html b/ver-1.11.0/main_8md_source.html new file mode 100644 index 000000000..7625d5741 --- /dev/null +++ b/ver-1.11.0/main_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +UFS_UTILS: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/docs/main.md Source File + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    UFS_UTILS +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/docs/main.md
    +
    +
    +
    1 @mainpage
    2 
    3 # UFS_UTILS
    4 
    5 Utilities for the NCEP Unified Forecast System.
    6 
    7 The UFS_UTILS code can be found here:
    8 https://github.com/ufs-community/UFS_UTILS.
    9 
    10 ## Documentation for Previous Versions of UFS_UTILS
    11 
    12 * [UFS_UTILS Version 1.11.0](ver-1.11.0/index.html)
    13 * [UFS_UTILS Version 1.10.0](ver-1.10.0/index.html)
    14 * [UFS_UTILS Version 1.9.0](ver-1.9.0/index.html)
    15 * [UFS_UTILS Version 1.8.0](ver-1.8.0/index.html)
    16 * [UFS_UTILS Version 1.7.0](ver-1.7.0/index.html)
    17 * [UFS_UTILS Version 1.6.0](ver-1.6.0/index.html)
    18 * [UFS_UTILS Version 1.5.0](ver-1.5.0/index.html)
    19 * [UFS_UTILS Version 1.4.0](ver-1.4.0/index.html)
    20 * [UFS_UTILS Version 1.3.0](ver-1.3.0/index.html)
    21 
    22 ## The Utilities
    23 
    24 - <a href="chgres_cube/index.html">chgres_cube</a> - Creates cold
    25  start initial conditions for FV3 model runs.
    26 
    27 - <a href="emcsfc_ice_blend/index.html">emcsfc_ice_blend</a> - Blends
    28  National Ice Center sea ice cover and EMC sea ice concentration data
    29  to create a global sea ice analysis used to update the GFS once per
    30  day.
    31 
    32 - <a href="emcsfc_snow2mdl/index.html">emcsfc_snow2mdl</a> - Blends
    33  National Ice Center snow cover and Air Force snow depth data to
    34  create a global depth analysis used to update the GFS snow field
    35  once per day.
    36 
    37 - fre-nctools - Tools to remap data; and to create the geo-reference
    38  fields (latitude, longitude, etc.) for an FV3 grid.
    39 
    40 - <a href="fvcom_tools/index.html">fvcom_tools</a> - Replaces lake
    41  surface and lake ice temperature along with aerial ice concentration
    42  generated from the Great Lakes Operational Forecast System (GLOFS)
    43  in an FV3 surface restart file.
    44 
    45 - <a href="gblevents/index.html">gblevents</a> -
    46  Prepares observational prepbufr reports for subsequent quality
    47  control and analysis programs.
    48 
    49 - <a href="global_cycle/index.html">global_cycle</a> -
    50  Updates the GFS surface conditions using external snow and sea ice
    51  analyses. Updates monthly climatological fields such as plant
    52  greenness fraction and albedo. Runs as part of the GFS and GDAS
    53  cycles.
    54 
    55 - <a href="grid_tools/index.html">grid_tools</a> -
    56  Utilities to filter topography, to create regional extended Schmidt
    57  gnomonic grids, and to compute the equivalent global resolution of a
    58  regional grid.
    59 
    60 - <a href="orog_mask_tools/index.html">orog_mask_tools</a> - Utilities
    61  to create land mask, terrain and gravity wave drag fields; set lake
    62  fraction and depth; creates an inland land mask.
    63 
    64 - <a href="sfc_climo_gen/index.html">sfc_climo_gen</a> - Creates
    65  surface climatological fields, such as vegetation type and albedo,
    66  for an FV3 grid.
    67 
    68 - <a href="vcoord_gen/index.html">vcoord_gen</a> - Generates hybrid
    69  coordinate parameters from fields such as surface pressure, model
    70  top and the number of vertical levels. Outputs the 'ak' and 'bk'
    71  parameters used by the forecast model to define the hybrid levels.
    72 
    73 - <a href="lsm_routines/index.html">lsm_routines</a> - Land surface
    74  model-specific routines that are utilised elsewhere within UFS_UTILS.
    75  Currently, contains the routines required by global_cycle to
    76  perform data assimilation updates to land model states
    77 
    78 - <a href="cpld_gridgen/index.html">cpld_gridgen</a> - Utility to
    79  create the Fix and IC files for the S2SW and S2S applications
    80 
    81 - <a href="weight_gen/index.html">weight_gen</a> - Utility to
    82  create gaussian grid ESMF 'scrip' files for use in creating
    83  ESMF interpolation weight files.
    +
    + + + + diff --git a/ver-1.11.0/menu.js b/ver-1.11.0/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/menudata.js b/ver-1.11.0/menudata.js new file mode 100644 index 000000000..03b9351f6 --- /dev/null +++ b/ver-1.11.0/menudata.js @@ -0,0 +1,25 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}]} diff --git a/ver-1.11.0/nav_f.png b/ver-1.11.0/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/nav_g.png b/ver-1.11.0/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/docs/README.md
    +
    +
    +
    1 These directory contains copies of the noah LSM code needed to make any land state adjusments made neceessary by the DA updates.
    2 For noah, routines not labelled public/private, will shorty be replaced, and are very unlikely to change. For now, have made a second copy of the relevant routines.
    3 
    4 The copied versions are from: https://github.com/NCAR/ccpp-physics -b master, commit 08b72bc1c23c48a823626d81f8e0a398685a35a3 (dated May, 2021).
    5 (used this version, as is formatted for doxygen. output zero diff to version in the global_workflow).
    6 
    7 Files directly copied:
    8 namelist_soilveg.f
    9 set_soilveg.f -> needed some changes for doxygen
    10 
    11 sflx_snippet.f is a snippet of the file sflx.F, with minor changes to compil, and to enable frh2o routine to be called externally.
    12 
    13 For complete documentation, see https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/noah/bc_s.png b/ver-1.11.0/noah/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/bdwn.png b/ver-1.11.0/noah/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/bulk_snow_module.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    bulk_snow_module.f90 File Reference
    +
    +
    + +

    Routines to make DA updates to a bulk (single layer) snow model such as that in Noah. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine, public bulk_snow_module::calc_density (lensfc, landmask, swe, snd, rank, density)
     This subroutine calculates snow density from forecast fields. More...
     
    +

    Detailed Description

    +

    Routines to make DA updates to a bulk (single layer) snow model such as that in Noah.

    +
    Author
    Clara Draper
    + +

    Definition in file bulk_snow_module.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ calc_density()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public bulk_snow_module::calc_density (integer, intent(in) lensfc,
    integer, dimension(lensfc), intent(in) landmask,
    real, dimension(lensfc), intent(in) swe,
    real, dimension(lensfc), intent(in) snd,
    integer, intent(in) rank,
    real, dimension(lensfc), intent(out) density 
    )
    +
    + +

    This subroutine calculates snow density from forecast fields.

    +

    density = SWE/SND where snow present. = average from snow forecasts over land, where snow not present

    Parameters
    + + + + + + + +
    [in]lensfcNumber of sfc grid cells
    [in]rankProcessor rank
    [in]landmaskMask for land increments
    [in]sweSnow Water Equivalent
    [in]sndSnow Depth
    [out]densitySnow density [-]
    +
    +
    + +

    Definition at line 27 of file bulk_snow_module.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/bulk__snow__module_8f90.js b/ver-1.11.0/noah/bulk__snow__module_8f90.js new file mode 100644 index 000000000..9afe1f342 --- /dev/null +++ b/ver-1.11.0/noah/bulk__snow__module_8f90.js @@ -0,0 +1,4 @@ +var bulk__snow__module_8f90 = +[ + [ "calc_density", "bulk__snow__module_8f90.html#a337fd1b8d9de2215e4dc0f256a25dc4f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/bulk__snow__module_8f90_source.html b/ver-1.11.0/noah/bulk__snow__module_8f90_source.html new file mode 100644 index 000000000..bef9c5497 --- /dev/null +++ b/ver-1.11.0/noah/bulk__snow__module_8f90_source.html @@ -0,0 +1,105 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/bulk_snow_module.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    bulk_snow_module.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    6 module bulk_snow_module
    7 
    8  implicit none
    9 
    10  private
    11 
    12  public calc_density
    13 
    14 contains
    15 
    25 
    26  subroutine calc_density(lensfc, landmask, swe, snd, rank, density)
    27 
    28  implicit none
    29 
    30  integer, intent(in) :: lensfc, rank
    31  integer, intent(in) :: landmask(lensfc)
    32  real, intent(in) :: swe(lensfc), snd(lensfc)
    33  real, intent(out) :: density(lensfc)
    34 
    35  real :: dens_mean
    36  integer :: n
    37 
    38  ! density = swe/snd
    39  do n =1,lensfc
    40  if (snd(n) > 0.001 ) then
    41  density(n) = swe(n)/snd(n)
    42  else
    43  density(n)=0.1
    44  endif
    45  enddo
    46 
    47  where (density < 0.0001) density = 0.1
    48 
    49  ! calculate mean density of snow over land
    50  if (count(landmask==2) > 0) then
    51  ! mean density over snow-covered land
    52  dens_mean = sum(density, mask = (landmask==2 )) &
    53  / count(landmask==2)
    54  print *, 'mean density on rank ', rank,': ', dens_mean
    55  else
    56  dens_mean = 0.1 ! default value if have no snow in tile
    57  print *, 'no snow on rank ', rank, ' using default density ', dens_mean
    58  endif
    59 
    60  ! for grid cells with no valid density, fill in the average snodens
    61  where( swe <= 0.001 ) density = dens_mean
    62 
    63  end subroutine calc_density
    64 
    65 end module bulk_snow_module
    +
    + + + + diff --git a/ver-1.11.0/noah/closed.png b/ver-1.11.0/noah/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.html b/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.html new file mode 100644 index 000000000..758c3ec2e --- /dev/null +++ b/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.html @@ -0,0 +1,118 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    noah.fd Directory Reference
    +
    +
    + + + + + + + + + + + +

    +Files

    file  bulk_snow_module.f90 [code]
     Routines to make DA updates to a bulk (single layer) snow model such as that in Noah.
     
    file  set_soilveg_snippet.f90 [code]
     Routine to set Noah LSM soil and veg params needed for sflx_snippet.
     
    file  sflx_snippet.f90 [code]
     Snippets of noah model from sflx.F needed for land DA updates.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.js b/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.js new file mode 100644 index 000000000..5e9a08517 --- /dev/null +++ b/ver-1.11.0/noah/dir_868aa969f47363628fe3c8bb946a444e.js @@ -0,0 +1,6 @@ +var dir_868aa969f47363628fe3c8bb946a444e = +[ + [ "bulk_snow_module.f90", "bulk__snow__module_8f90.html", "bulk__snow__module_8f90" ], + [ "set_soilveg_snippet.f90", "set__soilveg__snippet_8f90.html", "set__soilveg__snippet_8f90" ], + [ "sflx_snippet.f90", "sflx__snippet_8f90.html", "sflx__snippet_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..031a1c908 --- /dev/null +++ b/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,105 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..ede445c19 --- /dev/null +++ b/ver-1.11.0/noah/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "lsm_routines.fd", "dir_f8e7bd65e1d9005266a50e97e5b935e9.html", "dir_f8e7bd65e1d9005266a50e97e5b935e9" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.html b/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.html new file mode 100644 index 000000000..8cdb837f7 --- /dev/null +++ b/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.html @@ -0,0 +1,109 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    lsm_routines.fd Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.js b/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.js new file mode 100644 index 000000000..bc35a22e0 --- /dev/null +++ b/ver-1.11.0/noah/dir_f8e7bd65e1d9005266a50e97e5b935e9.js @@ -0,0 +1,4 @@ +var dir_f8e7bd65e1d9005266a50e97e5b935e9 = +[ + [ "noah.fd", "dir_868aa969f47363628fe3c8bb946a444e.html", "dir_868aa969f47363628fe3c8bb946a444e" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/doc.png b/ver-1.11.0/noah/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/doxygen.css b/ver-1.11.0/noah/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/noah/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/noah/doxygen.png b/ver-1.11.0/noah/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/dynsections.js b/ver-1.11.0/noah/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/noah/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +noah: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 1234]
    + + + + + + +
      sorc
      lsm_routines.fd
      noah.fd
     bulk_snow_module.f90Routines to make DA updates to a bulk (single layer) snow model such as that in Noah
     set_soilveg_snippet.f90Routine to set Noah LSM soil and veg params needed for sflx_snippet
     sflx_snippet.f90Snippets of noah model from sflx.F needed for land DA updates
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/files_dup.js b/ver-1.11.0/noah/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/noah/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/ver-1.11.0/noah/folderclosed.png b/ver-1.11.0/noah/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/index.html b/ver-1.11.0/noah/index.html new file mode 100644 index 000000000..8a02c28ac --- /dev/null +++ b/ver-1.11.0/noah/index.html @@ -0,0 +1,114 @@ + + + + + + + +noah: noah + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    noah
    +
    +
    +

    +Introduction

    +

    This directory contains copies of the NOAH LSM code needed to make any land state adjusments made neceessary by the DA updates. For the NOAH model, in the current code routines not labelled public/private, will shorty be replaced, and are very unlikely to change. For now, have made a second copy of the relevant routines.

    +

    The files were checked out from https://github.com/NCAR/ccpp-physics -b master, commit 08b72bc1c23c48a823626d81f8e0a398685a35a3 (dated May, 2021).

    +

    Files used from the checkout: namelist_soilveg.f set_soilveg.f
    +sflx.F machine.F physcons.F90

    +

    sflx_snippet.f is a snippet of the file sflx.F, with minor changes to compile, and to enable the frh2o routine to be called externally. Copied values from physcons and machine into sflx_snippet.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The NOAH routines are included in the lsm_routines directory.

    +

    The NOAH library created here is used in the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/noah/jquery.js b/ver-1.11.0/noah/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/noah/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    These directory contains copies of the noah LSM code needed to make any land state adjusments made neceessary by the DA updates. For noah, routines not labelled public/private, will shorty be replaced, and are very unlikely to change. For now, have made a second copy of the relevant routines.

    +

    The copied versions are from: https://github.com/NCAR/ccpp-physics -b master, commit 08b72bc1c23c48a823626d81f8e0a398685a35a3 (dated May, 2021). (used this version, as is formatted for doxygen. output zero diff to version in the global_workflow).

    +

    Files directly copied: namelist_soilveg.f
    +set_soilveg.f -> needed some changes for doxygen

    +

    sflx_snippet.f is a snippet of the file sflx.F, with minor changes to compil, and to enable frh2o routine to be called externally.

    +

    For complete documentation, see https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/noah/menu.js b/ver-1.11.0/noah/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/noah/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/noah/menudata.js b/ver-1.11.0/noah/menudata.js new file mode 100644 index 000000000..ad1715673 --- /dev/null +++ b/ver-1.11.0/noah/menudata.js @@ -0,0 +1,33 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/ver-1.11.0/noah/namespacemembers.html b/ver-1.11.0/noah/namespacemembers.html new file mode 100644 index 000000000..6ed53127a --- /dev/null +++ b/ver-1.11.0/noah/namespacemembers.html @@ -0,0 +1,105 @@ + + + + + + + +noah: Module Members + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    noah +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/namespacemembers_func.html b/ver-1.11.0/noah/namespacemembers_func.html new file mode 100644 index 000000000..13b9dcd9d --- /dev/null +++ b/ver-1.11.0/noah/namespacemembers_func.html @@ -0,0 +1,105 @@ + + + + + + + +noah: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/namespaces.html b/ver-1.11.0/noah/namespaces.html new file mode 100644 index 000000000..42e52d23d --- /dev/null +++ b/ver-1.11.0/noah/namespaces.html @@ -0,0 +1,109 @@ + + + + + + + +noah: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + +
     Nset_soilveg_snippet_modBelow was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen)
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/namespaces_dup.js b/ver-1.11.0/noah/namespaces_dup.js new file mode 100644 index 000000000..3272c5bcc --- /dev/null +++ b/ver-1.11.0/noah/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "set_soilveg_snippet_mod", "namespaceset__soilveg__snippet__mod.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/namespaceset__soilveg__snippet__mod.html b/ver-1.11.0/noah/namespaceset__soilveg__snippet__mod.html new file mode 100644 index 000000000..8ffb06404 --- /dev/null +++ b/ver-1.11.0/noah/namespaceset__soilveg__snippet__mod.html @@ -0,0 +1,187 @@ + + + + + + + +noah: set_soilveg_snippet_mod Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    set_soilveg_snippet_mod Module Reference
    +
    +
    + +

    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 (isot, ivet, maxsmc, bb, satpsi, iret)
     This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90. More...
     
    +

    Detailed Description

    +

    Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen)

    +

    Function/Subroutine Documentation

    + +

    ◆ set_soilveg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public set_soilveg_snippet_mod::set_soilveg (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.

    +
    Parameters
    + + + + + + + +
    [in]isotSoil type
    [in]ivetVegetation type
    [out]maxsmcMaximum soil moisture for each soil type
    [out]bbB exponent for each soil type
    [out]satpsiSaturated matric potential for each soil type
    [out]iretReturn integer
    +
    +
    + +

    Definition at line 27 of file set_soilveg_snippet.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/nav_f.png b/ver-1.11.0/noah/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/nav_g.png b/ver-1.11.0/noah/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/docs/noah.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/docs/noah.md
    +
    +
    +
    1 
    2 # noah
    3 
    4 # Introduction
    5 
    6 This directory contains copies of the NOAH LSM code needed to make any land state adjusments made neceessary by the DA updates.
    7 For the NOAH model, in the current code routines not labelled public/private, will shorty be replaced, and are very unlikely to change. For now, have made a second copy of the relevant routines.
    8 
    9 The files were checked out from https://github.com/NCAR/ccpp-physics -b master, commit 08b72bc1c23c48a823626d81f8e0a398685a35a3 (dated May, 2021).
    10 
    11 Files used from the checkout:
    12 namelist_soilveg.f
    13 set_soilveg.f
    14 sflx.F
    15 machine.F
    16 physcons.F90
    17 
    18 sflx_snippet.f is a snippet of the file sflx.F, with minor changes to compile, and to enable the frh2o routine to be called externally. Copied values from physcons and machine into sflx_snippet.
    19 
    20 This document is part of the <a href="../index.html">UFS_UTILS documentation.</a>
    21 
    22 The NOAH routines are included in the <a href="../lsm_routines/index.html">lsm_routines directory.</a>
    23 
    24 The NOAH library created here is used in the
    25 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/noah/open.png b/ver-1.11.0/noah/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +noah: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/resize.js b/ver-1.11.0/noah/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/noah/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/noah/search/all_0.html b/ver-1.11.0/noah/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/noah/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_0.js b/ver-1.11.0/noah/search/all_0.js new file mode 100644 index 000000000..959cf7d02 --- /dev/null +++ b/ver-1.11.0/noah/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bulk_5fsnow_5fmodule_2ef90',['bulk_snow_module.f90',['../bulk__snow__module_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/all_1.html b/ver-1.11.0/noah/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/noah/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_1.js b/ver-1.11.0/noah/search/all_1.js new file mode 100644 index 000000000..48a5a207c --- /dev/null +++ b/ver-1.11.0/noah/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['calc_5fdensity',['calc_density',['../bulk__snow__module_8f90.html#a337fd1b8d9de2215e4dc0f256a25dc4f',1,'bulk_snow_module']]] +]; diff --git a/ver-1.11.0/noah/search/all_2.html b/ver-1.11.0/noah/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/noah/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_2.js b/ver-1.11.0/noah/search/all_2.js new file mode 100644 index 000000000..120e09b5b --- /dev/null +++ b/ver-1.11.0/noah/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frh2o',['frh2o',['../sflx__snippet_8f90.html#ae3601ef706255978c4224a7d3aeafc85',1,'sflx_snippet']]] +]; diff --git a/ver-1.11.0/noah/search/all_3.html b/ver-1.11.0/noah/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/noah/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_3.js b/ver-1.11.0/noah/search/all_3.js new file mode 100644 index 000000000..b71912377 --- /dev/null +++ b/ver-1.11.0/noah/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['noah',['noah',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/all_4.html b/ver-1.11.0/noah/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/noah/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_4.js b/ver-1.11.0/noah/search/all_4.js new file mode 100644 index 000000000..f0210ae93 --- /dev/null +++ b/ver-1.11.0/noah/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_lsm_routines_8fd_noah_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/all_5.html b/ver-1.11.0/noah/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/noah/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/all_5.js b/ver-1.11.0/noah/search/all_5.js new file mode 100644 index 000000000..aa67366e6 --- /dev/null +++ b/ver-1.11.0/noah/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['set_5fsoilveg',['set_soilveg',['../namespaceset__soilveg__snippet__mod.html#abb7f94fb9d70a9d0277344b931c25915',1,'set_soilveg_snippet_mod']]], + ['set_5fsoilveg_5fsnippet_2ef90',['set_soilveg_snippet.f90',['../set__soilveg__snippet_8f90.html',1,'']]], + ['set_5fsoilveg_5fsnippet_5fmod',['set_soilveg_snippet_mod',['../namespaceset__soilveg__snippet__mod.html',1,'']]], + ['sflx_5fsnippet_2ef90',['sflx_snippet.f90',['../sflx__snippet_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/close.png b/ver-1.11.0/noah/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/search/files_0.html b/ver-1.11.0/noah/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/noah/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/files_0.js b/ver-1.11.0/noah/search/files_0.js new file mode 100644 index 000000000..959cf7d02 --- /dev/null +++ b/ver-1.11.0/noah/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bulk_5fsnow_5fmodule_2ef90',['bulk_snow_module.f90',['../bulk__snow__module_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/files_1.html b/ver-1.11.0/noah/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/noah/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/files_1.js b/ver-1.11.0/noah/search/files_1.js new file mode 100644 index 000000000..1dc277d9b --- /dev/null +++ b/ver-1.11.0/noah/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['set_5fsoilveg_5fsnippet_2ef90',['set_soilveg_snippet.f90',['../set__soilveg__snippet_8f90.html',1,'']]], + ['sflx_5fsnippet_2ef90',['sflx_snippet.f90',['../sflx__snippet_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/functions_0.html b/ver-1.11.0/noah/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/noah/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/functions_0.js b/ver-1.11.0/noah/search/functions_0.js new file mode 100644 index 000000000..48a5a207c --- /dev/null +++ b/ver-1.11.0/noah/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['calc_5fdensity',['calc_density',['../bulk__snow__module_8f90.html#a337fd1b8d9de2215e4dc0f256a25dc4f',1,'bulk_snow_module']]] +]; diff --git a/ver-1.11.0/noah/search/functions_1.html b/ver-1.11.0/noah/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/noah/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/functions_1.js b/ver-1.11.0/noah/search/functions_1.js new file mode 100644 index 000000000..120e09b5b --- /dev/null +++ b/ver-1.11.0/noah/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frh2o',['frh2o',['../sflx__snippet_8f90.html#ae3601ef706255978c4224a7d3aeafc85',1,'sflx_snippet']]] +]; diff --git a/ver-1.11.0/noah/search/functions_2.html b/ver-1.11.0/noah/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/noah/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/functions_2.js b/ver-1.11.0/noah/search/functions_2.js new file mode 100644 index 000000000..b26989699 --- /dev/null +++ b/ver-1.11.0/noah/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['set_5fsoilveg',['set_soilveg',['../namespaceset__soilveg__snippet__mod.html#abb7f94fb9d70a9d0277344b931c25915',1,'set_soilveg_snippet_mod']]] +]; diff --git a/ver-1.11.0/noah/search/mag_sel.png b/ver-1.11.0/noah/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/search/namespaces_0.html b/ver-1.11.0/noah/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/noah/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/namespaces_0.js b/ver-1.11.0/noah/search/namespaces_0.js new file mode 100644 index 000000000..8b0a2e9b4 --- /dev/null +++ b/ver-1.11.0/noah/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['set_5fsoilveg_5fsnippet_5fmod',['set_soilveg_snippet_mod',['../namespaceset__soilveg__snippet__mod.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/nomatches.html b/ver-1.11.0/noah/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/noah/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/noah/search/pages_0.html b/ver-1.11.0/noah/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/noah/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/pages_0.js b/ver-1.11.0/noah/search/pages_0.js new file mode 100644 index 000000000..b71912377 --- /dev/null +++ b/ver-1.11.0/noah/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['noah',['noah',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/pages_1.html b/ver-1.11.0/noah/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/noah/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/noah/search/pages_1.js b/ver-1.11.0/noah/search/pages_1.js new file mode 100644 index 000000000..f0210ae93 --- /dev/null +++ b/ver-1.11.0/noah/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_lsm_routines_8fd_noah_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/noah/search/search.css b/ver-1.11.0/noah/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/noah/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/noah/search/search.js b/ver-1.11.0/noah/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/noah/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/search/search_r.png b/ver-1.11.0/noah/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/set_soilveg_snippet.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    set_soilveg_snippet.f90 File Reference
    +
    +
    + +

    Routine to set Noah LSM soil and veg params needed for sflx_snippet. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  set_soilveg_snippet_mod
     Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen)
     
    + + + + +

    +Functions/Subroutines

    subroutine, public set_soilveg_snippet_mod::set_soilveg (isot, ivet, maxsmc, bb, satpsi, iret)
     This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90. More...
     
    +

    Detailed Description

    +

    Routine to set Noah LSM soil and veg params needed for sflx_snippet.

    +
    Author
    Clara Draper
    + +

    Definition in file set_soilveg_snippet.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/noah/set__soilveg__snippet_8f90.js b/ver-1.11.0/noah/set__soilveg__snippet_8f90.js new file mode 100644 index 000000000..ffb49ca8b --- /dev/null +++ b/ver-1.11.0/noah/set__soilveg__snippet_8f90.js @@ -0,0 +1,4 @@ +var set__soilveg__snippet_8f90 = +[ + [ "set_soilveg", "set__soilveg__snippet_8f90.html#abb7f94fb9d70a9d0277344b931c25915", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/set__soilveg__snippet_8f90_source.html b/ver-1.11.0/noah/set__soilveg__snippet_8f90_source.html new file mode 100644 index 000000000..b6769fcf9 --- /dev/null +++ b/ver-1.11.0/noah/set__soilveg__snippet_8f90_source.html @@ -0,0 +1,107 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/set_soilveg_snippet.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    set_soilveg_snippet.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    7 
    9 
    10  implicit none
    11 
    12  private
    13 
    14  public set_soilveg
    15 
    16 contains
    17 
    26 subroutine set_soilveg(isot,ivet, maxsmc, bb, satpsi, iret)
    27  implicit none
    28 
    29  integer, intent(in) :: isot,ivet
    30  real, dimension(30), intent(out) :: maxsmc, bb, satpsi
    31  integer, intent(out) :: iret
    32 
    33 ! set vegetation-dependent params (May 2021, UFS uses ivet=1)
    34 ! Draper, not needed for now, but might need SNUPX
    35 ! for SWE-> SCF calculation later
    36 !
    37 ! if(ivet.eq.1)then
    38 
    39  !defined_veg=20
    40 ! might want this later
    41  ! SNUPX =(/0.080, 0.080, 0.080, 0.080, 0.080, 0.020,
    42  !* 0.020, 0.060, 0.040, 0.020, 0.010, 0.020,
    43  !* 0.020, 0.020, 0.013, 0.013, 0.010, 0.020,
    44  !& 0.020, 0.020, 0.000, 0.000, 0.000, 0.000,
    45  !& 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/)
    46 
    47 ! endif
    48 
    49 ! set soil-dependent params (May 2021, UFS uses isot=1)
    50 
    51  if (isot .eq. 1) then
    52 
    53 ! using stasgo table
    54  bb =(/4.05, 4.26, 4.74, 5.33, 5.33, 5.25, &
    55  6.77, 8.72, 8.17, 10.73, 10.39, 11.55,&
    56  5.25, 4.26, 4.05, 4.26, 11.55, 4.05, &
    57  4.05, 0.00, 0.00, 0.00, 0.00, 0.00, &
    58  0.00, 0.00, 0.00, 0.00, 0.00, 0.00/)
    59 ! Draper, these are provided for reference only, and
    60 ! may be useful for later SMC updates
    61 ! DRYSMC=(/0.010, 0.025, 0.010, 0.010, 0.010, 0.010,
    62 ! & 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,
    63 ! & 0.010, 0.010, 0.010, 0.010, 0.010, 0.010,
    64 ! & 0.010, 0.000, 0.000, 0.000, 0.000, 0.000,
    65 ! & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/)
    66 
    67  maxsmc=(/0.395, 0.421, 0.434, 0.476, 0.476, 0.439, &
    68  0.404, 0.464, 0.465, 0.406, 0.468, 0.457, &
    69  0.464, 0.421, 0.200, 0.421, 0.457, 0.200, &
    70  0.395, 0.000, 0.000, 0.000, 0.000, 0.000, &
    71  0.000, 0.000, 0.000, 0.000, 0.000, 0.000/)
    72 
    73  satpsi=(/0.035, 0.0363, 0.1413, 0.7586, 0.7586, 0.3548, &
    74  0.1349, 0.6166, 0.2630, 0.0977, 0.3236, 0.4677,&
    75  0.3548, 0.0363, 0.0350, 0.0363, 0.4677, 0.0350,&
    76  0.0350, 0.00, 0.00, 0.00, 0.00, 0.00, &
    77  0.00, 0.00, 0.00, 0.00, 0.00, 0.00/)
    78 
    79  !defined_soil=19
    80  else
    81  print *, 'set_soilveg_snippet not coded for soil type ', isot
    82  iret = -1
    83  return
    84  endif
    85 
    86  iret = 0
    87 
    88 end subroutine set_soilveg
    89 
    90 end module set_soilveg_snippet_mod
    subroutine, public set_soilveg(isot, ivet, maxsmc, bb, satpsi, iret)
    This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90.
    +
    Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn&#39;t get above to compile for doxy...
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/sflx__snippet_8f90.html b/ver-1.11.0/noah/sflx__snippet_8f90.html new file mode 100644 index 000000000..828394d9e --- /dev/null +++ b/ver-1.11.0/noah/sflx__snippet_8f90.html @@ -0,0 +1,199 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/sflx_snippet.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    sflx_snippet.f90 File Reference
    +
    +
    + +

    Snippets of noah model from sflx.F needed for land DA updates. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine, public sflx_snippet::frh2o (tkelv, smc, sh2o, smcmax, bexp, psis, liqwat)
     Calculate the liquid water (slc) for a given total moisture content and soil temperature. More...
     
    +

    Detailed Description

    +

    Snippets of noah model from sflx.F needed for land DA updates.

    +
    Author
    Clara Draper
    + +

    Definition in file sflx_snippet.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ frh2o()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public sflx_snippet::frh2o (real, intent(in) tkelv,
    real, intent(in) smc,
    real, intent(in) sh2o,
    real, intent(in) smcmax,
    real, intent(in) bexp,
    real, intent(in) psis,
    real, intent(out) liqwat 
    )
    +
    + +

    Calculate the liquid water (slc) for a given total moisture content and soil temperature.

    +

    Used here to update slc when DA update to stc crosses freezing. Note this is an approximation, since in sflx.F (noah) the change in slc estimated by this routine is often clipped, depending on the net energy input to the soil layer. Also, this routine is being called using stc, but in sflx.F it is called using the soil temp at the midpoint of the layer. However, testing shows the affects of these approximations is small (O(0.001 m3/m3)).

    Parameters
    + + + + + + + + +
    [in]tkelvSoil temperature in K
    [in]smcSoil moisture
    [in]sh2oInput liquid soil moisture
    [in]smcmaxMax soil moisture
    [in]bexpB exponent
    [in]psisSaturated matric potential
    [out]liqwatOutput liquid soil moisture
    +
    +
    + +

    Definition at line 34 of file sflx_snippet.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/noah/sflx__snippet_8f90.js b/ver-1.11.0/noah/sflx__snippet_8f90.js new file mode 100644 index 000000000..a8045a965 --- /dev/null +++ b/ver-1.11.0/noah/sflx__snippet_8f90.js @@ -0,0 +1,4 @@ +var sflx__snippet_8f90 = +[ + [ "frh2o", "sflx__snippet_8f90.html#ae3601ef706255978c4224a7d3aeafc85", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/noah/sflx__snippet_8f90_source.html b/ver-1.11.0/noah/sflx__snippet_8f90_source.html new file mode 100644 index 000000000..c163ebc7e --- /dev/null +++ b/ver-1.11.0/noah/sflx__snippet_8f90_source.html @@ -0,0 +1,105 @@ + + + + + + + +noah: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/lsm_routines.fd/noah.fd/sflx_snippet.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    noah +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sflx_snippet.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5  module sflx_snippet
    6 
    7  private
    8 
    9  public frh2o
    10 
    11  contains
    12 
    28  subroutine frh2o &
    29 ! --- inputs:
    30  & ( tkelv, smc, sh2o, smcmax, bexp, psis, &
    31 ! --- outputs:
    32  & liqwat &
    33  & )
    34 
    35 ! ===================================================================== !
    36 ! description: !
    37 ! !
    38 ! subroutine frh2o calculates amount of supercooled liquid soil water !
    39 ! content if temperature is below 273.15k (t0). requires newton-type !
    40 ! iteration to solve the nonlinear implicit equation given in eqn 17 !
    41 ! of koren et al (1999, jgr, vol 104(d16), 19569-19585). !
    42 ! !
    43 ! new version (june 2001): much faster and more accurate newton !
    44 ! iteration achieved by first taking log of eqn cited above -- less !
    45 ! than 4 (typically 1 or 2) iterations achieves convergence. also, !
    46 ! explicit 1-step solution option for special case of parameter ck=0, !
    47 ! which reduces the original implicit equation to a simpler explicit !
    48 ! form, known as the "flerchinger eqn". improved handling of solution !
    49 ! in the limit of freezing point temperature t0. !
    50 ! !
    51 ! subprogram called: none !
    52 ! !
    53 ! !
    54 ! ==================== defination of variables ==================== !
    55 ! !
    56 ! inputs: size !
    57 ! tkelv - real, temperature (k) 1 !
    58 ! smc - real, total soil moisture content (volumetric) 1 !
    59 ! sh2o - real, liquid soil moisture content (volumetric) 1 !
    60 ! smcmax - real, saturation soil moisture content 1 !
    61 ! bexp - real, soil type "b" parameter 1 !
    62 ! psis - real, saturated soil matric potential 1 !
    63 ! !
    64 ! outputs: !
    65 ! liqwat - real, supercooled liquid water content 1 !
    66 ! !
    67 ! ==================== end of description ===================== !
    68 !
    69 ! --- constant parameters:
    70 
    71 ! this block added from physconst.f for snippet
    72 
    73  implicit none
    74 
    75  real, parameter :: gs2 = 9.81
    76  real, parameter :: tfreez = 2.7315e+2
    77  real, parameter :: lsubf = 3.335e5
    78 ! end block added for snippet
    79 
    80  real, parameter :: ck = 8.0
    81  real, parameter :: blim = 5.5
    82  real, parameter :: error = 0.005
    83 
    84 ! --- inputs:
    85  real, intent(in) :: tkelv, smc, sh2o, smcmax, bexp, psis
    86 
    87 ! --- outputs:
    88  real, intent(out) :: liqwat
    89 
    90 ! --- locals:
    91  real :: bx, denom, df, dswl, fk, swl, swlk
    92 
    93  integer :: nlog, kcount
    94 !
    95 !===> ... begin here
    96 !
    97 ! --- ... limits on parameter b: b < 5.5 (use parameter blim)
    98 ! simulations showed if b > 5.5 unfrozen water content is
    99 ! non-realistically high at very low temperatures.
    100 
    101  bx = bexp
    102  if (bexp > blim) bx = blim
    103 
    104 ! --- ... initializing iterations counter and iterative solution flag.
    105 
    106  nlog = 0
    107  kcount= 0
    108 
    109 ! --- ... if temperature not significantly below freezing (t0), sh2o = smc
    110 
    111  if (tkelv > (tfreez-1.e-3)) then
    112 
    113  liqwat = smc
    114 
    115  else
    116 
    117  if (ck /= 0.0) then
    118 
    119 ! --- ... option 1: iterated solution for nonzero ck
    120 ! in koren et al, jgr, 1999, eqn 17
    121 
    122 ! --- ... initial guess for swl (frozen content)
    123 
    124  swl = smc - sh2o
    125 
    126 ! --- ... keep within bounds.
    127 
    128  swl = max( min( swl, smc-0.02 ), 0.0 )
    129 
    130 ! --- ... start of iterations
    131 
    132  do while ( (nlog < 10) .and. (kcount == 0) )
    133  nlog = nlog + 1
    134 
    135  df = alog( (psis*gs2/lsubf) * ( (1.0 + ck*swl)**2.0 ) &
    136  * (smcmax/(smc-swl))**bx ) - alog(-(tkelv-tfreez)/tkelv)
    137 
    138  denom = 2.0*ck/(1.0 + ck*swl) + bx/(smc - swl)
    139  swlk = swl - df/denom
    140 
    141 ! --- ... bounds useful for mathematical solution.
    142 
    143  swlk = max( min( swlk, smc-0.02 ), 0.0 )
    144 
    145 ! --- ... mathematical solution bounds applied.
    146 
    147  dswl = abs(swlk - swl)
    148  swl = swlk
    149 
    150 ! --- ... if more than 10 iterations, use explicit method (ck=0 approx.)
    151 ! when dswl less or eq. error, no more iterations required.
    152 
    153  if ( dswl <= error ) then
    154  kcount = kcount + 1
    155  endif
    156  enddo ! end do_while_loop
    157 
    158 ! --- ... bounds applied within do-block are valid for physical solution.
    159 
    160  liqwat = smc - swl
    161 
    162  endif ! end if_ck_block
    163 
    164 ! --- ... option 2: explicit solution for flerchinger eq. i.e. ck=0
    165 ! in koren et al., jgr, 1999, eqn 17
    166 ! apply physical bounds to flerchinger solution
    167 
    168  if (kcount == 0) then
    169  fk = ( ( (lsubf/(gs2*(-psis))) &
    170  * ((tkelv-tfreez)/tkelv) )**(-1/bx) ) * smcmax
    171 
    172  fk = max( fk, 0.02 )
    173 
    174  liqwat = min( fk, smc )
    175  endif
    176 
    177  endif ! end if_tkelv_block
    178 !
    179  return
    180 !...................................
    181  end subroutine frh2o
    182 !-----------------------------------
    183  end module sflx_snippet
    +
    + + + + diff --git a/ver-1.11.0/noah/splitbar.png b/ver-1.11.0/noah/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/sync_off.png b/ver-1.11.0/noah/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/sync_on.png b/ver-1.11.0/noah/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/tab_a.png b/ver-1.11.0/noah/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/tab_b.png b/ver-1.11.0/noah/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/noah/tabs.css b/ver-1.11.0/noah/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/noah/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/open.png b/ver-1.11.0/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/docs/README.md
    +
    +
    +
    1 These programs are used in creating the terrain and land mask for
    2 a model grid.
    3 
    4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/annotated.html b/ver-1.11.0/orog_mask_tools/annotated.html new file mode 100644 index 000000000..f71c60550 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/annotated.html @@ -0,0 +1,111 @@ + + + + + + + +orog_mask_tools: Data Types List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types List
    +
    +
    +
    Here are the data types with brief descriptions:
    +
    [detail level 12]
    + + + +
     Ncs_nb
     Cnb_gp_idxNeighboring cell descriptor
     Cnb_tile_idxNeighboring tile descriptor
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/annotated_dup.js b/ver-1.11.0/orog_mask_tools/annotated_dup.js new file mode 100644 index 000000000..17069982d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/annotated_dup.js @@ -0,0 +1,7 @@ +var annotated_dup = +[ + [ "cs_nb", null, [ + [ "nb_gp_idx", "structcs__nb_1_1nb__gp__idx.html", "structcs__nb_1_1nb__gp__idx" ], + [ "nb_tile_idx", "structcs__nb_1_1nb__tile__idx.html", "structcs__nb_1_1nb__tile__idx" ] + ] ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/bc_s.png b/ver-1.11.0/orog_mask_tools/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/bdwn.png b/ver-1.11.0/orog_mask_tools/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +orog_mask_tools: Data Types + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Data Types
    +
    +
    + + + + + + +
      n  
    +
    nb_tile_idx (cs_nb)   
    nb_gp_idx (cs_nb)   
    + +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/closed.png b/ver-1.11.0/orog_mask_tools/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.html b/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.html new file mode 100644 index 000000000..4ba96caed --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.html @@ -0,0 +1,115 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    inland.fd Directory Reference
    +
    +
    + + + + + + + + +

    +Files

    file  inland.F90 [code]
     Program and associated routines for creating inland mask.
     
    file  nb.F90 [code]
     This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.js b/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.js new file mode 100644 index 000000000..a85a19005 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_089396841126cf09d4e60e162318f8dc.js @@ -0,0 +1,5 @@ +var dir_089396841126cf09d4e60e162318f8dc = +[ + [ "inland.F90", "inland_8F90.html", "inland_8F90" ], + [ "nb.F90", "nb_8F90.html", "nb_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.html b/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.html new file mode 100644 index 000000000..6300dbeda --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.html @@ -0,0 +1,109 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    orog_mask_tools.fd Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.js b/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.js new file mode 100644 index 000000000..aa3d3912f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_3785541a64e6aa2cb536d16f6c34a196.js @@ -0,0 +1,7 @@ +var dir_3785541a64e6aa2cb536d16f6c34a196 = +[ + [ "inland.fd", "dir_089396841126cf09d4e60e162318f8dc.html", "dir_089396841126cf09d4e60e162318f8dc" ], + [ "lake.fd", "dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html", "dir_e81fadbf8a162bfeb0d11ac4a7d047f5" ], + [ "orog.fd", "dir_d061f9da02c149ef8007f44f98b1f0b6.html", "dir_d061f9da02c149ef8007f44f98b1f0b6" ], + [ "orog_gsl.fd", "dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html", "dir_5d2b779f54c4125f0d0bdbb4b7a2b66c" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html b/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html new file mode 100644 index 000000000..a06c22b43 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.html @@ -0,0 +1,118 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    orog_gsl.fd Directory Reference
    +
    +
    + + + + + + + + + + + +

    +Files

    file  gsl_oro_data.f90 [code]
     Create orographic (oro_data) files for use by GSL drag suite.
     
    file  module_gsl_oro_data_lg_scale.f90 [code]
     Calculates large-scale GWD orographic stats for FV3GFS grids.
     
    file  module_gsl_oro_data_sm_scale.f90 [code]
     Calculates small-scale GWD orographic stats for FV3GFS grids.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.js b/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.js new file mode 100644 index 000000000..db235a016 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_5d2b779f54c4125f0d0bdbb4b7a2b66c.js @@ -0,0 +1,6 @@ +var dir_5d2b779f54c4125f0d0bdbb4b7a2b66c = +[ + [ "gsl_oro_data.f90", "gsl__oro__data_8f90.html", "gsl__oro__data_8f90" ], + [ "module_gsl_oro_data_lg_scale.f90", "module__gsl__oro__data__lg__scale_8f90.html", "module__gsl__oro__data__lg__scale_8f90" ], + [ "module_gsl_oro_data_sm_scale.f90", "module__gsl__oro__data__sm__scale_8f90.html", "module__gsl__oro__data__sm__scale_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.html b/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.html new file mode 100644 index 000000000..4260c31cb --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.html @@ -0,0 +1,115 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    orog.fd Directory Reference
    +
    +
    + + + + + + + + +

    +Files

    file  mtnlm7_oclsm.F [code]
     Terrain maker for global spectral model.
     
    file  netcdf_io.F90 [code]
     Write out data in netcdf format.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.js b/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.js new file mode 100644 index 000000000..5343f2aa8 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_d061f9da02c149ef8007f44f98b1f0b6.js @@ -0,0 +1,5 @@ +var dir_d061f9da02c149ef8007f44f98b1f0b6 = +[ + [ "mtnlm7_oclsm.F", "mtnlm7__oclsm_8F.html", "mtnlm7__oclsm_8F" ], + [ "netcdf_io.F90", "netcdf__io_8F90.html", "netcdf__io_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..c45d4aaea --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,105 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..75dd184f2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "orog_mask_tools.fd", "dir_3785541a64e6aa2cb536d16f6c34a196.html", "dir_3785541a64e6aa2cb536d16f6c34a196" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html b/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html new file mode 100644 index 000000000..062ff3e9d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.html @@ -0,0 +1,118 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    lake.fd Directory Reference
    +
    +
    + + + + + + + + + + + +

    +Files

    file  enclosure_cnvx.F90 [code]
     Test whether a point is inside a spherical convex polygon.
     
    file  find_limit.F90 [code]
     Geo-reference utilities for a cubed-sphere grid.
     
    file  lakefrac.F90 [code]
     Compute lake fraction and depth.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.js b/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.js new file mode 100644 index 000000000..656825bfb --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dir_e81fadbf8a162bfeb0d11ac4a7d047f5.js @@ -0,0 +1,6 @@ +var dir_e81fadbf8a162bfeb0d11ac4a7d047f5 = +[ + [ "enclosure_cnvx.F90", "enclosure__cnvx_8F90.html", "enclosure__cnvx_8F90" ], + [ "find_limit.F90", "find__limit_8F90.html", "find__limit_8F90" ], + [ "lakefrac.F90", "lakefrac_8F90.html", "lakefrac_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/doc.png b/ver-1.11.0/orog_mask_tools/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/doxygen.css b/ver-1.11.0/orog_mask_tools/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/orog_mask_tools/doxygen.png b/ver-1.11.0/orog_mask_tools/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/dynsections.js b/ver-1.11.0/orog_mask_tools/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/enclosure_cnvx.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    enclosure_cnvx.F90 File Reference
    +
    +
    + +

    Test whether a point is inside a spherical convex polygon. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    logical function enclosure_cnvx (v, n, p, co_gc)
     Test whether a given point 'p' is inside a convex spherical polygon defined with a series of 'n' vertices. More...
     
    +

    Detailed Description

    +

    Test whether a point is inside a spherical convex polygon.

    +
    Author
    N Wang
    + +

    Definition in file enclosure_cnvx.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ enclosure_cnvx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    logical function enclosure_cnvx (real*8, dimension(2,n), intent(in) v,
    integer, intent(in) n,
    real*8, dimension(2), intent(in) p,
    integer, intent(out) co_gc 
    )
    +
    + +

    Test whether a given point 'p' is inside a convex spherical polygon defined with a series of 'n' vertices.

    +

    Both the test point and the polygon are specified in latitude and longitude radians. It is assumed that a side of a spherical polygon is a great-circle arc that connects 2 adjacent vertices of the polygon.

    +
    Parameters
    + + + + + +
    [in]vset of vertices
    [in]nnumber of vertices in v
    [in]ppoint to test
    [out]co_gc'i' if p is on or within epsilon to side 'i' of the given spherical polygon, or 0 if point is not on any side of the given polygon.
    +
    +
    +
    Returns
    enclosure_cnvx whether the point is inside the polygon
    +
    Author
    N Wang
    + +

    Definition at line 50 of file enclosure_cnvx.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90.js b/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90.js new file mode 100644 index 000000000..1401801bd --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90.js @@ -0,0 +1,4 @@ +var enclosure__cnvx_8F90 = +[ + [ "enclosure_cnvx", "enclosure__cnvx_8F90.html#a0235896a27bb16a029a62ef4561f24d8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90_source.html b/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90_source.html new file mode 100644 index 000000000..b6f246716 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/enclosure__cnvx_8F90_source.html @@ -0,0 +1,106 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/enclosure_cnvx.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    enclosure_cnvx.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 #ifdef INCLUDE_TEST_DRIVER
    5  PROGRAM testenc
    6  IMPLICIT NONE
    7  REAL*8 :: v(2,4)
    8  REAL*8 :: p(2)
    9 
    10  REAL*8 :: d2r
    11  LOGICAL:: enclosure_cnvx, inside
    12  INTEGER :: co_gc
    13 
    14  d2r = acos(-1.0)/180.0d0
    15 
    16  v(1,1) = 10.0d0*d2r; v(2,1) = 20.0d0*d2r
    17  v(1,2) = 15.0d0*d2r; v(2,2) = 30.0d0*d2r
    18  v(1,3) = 17.7d0*d2r; v(2,3) = 25.0d0*d2r
    19  v(1,4) = 20.0d0*d2r; v(2,4) = 20.0d0*d2r
    20 
    21 ! p(1) = 15.0D0*d2r; p(2) = 30.00000001D0*d2r
    22 ! p(1) = 20.00000000D0*d2r; p(2) = 20.0D0*d2r
    23 ! p(1) = 9.999999999D0*d2r; p(2) = 20.0D0*d2r
    24 ! p(1) = 10.00000000*d2r; p(2) = 20.000000001D0*d2r
    25  p(1) = 17.7d0*d2r; p(2) = 25.000000001d0*d2r
    26 
    27  inside = enclosure_cnvx(v,4,p,co_gc)
    28  IF (inside) THEN
    29  print*, 'inside ', co_gc
    30  ELSE
    31  print*, 'outside ', co_gc
    32  ENDIF
    33 
    34  END PROGRAM
    35 #endif
    36 
    49 LOGICAL FUNCTION enclosure_cnvx(v, n, p, co_gc)
    50  IMPLICIT NONE
    51  REAL*8, INTENT(IN) :: v(2,n), p(2)
    52  INTEGER, INTENT(IN) :: n
    53  INTEGER, INTENT(OUT) :: co_gc
    54 
    55  REAL*8 v_xy(2, n)
    56  REAL*8 cp_z(n), cos_d2c, eps
    57 
    58  INTEGER :: i, ip1
    59 
    60 
    61  eps = 0.000000000000001d0
    62  co_gc = 0
    63  DO i = 1, n
    64  cos_d2c = sin(p(1))*sin(v(1,i)) + cos(p(1))*cos(v(1,i))*cos(v(2,i)-p(2))
    65  v_xy(1,i) = (cos(v(1,i))*sin(v(2,i)-p(2)))/cos_d2c
    66  v_xy(2,i) = (cos(p(1))*sin(v(1,i))-sin(p(1))*cos(v(1,i))*cos(v(2,i)-p(2)))/cos_d2c
    67 
    68  ENDDO
    69 
    70  DO i = 1, n
    71  ip1 = mod(i,n)+1
    72  cp_z(i) = v_xy(1,i)*v_xy(2,ip1)-v_xy(2,i)*v_xy(1,ip1)
    73  IF (abs(cp_z(i)) < eps) co_gc = i
    74  ENDDO
    75 
    76  DO i = 1, n-1
    77  ip1 = mod(i,n)+1
    78  IF (cp_z(i)*cp_z(ip1) .LT. -eps) THEN
    79  enclosure_cnvx = .false.
    80  RETURN
    81  ENDIF
    82  ENDDO
    83 
    84  enclosure_cnvx = .true.
    85  RETURN
    86 
    87 END FUNCTION enclosure_cnvx
    logical function enclosure_cnvx(v, n, p, co_gc)
    Test whether a given point &#39;p&#39; is inside a convex spherical polygon defined with a series of &#39;n&#39; vert...
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/files.html b/ver-1.11.0/orog_mask_tools/files.html new file mode 100644 index 000000000..e04f62d8e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/files.html @@ -0,0 +1,124 @@ + + + + + + + +orog_mask_tools: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + +
      sorc
      orog_mask_tools.fd
      inland.fd
     inland.F90Program and associated routines for creating inland mask
     nb.F90This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid
      lake.fd
     enclosure_cnvx.F90Test whether a point is inside a spherical convex polygon
     find_limit.F90Geo-reference utilities for a cubed-sphere grid
     lakefrac.F90Compute lake fraction and depth
      orog.fd
     mtnlm7_oclsm.FTerrain maker for global spectral model
     netcdf_io.F90Write out data in netcdf format
      orog_gsl.fd
     gsl_oro_data.f90Create orographic (oro_data) files for use by GSL drag suite
     module_gsl_oro_data_lg_scale.f90Calculates large-scale GWD orographic stats for FV3GFS grids
     module_gsl_oro_data_sm_scale.f90Calculates small-scale GWD orographic stats for FV3GFS grids
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/files_dup.js b/ver-1.11.0/orog_mask_tools/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/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/ver-1.11.0/orog_mask_tools/find__limit_8F90.html b/ver-1.11.0/orog_mask_tools/find__limit_8F90.html new file mode 100644 index 000000000..34b6e5795 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/find__limit_8F90.html @@ -0,0 +1,246 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/find_limit.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    find_limit.F90 File Reference
    +
    +
    + +

    Geo-reference utilities for a cubed-sphere grid. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine find_limit (p1_in, p2_in, latmin, latmax)
     Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the resulting great circle. More...
     
    subroutine middle (p1, p2, p)
     Compute the latitude and longitude of the middle point between two given points. More...
     
    +

    Detailed Description

    +

    Geo-reference utilities for a cubed-sphere grid.

    +
    Author
    Ning Wang
    + +

    Definition in file find_limit.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ find_limit()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine find_limit (real*8, dimension(2), intent(in) p1_in,
    real*8, dimension(2), intent(in) p2_in,
    real*8, intent(out) latmin,
    real*8, intent(out) latmax 
    )
    +
    + +

    Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the resulting great circle.

    +
    Parameters
    + + + + + +
    [in]p1_inLatitude and longitude of point 1.
    [in]p2_inLatitude and longitude of point 2.
    [out]latminMinimum latitudinal extent.
    [out]latmaxMaximum latitudinal extent.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 16 of file find_limit.F90.

    + +

    References middle().

    + +

    Referenced by cal_lake_frac_depth().

    + +
    +
    + +

    ◆ middle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine middle (real*8, dimension(2), intent(in) p1,
    real*8, dimension(2), intent(in) p2,
    real*8, dimension(2), intent(out) p 
    )
    +
    + +

    Compute the latitude and longitude of the middle point between two given points.

    +

    There are two formulae available to compute it.

    +

    One derived from a more general m-sect formula:

    +  xyz = sin((1-f)*theta) / sin(theta) * xyz1 +
    +        sin(f*theta) /sin(theta) * xyz2 ;
    +  where theta is the angle of xyz1, and xyz2.
    +  
    +  xyz = 0.5 / sqrt[(1+dot(xyz1,xyz2))/2] * (xyz1+xyz2)
    +  

    and the other one is the normalized middle point of the two end points:

    +
    +  xyz = 0.5 * (xyz1+xyz2), xyz = xyz / sqrt(dot(xyz,xyz))
    +  
    Parameters
    + + + + +
    [in]p1Latitude/longitude of first end point.
    [in]p2Latitude/longitude of second end point
    [out]pLatitude/longitude of the mid-point.
    +
    +
    +
    Author
    Ning Wang
    +
    Date
    March, 2006
    + +

    Definition at line 80 of file find_limit.F90.

    + +

    Referenced by find_limit().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/find__limit_8F90.js b/ver-1.11.0/orog_mask_tools/find__limit_8F90.js new file mode 100644 index 000000000..a809c90ee --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/find__limit_8F90.js @@ -0,0 +1,5 @@ +var find__limit_8F90 = +[ + [ "find_limit", "find__limit_8F90.html#a7563fb772438eebc1103f6e998ac4f8d", null ], + [ "middle", "find__limit_8F90.html#a4026a55bcab89cc04ed41c2de8cefa97", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/find__limit_8F90_source.html b/ver-1.11.0/orog_mask_tools/find__limit_8F90_source.html new file mode 100644 index 000000000..00ae9d585 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/find__limit_8F90_source.html @@ -0,0 +1,107 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/find_limit.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    find_limit.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    14 !#define DIAG
    15 SUBROUTINE find_limit (p1_in, p2_in, latmin, latmax)
    16  REAL*8, INTENT(IN) :: p1_in(2), p2_in(2)
    17  REAL*8, INTENT(OUT) :: latmin, latmax
    18 
    19  REAL*8 :: p1(2),p2(2), pm(2)
    20  REAL*8 :: r2d = 180.0/acos(-1.0)
    21 
    22  p1 = p1_in/r2d; p2 = p2_in/r2d
    23  latmin = min(p1(1), p2(1))
    24  latmax = max(p1(1), p2(1))
    25 
    26  CALL middle(p1, p2, pm)
    27 #ifdef DIAG
    28  print*, 'before loop', p1(1)*r2d,p2(1)*r2d,pm(1)*r2d
    29 #endif
    30 
    31  DO WHILE (abs(p1(1)-p2(1)) > 0.00001 .AND. &
    32  abs(p1(2)-p2(2)) > 0.00001 )
    33  IF (abs(p1(1)-pm(1)) < abs(p2(1)-pm(1))) THEN
    34  p2 = pm
    35  ELSE
    36  p1 = pm
    37  ENDIF
    38  CALL middle(p1, p2, pm)
    39 #ifdef DIAG
    40  print*, 'in loop', p1(1)*r2d,p2(1)*r2d, pm(1)*r2d
    41 #endif
    42  ENDDO
    43 
    44  latmin = min(latmin, pm(1))
    45  latmax = max(latmax, pm(1))
    46 
    47  latmin = latmin *r2d
    48  latmax = latmax *r2d
    49 
    50 END SUBROUTINE find_limit
    51 
    79 SUBROUTINE middle(p1,p2,p)
    80  IMPLICIT NONE
    81 
    82  ! Two given points in lat/lon:
    83  REAL*8, INTENT(IN) :: p1(2),p2(2)
    84  REAL*8, INTENT(OUT) :: p(2)
    85  REAL*8 :: pi
    86 
    87  REAL*8 :: xyz1(3),xyz2(3),xyz(3)
    88 
    89  pi = acos(-1.0)
    90 
    91  ! Convert them into Cardesian coor:
    92  xyz1(1) = cos(p1(1)) * cos(p1(2))
    93  xyz1(2) = cos(p1(1)) * sin(p1(2))
    94  xyz1(3) = sin(p1(1))
    95 
    96  xyz2(1) = cos(p2(1)) * cos(p2(2))
    97  xyz2(2) = cos(p2(1)) * sin(p2(2))
    98  xyz2(3) = sin(p2(1))
    99 
    100  ! middle point:
    101 
    102 ! coeff = 0.5 / sqrt((1.0 + dot_product(xyz1,xyz2)) / 2)
    103 ! xyz = coeff * (xyz1 + xyz2)
    104 
    105  xyz = 0.5 * (xyz1 + xyz2)
    106 
    107  xyz = xyz / sqrt(dot_product(xyz,xyz))
    108 
    109  ! Convert the middle point to lat/lon coor:
    110  p(1) = atan2(xyz(3), sqrt(xyz(1) * xyz(1) + xyz(2) * xyz(2)))
    111  p(2) = atan2(xyz(2), xyz(1))
    112 
    113  IF (p(2) < -pi / 2.0) THEN
    114  p(2) = p(2) + 2 * pi
    115  END IF
    116 
    117 END SUBROUTINE middle
    118 
    subroutine find_limit(p1_in, p2_in, latmin, latmax)
    Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the re...
    Definition: find_limit.F90:16
    +
    subroutine middle(p1, p2, p)
    Compute the latitude and longitude of the middle point between two given points.
    Definition: find_limit.F90:80
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/folderclosed.png b/ver-1.11.0/orog_mask_tools/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/functions.html b/ver-1.11.0/orog_mask_tools/functions.html new file mode 100644 index 000000000..f9571e63f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/functions.html @@ -0,0 +1,114 @@ + + + + + + + +orog_mask_tools: Data Fields + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented data types members with links to the data structure documentation for each member
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/functions_vars.html b/ver-1.11.0/orog_mask_tools/functions_vars.html new file mode 100644 index 000000000..16287d162 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/functions_vars.html @@ -0,0 +1,114 @@ + + + + + + + +orog_mask_tools: Data Fields - Variables + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/globals.html b/ver-1.11.0/orog_mask_tools/globals.html new file mode 100644 index 000000000..c51f81e3f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/globals.html @@ -0,0 +1,321 @@ + + + + + + + +orog_mask_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - _ -

    + + +

    - c -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/globals_func.html b/ver-1.11.0/orog_mask_tools/globals_func.html new file mode 100644 index 000000000..f5e3bc656 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/globals_func.html @@ -0,0 +1,321 @@ + + + + + + + +orog_mask_tools: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - _ -

    + + +

    - c -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.html b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.html new file mode 100644 index 000000000..9365289a9 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.html @@ -0,0 +1,158 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/gsl_oro_data.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    gsl_oro_data.f90 File Reference
    +
    +
    + +

    Create orographic (oro_data) files for use by GSL drag suite. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program gsl_oro_data
     Brief description of program: Creates orographic (oro_data) files needed by the GSL drag suite physics parameterization. More...
     
    +

    Detailed Description

    +

    Create orographic (oro_data) files for use by GSL drag suite.

    +
    Author
    Michael Toy, NOAA/GSL
    +
    Date
    2021-03-12
    +

    Program GSL_ORO_DATA

    +

    This program calls subroutines which calculate the parameters required for the GSL subgrid-scale orographic gravity-wave drag (GWDO) suite on the FV3 grid. These parameters are for the small-scale GWD (Tsiringakis et al., 2017) and turbulent orographic form drag (TOFD) (Beljaars et al., 2004) schemes of the GSL drag suite. The output fields are:

      +
    • stddev standard deviation of subgrid-scale topograpy
    • +
    • convexity convexity (kurtosis) of subgrid-scale topography
    • +
    • ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    • oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    +

    Note: This program works for both the global FV3GFS cubed sphere, i.e., for tiles 1 through 6, (and 7 if nested grid) (halo.eq.-999 for no halo), and for the stand-alone regional lam (tile 7 and halo.ne.-999) If a halo number is given, this is only to specify the Cxxx_grid.halox data used for input. The oro_data files are always "halo0" output.

    +

    Based on code by Michael Duda provided by NCAR/MMM

    + +

    Definition in file gsl_oro_data.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ gsl_oro_data()

    + +
    +
    + + + + + + + +
    program gsl_oro_data ()
    +
    + +

    Brief description of program: Creates orographic (oro_data) files needed by the GSL drag suite physics parameterization.

    +
    Author
    Michaei Toy, NOAA/GSL
    +
    Returns
    0 for success, error code otherwise.
    + +

    Definition at line 36 of file gsl_oro_data.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.js b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.js new file mode 100644 index 000000000..023f68d4d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90.js @@ -0,0 +1,4 @@ +var gsl__oro__data_8f90 = +[ + [ "gsl_oro_data", "gsl__oro__data_8f90.html#a06ef850c217b3e20e204be8a39edf228", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90_source.html b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90_source.html new file mode 100644 index 000000000..c5a409c01 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/gsl__oro__data_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/gsl_oro_data.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    gsl_oro_data.f90
    +
    +
    +Go to the documentation of this file.
    1 
    30 
    36 program gsl_oro_data
    37 
    38 use gsl_oro_data_sm_scale, only: calc_gsl_oro_data_sm_scale
    39 use gsl_oro_data_lg_scale, only: calc_gsl_oro_data_lg_scale
    40 
    41 implicit none
    42 
    43 
    44 character(len=2) :: tile_num ! tile number entered by user
    45 character(len=7) :: res_indx ! grid-resolution index, e.g., 96, 192, 384, 768,
    46  ! etc. entered by user
    47 character(len=4) :: halo ! halo value entered by user (for input grid data)
    48 
    49 logical :: duplicate_oro_data_file ! flag for whether oro_data_ls file is a duplicate
    50  ! of oro_data_ss due to minimum grid size being less than 7.5km
    51 
    52 
    53 
    54 ! Read in FV3GFS grid info
    55 print *
    56 print *, "Enter tile number:"
    57 read (5,*) tile_num
    58 print *
    59 print *, "Enter grid-resolution index:"
    60 read (5,*) res_indx
    61 print *
    62 print *, "Enter halo number (-999 for no halo):"
    63 read (5,*) halo
    64 print *
    65 print *, "Creating tile oro_data for tile number: ", tile_num
    66 print *, "Grid resolution = ", res_indx
    67 print *, "Halo = ", halo
    68 print *
    69 
    70 
    71 call calc_gsl_oro_data_sm_scale(tile_num,res_indx,halo,duplicate_oro_data_file)
    72 
    73 print *, "duplicate_oro_data_file =", duplicate_oro_data_file
    74 print *
    75 
    76 if ( .not.duplicate_oro_data_file ) then
    77  call calc_gsl_oro_data_lg_scale(tile_num,res_indx,halo)
    78 end if
    79 
    80 
    81 print *
    82 print *, "End program gsl_oro_data"
    83 print *
    84 
    85 
    86 end program gsl_oro_data
    program gsl_oro_data
    Brief description of program: Creates orographic (oro_data) files needed by the GSL drag suite physic...
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/index.html b/ver-1.11.0/orog_mask_tools/index.html new file mode 100644 index 000000000..91c6d3b01 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/index.html @@ -0,0 +1,113 @@ + + + + + + + +orog_mask_tools: orog_mask_tools + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    orog_mask_tools
    +
    +
    +

    +Introduction

    +

    The orog_mask_tools include:

      +
    • inland.F90 - create an inland land mask.
    • +
    • lakefrac.F90 - set lake fraction and depth.
    • +
    • mtnlm7_oclsm.f - terrain maker for global spectral model.
    • +
    +

    This document is part of the UFS_UTILS documentation.

    +

    The orog_mask_tools programs are part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/inland_8F90.html b/ver-1.11.0/orog_mask_tools/inland_8F90.html new file mode 100644 index 000000000..0ed658e62 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/inland_8F90.html @@ -0,0 +1,556 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/inland.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    inland.F90 File Reference
    +
    +
    + +

    Program and associated routines for creating inland mask. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine free_mem ()
     Deallocate module arrays. More...
     
    program inland_mask
     This program creates the inland mask and writes it to the orography data files. More...
     
    subroutine mark_global_inland (cs_res)
     Create inland mask for global grid. More...
     
    recursive subroutine mark_global_inland_rec_d (i, j, t, rd)
     Recursively walk through neighbors marking inland points for global grid. More...
     
    subroutine mark_inland_reg (cs_res)
     Create inland mask for regional grid. More...
     
    recursive subroutine mark_regional_inland_rec_d (i, j, t, rd)
     Recursively walk through neighbors marking inland points for regional grid. More...
     
    subroutine nc_opchk (stat, opname)
     Check NetCDF return code and print error message. More...
     
    subroutine read_orog (cs_res)
     Read in orography (land fraction) data. More...
     
    subroutine read_orog_reg (cs_res)
     Read in orography (land fraction) data for regional grid. More...
     
    subroutine write_inland (cs_res)
     Write inland back to the orography data files for global grid. More...
     
    subroutine write_inland_reg (cs_res)
     Write inland back to the orography data files for regional grid. More...
     
    +

    Detailed Description

    +

    Program and associated routines for creating inland mask.

    +
    Author
    Ning Wang
    +
    Date
    July 1, 2020
    + +

    Definition in file inland.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ free_mem()

    + +
    +
    + + + + + + + +
    subroutine inland_mask::free_mem ()
    +
    + +

    Deallocate module arrays.

    + +

    Definition at line 426 of file inland.F90.

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ inland_mask()

    + +
    +
    + + + + + + + +
    program inland_mask ()
    +
    + +

    This program creates the inland mask and writes it to the orography data files.

    +
    Author
    Ning Wang
    +
    Returns
    0 for success, error otherwise.
    + +

    Definition at line 9 of file inland.F90.

    + +

    References free_mem(), mark_global_inland(), mark_inland_reg(), read_orog(), read_orog_reg(), write_inland(), and write_inland_reg().

    + +
    +
    + +

    ◆ mark_global_inland()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::mark_global_inland (integer, intent(in) cs_res)
    +
    + +

    Create inland mask for global grid.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 80 of file inland.F90.

    + +

    References mark_global_inland_rec_d().

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ mark_global_inland_rec_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    recursive subroutine inland_mask::mark_global_inland_rec_d (integer, intent(in) i,
    integer, intent(in) j,
    integer, intent(in) t,
    integer, intent(in) rd 
    )
    +
    + +

    Recursively walk through neighbors marking inland points for global grid.

    +
    Parameters
    + + + + + +
    [in]icell index
    [in]jcell index
    [in]ttile number
    [in]rdcurrent recursive depth (starts at 0)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 132 of file inland.F90.

    + +

    Referenced by mark_global_inland().

    + +
    +
    + +

    ◆ mark_inland_reg()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::mark_inland_reg (integer, intent(in) cs_res)
    +
    + +

    Create inland mask for regional grid.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 100 of file inland.F90.

    + +

    References mark_regional_inland_rec_d().

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ mark_regional_inland_rec_d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    recursive subroutine inland_mask::mark_regional_inland_rec_d (integer, intent(in) i,
    integer, intent(in) j,
    integer, intent(in) t,
    integer, intent(in) rd 
    )
    +
    + +

    Recursively walk through neighbors marking inland points for regional grid.

    +
    Parameters
    + + + + + +
    [in]icell index
    [in]jcell index
    [in]ttile face
    [in]rdcurrent recursive depth (starts at 0)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 169 of file inland.F90.

    + +

    Referenced by mark_inland_reg().

    + +
    +
    + +

    ◆ nc_opchk()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine inland_mask::nc_opchk (integer stat,
    character(len=*) opname 
    )
    +
    + +

    Check NetCDF return code and print error message.

    +
    Parameters
    + + + +
    [in]statstatus code returned from NetCDF
    [in]opnamedescription of NetCDF operation called
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 438 of file inland.F90.

    + +

    Referenced by read_cubed_sphere_grid(), read_cubed_sphere_reg_grid(), read_orog(), read_orog_reg(), write_inland(), write_inland_reg(), write_lakedata_to_orodata(), and write_reg_lakedata_to_orodata().

    + +
    +
    + +

    ◆ read_orog()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::read_orog (integer, intent(in) cs_res)
    +
    + +

    Read in orography (land fraction) data.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 203 of file inland.F90.

    + +

    References nc_opchk().

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ read_orog_reg()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::read_orog_reg (integer, intent(in) cs_res)
    +
    + +

    Read in orography (land fraction) data for regional grid.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 249 of file inland.F90.

    + +

    References nc_opchk().

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ write_inland()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::write_inland (integer, intent(in) cs_res)
    +
    + +

    Write inland back to the orography data files for global grid.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 301 of file inland.F90.

    + +

    References nc_opchk().

    + +

    Referenced by inland_mask().

    + +
    +
    + +

    ◆ write_inland_reg()

    + +
    +
    + + + + + + + + +
    subroutine inland_mask::write_inland_reg (integer, intent(in) cs_res)
    +
    + +

    Write inland back to the orography data files for regional grid.

    +
    Parameters
    + + +
    [in]cs_rescubed sphere resolution (48, 96...)
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 363 of file inland.F90.

    + +

    References nc_opchk().

    + +

    Referenced by inland_mask().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/inland_8F90.js b/ver-1.11.0/orog_mask_tools/inland_8F90.js new file mode 100644 index 000000000..b6eed5a5b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/inland_8F90.js @@ -0,0 +1,14 @@ +var inland_8F90 = +[ + [ "free_mem", "inland_8F90.html#af870fa97d145db8f6393c3b424bd9ab9", null ], + [ "inland_mask", "inland_8F90.html#a571ea8ce2ce3aa308f70c9fb2bfbfea1", null ], + [ "mark_global_inland", "inland_8F90.html#a160b9961900b2d0b7b39fe58177ef3d3", null ], + [ "mark_global_inland_rec_d", "inland_8F90.html#a61f40758fbff460eb3f89f06bdac3e9d", null ], + [ "mark_inland_reg", "inland_8F90.html#a1f9bad82f013cdfc76b9501fc08a2ddb", null ], + [ "mark_regional_inland_rec_d", "inland_8F90.html#a628ce4a7d56a78989ae59de5f76d0605", null ], + [ "nc_opchk", "inland_8F90.html#a3b10845ba96fd1baced9b9bcfd827382", null ], + [ "read_orog", "inland_8F90.html#a13256f272bbba4fb4f4763cf5ac1db03", null ], + [ "read_orog_reg", "inland_8F90.html#a88b7651035e3c2abae99216ddf9e9619", null ], + [ "write_inland", "inland_8F90.html#ad288f94eea205f8bbefe728949dcd9bc", null ], + [ "write_inland_reg", "inland_8F90.html#a2cda3688f47a34f75fcf47aef8c80ff5", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/inland_8F90_source.html b/ver-1.11.0/orog_mask_tools/inland_8F90_source.html new file mode 100644 index 000000000..2df402b1a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/inland_8F90_source.html @@ -0,0 +1,117 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/inland.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    inland.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    9 PROGRAM inland_mask
    10  USE cs_nb
    11  IMPLICIT NONE
    12 
    13  INTEGER :: tile, i, j
    14  TYPE(nb_gp_idx) :: nbs
    15 
    16  REAL, ALLOCATABLE :: inland(:,:,:)
    17  REAL, ALLOCATABLE :: land_frac(:,:,:)
    18  INTEGER :: i_ctr, j_ctr, tile_beg, tile_end
    19  INTEGER :: cs_res, x_res, y_res
    20  CHARACTER(len=32) :: arg
    21  INTEGER :: stat
    22  INTEGER :: max_rd
    23  REAL :: cutoff
    24  CHARACTER(len=1) :: reg
    25 
    26  LOGICAL, ALLOCATABLE :: done(:,:,:)
    27 
    28  CALL getarg(0, arg) ! get the program name
    29  IF (iargc() /= 3 .AND. iargc() /= 4) THEN
    30  print*, 'Usage: '
    31  print*, trim(arg), ' [cres(48,96, ...)][nonland cutoff][max recursive depth][regional(r),global(g)]'
    32  stop
    33  ENDIF
    34 
    35  CALL getarg(1, arg)
    36  READ(arg,*,iostat=stat) cs_res
    37  CALL getarg(2, arg)
    38  READ(arg,*,iostat=stat) cutoff
    39  CALL getarg(3, arg)
    40  READ(arg,*,iostat=stat) max_rd
    41  CALL getarg(4, reg)
    42 
    43  IF (reg /= 'r') THEN
    44  tile_beg = 1; tile_end = 6
    45 ! read in orography data (land_frac)
    46  CALL read_orog(cs_res)
    47 
    48 ! init inter-panel neighbor index
    49  CALL idx_init(cs_res)
    50 
    51 ! create a inland mask
    52  CALL mark_global_inland(cs_res)
    53 
    54 ! write back to the orography data files
    55  CALL write_inland(cs_res)
    56  ELSE
    57 ! read in orography data (land_frac) for the SAR domain
    58  CALL read_orog_reg(cs_res)
    59 
    60 ! init inter-panel neighbor index
    61  CALL idx_init_reg(x_res, y_res)
    62 
    63 ! create a inland mask
    64  CALL mark_inland_reg(cs_res)
    65 
    66 ! write back to the orography data files
    67  CALL write_inland_reg(cs_res)
    68  ENDIF
    69 
    70  CALL free_mem()
    71 
    72 CONTAINS
    73 
    79 SUBROUTINE mark_global_inland(cs_res)
    80  INTEGER, INTENT(IN) :: cs_res
    81 
    82  ALLOCATE(done(cs_res,cs_res,6))
    83  ALLOCATE(inland(cs_res,cs_res,6))
    84  done = .false.
    85  inland = 1.0
    86  i_ctr = cs_res/2; j_ctr = cs_res/2
    87 
    88  CALL mark_global_inland_rec_d(i_ctr, j_ctr, 2, 0)
    89 
    90  DEALLOCATE(done)
    91 
    92 END SUBROUTINE mark_global_inland
    93 
    99 SUBROUTINE mark_inland_reg(cs_res)
    100  INTEGER, INTENT(IN) :: cs_res
    101  INTEGER :: i_seed, j_seed
    102 
    103  ALLOCATE(done(x_res,y_res,1))
    104  ALLOCATE(inland(x_res,y_res,1))
    105 
    106  done = .false.
    107  inland = 1.0
    108 
    109 ! set up three seeds, for the current domain
    110  i_seed = 1; j_seed = y_res/2
    111  CALL mark_regional_inland_rec_d(i_seed, j_seed, 1, 0)
    112 
    113  i_seed = x_res; j_seed = y_res/2
    114  CALL mark_regional_inland_rec_d(i_seed, j_seed, 1, 0)
    115 
    116  i_seed = x_res/3; j_seed = 1
    117  CALL mark_regional_inland_rec_d(i_seed, j_seed, 1, 0)
    118 
    119  DEALLOCATE(done)
    120 
    121 END SUBROUTINE mark_inland_reg
    122 
    131 RECURSIVE SUBROUTINE mark_global_inland_rec_d(i, j, t, rd)
    132  INTEGER, INTENT(IN) :: i, j, t, rd
    133 
    134  TYPE(nb_gp_idx) :: nbs
    135  INTEGER :: k, nrd
    136 
    137  IF (t == 0) RETURN
    138 
    139  IF (land_frac(i,j,t) <= 0.15) THEN
    140  nrd = 1
    141  ELSE
    142  nrd = rd + 1
    143  ENDIF
    144 
    145  IF (nrd > max_rd) RETURN
    146 
    147  IF (done(i,j,t)) RETURN
    148  IF (land_frac(i,j,t) < cutoff) THEN
    149  done(i,j,t) = .true.
    150  inland(i,j,t) = 0.0
    151  CALL neighbors(t, i, j, nbs)
    152  ! recursively go through k neighbors
    153  DO k = 1, 4
    154  CALL mark_global_inland_rec_d(nbs%ijt(1,k),nbs%ijt(2,k),nbs%ijt(3,k),nrd)
    155  ENDDO
    156  ENDIF
    157 
    158 END SUBROUTINE mark_global_inland_rec_d
    159 
    168 RECURSIVE SUBROUTINE mark_regional_inland_rec_d(i, j, t, rd)
    169  INTEGER, INTENT(IN) :: i, j, t, rd
    170 
    171  TYPE(nb_gp_idx) :: nbs
    172  INTEGER :: k, nrd
    173 
    174  IF (t == 0) RETURN
    175 
    176  IF (land_frac(i,j,t) <= 0.15) THEN
    177  nrd = 1
    178  ELSE
    179  nrd = rd + 1
    180  ENDIF
    181 
    182  IF (nrd > max_rd) RETURN
    183 
    184  IF (done(i,j,t)) RETURN
    185  IF (land_frac(i,j,t) < cutoff) THEN
    186  done(i,j,t) = .true.
    187  inland(i,j,t) = 0.0
    188  CALL neighbors_reg(i, j, nbs)
    189  ! recursively go through k neighbors
    190  DO k = 1, 4
    191  CALL mark_regional_inland_rec_d(nbs%ijt(1,k),nbs%ijt(2,k),nbs%ijt(3,k),nrd)
    192  ENDDO
    193  ENDIF
    194 
    195 END SUBROUTINE mark_regional_inland_rec_d
    196 
    202 SUBROUTINE read_orog(cs_res)
    203  USE netcdf
    204  INTEGER, INTENT(IN) :: cs_res
    205 
    206  INTEGER :: tile_sz, tile_num
    207  INTEGER :: stat, ncid, varid
    208  INTEGER :: land_frac_id, slmsk_id, geolon_id, geolat_id
    209  CHARACTER(len=256) :: filename,string
    210  CHARACTER(len=1) :: ich
    211  CHARACTER(len=4) res_ch
    212  CHARACTER(len=8) dimname
    213 
    214  INTEGER :: i, j
    215  REAL, ALLOCATABLE :: var_tmp(:,:)
    216 
    217  ALLOCATE(var_tmp(cs_res,cs_res))
    218  ALLOCATE(land_frac(cs_res,cs_res,6))
    219 
    220  WRITE(res_ch,'(I4)') cs_res
    221  DO tile_num = tile_beg, tile_end
    222  WRITE(ich, '(I1)') tile_num
    223  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    224  print *,'Read, update, and write ',trim(filename)
    225  stat = nf90_open(filename, nf90_nowrite, ncid)
    226  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    227 
    228 ! original orodata netcdf file uses (y, x) order, so we made change to match it.
    229  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    230  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    231  stat = nf90_get_var(ncid, land_frac_id, var_tmp, &
    232  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    233  CALL nc_opchk(stat, "nf90_get_var: land_frac")
    234  land_frac(:,:,tile_num) = var_tmp(:,:)
    235  stat = nf90_close(ncid)
    236  CALL nc_opchk(stat, "nf90_close oro_data.nc")
    237  ENDDO
    238 
    239  DEALLOCATE(var_tmp)
    240 
    241 END SUBROUTINE read_orog
    242 
    248 SUBROUTINE read_orog_reg(cs_res)
    249  USE netcdf
    250  INTEGER, INTENT(IN) :: cs_res
    251 
    252  INTEGER :: tile_num
    253  INTEGER :: stat, ncid, x_dimid, y_dimid, varid
    254  INTEGER :: land_frac_id, slmsk_id, geolon_id, geolat_id
    255  CHARACTER(len=256) :: filename,string
    256  CHARACTER(len=1) :: ich
    257  CHARACTER(len=4) res_ch
    258  CHARACTER(len=8) dimname
    259 
    260  INTEGER :: i, j
    261  REAL, ALLOCATABLE :: var_tmp(:,:)
    262 
    263  WRITE(res_ch,'(I4)') cs_res
    264  tile_num = 7
    265  WRITE(ich, '(I1)') tile_num
    266  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    267  print *,'Read, update, and write ',trim(filename)
    268  stat = nf90_open(filename, nf90_nowrite, ncid)
    269  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    270  stat = nf90_inq_dimid(ncid, "lon", x_dimid)
    271  CALL nc_opchk(stat, "nf90_inq_dim: x")
    272  stat = nf90_inq_dimid(ncid, "lat", y_dimid)
    273  CALL nc_opchk(stat, "nf90_inq_dim: y")
    274  stat = nf90_inquire_dimension(ncid,x_dimid,dimname,len=x_res)
    275  CALL nc_opchk(stat,'nf90_inquire_dimension: lon')
    276  stat = nf90_inquire_dimension(ncid,y_dimid,dimname,len=y_res)
    277  CALL nc_opchk(stat,'nf90_inquire_dimension: lon')
    278 
    279 ! original orodata netcdf file uses (y, x) order, so we made change to match it.
    280  ALLOCATE(var_tmp(x_res,y_res))
    281  ALLOCATE(land_frac(x_res,y_res,1))
    282  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    283  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    284  stat = nf90_get_var(ncid, land_frac_id, var_tmp, &
    285  start = (/ 1, 1 /), count = (/ x_res, y_res /) )
    286  CALL nc_opchk(stat, "nf90_get_var: land_frac")
    287  land_frac(:,:,1) = var_tmp(:,:)
    288  stat = nf90_close(ncid)
    289  CALL nc_opchk(stat, "nf90_close oro_data.nc")
    290 
    291  DEALLOCATE(var_tmp)
    292 
    293 END SUBROUTINE read_orog_reg
    294 
    300 SUBROUTINE write_inland(cs_res)
    301  USE netcdf
    302  INTEGER, INTENT(IN) :: cs_res
    303 
    304  CHARACTER(len=256) :: filename
    305  CHARACTER(len=1) :: ich
    306  CHARACTER(len=4) res_ch
    307 
    308  INTEGER :: tile_num
    309  INTEGER :: stat, ncid, x_dimid, y_dimid, inland_id, dimids(2)
    310  REAL, ALLOCATABLE :: var_tmp(:,:)
    311 
    312  ALLOCATE(var_tmp(cs_res,cs_res))
    313 
    314  WRITE(res_ch,'(I4)') cs_res
    315  DO tile_num = tile_beg, tile_end
    316  WRITE(ich, '(I1)') tile_num
    317  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    318  print *,'write inland to ',trim(filename)
    319  stat = nf90_open(filename, nf90_write, ncid)
    320  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    321  stat = nf90_inq_dimid(ncid, "lon", x_dimid)
    322  CALL nc_opchk(stat, "nf90_inq_dim: x")
    323  stat = nf90_inq_dimid(ncid, "lat", y_dimid)
    324  CALL nc_opchk(stat, "nf90_inq_dim: y")
    325 
    326 ! original orodata netcdf file uses (y, x) order, so we made change to match it.
    327  dimids = (/ x_dimid, y_dimid /)
    328 
    329 ! define a new variables
    330  stat = nf90_inq_varid(ncid,"inland",inland_id) !safeguard if "inland" exists
    331  IF (stat /= nf90_noerr) THEN
    332  stat = nf90_redef(ncid)
    333  CALL nc_opchk(stat, "nf90_redef")
    334  stat = nf90_def_var(ncid,"inland",nf90_float,dimids,inland_id)
    335  CALL nc_opchk(stat, "nf90_def_var: inland")
    336  stat = nf90_put_att(ncid, inland_id,'coordinates','geolon geolat')
    337  CALL nc_opchk(stat, "nf90_put_att: inland:coordinates")
    338  stat = nf90_put_att(ncid, inland_id,'description', &
    339  'inland = 1 indicates grid cells away from coast')
    340  CALL nc_opchk(stat, "nf90_put_att: inland:description")
    341  stat = nf90_enddef(ncid)
    342  CALL nc_opchk(stat, "nf90_enddef")
    343  ENDIF
    344 
    345  var_tmp(:,:) = inland(:,:,tile_num)
    346  stat = nf90_put_var(ncid, inland_id, var_tmp, &
    347  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    348  CALL nc_opchk(stat, "nf90_put_var: inland")
    349 
    350  stat = nf90_close(ncid)
    351  CALL nc_opchk(stat, "nf90_close oro_data.nc")
    352  ENDDO
    353  DEALLOCATE(var_tmp)
    354 
    355 END SUBROUTINE write_inland
    356 
    362 SUBROUTINE write_inland_reg(cs_res)
    363  USE netcdf
    364  INTEGER, INTENT(IN) :: cs_res
    365 
    366  CHARACTER(len=256) :: filename
    367  CHARACTER(len=1) :: ich
    368  CHARACTER(len=4) res_ch
    369 
    370  INTEGER :: tile_num
    371  INTEGER :: stat, ncid, x_dimid, y_dimid, inland_id, dimids(2)
    372  REAL, ALLOCATABLE :: var_tmp(:,:)
    373  CHARACTER(len=8) dimname
    374 
    375  ALLOCATE(var_tmp(x_res,y_res))
    376 
    377  WRITE(res_ch,'(I4)') cs_res
    378  tile_num = 7
    379  WRITE(ich, '(I1)') tile_num
    380  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    381  print*,'write inland to ',trim(filename)
    382  stat = nf90_open(filename, nf90_write, ncid)
    383  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    384  stat = nf90_inq_dimid(ncid, "lon", x_dimid)
    385  CALL nc_opchk(stat, "nf90_inq_dim: x")
    386  stat = nf90_inq_dimid(ncid, "lat", y_dimid)
    387  CALL nc_opchk(stat, "nf90_inq_dim: y")
    388  stat = nf90_inquire_dimension(ncid,x_dimid,dimname,len=x_res)
    389  CALL nc_opchk(stat,'nf90_inquire_dimension: lon')
    390  stat = nf90_inquire_dimension(ncid,y_dimid,dimname,len=y_res)
    391  CALL nc_opchk(stat,'nf90_inquire_dimension: lon')
    392 
    393 ! original orodata netcdf file uses (y, x) order, so we made change to match it.
    394  dimids = (/ x_dimid, y_dimid /)
    395 
    396 ! define a new variables
    397  stat = nf90_inq_varid(ncid,"inland",inland_id) !safeguard if "inland" exists
    398  IF (stat /= nf90_noerr) THEN
    399  stat = nf90_redef(ncid)
    400  CALL nc_opchk(stat, "nf90_redef")
    401  stat = nf90_def_var(ncid,"inland",nf90_float,dimids,inland_id)
    402  CALL nc_opchk(stat, "nf90_def_var: inland")
    403  stat = nf90_put_att(ncid, inland_id,'coordinates','geolon geolat')
    404  CALL nc_opchk(stat, "nf90_put_att: inland:coordinates")
    405  stat = nf90_put_att(ncid, inland_id,'description', &
    406  'inland = 1 indicates grid cells away from coast')
    407  CALL nc_opchk(stat, "nf90_put_att: inland:description")
    408  stat = nf90_enddef(ncid)
    409  CALL nc_opchk(stat, "nf90_enddef")
    410  ENDIF
    411 
    412  var_tmp(:,:) = inland(:,:,1)
    413  stat = nf90_put_var(ncid, inland_id, var_tmp, &
    414  start = (/ 1, 1 /), count = (/ x_res, y_res /) )
    415  CALL nc_opchk(stat, "nf90_put_var: inland")
    416 
    417  stat = nf90_close(ncid)
    418  CALL nc_opchk(stat, "nf90_close oro_data.nc")
    419 
    420  DEALLOCATE(var_tmp)
    421 
    422 END SUBROUTINE write_inland_reg
    423 
    425 SUBROUTINE free_mem()
    427  DEALLOCATE(inland, land_frac)
    428 
    429 END SUBROUTINE free_mem
    430 
    437 SUBROUTINE nc_opchk(stat,opname)
    438  USE netcdf
    439  IMPLICIT NONE
    440  INTEGER stat
    441  CHARACTER(len=*) opname
    442  CHARACTER(64) msg
    443 
    444  IF (stat .NE.0) THEN
    445  msg = trim(opname) // ' Error, status code and message:'
    446  print*,trim(msg), stat, nf90_strerror(stat)
    447  stop
    448  END IF
    449 
    450 END SUBROUTINE nc_opchk
    451 
    452 END PROGRAM inland_mask
    453 
    recursive subroutine mark_regional_inland_rec_d(i, j, t, rd)
    Recursively walk through neighbors marking inland points for regional grid.
    Definition: inland.F90:169
    +
    Neighboring cell descriptor.
    Definition: nb.F90:17
    +
    subroutine mark_inland_reg(cs_res)
    Create inland mask for regional grid.
    Definition: inland.F90:100
    +
    subroutine read_orog(cs_res)
    Read in orography (land fraction) data.
    Definition: inland.F90:203
    +
    subroutine free_mem()
    Deallocate module arrays.
    Definition: inland.F90:426
    +
    recursive subroutine mark_global_inland_rec_d(i, j, t, rd)
    Recursively walk through neighbors marking inland points for global grid.
    Definition: inland.F90:132
    +
    subroutine write_inland(cs_res)
    Write inland back to the orography data files for global grid.
    Definition: inland.F90:301
    +
    subroutine nc_opchk(stat, opname)
    Check NetCDF return code and print error message.
    Definition: inland.F90:438
    +
    program inland_mask
    This program creates the inland mask and writes it to the orography data files.
    Definition: inland.F90:9
    +
    subroutine write_inland_reg(cs_res)
    Write inland back to the orography data files for regional grid.
    Definition: inland.F90:363
    +
    subroutine read_orog_reg(cs_res)
    Read in orography (land fraction) data for regional grid.
    Definition: inland.F90:249
    +
    subroutine mark_global_inland(cs_res)
    Create inland mask for global grid.
    Definition: inland.F90:80
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/jquery.js b/ver-1.11.0/orog_mask_tools/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    lakefrac.F90 File Reference
    +
    +
    + +

    Compute lake fraction and depth. +More...

    + +

    Go to the source code of this file.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine cal_lake_frac_depth (lakestat, cs_lakestat, lakedpth, cs_lakedpth)
     Calculate lake fraction and depth on the model grid from high-resolution data. More...
     
    program lake_frac
     This program computes lake fraction and depth numbers for FV3 cubed sphere grid cells, from a high resolution lat/lon data set. More...
     
    subroutine nc_opchk (stat, opname)
     Check NetCDF error code. More...
     
    subroutine read_cubed_sphere_grid (res, grid)
     Read the latitude and longitude for a cubed-sphere grid from the 'grid' files. More...
     
    subroutine read_cubed_sphere_reg_grid (res, grid, halo_depth, res_x, res_y)
     Read the latitude and longitude for a regional grid from the 'grid' file. More...
     
    subroutine read_lakedata (lakedata_path, lake_stat, lake_dpth, nlat, nlon)
     Read a high-resolution lake depth dataset, and a corresponding lake status dataset which provides a status code on the reliability of each lake depth point. More...
     
    subroutine write_lakedata_to_orodata (cs_res, cs_lakestat, cs_lakedpth)
     Write lake depth and fraction to an existing model orography file. More...
     
    subroutine write_reg_lakedata_to_orodata (cs_res, tile_x_dim, tile_y_dim, cs_lakestat, cs_lakedpth)
     Write lake depth and fraction to an existing model orography file. More...
     
    +

    Detailed Description

    +

    Compute lake fraction and depth.

    +
    Author
    Ning Wang
    + +

    Definition in file lakefrac.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ cal_lake_frac_depth()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::cal_lake_frac_depth (integer*1, dimension(:), intent(in) lakestat,
    real, dimension(:), intent(out) cs_lakestat,
    integer*2, dimension(:), intent(in) lakedpth,
    real, dimension(:), intent(out) cs_lakedpth 
    )
    +
    + +

    Calculate lake fraction and depth on the model grid from high-resolution data.

    +
    Parameters
    + + + + + +
    [in]lakestatHigh-resolution lake status code.
    [in]lakedpthHigh-resolution lake depth.
    [out]cs_lakestatLake fraction on the model grid.
    [out]cs_lakedpthLake depth on the model grid.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 145 of file lakefrac.F90.

    + +

    References find_limit().

    + +

    Referenced by lake_frac().

    + +
    +
    + +

    ◆ lake_frac()

    + +
    +
    + + + + + + + +
    program lake_frac ()
    +
    + +

    This program computes lake fraction and depth numbers for FV3 cubed sphere grid cells, from a high resolution lat/lon data set.

    +
    Author
    Ning Wang
    +
    Date
    July 2018
    +
      +
    • Shan Sun, Aug. 2018: Added Caspian Sea and Aral Sea to the lake fraction and lake depth fields.
    • +
    • Shan Sun, Dec. 2018: Added round up and round down with respect to a numerical minimum value and a cut-off value, for lake fraction number.
    • +
    • Ning Wang, Apr. 2019: Extended the program to process the same lake data for FV3 stand-alone regional (SAR) model.
    • +
    +
    Returns
    0 for successful completion and for error.
    + +

    Definition at line 21 of file lakefrac.F90.

    + +

    References cal_lake_frac_depth(), read_cubed_sphere_grid(), read_cubed_sphere_reg_grid(), read_lakedata(), write_lakedata_to_orodata(), and write_reg_lakedata_to_orodata().

    + +
    +
    + +

    ◆ nc_opchk()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::nc_opchk (integer stat,
    character(len=*) opname 
    )
    +
    + +

    Check NetCDF error code.

    +
    Parameters
    + + + +
    [in]statError code.
    [in]opnameNetCDF operation that failed.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 952 of file lakefrac.F90.

    + +
    +
    + +

    ◆ read_cubed_sphere_grid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::read_cubed_sphere_grid (integer, intent(in) res,
    real, dimension(:,:), intent(out) grid 
    )
    +
    + +

    Read the latitude and longitude for a cubed-sphere grid from the 'grid' files.

    +

    For global grids, all six sides are returned.

    +
    Parameters
    + + + +
    [in]resThe resolution. Example: '96' for C96.
    [out]gridArray containing the latitude and longitude on the 'supergrid'. Multiple tiles are concatenated.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 383 of file lakefrac.F90.

    + +

    References nc_opchk().

    + +

    Referenced by lake_frac().

    + +
    +
    + +

    ◆ read_cubed_sphere_reg_grid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::read_cubed_sphere_reg_grid (integer, intent(in) res,
    real, dimension(:,:), intent(out), allocatable grid,
    integer, intent(in) halo_depth,
    integer, intent(out) res_x,
    integer, intent(out) res_y 
    )
    +
    + +

    Read the latitude and longitude for a regional grid from the 'grid' file.

    +
    Parameters
    + + + + + + +
    [in]resResolution of grid. Example: '96' for C96.
    [out]gridLatitude and longitude on the supergrid.
    [in]halo_depthLateral halo. Not used.
    [out]res_xNumber of grid points in the 'x' direction.
    [out]res_yNumber of grid points in the 'y' direction.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 444 of file lakefrac.F90.

    + +

    References nc_opchk().

    + +

    Referenced by lake_frac().

    + +
    +
    + +

    ◆ read_lakedata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::read_lakedata (character(len=256), intent(in) lakedata_path,
    integer*1, dimension(:), intent(out) lake_stat,
    integer*2, dimension(:), intent(out) lake_dpth,
    integer, intent(in) nlat,
    integer, intent(in) nlon 
    )
    +
    + +

    Read a high-resolution lake depth dataset, and a corresponding lake status dataset which provides a status code on the reliability of each lake depth point.

    +
    Parameters
    + + + + + + +
    [in]lakedata_pathPath to the lake depth and lake status dataset.
    [out]lake_statStatus code.
    [out]lake_dpthLake depth.
    [in]nlat'j' dimension of both datasets.
    [in]nlon'i' dimension of both datasets.
    +
    +
    + +

    Definition at line 514 of file lakefrac.F90.

    + +

    Referenced by lake_frac().

    + +
    +
    + +

    ◆ write_lakedata_to_orodata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::write_lakedata_to_orodata (integer, intent(in) cs_res,
    real, dimension(:), intent(in) cs_lakestat,
    real, dimension(:), intent(in) cs_lakedpth 
    )
    +
    + +

    Write lake depth and fraction to an existing model orography file.

    +

    Also, perform some quality control checks on the lake data. This routine is used for non-regional grids.

    +
    Parameters
    + + + + +
    [in]cs_resResolution. Example: '96' for C96.
    [in]cs_lakestatLake fraction.
    [in]cs_lakedpthLake depth.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 546 of file lakefrac.F90.

    + +

    References nc_opchk().

    + +

    Referenced by lake_frac().

    + +
    +
    + +

    ◆ write_reg_lakedata_to_orodata()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lake_frac::write_reg_lakedata_to_orodata (integer, intent(in) cs_res,
    integer, intent(in) tile_x_dim,
    integer, intent(in) tile_y_dim,
    real, dimension(:), intent(in) cs_lakestat,
    real, dimension(:), intent(in) cs_lakedpth 
    )
    +
    + +

    Write lake depth and fraction to an existing model orography file.

    +

    Also, perform some quality control checks on the lake data. This routine is used for regional grids.

    +
    Parameters
    + + + + + + +
    [in]cs_resResolution. Example: '96' for C96.
    [in]cs_lakestatLake fraction.
    [in]cs_lakedpthLake depth.
    [in]tile_x_dim'x' dimension of the model grid.
    [in]tile_y_dim'y' dimension of the model grid.
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 745 of file lakefrac.F90.

    + +

    References nc_opchk().

    + +

    Referenced by lake_frac().

    + +
    +
    + + + + + + diff --git a/ver-1.11.0/orog_mask_tools/lakefrac_8F90.js b/ver-1.11.0/orog_mask_tools/lakefrac_8F90.js new file mode 100644 index 000000000..4cbd16d61 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/lakefrac_8F90.js @@ -0,0 +1,12 @@ +var lakefrac_8F90 = +[ + [ "ADD_ATT_FOR_NEW_VAR", "lakefrac_8F90.html#a4fd8fd61f4f165ef35f148e8f1246cd8", null ], + [ "cal_lake_frac_depth", "lakefrac_8F90.html#a7a4e5a1364b5ca25a7e3265799710e7a", null ], + [ "lake_frac", "lakefrac_8F90.html#a563966340bfa6668f1c820c8a8c33464", null ], + [ "nc_opchk", "lakefrac_8F90.html#a371dafc6b513e49bf8b70cdd44056a47", null ], + [ "read_cubed_sphere_grid", "lakefrac_8F90.html#aa841d26daa073f2aabb69280f766116f", null ], + [ "read_cubed_sphere_reg_grid", "lakefrac_8F90.html#ab01a9f78d5379416b21c702586ceeb25", null ], + [ "read_lakedata", "lakefrac_8F90.html#a42212ca41cc31b8185941580e198a49c", null ], + [ "write_lakedata_to_orodata", "lakefrac_8F90.html#a112a771a17cd632ad6e86df6095fde92", null ], + [ "write_reg_lakedata_to_orodata", "lakefrac_8F90.html#a654cc9802a12e781ed1ef9e878ad0390", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/lakefrac_8F90_source.html b/ver-1.11.0/orog_mask_tools/lakefrac_8F90_source.html new file mode 100644 index 000000000..c4660d292 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/lakefrac_8F90_source.html @@ -0,0 +1,114 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/lakefrac.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    lakefrac.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    19 !#define DIAG_N_VERBOSE
    20 #define ADD_ATT_FOR_NEW_VAR
    21 PROGRAM lake_frac
    22  USE netcdf
    23  IMPLICIT NONE
    24 
    25  CHARACTER(len=256) :: sfcdata_path
    26  INTEGER :: cs_res, ncsmp, ncscp, i
    27  INTEGER :: res_x, res_y
    28 
    29  INTEGER*1, ALLOCATABLE :: lakestatus(:)
    30  INTEGER*2, ALLOCATABLE :: lakedepth(:)
    31  REAL, ALLOCATABLE :: cs_grid(:,:)
    32  REAL, ALLOCATABLE :: cs_lakestatus(:), cs_lakedepth(:)
    33  REAL, ALLOCATABLE :: src_grid_lon(:), src_grid_lat(:)
    34 
    35  INTEGER :: tile_req, tile_beg, tile_end
    36  REAL :: lake_cutoff
    37 
    38  INTEGER, PARAMETER :: nlat = 21600, nlon = 43200
    39  REAL, PARAMETER :: d2r = acos(-1.0) / 180.0
    40  REAL, PARAMETER :: r2d = 180.0 /acos(-1.0)
    41  REAL, PARAMETER :: pi = acos(-1.0)
    42  REAL*8, PARAMETER :: gppdeg = 119.99444445
    43  REAL*8, PARAMETER :: delta = 1.0 / 119.99444445
    44 
    45  CHARACTER(len=32) :: arg
    46  CHARACTER(len=256) :: lakedata_path
    47  INTEGER :: stat
    48 
    49  CALL getarg(0, arg) ! get the program name
    50  IF (iargc() /= 3 .AND. iargc() /= 4) THEN
    51  print*, 'Usage: ', trim(arg), &
    52  ' [tile_num (0:all tiles, 7:regional)] [resolution (48,96, ...)] [path to lake data file]'
    53  print*, 'Or: ', trim(arg), &
    54  ' [tile_num (0:all tiles, 7:regional)] [resolution (48,96, ...)] [path to lake data file] [lake_cutoff]'
    55  stop
    56  ENDIF
    57  CALL getarg(1, arg)
    58  READ(arg,*,iostat=stat) tile_req
    59  CALL getarg(2, arg)
    60  READ(arg,*,iostat=stat) cs_res
    61  CALL getarg(3, lakedata_path)
    62 
    63  IF (iargc() == 3) THEN
    64  lake_cutoff = 0.20
    65  ELSE
    66  CALL getarg(4, arg)
    67  READ(arg,*,iostat=stat) lake_cutoff
    68  ENDIF
    69 
    70  IF (tile_req == 0) THEN
    71  tile_beg = 1; tile_end = 6
    72  print*, 'Process tile 1 - 6 at resolution C',cs_res
    73  ELSE IF (tile_req /= 7) THEN
    74  tile_beg = tile_req; tile_end = tile_req
    75  print*, 'Process tile',tile_req, 'at resolution C',cs_res
    76  ELSE
    77  tile_beg = 1; tile_end = 1
    78  print*, 'Process regional tile (tile', tile_req, ') at resolution C',cs_res
    79  ENDIF
    80 
    81  ! read in grid spec data for each tile and concatenate them together
    82 
    83  ncsmp = (2*cs_res+1)*(2*cs_res+1)*6
    84  IF (tile_req /= 7) THEN
    85  print*, 'Read in cubed sphere grid information ... ',ncsmp,'pairs of lat/lons'
    86  ENDIF
    87 
    88  IF (tile_req /= 7) THEN
    89  ALLOCATE(cs_grid(ncsmp, 2))
    90  CALL read_cubed_sphere_grid(cs_res, cs_grid)
    91  ELSE
    92  CALL read_cubed_sphere_reg_grid(cs_res, cs_grid, 3, res_x, res_y)
    93  ENDIF
    94  ! compute source grid
    95  ALLOCATE(src_grid_lon(nlon), src_grid_lat(nlat))
    96  DO i = 1, nlon
    97  src_grid_lon(i) = -180.0 + delta * (i-1)
    98  ENDDO
    99  DO i = 1, nlat
    100  src_grid_lat(i) = 90.0 - delta * (i-1)
    101  ENDDO
    102 
    103  ! read in lake data file
    104 ! sfcdata_path = '/scratch1/NCEPDEV/global/glopara/fix/orog/'
    105  lakedata_path = trim(lakedata_path) // "/"
    106  ALLOCATE(lakestatus(nlon*nlat),lakedepth(nlon*nlat))
    107  print*, 'Read in lake data file ...'
    108  CALL read_lakedata(lakedata_path,lakestatus,lakedepth,nlat,nlon)
    109 
    110  ! calculate fraction numbers for all cs-cells
    111  ncscp = cs_res*cs_res*6
    112  ALLOCATE(cs_lakestatus(ncscp))
    113  ALLOCATE(cs_lakedepth(ncscp))
    114 
    115  print*, 'Calculate lake fraction and average depth for cubed-sphere cells ...'
    116  CALL cal_lake_frac_depth(lakestatus,cs_lakestatus,lakedepth,cs_lakedepth)
    117 
    118  ! write lake status (in terms of fraction) and lake depth(average)
    119  ! to a netcdf file
    120  IF (tile_req /= 7) THEN
    121  print*, 'Write lake fraction/depth on cubed sphere grid cells to netCDF files ...'
    122  CALL write_lakedata_to_orodata(cs_res, cs_lakestatus, cs_lakedepth)
    123  ELSE
    124  print*, 'Write lake fraction/depth on regional FV3 grid cells to a netCDF file ...'
    125  CALL write_reg_lakedata_to_orodata(cs_res, res_x, res_y, cs_lakestatus, cs_lakedepth)
    126  ENDIF
    127 
    128  DEALLOCATE(cs_lakestatus,cs_lakedepth)
    129  DEALLOCATE(cs_grid)
    130  DEALLOCATE(lakestatus,lakedepth)
    131  DEALLOCATE(src_grid_lat, src_grid_lon)
    132 
    133  stop
    134 CONTAINS
    135 
    144 SUBROUTINE cal_lake_frac_depth(lakestat,cs_lakestat,lakedpth,cs_lakedpth)
    145  INTEGER*1, INTENT(IN) :: lakestat(:)
    146  INTEGER*2, INTENT(IN) :: lakedpth(:)
    147  REAL, INTENT(OUT) :: cs_lakestat(:), cs_lakedpth(:)
    148 
    149  REAL*8 lolf(2), lort(2), uplf(2), uprt(2), sd_ltmn(4), sd_ltmx(4)
    150  REAL*8 :: v(2,4), p(2)
    151  REAL :: latmin1, latmax1
    152  REAL :: latmin, latmax, lonmin, lonmax, lontmp, lat_sz_max, lon_sz_max
    153  INTEGER :: tile_num, i, j, gp, row, col, cs_grid_idx, cs_data_idx
    154  INTEGER :: sidex_res, sidey_res, sidex_sz, sidey_sz
    155  INTEGER :: stride_lat, stride_lon
    156  INTEGER :: src_grid_lat_beg,src_grid_lat_end,src_grid_lon_beg,src_grid_lon_end
    157  INTEGER :: src_grid_lon_beg1,src_grid_lon_end1,src_grid_lon_beg2,src_grid_lon_end2
    158  INTEGER :: grid_ct, lake_ct, co_gc, tmp
    159 
    160  REAL*8 :: lake_dpth_sum
    161  LOGICAL :: two_section, enclosure_cnvx
    162 
    163  IF (tile_req /= 7) THEN
    164  sidex_res = cs_res; sidey_res = cs_res
    165  ELSE
    166  sidex_res = res_x; sidey_res = res_y
    167  ENDIF
    168 
    169  sidex_sz = 2*sidex_res+1; sidey_sz = 2*sidey_res+1
    170 
    171  stride_lat = 1
    172 
    173  lat_sz_max = 0.0
    174  lon_sz_max = 0.0
    175 
    176  cs_lakestat = 0.0
    177 
    178  DO tile_num = tile_beg, tile_end
    179  row = 2 + sidex_sz*(tile_num-1); col = 2
    180  DO gp = 1, sidex_res*sidey_res
    181  two_section = .false.
    182  cs_grid_idx = (row-1)*sidex_sz+col
    183  cs_data_idx = (tile_num-1)*sidex_res*sidey_res+gp
    184  IF (abs(cs_grid(cs_grid_idx,1)) > 80.0 ) THEN !ignore lakes in very high latitude
    185  cs_lakestat(cs_data_idx) = 0.0
    186  cs_lakedpth(cs_data_idx) = 0.0
    187  ! move to next cs cell
    188  col = col + 2
    189  IF (col > sidex_sz) THEN
    190  col = 2
    191  row = row + 2
    192  ENDIF
    193  cycle
    194  ENDIF
    195  ! get the four corners of the cs cell
    196  lolf(1) = cs_grid(cs_grid_idx-sidex_sz-1, 1)
    197  lolf(2) = cs_grid(cs_grid_idx-sidex_sz-1, 2)
    198  IF (lolf(2) > 180.0) lolf(2) = lolf(2) - 360.0
    199  lort(1) = cs_grid(cs_grid_idx-sidex_sz+1, 1)
    200  lort(2) = cs_grid(cs_grid_idx-sidex_sz+1, 2)
    201  IF (lort(2) > 180.0) lort(2) = lort(2) - 360.0
    202  uplf(1) = cs_grid(cs_grid_idx+sidex_sz-1,1)
    203  uplf(2) = cs_grid(cs_grid_idx+sidex_sz-1,2)
    204  IF (uplf(2) > 180.0) uplf(2) = uplf(2) - 360.0
    205  uprt(1) = cs_grid(cs_grid_idx+sidex_sz+1,1)
    206  uprt(2) = cs_grid(cs_grid_idx+sidex_sz+1,2)
    207 
    208  v(1,1) = lolf(1); v(2,1) = lolf(2)
    209  v(1,2) = lort(1); v(2,2) = lort(2)
    210  v(1,3) = uprt(1); v(2,3) = uprt(2)
    211  v(1,4) = uplf(1); v(2,4) = uplf(2)
    212  v(:,:) = v(:,:) * d2r
    213 
    214  IF (uprt(2) > 180.0) uprt(2) = uprt(2) - 360.0
    215  ! gather the candidate indices in lakestat
    216 #ifdef LIMIT_CAL
    217  CALL find_limit (lolf, lort, sd_ltmn(1), sd_ltmx(1))
    218  CALL find_limit (lort, uprt, sd_ltmn(2), sd_ltmx(2))
    219  CALL find_limit (uprt, uplf, sd_ltmn(3), sd_ltmx(3))
    220  CALL find_limit (uplf, lolf, sd_ltmn(4), sd_ltmx(4))
    221  latmin = min(sd_ltmn(1),min(sd_ltmn(2),min(sd_ltmn(3),sd_ltmn(4))))
    222  latmax = max(sd_ltmx(1),max(sd_ltmx(2),max(sd_ltmx(3),sd_ltmx(4))))
    223 #endif
    224  latmin = min(lolf(1),min(lort(1),min(uplf(1),uprt(1))))
    225  latmax = max(lolf(1),max(lort(1),max(uplf(1),uprt(1))))
    226  lonmin = min(lolf(2),min(lort(2),min(uplf(2),uprt(2))))
    227  lonmax = max(lolf(2),max(lort(2),max(uplf(2),uprt(2))))
    228 ! lat_sz_max = max(lat_sz_max, (latmax-latmin))
    229 ! lon_sz_max = max(lon_sz_max, (lonmax-lonmin))
    230 
    231  src_grid_lat_beg = nint((90.0-latmax)*gppdeg+0.5)
    232  src_grid_lat_end = nint((90.0-latmin)*gppdeg+0.5)
    233  src_grid_lon_beg = nint((180.0+lonmin)*gppdeg+0.5)
    234  src_grid_lon_end = nint((180.0+lonmax)*gppdeg+0.5)
    235 
    236  IF (src_grid_lat_beg > src_grid_lat_end) THEN
    237  print*,'switch!!!'
    238  tmp = src_grid_lat_beg
    239  src_grid_lat_beg = src_grid_lat_end
    240  src_grid_lat_end = tmp
    241  ENDIF
    242  IF (src_grid_lon_beg > src_grid_lon_end) THEN
    243  print*,'switch!!!'
    244  tmp = src_grid_lon_beg
    245  src_grid_lon_beg = src_grid_lon_end
    246  src_grid_lon_end = tmp
    247  ENDIF
    248  IF ((src_grid_lon_end - src_grid_lon_beg) > nlon*0.75) THEN
    249  two_section = .true.
    250  src_grid_lon_beg1 = src_grid_lon_end
    251  src_grid_lon_end1 = nlon
    252  src_grid_lon_beg2 = 1
    253  src_grid_lon_end2 = src_grid_lon_beg
    254  ENDIF
    255 
    256 #ifdef DIAG_N_VERBOSE
    257  print*, 'cell centre lat/lon =', &
    258  gp, cs_res*cs_res, cs_grid(cs_grid_idx,1),cs_grid(cs_grid_idx,2)
    259  print*, 'lat index range and stride', &
    260  src_grid_lat_beg,src_grid_lat_end,stride_lat
    261  print*, 'lat range ', &
    262  src_grid_lat(src_grid_lat_beg),src_grid_lat(src_grid_lat_end)
    263 #endif
    264  lake_ct = 0; grid_ct = 0
    265  lake_dpth_sum = 0.0
    266  DO j = src_grid_lat_beg, src_grid_lat_end, stride_lat
    267  stride_lon = int(1.0/cos(src_grid_lat(j)*d2r)*REAL(stride_lat))
    268 #ifdef DIAG_N_VERBOSE
    269  IF (j == src_grid_lat_beg) THEN
    270  print*, 'lon index range and stride', &
    271  src_grid_lon_beg,src_grid_lon_end,stride_lon
    272  print*, 'lon range ', &
    273  src_grid_lon(src_grid_lon_beg),src_grid_lon(src_grid_lon_end)
    274  IF (two_section == .true.) THEN
    275  print*, 'section1 index lon range and stride', &
    276  src_grid_lon_beg1,src_grid_lon_end1,stride_lon
    277  print*, 'section1 lon range ', &
    278  src_grid_lon(src_grid_lon_beg1),src_grid_lon(src_grid_lon_end1)
    279  print*, 'section2 index lon range and stride', &
    280  src_grid_lon_beg2,src_grid_lon_end2,stride_lon
    281  print*, 'section2 lon range ', &
    282  src_grid_lon(src_grid_lon_beg2),src_grid_lon(src_grid_lon_end2)
    283  ENDIF
    284  ENDIF
    285 #endif
    286  IF (two_section .EQV. .false.) THEN
    287  DO i = src_grid_lon_beg, src_grid_lon_end, stride_lon
    288  p(1) = src_grid_lat(j); p(2) = src_grid_lon(i)
    289  p(:) = p(:)*d2r
    290  IF(enclosure_cnvx(v, 4, p, co_gc) .EQV. .true.) THEN
    291  grid_ct = grid_ct+1
    292  IF (lakestat((j-1)*nlon+i) /= 0) THEN
    293  lake_ct = lake_ct+1
    294  IF (lakedpth((j-1)*nlon+i) < 0) THEN
    295  IF (lakestat((j-1)*nlon+i) == 4) THEN
    296  lake_dpth_sum = lake_dpth_sum+30.0
    297  ELSE
    298  lake_dpth_sum = lake_dpth_sum+100.0
    299  ENDIF
    300  ELSE
    301  lake_dpth_sum = lake_dpth_sum+REAL(lakedpth((j-1)*nlon+i))
    302  ENDIF
    303  ENDIF
    304  ENDIF
    305  ENDDO
    306  ELSE
    307  DO i = src_grid_lon_beg1, src_grid_lon_end1, stride_lon
    308  p(1) = src_grid_lat(j); p(2) = src_grid_lon(i)
    309  p(:) = p(:)*d2r
    310  IF(enclosure_cnvx(v, 4, p, co_gc) .EQV. .true.) THEN
    311  grid_ct = grid_ct+1
    312  IF (lakestat((j-1)*nlon+i) /= 0) THEN
    313  lake_ct = lake_ct+1
    314  IF (lakedpth((j-1)*nlon+i) < 0) THEN
    315  IF (lakestat((j-1)*nlon+i) == 4) THEN
    316  lake_dpth_sum = lake_dpth_sum+30.0
    317  ELSE
    318  lake_dpth_sum = lake_dpth_sum+100.0
    319  ENDIF
    320  ELSE
    321  lake_dpth_sum = lake_dpth_sum+REAL(lakedpth((j-1)*nlon+i))
    322  ENDIF
    323  ENDIF
    324  ENDIF
    325  ENDDO
    326  DO i = src_grid_lon_beg2, src_grid_lon_end2, stride_lon
    327  p(1) = src_grid_lat(j); p(2) = src_grid_lon(i)
    328  p(:) = p(:)*d2r
    329  IF(enclosure_cnvx(v, 4, p, co_gc) .EQV. .true.) THEN
    330  grid_ct = grid_ct+1
    331  IF (lakestat((j-1)*nlon+i) /= 0) THEN
    332  lake_ct = lake_ct+1
    333  IF (lakedpth((j-1)*nlon+i) < 0) THEN
    334  IF (lakestat((j-1)*nlon+i) == 4) THEN
    335  lake_dpth_sum = lake_dpth_sum+30.0
    336  ELSE
    337  lake_dpth_sum = lake_dpth_sum+100.0
    338  ENDIF
    339  ELSE
    340  lake_dpth_sum = lake_dpth_sum+REAL(lakedpth((j-1)*nlon+i))
    341  ENDIF
    342  ENDIF
    343  ENDIF
    344  ENDDO
    345  ENDIF
    346  ENDDO
    347  cs_lakestat(cs_data_idx)=REAL(lake_ct)/REAL(grid_ct)
    348  IF (lake_ct /= 0) THEN
    349  cs_lakedpth(cs_data_idx)=lake_dpth_sum/REAL(lake_ct)/10.0 !convert to meter
    350  ELSE
    351  cs_lakedpth(cs_data_idx)=0.0
    352  ENDIF
    353 #ifdef DIAG_N_VERBOSE
    354  print*, 'tile_num, row, col:', tile_num, row, col
    355  print*, 'grid_ct, lake_ct = ', grid_ct, lake_ct
    356  print*, 'lake_frac= ', cs_lakestat(cs_data_idx)
    357  print*, 'lake_depth (avg) = ', cs_lakedpth(cs_data_idx)
    358 #endif
    359 
    360  ! move to the next control volume
    361  col = col + 2
    362  IF (col > sidex_sz) THEN
    363  col = 2
    364  row = row + 2
    365  ENDIF
    366  ENDDO
    367  print "('*'$)" ! progress '*'
    368  ENDDO
    369  print*, ''
    370 
    371 END SUBROUTINE cal_lake_frac_depth
    372 
    382 SUBROUTINE read_cubed_sphere_grid(res, grid)
    383  INTEGER, INTENT(IN) :: res
    384  REAL, INTENT(OUT) :: grid(:,:)
    385 
    386  REAL*8, ALLOCATABLE :: lat(:), lon(:)
    387  INTEGER :: side_sz, tile_sz, ncid, varid
    388  INTEGER :: i, tile_beg, tile_end, stat
    389  CHARACTER(len=256) :: gridfile_path,gridfile
    390  CHARACTER(len=1) ich
    391  CHARACTER(len=4) res_ch
    392 
    393  side_sz = 2*res+1
    394  tile_sz = side_sz*side_sz
    395  ALLOCATE(lat(tile_sz), lon(tile_sz))
    396 
    397  IF (tile_req == 0) THEN
    398  tile_beg = 1; tile_end = 6
    399  ELSE
    400  tile_beg = tile_req; tile_end = tile_req
    401  ENDIF
    402  WRITE(res_ch,'(I4)') res
    403 ! gridfile_path = "/scratch1/NCEPDEV/global/glopara/fix/fix_fv3/C"//trim(adjustl(res_ch))//"/"
    404  gridfile_path = "./"
    405  DO i = tile_beg, tile_end
    406  WRITE(ich, '(I1)') i
    407  gridfile = trim(gridfile_path)//"C"//trim(adjustl(res_ch))//"_grid.tile"//ich//".nc"
    408 
    409  print*, 'Open cubed sphere grid spec file ', trim(gridfile)
    410 
    411  stat = nf90_open(trim(gridfile), nf90_nowrite, ncid)
    412  CALL nc_opchk(stat,'nf90_open')
    413 
    414  stat = nf90_inq_varid(ncid,'x',varid)
    415  CALL nc_opchk(stat,'nf90_inq_lon')
    416  stat = nf90_get_var(ncid,varid,lon,start=(/1,1/),count=(/side_sz,side_sz/))
    417  CALL nc_opchk(stat,'nf90_get_var_lon')
    418  stat = nf90_inq_varid(ncid,'y',varid)
    419  CALL nc_opchk(stat,'nf90_inq_lat')
    420  stat = nf90_get_var(ncid,varid,lat,start=(/1,1/),count=(/side_sz,side_sz/))
    421  CALL nc_opchk(stat,'nf90_get_var_lat')
    422  stat = nf90_close(ncid)
    423  CALL nc_opchk(stat,'nf90_close')
    424 
    425  tile_beg = (i-1)*tile_sz+1
    426  tile_end = i*tile_sz
    427  grid(tile_beg:tile_end,1) = lat(1:tile_sz)
    428  grid(tile_beg:tile_end,2) = lon(1:tile_sz)
    429  END DO
    430  DEALLOCATE(lat,lon)
    431 
    432 END SUBROUTINE read_cubed_sphere_grid
    433 
    443 SUBROUTINE read_cubed_sphere_reg_grid(res, grid, halo_depth, res_x, res_y)
    444  INTEGER, INTENT(IN) :: res, halo_depth
    445  INTEGER, INTENT(OUT) :: res_x, res_y
    446  REAL, ALLOCATABLE, INTENT(OUT) :: grid(:,:)
    447 
    448  REAL*8, ALLOCATABLE :: lat(:), lon(:)
    449  INTEGER :: sidex_sz, sidey_sz, tile_sz, ncid, varid, dimid
    450  INTEGER :: x_start, y_start
    451  INTEGER :: nxp, nyp, stat
    452  CHARACTER(len=256) :: gridfile_path,gridfile
    453  CHARACTER(len=1) ich
    454  CHARACTER(len=4) res_ch
    455  CHARACTER(len=8) dimname
    456 
    457  WRITE(res_ch,'(I4)') res
    458  gridfile_path = './'
    459  gridfile = trim(gridfile_path)//"C"//trim(adjustl(res_ch))//"_grid.tile7.nc"
    460 
    461  print*, 'Open cubed sphere grid spec file ', trim(gridfile)
    462 
    463  stat = nf90_open(trim(gridfile), nf90_nowrite, ncid)
    464  CALL nc_opchk(stat,'nf90_open')
    465 
    466  stat = nf90_inq_dimid(ncid,'nxp',dimid)
    467  CALL nc_opchk(stat,'nf90_inq_dimid: nxp')
    468  stat = nf90_inquire_dimension(ncid,dimid,dimname,len=nxp)
    469  CALL nc_opchk(stat,'nf90_inquire_dimension: nxp')
    470 
    471  stat = nf90_inq_dimid(ncid,'nyp',dimid)
    472  CALL nc_opchk(stat,'nf90_inq_dimid: nyp')
    473  stat = nf90_inquire_dimension(ncid,dimid,dimname,len=nyp)
    474  CALL nc_opchk(stat,'nf90_inquire_dimension: nyp')
    475 
    476  sidex_sz = nxp
    477  sidey_sz = nyp
    478  tile_sz = sidex_sz*sidey_sz
    479  ALLOCATE(lat(tile_sz), lon(tile_sz))
    480 
    481 ! x_start = halo_depth+1; y_start = halo_depth+1
    482  x_start = 1; y_start = 1
    483  stat = nf90_inq_varid(ncid,'x',varid)
    484  CALL nc_opchk(stat,'nf90_inq_lon')
    485  stat = nf90_get_var(ncid,varid,lon,start=(/x_start,y_start/),count=(/sidex_sz,sidey_sz/))
    486  CALL nc_opchk(stat,'nf90_get_var_lon')
    487  stat = nf90_inq_varid(ncid,'y',varid)
    488  CALL nc_opchk(stat,'nf90_inq_lat')
    489  stat = nf90_get_var(ncid,varid,lat,start=(/x_start,y_start/),count=(/sidex_sz,sidey_sz/))
    490  CALL nc_opchk(stat,'nf90_get_var_lat')
    491  stat = nf90_close(ncid)
    492  CALL nc_opchk(stat,'nf90_close')
    493 
    494  ALLOCATE(grid(tile_sz,2))
    495  grid(1:tile_sz,1) = lat(1:tile_sz)
    496  grid(1:tile_sz,2) = lon(1:tile_sz)
    497 
    498  res_x = sidex_sz/2; res_y = sidey_sz/2
    499  DEALLOCATE(lat,lon)
    500 
    501 END SUBROUTINE read_cubed_sphere_reg_grid
    502 
    513 SUBROUTINE read_lakedata(lakedata_path,lake_stat,lake_dpth,nlat,nlon)
    514  CHARACTER(len=256), INTENT(IN) :: lakedata_path
    515  INTEGER*1, INTENT(OUT) :: lake_stat(:)
    516  INTEGER*2, INTENT(OUT) :: lake_dpth(:)
    517  INTEGER, INTENT(IN) :: nlat, nlon
    518 
    519  CHARACTER(len=256) lakefile
    520  INTEGER :: data_sz, i
    521 
    522  data_sz = nlon*nlat
    523 
    524  ! read in 30 arc seconds lake data
    525  lakefile = trim(lakedata_path) // "GlobalLakeStatus.dat"
    526  OPEN(10, file=lakefile, form='unformatted', access='direct', recl=data_sz*1)
    527  READ(10,rec=1) lake_stat
    528  CLOSE(10)
    529 
    530  lakefile = trim(lakedata_path) // "GlobalLakeDepth.dat"
    531  OPEN(10, file=lakefile, form='unformatted', access='direct', recl=data_sz*2)
    532  READ(10,rec=1) lake_dpth
    533  CLOSE(10)
    534 
    535 END SUBROUTINE read_lakedata
    536 
    545 SUBROUTINE write_lakedata_to_orodata(cs_res, cs_lakestat, cs_lakedpth)
    546  USE netcdf
    547  INTEGER, INTENT(IN) :: cs_res
    548  REAL, INTENT(IN) :: cs_lakestat(:)
    549  REAL, INTENT(IN) :: cs_lakedpth(:)
    550 
    551  INTEGER :: tile_sz, tile_num
    552  INTEGER :: stat, ncid, x_dimid, y_dimid, varid, dimids(2)
    553  INTEGER :: lake_frac_id, lake_depth_id
    554  INTEGER :: land_frac_id, slmsk_id, inland_id, geolon_id, geolat_id
    555  CHARACTER(len=256) :: filename,string
    556  CHARACTER(len=1) :: ich
    557  CHARACTER(len=4) res_ch
    558  REAL :: lake_frac(cs_res*cs_res),lake_depth(cs_res*cs_res)
    559  REAL :: geolon(cs_res*cs_res),geolat(cs_res*cs_res)
    560  REAL :: land_frac(cs_res*cs_res),slmsk(cs_res*cs_res),inland(cs_res*cs_res)
    561  real, parameter :: epsil=1.e-6 ! numerical min for lake_frac/land_frac
    562  real :: land_cutoff=1.e-4 ! land_frac=0 if it is < land_cutoff
    563 
    564  INTEGER :: i, j
    565 
    566 ! include "netcdf.inc"
    567  tile_sz = cs_res*cs_res
    568 
    569  WRITE(res_ch,'(I4)') cs_res
    570  DO tile_num = tile_beg, tile_end
    571  WRITE(ich, '(I1)') tile_num
    572 ! filename = "C" // trim(adjustl(res_ch)) // "_oro_data.tile" // ich // ".nc"
    573 ! filename = "oro_data.tile" // ich // ".nc"
    574  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    575  print *,'Read, update, and write ',trim(filename)
    576  stat = nf90_open(filename, nf90_write, ncid)
    577  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    578  stat = nf90_inq_dimid(ncid, "lon", x_dimid)
    579  CALL nc_opchk(stat, "nf90_inq_dim: x")
    580  stat = nf90_inq_dimid(ncid, "lat", y_dimid)
    581  CALL nc_opchk(stat, "nf90_inq_dim: y")
    582 ! dimids = (/ y_dimid, x_dimid /)
    583 ! original orodata netcdf file uses (y, x) order, so we made change to match it.
    584  dimids = (/ x_dimid, y_dimid /)
    585  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    586  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    587  stat = nf90_inq_varid(ncid, "slmsk", slmsk_id)
    588  CALL nc_opchk(stat, "nf90_inq_varid: slmsk")
    589 ! define 2 new variables
    590  stat = nf90_redef(ncid)
    591  CALL nc_opchk(stat, "nf90_redef")
    592  stat = nf90_def_var(ncid,"lake_frac",nf90_float,dimids,lake_frac_id)
    593  CALL nc_opchk(stat, "nf90_def_var: lake_frac")
    594 #ifdef ADD_ATT_FOR_NEW_VAR
    595  stat = nf90_put_att(ncid, lake_frac_id,'coordinates','geolon geolat')
    596  CALL nc_opchk(stat, "nf90_put_att: lake_frac:coordinates")
    597  stat = nf90_put_att(ncid, lake_frac_id,'long_name','lake fraction')
    598  CALL nc_opchk(stat, "nf90_put_att: lake_frac:long_name")
    599  stat = nf90_put_att(ncid, lake_frac_id,'unit','fraction')
    600  CALL nc_opchk(stat, "nf90_put_att: lake_frac:unit")
    601  write(string,'(a,f5.2)') 'based on GLDBv2 (Choulga et al. 2014); missing lakes &
    602  added based on land_frac in this dataset; lake_frac cutoff is',lake_cutoff
    603  stat = nf90_put_att(ncid, lake_frac_id,'description',trim(string))
    604  CALL nc_opchk(stat, "nf90_put_att: lake_frac:description")
    605 #endif
    606  stat = nf90_def_var(ncid,"lake_depth",nf90_float,dimids,lake_depth_id)
    607  CALL nc_opchk(stat, "nf90_def_var: lake_depth")
    608 #ifdef ADD_ATT_FOR_NEW_VAR
    609  stat = nf90_put_att(ncid, lake_depth_id,'coordinates','geolon geolat')
    610  CALL nc_opchk(stat, "nf90_put_att: lake_depth:coordinates")
    611  stat = nf90_put_att(ncid, lake_depth_id,'long_name','lake depth')
    612  CALL nc_opchk(stat, "nf90_put_att: lake_depth:long_name")
    613  stat = nf90_put_att(ncid, lake_depth_id,'unit','meter')
    614  CALL nc_opchk(stat, "nf90_put_att: lake_depth:long_name")
    615  stat = nf90_put_att(ncid, lake_depth_id,'description', &
    616  'based on GLDBv2 (Choulga et al. 2014); missing depth set to 10m &
    617  (except to 211m in Caspian Sea); spurious large pos. depths are left unchanged.')
    618  CALL nc_opchk(stat, "nf90_put_att: lake_depth:description")
    619 #endif
    620 
    621  write(string,'(a,es8.1)') 'land_frac and lake_frac are adjusted such that their sum '// &
    622  'is 1 at points where inland=1; land_frac cutoff is',land_cutoff
    623  stat = nf90_put_att(ncid, land_frac_id,'description',trim(string))
    624  CALL nc_opchk(stat, "nf90_put_att: land_frac:description")
    625 
    626  write(string,'(a)') 'slmsk = nint(land_frac)'
    627  stat = nf90_put_att(ncid, slmsk_id,'description',trim(string))
    628  CALL nc_opchk(stat, "nf90_put_att: slmsk:description")
    629 
    630  stat = nf90_enddef(ncid)
    631  CALL nc_opchk(stat, "nf90_enddef")
    632 
    633 ! read in geolon and geolat and 2 variables from orog data file
    634  stat = nf90_inq_varid(ncid, "geolon", geolon_id)
    635  CALL nc_opchk(stat, "nf90_inq_varid: geolon")
    636  stat = nf90_inq_varid(ncid, "geolat", geolat_id)
    637  CALL nc_opchk(stat, "nf90_inq_varid: geolat")
    638  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    639  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    640  stat = nf90_inq_varid(ncid, "slmsk", slmsk_id)
    641  CALL nc_opchk(stat, "nf90_inq_varid: slmsk")
    642  stat = nf90_inq_varid(ncid, "inland", inland_id)
    643  CALL nc_opchk(stat, "nf90_inq_varid: inland")
    644  stat = nf90_get_var(ncid, geolon_id, geolon, &
    645  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    646  CALL nc_opchk(stat, "nf90_get_var: geolon")
    647  stat = nf90_get_var(ncid, geolat_id, geolat, &
    648  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    649  CALL nc_opchk(stat, "nf90_get_var: geolat")
    650  stat = nf90_get_var(ncid, land_frac_id, land_frac, &
    651  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    652  CALL nc_opchk(stat, "nf90_get_var: land_frac")
    653  stat = nf90_get_var(ncid, slmsk_id, slmsk, &
    654  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    655  CALL nc_opchk(stat, "nf90_get_var: slmsk")
    656  stat = nf90_get_var(ncid, inland_id, inland, &
    657  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    658  CALL nc_opchk(stat, "nf90_get_var: inland")
    659 
    660  lake_frac(:) = cs_lakestat((tile_num-1)*tile_sz+1:tile_num*tile_sz)
    661  lake_depth(:) = cs_lakedepth((tile_num-1)*tile_sz+1:tile_num*tile_sz)
    662 
    663 ! add Caspian Sea and Aral Sea to lake_frac and lake_depth
    664  IF (tile_num == 2 .or. tile_num == 3) THEN
    665  DO i = 1, tile_sz
    666  IF (land_frac(i) < 0.9 .AND. lake_frac(i) < 0.1) THEN
    667  IF (geolat(i) > 35.0 .AND. geolat(i) <= 50.0 .AND. &
    668  geolon(i) > 45.0 .AND. geolon(i) <= 55.0) THEN
    669  lake_frac(i) = 1.-land_frac(i)
    670  lake_depth(i) = 211.0
    671  ENDIF
    672  IF (geolat(i) > 35.0 .AND. geolat(i) <= 50.0 .AND. &
    673  geolon(i) > 57.0 .AND. geolon(i) <= 63.0) THEN
    674  lake_frac(i) = 1.-land_frac(i)
    675  lake_depth(i) = 10.0
    676  ENDIF
    677  ENDIF
    678  ENDDO
    679  ENDIF
    680 
    681 ! adjust land_frac and lake_frac, and make sure land_frac+lake_frac=1 at inland points
    682  DO i = 1, tile_sz
    683  if (lake_frac(i) >= lake_cutoff) then ! non-zero lake_frac dominates over land_frac
    684  land_frac(i) = max(0., min(1., 1.-lake_frac(i)))
    685  elseif (inland(i) == 1.) then ! land_frac dominates over lake_frac at inland points
    686  lake_frac(i) = max(0., min(1., 1.-land_frac(i)))
    687  end if
    688 
    689 ! epsil is "numerical" nonzero min for lake_frac/land_frac
    690 ! lake_cutoff/land_cutoff is practical min for lake_frac/land_frac
    691  if (min(lake_cutoff,land_cutoff) < epsil) then
    692  print *,'lake_cutoff/land_cutoff cannot be smaller than epsil, reset...'
    693  lake_cutoff=max(epsil,lake_cutoff)
    694  land_cutoff=max(epsil,land_cutoff)
    695  end if
    696 
    697  if (lake_frac(i)< lake_cutoff) lake_frac(i)=0.
    698  if (lake_frac(i)>1.-lake_cutoff) lake_frac(i)=1.
    699  if (inland(i) == 1.) land_frac(i) = 1.-lake_frac(i)
    700  if (land_frac(i)< land_cutoff) land_frac(i)=0.
    701  if (land_frac(i)>1.-land_cutoff) land_frac(i)=1.
    702 
    703  if (lake_frac(i) < lake_cutoff) then
    704  lake_depth(i)=0.
    705  elseif (lake_frac(i) >= lake_cutoff .and. lake_depth(i)==0.) then
    706  lake_depth(i)=10.
    707  end if
    708  slmsk(i) = nint(land_frac(i))
    709  ENDDO
    710 ! write 2 new variables
    711  stat = nf90_put_var(ncid, lake_frac_id, lake_frac, &
    712  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    713  CALL nc_opchk(stat, "nf90_put_var: lake_frac")
    714 
    715  stat = nf90_put_var(ncid, lake_depth_id, lake_depth, &
    716  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    717  CALL nc_opchk(stat, "nf90_put_var: lake_depth")
    718 
    719 ! write back 2 modified variables: land_frac and slmsk
    720  stat = nf90_put_var(ncid, land_frac_id, land_frac, &
    721  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    722  CALL nc_opchk(stat, "nf90_put_var: land_frac")
    723 
    724  stat = nf90_put_var(ncid, slmsk_id, slmsk, &
    725  start = (/ 1, 1 /), count = (/ cs_res, cs_res /) )
    726  CALL nc_opchk(stat, "nf90_put_var: slmsk")
    727 
    728  stat = nf90_close(ncid)
    729  CALL nc_opchk(stat, "nf90_close")
    730  ENDDO
    731 
    732 END SUBROUTINE write_lakedata_to_orodata
    733 
    744 SUBROUTINE write_reg_lakedata_to_orodata(cs_res, tile_x_dim, tile_y_dim, cs_lakestat, cs_lakedpth)
    745  USE netcdf
    746  INTEGER, INTENT(IN) :: cs_res, tile_x_dim, tile_y_dim
    747  REAL, INTENT(IN) :: cs_lakestat(:)
    748  REAL, INTENT(IN) :: cs_lakedpth(:)
    749 
    750  INTEGER :: tile_sz, tile_num
    751  INTEGER :: stat, ncid, x_dimid, y_dimid, varid, dimids(2)
    752  INTEGER :: lake_frac_id, lake_depth_id
    753  INTEGER :: land_frac_id, slmsk_id, geolon_id, geolat_id, inland_id
    754  CHARACTER(len=256) :: filename,string
    755  CHARACTER(len=1) :: ich
    756  CHARACTER(len=4) res_ch
    757 
    758  REAL, ALLOCATABLE :: lake_frac(:), lake_depth(:), geolon(:), geolat(:)
    759  REAL, ALLOCATABLE :: land_frac(:), slmsk(:), inland(:)
    760 
    761  real, parameter :: epsil=1.e-6 ! numerical min for lake_frac/land_frac
    762  real :: land_cutoff=1.e-6 ! land_frac=0 if it is < land_cutoff
    763 
    764  INTEGER :: i, j, var_id
    765 
    766 ! include "netcdf.inc"
    767  tile_sz = tile_x_dim*tile_y_dim
    768 
    769  ALLOCATE(lake_frac(tile_sz), lake_depth(tile_sz))
    770  ALLOCATE(geolon(tile_sz), geolat(tile_sz))
    771  ALLOCATE(land_frac(tile_sz), slmsk(tile_sz), inland(tile_sz))
    772 
    773  WRITE(res_ch,'(I4)') cs_res
    774  tile_num = 7
    775  WRITE(ich, '(I1)') tile_num
    776 ! filename = "C" // trim(adjustl(res_ch)) // "_oro_data.tile" // ich // ".halo4.nc"
    777  filename = "oro.C" // trim(adjustl(res_ch)) // ".tile" // ich // ".nc"
    778  print*, 'Open and write regional orography data netCDF file ', trim(filename)
    779  stat = nf90_open(filename, nf90_write, ncid)
    780  CALL nc_opchk(stat, "nf90_open oro_data.nc")
    781  stat = nf90_inq_dimid(ncid, "lon", x_dimid)
    782  CALL nc_opchk(stat, "nf90_inq_dim: x")
    783  stat = nf90_inq_dimid(ncid, "lat", y_dimid)
    784  CALL nc_opchk(stat, "nf90_inq_dim: y")
    785  dimids = (/ x_dimid, y_dimid /)
    786 
    787  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    788  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    789  stat = nf90_inq_varid(ncid, "slmsk", slmsk_id)
    790  CALL nc_opchk(stat, "nf90_inq_varid: slmsk")
    791 
    792 ! define 2 new variables, lake_frac and lake_depth
    793  stat = nf90_redef(ncid)
    794  CALL nc_opchk(stat, "nf90_redef")
    795 
    796  IF (nf90_inq_varid(ncid, "lake_frac",lake_frac_id) /= 0) THEN
    797  stat = nf90_def_var(ncid,"lake_frac",nf90_float,dimids,lake_frac_id)
    798  CALL nc_opchk(stat, "nf90_def_var: lake_frac")
    799 #ifdef ADD_ATT_FOR_NEW_VAR
    800  stat = nf90_put_att(ncid, lake_frac_id,'coordinates','geolon geolat')
    801  CALL nc_opchk(stat, "nf90_put_att: lake_frac:coordinates")
    802  stat = nf90_put_att(ncid, lake_frac_id,'long_name','lake fraction')
    803  CALL nc_opchk(stat, "nf90_put_att: lake_frac:long_name")
    804  stat = nf90_put_att(ncid, lake_frac_id,'unit','fraction')
    805  CALL nc_opchk(stat, "nf90_put_att: lake_frac:unit")
    806  stat = nf90_put_att(ncid, lake_frac_id,'description', &
    807  'based on GLDBv2 (Choulga et al. 2014); missing lakes &
    808  added based on land_frac in this dataset.')
    809  CALL nc_opchk(stat, "nf90_put_att: lake_frac:description")
    810 #endif
    811  ENDIF
    812  IF (nf90_inq_varid(ncid, "lake_depth",lake_depth_id) /= 0) THEN
    813  stat = nf90_def_var(ncid,"lake_depth",nf90_float,dimids,lake_depth_id)
    814  CALL nc_opchk(stat, "nf90_def_var: lake_depth")
    815 #ifdef ADD_ATT_FOR_NEW_VAR
    816  stat = nf90_put_att(ncid, lake_depth_id,'coordinates','geolon geolat')
    817  CALL nc_opchk(stat, "nf90_put_att: lake_depth:coordinates")
    818  stat = nf90_put_att(ncid, lake_depth_id,'long_name','lake depth')
    819  CALL nc_opchk(stat, "nf90_put_att: lake_depth:long_name")
    820  stat = nf90_put_att(ncid, lake_depth_id,'unit','meter')
    821  CALL nc_opchk(stat, "nf90_put_att: lake_depth:long_name")
    822  stat = nf90_put_att(ncid, lake_depth_id,'description', &
    823  'based on GLDBv2 (Choulga et al. 2014); missing depth set to 10m &
    824  (except to 211m in Caspian Sea); spurious large pos. depths are left unchanged.')
    825  CALL nc_opchk(stat, "nf90_put_att: lake_depth:description")
    826 #endif
    827  ENDIF
    828  write(string,'(a,es8.1)') 'land_frac and lake_frac are adjusted '// &
    829  'such that their sum is 1 at points where inland=1; land_frac '// &
    830  'cutoff is ',land_cutoff
    831  stat = nf90_put_att(ncid, land_frac_id,'description',trim(string))
    832  CALL nc_opchk(stat, "nf90_put_att: land_frac:description")
    833 
    834  write(string,'(a)') 'slmsk = nint(land_frac)'
    835  stat = nf90_put_att(ncid, slmsk_id,'description',trim(string))
    836  CALL nc_opchk(stat, "nf90_put_att: slmsk:description")
    837 
    838  stat = nf90_enddef(ncid)
    839  CALL nc_opchk(stat, "nf90_enddef")
    840 
    841 ! read in geolon and geolat and 2 variables from orog data file
    842  stat = nf90_inq_varid(ncid, "geolon", geolon_id)
    843  CALL nc_opchk(stat, "nf90_inq_varid: geolon")
    844  stat = nf90_inq_varid(ncid, "geolat", geolat_id)
    845  CALL nc_opchk(stat, "nf90_inq_varid: geolat")
    846  stat = nf90_inq_varid(ncid, "land_frac", land_frac_id)
    847  CALL nc_opchk(stat, "nf90_inq_varid: land_frac")
    848  stat = nf90_inq_varid(ncid, "slmsk", slmsk_id)
    849  CALL nc_opchk(stat, "nf90_inq_varid: slmsk")
    850  stat = nf90_inq_varid(ncid, "inland", inland_id)
    851  CALL nc_opchk(stat, "nf90_inq_varid: inland")
    852 
    853  stat = nf90_get_var(ncid, geolon_id, geolon, &
    854  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    855  CALL nc_opchk(stat, "nf90_get_var: geolon")
    856  stat = nf90_get_var(ncid, geolat_id, geolat, &
    857  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    858  CALL nc_opchk(stat, "nf90_get_var: geolat")
    859  stat = nf90_get_var(ncid, land_frac_id, land_frac, &
    860  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    861  CALL nc_opchk(stat, "nf90_get_var: land_frac")
    862  stat = nf90_get_var(ncid, slmsk_id, slmsk, &
    863  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    864  CALL nc_opchk(stat, "nf90_get_var: slmsk")
    865  stat = nf90_get_var(ncid, inland_id, inland, &
    866  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    867  CALL nc_opchk(stat, "nf90_get_var: inland")
    868 
    869  tile_num = 1
    870  lake_frac(:) = cs_lakestat((tile_num-1)*tile_sz+1:tile_num*tile_sz)
    871  lake_depth(:) = cs_lakedepth((tile_num-1)*tile_sz+1:tile_num*tile_sz)
    872 
    873 ! add Caspian Sea and Aral Sea to lake_frac and lake_depth
    874  DO i = 1, tile_sz
    875  IF (land_frac(i) < 0.9 .AND. lake_frac(i) < 0.1) THEN
    876  IF (geolat(i) > 35.0 .AND. geolat(i) <= 50.0 .AND. &
    877  geolon(i) > 45.0 .AND. geolon(i) <= 55.0) THEN
    878  lake_frac(i) = 1.-land_frac(i)
    879  lake_depth(i) = 211.0
    880  ENDIF
    881  IF (geolat(i) > 35.0 .AND. geolat(i) <= 50.0 .AND. &
    882  geolon(i) > 57.0 .AND. geolon(i) <= 63.0) THEN
    883  lake_frac(i) = 1.-land_frac(i)
    884  lake_depth(i) = 10.0
    885  ENDIF
    886  ENDIF
    887  ENDDO
    888 
    889 ! adjust land_frac and lake_frac, and make sure land_frac+lake_frac=1 at inland points
    890  DO i = 1, tile_sz
    891  if (lake_frac(i) >= lake_cutoff) then ! non-zero lake_frac dominates over land_frac
    892  land_frac(i) = max(0., min(1., 1.-lake_frac(i)))
    893  elseif (inland(i) == 1.) then ! land_frac dominates over lake_frac at inland points
    894  lake_frac(i) = max(0., min(1., 1.-land_frac(i)))
    895  end if
    896 
    897 ! epsil is "numerical" nonzero min for lake_frac/land_frac
    898 ! lake_cutoff/land_cutoff is practical min for lake_frac/land_frac
    899  if (min(lake_cutoff,land_cutoff) < epsil) then
    900  print *,'lake_cutoff/land_cutoff cannot be smaller than epsil, reset...'
    901  lake_cutoff=max(epsil,lake_cutoff)
    902  land_cutoff=max(epsil,land_cutoff)
    903  end if
    904 
    905  if (lake_frac(i)< lake_cutoff) lake_frac(i)=0.
    906  if (lake_frac(i)>1.-lake_cutoff) lake_frac(i)=1.
    907  if (inland(i) == 1.) land_frac(i) = 1.-lake_frac(i)
    908  if (land_frac(i)< land_cutoff) land_frac(i)=0.
    909  if (land_frac(i)>1.-land_cutoff) land_frac(i)=1.
    910 
    911  if (lake_frac(i) < lake_cutoff) then
    912  lake_depth(i)=0.
    913  elseif (lake_frac(i) >= lake_cutoff .and. lake_depth(i)==0.) then
    914  lake_depth(i)=10.
    915  end if
    916  slmsk(i) = nint(land_frac(i))
    917  ENDDO
    918 
    919 ! write 2 new variables
    920  stat = nf90_put_var(ncid, lake_frac_id, lake_frac, &
    921  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    922  CALL nc_opchk(stat, "nf90_put_var: lake_frac")
    923 
    924  stat = nf90_put_var(ncid, lake_depth_id, lake_depth, &
    925  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    926  CALL nc_opchk(stat, "nf90_put_var: lake_depth")
    927 
    928 ! write back 2 modified variables: land_frac and slmsk
    929  stat = nf90_put_var(ncid, land_frac_id, land_frac, &
    930  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    931  CALL nc_opchk(stat, "nf90_put_var: land_frac")
    932 
    933  stat = nf90_put_var(ncid, slmsk_id, slmsk, &
    934  start = (/ 1, 1 /), count = (/ tile_x_dim, tile_y_dim /) )
    935  CALL nc_opchk(stat, "nf90_put_var: slmsk")
    936 
    937  stat = nf90_close(ncid)
    938  CALL nc_opchk(stat, "nf90_close")
    939 
    940  DEALLOCATE(lake_frac, lake_depth)
    941  DEALLOCATE(geolon, geolat)
    942  DEALLOCATE(land_frac, slmsk)
    943 
    944 END SUBROUTINE write_reg_lakedata_to_orodata
    945 
    951 SUBROUTINE nc_opchk(stat,opname)
    952  USE netcdf
    953  IMPLICIT NONE
    954  INTEGER stat
    955  CHARACTER(len=*) opname
    956  CHARACTER(64) msg
    957 
    958  IF (stat .NE.0) THEN
    959  msg = trim(opname) // ' Error, status code and message:'
    960  print*,trim(msg), stat, nf90_strerror(stat)
    961  stop
    962  END IF
    963 
    964 END SUBROUTINE nc_opchk
    965 
    966 END PROGRAM lake_frac
    subroutine read_lakedata(lakedata_path, lake_stat, lake_dpth, nlat, nlon)
    Read a high-resolution lake depth dataset, and a corresponding lake status dataset which provides a s...
    Definition: lakefrac.F90:514
    +
    subroutine write_lakedata_to_orodata(cs_res, cs_lakestat, cs_lakedpth)
    Write lake depth and fraction to an existing model orography file.
    Definition: lakefrac.F90:546
    +
    subroutine read_cubed_sphere_reg_grid(res, grid, halo_depth, res_x, res_y)
    Read the latitude and longitude for a regional grid from the &#39;grid&#39; file.
    Definition: lakefrac.F90:444
    +
    subroutine read_cubed_sphere_grid(res, grid)
    Read the latitude and longitude for a cubed-sphere grid from the &#39;grid&#39; files.
    Definition: lakefrac.F90:383
    +
    subroutine find_limit(p1_in, p2_in, latmin, latmax)
    Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the re...
    Definition: find_limit.F90:16
    +
    program lake_frac
    This program computes lake fraction and depth numbers for FV3 cubed sphere grid cells, from a high resolution lat/lon data set.
    Definition: lakefrac.F90:21
    +
    subroutine write_reg_lakedata_to_orodata(cs_res, tile_x_dim, tile_y_dim, cs_lakestat, cs_lakedpth)
    Write lake depth and fraction to an existing model orography file.
    Definition: lakefrac.F90:745
    +
    subroutine cal_lake_frac_depth(lakestat, cs_lakestat, lakedpth, cs_lakedpth)
    Calculate lake fraction and depth on the model grid from high-resolution data.
    Definition: lakefrac.F90:145
    +
    subroutine nc_opchk(stat, opname)
    Check NetCDF return code and print error message.
    Definition: inland.F90:438
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/man/man3/HGT_interpolate.3 b/ver-1.11.0/orog_mask_tools/man/man3/HGT_interpolate.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/HGT_interpolate.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT2.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT2.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEMT2.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA2.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA2.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA2.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA3.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA3.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEOA3.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC2.3 b/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC2.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/MAKEPC2.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/REVERS.3 b/ver-1.11.0/orog_mask_tools/man/man3/REVERS.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/REVERS.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/SPFFT1.3 b/ver-1.11.0/orog_mask_tools/man/man3/SPFFT1.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/SPFFT1.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/TERSUB.3 b/ver-1.11.0/orog_mask_tools/man/man3/TERSUB.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/TERSUB.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/__mtnlm7_oclsm.F__.3 b/ver-1.11.0/orog_mask_tools/man/man3/__mtnlm7_oclsm.F__.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/__mtnlm7_oclsm.F__.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/bndry.3 b/ver-1.11.0/orog_mask_tools/man/man3/bndry.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/bndry.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/bndry_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/bndry_reg.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/bndry_reg.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/cal_lake_frac_depth.3 b/ver-1.11.0/orog_mask_tools/man/man3/cal_lake_frac_depth.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/cal_lake_frac_depth.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_lg_scale.3 b/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_lg_scale.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_lg_scale.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_sm_scale.3 b/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_sm_scale.3 new file mode 100644 index 000000000..e532aadbd --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/calc_gsl_oro_data_sm_scale.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_sm_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/calc_mean_HGT.3 b/ver-1.11.0/orog_mask_tools/man/man3/calc_mean_HGT.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/calc_mean_HGT.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/cres.3 b/ver-1.11.0/orog_mask_tools/man/man3/cres.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/cres.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_gp_idx.3 b/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_gp_idx.3 new file mode 100644 index 000000000..ef54413a2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_gp_idx.3 @@ -0,0 +1,46 @@ +.TH "cs_nb::nb_gp_idx" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +cs_nb::nb_gp_idx \- Neighboring cell descriptor\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "integer \fBgp_type\fP" +.br +.RI "Cell boundary type from bndry function\&. " +.ti -1c +.RI "integer, dimension(3, 8) \fBijt\fP" +.br +.RI "Neighboring cell indices\&. " +.in -1c +.SH "Detailed Description" +.PP +Neighboring cell descriptor\&. + + +.PP +Definition at line 17 of file nb\&.F90\&. +.SH "Field Documentation" +.PP +.SS "integer cs_nb::nb_gp_idx::gp_type" + +.PP +Cell boundary type from bndry function\&. +.PP +Definition at line 18 of file nb\&.F90\&. +.SS "integer, dimension(3,8) cs_nb::nb_gp_idx::ijt" + +.PP +Neighboring cell indices\&. +.PP +Definition at line 19 of file nb\&.F90\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_tile_idx.3 b/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_tile_idx.3 new file mode 100644 index 000000000..c9f6c061e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/cs_nb_nb_tile_idx.3 @@ -0,0 +1,46 @@ +.TH "cs_nb::nb_tile_idx" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +cs_nb::nb_tile_idx \- Neighboring tile descriptor\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "character(1) \fBnb_tile_bndry\fP" +.br +.RI "Neighbor tile boundary (l)eft, (r)ight, (t)op, (b)ottom\&. " +.ti -1c +.RI "integer \fBnb_tile_num\fP" +.br +.RI "Neighbor tile number (1\&.\&.6) " +.in -1c +.SH "Detailed Description" +.PP +Neighboring tile descriptor\&. + + +.PP +Definition at line 11 of file nb\&.F90\&. +.SH "Field Documentation" +.PP +.SS "character (1) cs_nb::nb_tile_idx::nb_tile_bndry" + +.PP +Neighbor tile boundary (l)eft, (r)ight, (t)op, (b)ottom\&. +.PP +Definition at line 13 of file nb\&.F90\&. +.SS "integer cs_nb::nb_tile_idx::nb_tile_num" + +.PP +Neighbor tile number (1\&.\&.6) +.PP +Definition at line 12 of file nb\&.F90\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/dbl_kind.3 b/ver-1.11.0/orog_mask_tools/man/man3/dbl_kind.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/dbl_kind.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/dimx_fine.3 b/ver-1.11.0/orog_mask_tools/man/man3/dimx_fine.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/dimx_fine.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/dimy_fine.3 b/ver-1.11.0/orog_mask_tools/man/man3/dimy_fine.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/dimy_fine.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.3 b/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.3 new file mode 100644 index 000000000..f401a9067 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.3 @@ -0,0 +1 @@ +.so man3/enclosure_cnvx.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.F90.3 new file mode 100644 index 000000000..07dc20fe6 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/enclosure_cnvx.F90.3 @@ -0,0 +1,65 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/enclosure_cnvx.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/enclosure_cnvx.F90 \- Test whether a point is inside a spherical convex polygon\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "logical function \fBenclosure_cnvx\fP (v, n, p, co_gc)" +.br +.RI "Test whether a given point 'p' is inside a convex spherical polygon defined with a series of 'n' vertices\&. " +.in -1c +.SH "Detailed Description" +.PP +Test whether a point is inside a spherical convex polygon\&. + + +.PP +\fBAuthor:\fP +.RS 4 +N Wang +.RE +.PP + +.PP +Definition in file \fBenclosure_cnvx\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "logical function enclosure_cnvx (real*8, dimension(2,n), intent(in) v, integer, intent(in) n, real*8, dimension(2), intent(in) p, integer, intent(out) co_gc)" + +.PP +Test whether a given point 'p' is inside a convex spherical polygon defined with a series of 'n' vertices\&. Both the test point and the polygon are specified in latitude and longitude radians\&. It is assumed that a side of a spherical polygon is a great-circle arc that connects 2 adjacent vertices of the polygon\&. +.PP +\fBParameters:\fP +.RS 4 +\fIv\fP set of vertices +.br +\fIn\fP number of vertices in v +.br +\fIp\fP point to test +.br +\fIco_gc\fP 'i' if \fCp\fP is on or within epsilon to side 'i' of the given spherical polygon, or 0 if point is not on any side of the given polygon\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +enclosure_cnvx whether the point is inside the polygon +.RE +.PP +\fBAuthor:\fP +.RS 4 +N Wang +.RE +.PP + +.PP +Definition at line 50 of file enclosure_cnvx\&.F90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/find_limit.3 b/ver-1.11.0/orog_mask_tools/man/man3/find_limit.3 new file mode 100644 index 000000000..148712e1e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/find_limit.3 @@ -0,0 +1 @@ +.so man3/find_limit.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/find_limit.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/find_limit.F90.3 new file mode 100644 index 000000000..97bc1bec3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/find_limit.F90.3 @@ -0,0 +1,126 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/find_limit.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/find_limit.F90 \- Geo-reference utilities for a cubed-sphere grid\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBfind_limit\fP (p1_in, p2_in, latmin, latmax)" +.br +.RI "Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the resulting great circle\&. " +.ti -1c +.RI "subroutine \fBmiddle\fP (p1, p2, p)" +.br +.RI "Compute the latitude and longitude of the middle point between two given points\&. " +.in -1c +.SH "Detailed Description" +.PP +Geo-reference utilities for a cubed-sphere grid\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition in file \fBfind_limit\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine find_limit (real*8, dimension(2), intent(in) p1_in, real*8, dimension(2), intent(in) p2_in, real*8, intent(out) latmin, real*8, intent(out) latmax)" + +.PP +Given two points on a cubed-sphere grid, compute the maximum and minimum latitudinal extent of the resulting great circle\&. +.PP +\fBParameters:\fP +.RS 4 +\fIp1_in\fP Latitude and longitude of point 1\&. +.br +\fIp2_in\fP Latitude and longitude of point 2\&. +.br +\fIlatmin\fP Minimum latitudinal extent\&. +.br +\fIlatmax\fP Maximum latitudinal extent\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 16 of file find_limit\&.F90\&. +.PP +References middle()\&. +.PP +Referenced by cal_lake_frac_depth()\&. +.SS "subroutine middle (real*8, dimension(2), intent(in) p1, real*8, dimension(2), intent(in) p2, real*8, dimension(2), intent(out) p)" + +.PP +Compute the latitude and longitude of the middle point between two given points\&. There are two formulae available to compute it\&. +.PP +One derived from a more general m-sect formula: +.PP +.nf + + xyz = sin((1-f)*theta) / sin(theta) * xyz1 + + sin(f*theta) /sin(theta) * xyz2 ; + where theta is the angle of xyz1, and xyz2\&. + +.fi +.PP +.PP +.PP +.nf + + xyz = 0\&.5 / sqrt[(1+dot(xyz1,xyz2))/2] * (xyz1+xyz2) + +.fi +.PP +.PP +and the other one is the normalized middle point of the two end points: +.PP +.PP +.nf + + xyz = 0\&.5 * (xyz1+xyz2), xyz = xyz / sqrt(dot(xyz,xyz)) + +.fi +.PP +.PP +\fBParameters:\fP +.RS 4 +\fIp1\fP Latitude/longitude of first end point\&. +.br +\fIp2\fP Latitude/longitude of second end point +.br +\fIp\fP Latitude/longitude of the mid-point\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP +\fBDate:\fP +.RS 4 +March, 2006 +.RE +.PP + +.PP +Definition at line 80 of file find_limit\&.F90\&. +.PP +Referenced by find_limit()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/free_mem.3 b/ver-1.11.0/orog_mask_tools/man/man3/free_mem.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/free_mem.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_index.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_index.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_index.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_lat_angle.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_lat_angle.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_lat_angle.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_lon_angle.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_lon_angle.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_lon_angle.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_mismatch_index.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_mismatch_index.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_mismatch_index.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum2.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum2.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum2.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum3.3 b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum3.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/get_xnsum3.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/gg2rg.3 b/ver-1.11.0/orog_mask_tools/man/man3/gg2rg.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/gg2rg.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/gp_type.3 b/ver-1.11.0/orog_mask_tools/man/man3/gp_type.3 new file mode 100644 index 000000000..56bce8a8a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/gp_type.3 @@ -0,0 +1 @@ +.so man3/cs_nb_nb_gp_idx.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.3 b/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.3 new file mode 100644 index 000000000..ada962844 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.3 @@ -0,0 +1 @@ +.so man3/gsl_oro_data.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.f90.3 b/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.f90.3 new file mode 100644 index 000000000..39a7e9579 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/gsl_oro_data.f90.3 @@ -0,0 +1,74 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/gsl_oro_data.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/gsl_oro_data.f90 \- Create orographic (oro_data) files for use by GSL drag suite\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "program \fBgsl_oro_data\fP" +.br +.RI "Brief description of program: Creates orographic (oro_data) files needed by the GSL drag suite physics parameterization\&. " +.in -1c +.SH "Detailed Description" +.PP +Create orographic (oro_data) files for use by GSL drag suite\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP +\fBDate:\fP +.RS 4 +2021-03-12 +.RE +.PP +Program GSL_ORO_DATA +.PP +This program calls subroutines which calculate the parameters required for the GSL subgrid-scale orographic gravity-wave drag (GWDO) suite on the FV3 grid\&. These parameters are for the small-scale GWD (Tsiringakis et al\&., 2017) and turbulent orographic form drag (TOFD) (Beljaars et al\&., 2004) schemes of the GSL drag suite\&. The output fields are: +.IP "\(bu" 2 +stddev standard deviation of subgrid-scale topograpy +.IP "\(bu" 2 +convexity convexity (kurtosis) of subgrid-scale topography +.IP "\(bu" 2 +ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.IP "\(bu" 2 +oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.PP +.PP +Note: This program works for both the global FV3GFS cubed sphere, i\&.e\&., for tiles 1 through 6, (and 7 if nested grid) (halo\&.eq\&.-999 for no halo), and for the stand-alone regional lam (tile 7 and halo\&.ne\&.-999) If a halo number is given, this is only to specify the Cxxx_grid\&.halox data used for input\&. The oro_data files are always 'halo0' output\&. +.PP +Based on code by Michael Duda provided by NCAR/MMM +.PP +Definition in file \fBgsl_oro_data\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "program gsl_oro_data ()" + +.PP +Brief description of program: Creates orographic (oro_data) files needed by the GSL drag suite physics parameterization\&. +.PP +\fBAuthor:\fP +.RS 4 +Michaei Toy, NOAA/GSL +.RE +.PP +\fBReturns:\fP +.RS 4 +0 for success, error code otherwise\&. +.RE +.PP + +.PP +Definition at line 36 of file gsl_oro_data\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/hgt_m_fine.3 b/ver-1.11.0/orog_mask_tools/man/man3/hgt_m_fine.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/hgt_m_fine.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/hgt_missing.3 b/ver-1.11.0/orog_mask_tools/man/man3/hgt_missing.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/hgt_missing.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/idx_init.3 b/ver-1.11.0/orog_mask_tools/man/man3/idx_init.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/idx_init.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/idx_init_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/idx_init_reg.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/idx_init_reg.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/ijt.3 b/ver-1.11.0/orog_mask_tools/man/man3/ijt.3 new file mode 100644 index 000000000..56bce8a8a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/ijt.3 @@ -0,0 +1 @@ +.so man3/cs_nb_nb_gp_idx.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/inland.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/inland.F90.3 new file mode 100644 index 000000000..65a7f36ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/inland.F90.3 @@ -0,0 +1,315 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/inland.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/inland.F90 \- Program and associated routines for creating inland mask\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBfree_mem\fP ()" +.br +.RI "Deallocate module arrays\&. " +.ti -1c +.RI "program \fBinland_mask\fP" +.br +.RI "This program creates the inland mask and writes it to the orography data files\&. " +.ti -1c +.RI "subroutine \fBmark_global_inland\fP (cs_res)" +.br +.RI "Create inland mask for global grid\&. " +.ti -1c +.RI "recursive subroutine \fBmark_global_inland_rec_d\fP (i, j, t, rd)" +.br +.RI "Recursively walk through neighbors marking inland points for global grid\&. " +.ti -1c +.RI "subroutine \fBmark_inland_reg\fP (cs_res)" +.br +.RI "Create inland mask for regional grid\&. " +.ti -1c +.RI "recursive subroutine \fBmark_regional_inland_rec_d\fP (i, j, t, rd)" +.br +.RI "Recursively walk through neighbors marking inland points for regional grid\&. " +.ti -1c +.RI "subroutine \fBnc_opchk\fP (stat, opname)" +.br +.RI "Check NetCDF return code and print error message\&. " +.ti -1c +.RI "subroutine \fBread_orog\fP (cs_res)" +.br +.RI "Read in orography (land fraction) data\&. " +.ti -1c +.RI "subroutine \fBread_orog_reg\fP (cs_res)" +.br +.RI "Read in orography (land fraction) data for regional grid\&. " +.ti -1c +.RI "subroutine \fBwrite_inland\fP (cs_res)" +.br +.RI "Write inland back to the orography data files for global grid\&. " +.ti -1c +.RI "subroutine \fBwrite_inland_reg\fP (cs_res)" +.br +.RI "Write inland back to the orography data files for regional grid\&. " +.in -1c +.SH "Detailed Description" +.PP +Program and associated routines for creating inland mask\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP +\fBDate:\fP +.RS 4 +July 1, 2020 +.RE +.PP + +.PP +Definition in file \fBinland\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine inland_mask::free_mem ()" + +.PP +Deallocate module arrays\&. +.PP +Definition at line 426 of file inland\&.F90\&. +.PP +Referenced by inland_mask()\&. +.SS "program inland_mask ()" + +.PP +This program creates the inland mask and writes it to the orography data files\&. +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP +\fBReturns:\fP +.RS 4 +0 for success, error otherwise\&. +.RE +.PP + +.PP +Definition at line 9 of file inland\&.F90\&. +.PP +References free_mem(), mark_global_inland(), mark_inland_reg(), read_orog(), read_orog_reg(), write_inland(), and write_inland_reg()\&. +.SS "subroutine inland_mask::mark_global_inland (integer, intent(in) cs_res)" + +.PP +Create inland mask for global grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 80 of file inland\&.F90\&. +.PP +References mark_global_inland_rec_d()\&. +.PP +Referenced by inland_mask()\&. +.SS "recursive subroutine inland_mask::mark_global_inland_rec_d (integer, intent(in) i, integer, intent(in) j, integer, intent(in) t, integer, intent(in) rd)" + +.PP +Recursively walk through neighbors marking inland points for global grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP cell index +.br +\fIj\fP cell index +.br +\fIt\fP tile number +.br +\fIrd\fP current recursive depth (starts at 0) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 132 of file inland\&.F90\&. +.PP +Referenced by mark_global_inland()\&. +.SS "subroutine inland_mask::mark_inland_reg (integer, intent(in) cs_res)" + +.PP +Create inland mask for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 100 of file inland\&.F90\&. +.PP +References mark_regional_inland_rec_d()\&. +.PP +Referenced by inland_mask()\&. +.SS "recursive subroutine inland_mask::mark_regional_inland_rec_d (integer, intent(in) i, integer, intent(in) j, integer, intent(in) t, integer, intent(in) rd)" + +.PP +Recursively walk through neighbors marking inland points for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP cell index +.br +\fIj\fP cell index +.br +\fIt\fP tile face +.br +\fIrd\fP current recursive depth (starts at 0) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 169 of file inland\&.F90\&. +.PP +Referenced by mark_inland_reg()\&. +.SS "subroutine inland_mask::nc_opchk (integer stat, character(len=*) opname)" + +.PP +Check NetCDF return code and print error message\&. +.PP +\fBParameters:\fP +.RS 4 +\fIstat\fP status code returned from NetCDF +.br +\fIopname\fP description of NetCDF operation called +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 438 of file inland\&.F90\&. +.PP +Referenced by read_cubed_sphere_grid(), read_cubed_sphere_reg_grid(), read_orog(), read_orog_reg(), write_inland(), write_inland_reg(), write_lakedata_to_orodata(), and write_reg_lakedata_to_orodata()\&. +.SS "subroutine inland_mask::read_orog (integer, intent(in) cs_res)" + +.PP +Read in orography (land fraction) data\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 203 of file inland\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by inland_mask()\&. +.SS "subroutine inland_mask::read_orog_reg (integer, intent(in) cs_res)" + +.PP +Read in orography (land fraction) data for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 249 of file inland\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by inland_mask()\&. +.SS "subroutine inland_mask::write_inland (integer, intent(in) cs_res)" + +.PP +Write inland back to the orography data files for global grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 301 of file inland\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by inland_mask()\&. +.SS "subroutine inland_mask::write_inland_reg (integer, intent(in) cs_res)" + +.PP +Write inland back to the orography data files for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 363 of file inland\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by inland_mask()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/inland_mask.3 b/ver-1.11.0/orog_mask_tools/man/man3/inland_mask.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/inland_mask.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/inside_a_polygon.3 b/ver-1.11.0/orog_mask_tools/man/man3/inside_a_polygon.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/inside_a_polygon.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/interp_1d.3 b/ver-1.11.0/orog_mask_tools/man/man3/interp_1d.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/interp_1d.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/interpolate_mismatch.3 b/ver-1.11.0/orog_mask_tools/man/man3/interpolate_mismatch.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/interpolate_mismatch.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/lake_frac.3 b/ver-1.11.0/orog_mask_tools/man/man3/lake_frac.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/lake_frac.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/lakefrac.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/lakefrac.F90.3 new file mode 100644 index 000000000..ec208f427 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/lakefrac.F90.3 @@ -0,0 +1,278 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/lakefrac.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/lake.fd/lakefrac.F90 \- Compute lake fraction and depth\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBcal_lake_frac_depth\fP (lakestat, cs_lakestat, lakedpth, cs_lakedpth)" +.br +.RI "Calculate lake fraction and depth on the model grid from high-resolution data\&. " +.ti -1c +.RI "program \fBlake_frac\fP" +.br +.RI "This program computes lake fraction and depth numbers for FV3 cubed sphere grid cells, from a high resolution lat/lon data set\&. " +.ti -1c +.RI "subroutine \fBnc_opchk\fP (stat, opname)" +.br +.RI "Check NetCDF error code\&. " +.ti -1c +.RI "subroutine \fBread_cubed_sphere_grid\fP (res, grid)" +.br +.RI "Read the latitude and longitude for a cubed-sphere grid from the 'grid' files\&. " +.ti -1c +.RI "subroutine \fBread_cubed_sphere_reg_grid\fP (res, grid, halo_depth, res_x, res_y)" +.br +.RI "Read the latitude and longitude for a regional grid from the 'grid' file\&. " +.ti -1c +.RI "subroutine \fBread_lakedata\fP (lakedata_path, lake_stat, lake_dpth, nlat, nlon)" +.br +.RI "Read a high-resolution lake depth dataset, and a corresponding lake status dataset which provides a status code on the reliability of each lake depth point\&. " +.ti -1c +.RI "subroutine \fBwrite_lakedata_to_orodata\fP (cs_res, cs_lakestat, cs_lakedpth)" +.br +.RI "Write lake depth and fraction to an existing model orography file\&. " +.ti -1c +.RI "subroutine \fBwrite_reg_lakedata_to_orodata\fP (cs_res, tile_x_dim, tile_y_dim, cs_lakestat, cs_lakedpth)" +.br +.RI "Write lake depth and fraction to an existing model orography file\&. " +.in -1c +.SH "Detailed Description" +.PP +Compute lake fraction and depth\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition in file \fBlakefrac\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine lake_frac::cal_lake_frac_depth (integer*1, dimension(:), intent(in) lakestat, real, dimension(:), intent(out) cs_lakestat, integer*2, dimension(:), intent(in) lakedpth, real, dimension(:), intent(out) cs_lakedpth)" + +.PP +Calculate lake fraction and depth on the model grid from high-resolution data\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlakestat\fP High-resolution lake status code\&. +.br +\fIlakedpth\fP High-resolution lake depth\&. +.br +\fIcs_lakestat\fP Lake fraction on the model grid\&. +.br +\fIcs_lakedpth\fP Lake depth on the model grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 145 of file lakefrac\&.F90\&. +.PP +References find_limit()\&. +.PP +Referenced by lake_frac()\&. +.SS "program lake_frac ()" + +.PP +This program computes lake fraction and depth numbers for FV3 cubed sphere grid cells, from a high resolution lat/lon data set\&. +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP +\fBDate:\fP +.RS 4 +July 2018 +.RE +.PP +.IP "\(bu" 2 +Shan Sun, Aug\&. 2018: Added Caspian Sea and Aral Sea to the lake fraction and lake depth fields\&. +.IP "\(bu" 2 +Shan Sun, Dec\&. 2018: Added round up and round down with respect to a numerical minimum value and a cut-off value, for lake fraction number\&. +.IP "\(bu" 2 +Ning Wang, Apr\&. 2019: Extended the program to process the same lake data for FV3 stand-alone regional (SAR) model\&. +.PP +.PP +\fBReturns:\fP +.RS 4 +0 for successful completion and for error\&. +.RE +.PP + +.PP +Definition at line 21 of file lakefrac\&.F90\&. +.PP +References cal_lake_frac_depth(), read_cubed_sphere_grid(), read_cubed_sphere_reg_grid(), read_lakedata(), write_lakedata_to_orodata(), and write_reg_lakedata_to_orodata()\&. +.SS "subroutine lake_frac::nc_opchk (integer stat, character(len=*) opname)" + +.PP +Check NetCDF error code\&. +.PP +\fBParameters:\fP +.RS 4 +\fIstat\fP Error code\&. +.br +\fIopname\fP NetCDF operation that failed\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 952 of file lakefrac\&.F90\&. +.SS "subroutine lake_frac::read_cubed_sphere_grid (integer, intent(in) res, real, dimension(:,:), intent(out) grid)" + +.PP +Read the latitude and longitude for a cubed-sphere grid from the 'grid' files\&. For global grids, all six sides are returned\&. +.PP +\fBParameters:\fP +.RS 4 +\fIres\fP The resolution\&. Example: '96' for C96\&. +.br +\fIgrid\fP Array containing the latitude and longitude on the 'supergrid'\&. Multiple tiles are concatenated\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 383 of file lakefrac\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by lake_frac()\&. +.SS "subroutine lake_frac::read_cubed_sphere_reg_grid (integer, intent(in) res, real, dimension(:,:), intent(out), allocatable grid, integer, intent(in) halo_depth, integer, intent(out) res_x, integer, intent(out) res_y)" + +.PP +Read the latitude and longitude for a regional grid from the 'grid' file\&. +.PP +\fBParameters:\fP +.RS 4 +\fIres\fP Resolution of grid\&. Example: '96' for C96\&. +.br +\fIgrid\fP Latitude and longitude on the supergrid\&. +.br +\fIhalo_depth\fP Lateral halo\&. Not used\&. +.br +\fIres_x\fP Number of grid points in the 'x' direction\&. +.br +\fIres_y\fP Number of grid points in the 'y' direction\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 444 of file lakefrac\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by lake_frac()\&. +.SS "subroutine lake_frac::read_lakedata (character(len=256), intent(in) lakedata_path, integer*1, dimension(:), intent(out) lake_stat, integer*2, dimension(:), intent(out) lake_dpth, integer, intent(in) nlat, integer, intent(in) nlon)" + +.PP +Read a high-resolution lake depth dataset, and a corresponding lake status dataset which provides a status code on the reliability of each lake depth point\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlakedata_path\fP Path to the lake depth and lake status dataset\&. +.br +\fIlake_stat\fP Status code\&. +.br +\fIlake_dpth\fP Lake depth\&. +.br +\fInlat\fP 'j' dimension of both datasets\&. +.br +\fInlon\fP 'i' dimension of both datasets\&. +.RE +.PP + +.PP +Definition at line 514 of file lakefrac\&.F90\&. +.PP +Referenced by lake_frac()\&. +.SS "subroutine lake_frac::write_lakedata_to_orodata (integer, intent(in) cs_res, real, dimension(:), intent(in) cs_lakestat, real, dimension(:), intent(in) cs_lakedpth)" + +.PP +Write lake depth and fraction to an existing model orography file\&. Also, perform some quality control checks on the lake data\&. This routine is used for non-regional grids\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP Resolution\&. Example: '96' for C96\&. +.br +\fIcs_lakestat\fP Lake fraction\&. +.br +\fIcs_lakedpth\fP Lake depth\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 546 of file lakefrac\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by lake_frac()\&. +.SS "subroutine lake_frac::write_reg_lakedata_to_orodata (integer, intent(in) cs_res, integer, intent(in) tile_x_dim, integer, intent(in) tile_y_dim, real, dimension(:), intent(in) cs_lakestat, real, dimension(:), intent(in) cs_lakedpth)" + +.PP +Write lake depth and fraction to an existing model orography file\&. Also, perform some quality control checks on the lake data\&. This routine is used for regional grids\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcs_res\fP Resolution\&. Example: '96' for C96\&. +.br +\fIcs_lakestat\fP Lake fraction\&. +.br +\fIcs_lakedpth\fP Lake depth\&. +.br +\fItile_x_dim\fP 'x' dimension of the model grid\&. +.br +\fItile_y_dim\fP 'y' dimension of the model grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 745 of file lakefrac\&.F90\&. +.PP +References nc_opchk()\&. +.PP +Referenced by lake_frac()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/lat1d_fine.3 b/ver-1.11.0/orog_mask_tools/man/man3/lat1d_fine.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/lat1d_fine.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/latlon2xyz.3 b/ver-1.11.0/orog_mask_tools/man/man3/latlon2xyz.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/latlon2xyz.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/lon1d_fine.3 b/ver-1.11.0/orog_mask_tools/man/man3/lon1d_fine.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/lon1d_fine.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland.3 b/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland_rec_d.3 b/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland_rec_d.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mark_global_inland_rec_d.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mark_inland_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/mark_inland_reg.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mark_inland_reg.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mark_regional_inland_rec_d.3 b/ver-1.11.0/orog_mask_tools/man/man3/mark_regional_inland_rec_d.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mark_regional_inland_rec_d.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/maxmin.3 b/ver-1.11.0/orog_mask_tools/man/man3/maxmin.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/maxmin.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README.3 b/ver-1.11.0/orog_mask_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README.3 new file mode 100644 index 000000000..4ad3ff892 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README.3 @@ -0,0 +1,8 @@ +.TH "md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +md__lfs_h2_emc_global_noscrub_George.Gayno_ufs_utils.git_UFS_UTILS_sorc_orog_mask_tools.fd_docs_README \- README +These programs are used in creating the terrain and land mask for a model grid\&. +.PP +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/ver-1.11.0/orog_mask_tools/man/man3/middle.3 b/ver-1.11.0/orog_mask_tools/man/man3/middle.3 new file mode 100644 index 000000000..148712e1e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/middle.3 @@ -0,0 +1 @@ +.so man3/find_limit.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/minmaxj.3 b/ver-1.11.0/orog_mask_tools/man/man3/minmaxj.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/minmaxj.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/minmxj.3 b/ver-1.11.0/orog_mask_tools/man/man3/minmxj.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/minmxj.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mnmxja.3 b/ver-1.11.0/orog_mask_tools/man/man3/mnmxja.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mnmxja.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_lg_scale.f90.3 b/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_lg_scale.f90.3 new file mode 100644 index 000000000..d4ae2f790 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_lg_scale.f90.3 @@ -0,0 +1,411 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_lg_scale.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_lg_scale.f90 \- Calculates large-scale GWD orographic stats for FV3GFS grids\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBgsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale\fP (tile_num, res_indx, halo)" +.br +.RI "Subroutine to compute orographic statistics needed for large-scale orograhic drag (gravity wave and blocking) schemes\&. " +.ti -1c +.RI "subroutine \fBgsl_oro_data_lg_scale::calc_mean_HGT\fP (s_ii, e_ii, s_jj, e_jj, HGT)" +.br +.RI "Calculates average terrain height within coarse grid cell ('block') " +.ti -1c +.RI "subroutine \fBgsl_oro_data_lg_scale::HGT_interpolate\fP (lat, lon_in, lat_blk, lon_blk, HGT_coarse, HGT_coarse_on_fine)" +.br +.RI "Interpolates height from coarse grid on to fine grid points\&. " +.ti -1c +.RI "real(kind=real_kind) function \fBgsl_oro_data_lg_scale::interp_1d\fP (x, x1, x2, y1, y2)" +.br +.RI "Interpolates (or extrapolates) linear function y = y(x) " +.ti -1c +.RI "integer function \fBgsl_oro_data_lg_scale::nearest_i_east\fP (lon_in)" +.br +.RI "Finds nearest fine-grid i index to the east of a given longitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_lg_scale::nearest_i_west\fP (lon_in)" +.br +.RI "Finds nearest fine-grid i index to the west of a given longitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_lg_scale::nearest_j_north\fP (lat_in)" +.br +.RI "Calculates nearest fine-grid j index to the north of a given latitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_lg_scale::nearest_j_south\fP (lat_in)" +.br +.RI "Calculates nearest fine-grid j index to the south of a given latitude\&. " +.ti -1c +.RI "subroutine \fBgsl_oro_data_lg_scale::netcdf_err\fP (err, string)" +.br +.RI "Returns netCDF error given input err code\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer, parameter \fBgsl_oro_data_lg_scale::dbl_kind\fP = selected_real_kind(13)" +.br +.RI "double precision " +.ti -1c +.RI "integer \fBgsl_oro_data_lg_scale::dimx_fine\fP" +.br +.RI "x-dimension of fine grid " +.ti -1c +.RI "integer \fBgsl_oro_data_lg_scale::dimy_fine\fP" +.br +.RI "y-dimension of fine grid " +.ti -1c +.RI "real(kind=real_kind), dimension(:,:), allocatable \fBgsl_oro_data_lg_scale::hgt_m_fine\fP" +.br +.RI "Height of fine grid pts (m) " +.ti -1c +.RI "real(kind=real_kind), parameter \fBgsl_oro_data_lg_scale::hgt_missing\fP = 1\&.E+10" +.br +.RI "Flag for missing data\&. " +.ti -1c +.RI "real(kind=real_kind), dimension(:), allocatable \fBgsl_oro_data_lg_scale::lat1d_fine\fP" +.br +.RI "latitude of fine grid pts " +.ti -1c +.RI "real(kind=real_kind), dimension(:), allocatable \fBgsl_oro_data_lg_scale::lon1d_fine\fP" +.br +.RI "longitude of fine grid pts " +.ti -1c +.RI "real(kind=real_kind), parameter \fBgsl_oro_data_lg_scale::p5\fP = 0\&.5_real_kind" +.br +.RI "one half " +.ti -1c +.RI "real, parameter \fBgsl_oro_data_lg_scale::pi\fP = 3\&.1415926535897_real_kind" +.br +.RI "pi " +.ti -1c +.RI "integer, parameter \fBgsl_oro_data_lg_scale::real_kind\fP = selected_real_kind(6)" +.br +.RI "single precision " +.in -1c +.SH "Detailed Description" +.PP +Calculates large-scale GWD orographic stats for FV3GFS grids\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP +\fBDate:\fP +.RS 4 +2021-03-12 +.RE +.PP +This module calculates the parameters required for the subgrid- scale orographic gravity-wave drag (GWDO) scheme on the FV3 grid\&. These parameters are for the large-scale GWDO and blocking schemes of the GSL drag suite\&. 2\&.5minute (~5km) global topography is used\&. The topographic data comes from the 'fix' file geo_em\&.d01\&.lat-lon\&.2\&.5m\&.HGT_M\&.nc\&. The output fields are: +.IP "\(bu" 2 +stddev standard deviation of subgrid-scale topograpy +.IP "\(bu" 2 +convexity convexity (kurtosis) of subgrid-scale topography +.IP "\(bu" 2 +ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.IP "\(bu" 2 +oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.PP +.PP +Based on code by Michael Duda provided by NCAR/MMM +.PP +Definition in file \fBmodule_gsl_oro_data_lg_scale\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine gsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale (character(len=2), intent(in) tile_num, character(len=7), intent(in) res_indx, character(len=4), intent(in) halo)" + +.PP +Subroutine to compute orographic statistics needed for large-scale orograhic drag (gravity wave and blocking) schemes\&. +.PP +\fBParameters:\fP +.RS 4 +\fItile_num\fP (tile number) +.br +\fIres_indx\fP (resolution) +.br +\fIhalo\fP (halo number) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 51 of file module_gsl_oro_data_lg_scale\&.f90\&. +.PP +References netcdf_err()\&. +.SS "subroutine gsl_oro_data_lg_scale::calc_mean_HGT (integer s_ii, integer e_ii, integer s_jj, integer e_jj, real (kind=real_kind), intent(out) HGT)" + +.PP +Calculates average terrain height within coarse grid cell ('block') +.PP +\fBParameters:\fP +.RS 4 +\fIs_ii\fP Fine grid starting i-index +.br +\fIe_ii\fP Fine grid ending i-index +.br +\fIs_jj\fP Fine grid starting j-index +.br +\fIe_jj\fP Fine grid ending j-index +.br +\fIhgt\fP Fine grid height (m) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1001 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "subroutine gsl_oro_data_lg_scale::HGT_interpolate (real (kind = real_kind), intent(in) lat, real (kind = real_kind), intent(in) lon_in, real (kind = real_kind), dimension(3), intent(in) lat_blk, real (kind = real_kind), dimension(3), intent(in) lon_blk, real (kind = real_kind), dimension(3,3), intent(in) HGT_coarse, real (kind = real_kind), intent(out) HGT_coarse_on_fine)" + +.PP +Interpolates height from coarse grid on to fine grid points\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlat\fP Latitude of fine grid point\&. +.br +\fIlon_in\fP Longitude of fine grid point\&. +.br +\fIlat_blk\fP Latitudes of neighboring coarse grid points\&. +.br +\fIlon_blk\fP Longitudes of neighboring coarse grid points\&. +.br +\fIhgt_coarse\fP Topographic heights on coarse grid +.br +\fIhgt_coarse_on_fine\fP Coarse grid heights interpolated on to fine grid +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1063 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind=real_kind) function gsl_oro_data_lg_scale::interp_1d (real (kind=real_kind), intent(in) x, real (kind=real_kind), intent(in) x1, real (kind=real_kind), intent(in) x2, real (kind=real_kind), intent(in) y1, real (kind=real_kind), intent(in) y2)" + +.PP +Interpolates (or extrapolates) linear function y = y(x) +.PP +\fBParameters:\fP +.RS 4 +\fIx\fP Input 'x' value +.br +\fIx1\fP Known point 1 +.br +\fIx2\fP Known point 2 +.br +\fIy1\fP Known y(x1) +.br +\fIy2\fP Known y(x2) +.RE +.PP +\fBReturns:\fP +.RS 4 +interp_1d Interpolated y value at x +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1323 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer function gsl_oro_data_lg_scale::nearest_i_east (real (kind=real_kind), intent(in) lon_in)" + +.PP +Finds nearest fine-grid i index to the east of a given longitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon_in\fP longitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_i_east Nearest grid point i-index east of selected point +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1193 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer function gsl_oro_data_lg_scale::nearest_i_west (real (kind=real_kind), intent(in) lon_in)" + +.PP +Finds nearest fine-grid i index to the west of a given longitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon_in\fP longitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_i_west Nearest grid point i-index west of selected point +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1226 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer function gsl_oro_data_lg_scale::nearest_j_north (real (kind=real_kind), intent(in) lat_in)" + +.PP +Calculates nearest fine-grid j index to the north of a given latitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlat_in\fP Latitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_j_north Nearest fine-grid j index to the north of a given latitude +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1259 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer function gsl_oro_data_lg_scale::nearest_j_south (real (kind=real_kind), intent(in) lat_in)" + +.PP +Calculates nearest fine-grid j index to the south of a given latitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlat_in\fP Latitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_j_south Nearest fine-grid j index to the south of a given latitude +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1288 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "subroutine gsl_oro_data_lg_scale::netcdf_err (integer, intent(in) err, character(len=*), intent(in) string)" + +.PP +Returns netCDF error given input err code\&. +.PP +\fBParameters:\fP +.RS 4 +\fIerr\fP Error code from netCDF routine +.br +\fIstring\fP Portion of error message +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1343 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SH "Variable Documentation" +.PP +.SS "integer, parameter gsl_oro_data_lg_scale::dbl_kind = selected_real_kind(13)" + +.PP +double precision +.PP +Definition at line 27 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer gsl_oro_data_lg_scale::dimx_fine" + +.PP +x-dimension of fine grid +.PP +Definition at line 30 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer gsl_oro_data_lg_scale::dimy_fine" + +.PP +y-dimension of fine grid +.PP +Definition at line 31 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind = real_kind), dimension(:,:), allocatable gsl_oro_data_lg_scale::hgt_m_fine" + +.PP +Height of fine grid pts (m) +.PP +Definition at line 38 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind = real_kind), parameter gsl_oro_data_lg_scale::hgt_missing = 1\&.E+10" + +.PP +Flag for missing data\&. +.PP +Definition at line 39 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind = real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lat1d_fine" + +.PP +latitude of fine grid pts +.PP +Definition at line 33 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind = real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lon1d_fine" + +.PP +longitude of fine grid pts +.PP +Definition at line 34 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real (kind = real_kind), parameter gsl_oro_data_lg_scale::p5 = 0\&.5_real_kind" + +.PP +one half +.PP +Definition at line 36 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "real, parameter gsl_oro_data_lg_scale::pi = 3\&.1415926535897_real_kind" + +.PP +pi +.PP +Definition at line 29 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SS "integer, parameter gsl_oro_data_lg_scale::real_kind = selected_real_kind(6)" + +.PP +single precision +.PP +Definition at line 26 of file module_gsl_oro_data_lg_scale\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_sm_scale.f90.3 b/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_sm_scale.f90.3 new file mode 100644 index 000000000..c439fa603 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/module_gsl_oro_data_sm_scale.f90.3 @@ -0,0 +1,331 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_sm_scale.f90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_sm_scale.f90 \- Calculates small-scale GWD orographic stats for FV3GFS grids\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBgsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale\fP (tile_num, res_indx, halo, duplicate_oro_data_file)" +.br +.RI "Subroutine to compute orographic statistics needed for small-scale orograhic drag (gravity wave and form drag) schemes\&. " +.ti -1c +.RI "real(kind=real_kind) function \fBgsl_oro_data_sm_scale::interp_1d\fP (x, x1, x2, y1, y2)" +.br +.RI "Interpolates (or extrapolates) linear function y = y(x) " +.ti -1c +.RI "integer function \fBgsl_oro_data_sm_scale::nearest_i_east\fP (lon_in)" +.br +.RI "Finds nearest fine-grid i index to the east of a given longitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_sm_scale::nearest_i_west\fP (lon_in)" +.br +.RI "Finds nearest fine-grid i index to the west of a given longitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_sm_scale::nearest_j_north\fP (lat_in)" +.br +.RI "Calculates nearest fine-grid j index to the north of a given latitude\&. " +.ti -1c +.RI "integer function \fBgsl_oro_data_sm_scale::nearest_j_south\fP (lat_in)" +.br +.RI "Calculates nearest fine-grid j index to the south of a given latitude\&. " +.ti -1c +.RI "subroutine \fBgsl_oro_data_sm_scale::netcdf_err\fP (err, string)" +.br +.RI "Returns netCDF error given input err code\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer, parameter \fBgsl_oro_data_sm_scale::dbl_kind\fP = selected_real_kind(13)" +.br +.RI "double precision " +.ti -1c +.RI "integer \fBgsl_oro_data_sm_scale::dimx_fine\fP" +.br +.RI "x-dimension of fine grid " +.ti -1c +.RI "integer \fBgsl_oro_data_sm_scale::dimy_fine\fP" +.br +.RI "y-dimension of fine grid " +.ti -1c +.RI "real(kind=real_kind), dimension(:), allocatable \fBgsl_oro_data_sm_scale::lat1d_fine\fP" +.br +.RI "latitude of fine grid pts " +.ti -1c +.RI "real(kind=real_kind), dimension(:), allocatable \fBgsl_oro_data_sm_scale::lon1d_fine\fP" +.br +.RI "longitude of fine grid pts " +.ti -1c +.RI "real(kind=real_kind), parameter \fBgsl_oro_data_sm_scale::p5\fP = 0\&.5_real_kind" +.br +.RI "one half " +.ti -1c +.RI "real, parameter \fBgsl_oro_data_sm_scale::pi\fP = 3\&.1415926535897_real_kind" +.br +.RI "pi " +.ti -1c +.RI "integer, parameter \fBgsl_oro_data_sm_scale::real_kind\fP = selected_real_kind(6)" +.br +.RI "single precision " +.in -1c +.SH "Detailed Description" +.PP +Calculates small-scale GWD orographic stats for FV3GFS grids\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP +\fBDate:\fP +.RS 4 +2021-03-12 +.RE +.PP +This module calculates the parameters required for the subgrid- scale orographic gravity-wave drag (GWDO) scheme on the FV3 grid\&. These parameters are for the small-scale GWD (Tsiringakis et al\&., 2017) and the turbulent orographic form drag (TOFD) (Beljaars, 2004) schemes of the GSL drag suite\&. 30 second (~1km) global topography is used\&. The topographic data comes from the 'fix' file HGT\&.Beljaars_filtered\&.lat-lon\&.30s_res\&.nc\&. The output fields are: +.IP "\(bu" 2 +stddev standard deviation of subgrid-scale topograpy +.IP "\(bu" 2 +convexity convexity (kurtosis) of subgrid-scale topography +.IP "\(bu" 2 +ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.IP "\(bu" 2 +oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly +.PP +.PP +Based on code by Michael Duda provided by NCAR/MMM +.PP +Definition in file \fBmodule_gsl_oro_data_sm_scale\&.f90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine gsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale (character(len=2), intent(in) tile_num, character(len=7), intent(in) res_indx, character(len=4), intent(in) halo, logical, intent(out) duplicate_oro_data_file)" + +.PP +Subroutine to compute orographic statistics needed for small-scale orograhic drag (gravity wave and form drag) schemes\&. +.PP +\fBParameters:\fP +.RS 4 +\fItile_num\fP (tile number) +.br +\fIres_indx\fP (resolution) +.br +\fIhalo\fP (halo number) +.br +\fIduplicate_oro_data_file\fP (equals \&.true\&. if min grid size <= 7\&.5km) +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 51 of file module_gsl_oro_data_sm_scale\&.f90\&. +.PP +References netcdf_err()\&. +.SS "real (kind=real_kind) function gsl_oro_data_sm_scale::interp_1d (real (kind=real_kind), intent(in) x, real (kind=real_kind), intent(in) x1, real (kind=real_kind), intent(in) x2, real (kind=real_kind), intent(in) y1, real (kind=real_kind), intent(in) y2)" + +.PP +Interpolates (or extrapolates) linear function y = y(x) +.PP +\fBParameters:\fP +.RS 4 +\fIx\fP Input 'x' value +.br +\fIx1\fP Known point 1 +.br +\fIx2\fP Known point 2 +.br +\fIy1\fP Known y(x1) +.br +\fIy2\fP Known y(x2) +.RE +.PP +\fBReturns:\fP +.RS 4 +interp_1d Interpolated y value at x +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1247 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer function gsl_oro_data_sm_scale::nearest_i_east (real (kind=real_kind), intent(in) lon_in)" + +.PP +Finds nearest fine-grid i index to the east of a given longitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon_in\fP longitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_i_east Nearest grid point i-index east of selected point +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1117 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer function gsl_oro_data_sm_scale::nearest_i_west (real (kind=real_kind), intent(in) lon_in)" + +.PP +Finds nearest fine-grid i index to the west of a given longitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon_in\fP longitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_i_west Nearest grid point i-index west of selected point +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1150 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer function gsl_oro_data_sm_scale::nearest_j_north (real (kind=real_kind), intent(in) lat_in)" + +.PP +Calculates nearest fine-grid j index to the north of a given latitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlat_in\fP Latitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_j_north Nearest fine-grid j index to the north of a given latitude +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1183 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer function gsl_oro_data_sm_scale::nearest_j_south (real (kind=real_kind), intent(in) lat_in)" + +.PP +Calculates nearest fine-grid j index to the south of a given latitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlat_in\fP Latitude (radians) +.RE +.PP +\fBReturns:\fP +.RS 4 +nearest_j_south Nearest fine-grid j index to the south of a given latitude +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1212 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "subroutine gsl_oro_data_sm_scale::netcdf_err (integer, intent(in) err, character(len=*), intent(in) string)" + +.PP +Returns netCDF error given input err code\&. +.PP +\fBParameters:\fP +.RS 4 +\fIerr\fP Error code from netCDF routine +.br +\fIstring\fP Portion of error message +.RE +.PP +\fBAuthor:\fP +.RS 4 +Michael Toy, NOAA/GSL +.RE +.PP + +.PP +Definition at line 1267 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SH "Variable Documentation" +.PP +.SS "integer, parameter gsl_oro_data_sm_scale::dbl_kind = selected_real_kind(13)" + +.PP +double precision +.PP +Definition at line 28 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer gsl_oro_data_sm_scale::dimx_fine" + +.PP +x-dimension of fine grid +.PP +Definition at line 31 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer gsl_oro_data_sm_scale::dimy_fine" + +.PP +y-dimension of fine grid +.PP +Definition at line 32 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "real (kind = real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lat1d_fine" + +.PP +latitude of fine grid pts +.PP +Definition at line 34 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "real (kind = real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lon1d_fine" + +.PP +longitude of fine grid pts +.PP +Definition at line 35 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "real (kind = real_kind), parameter gsl_oro_data_sm_scale::p5 = 0\&.5_real_kind" + +.PP +one half +.PP +Definition at line 37 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "real, parameter gsl_oro_data_sm_scale::pi = 3\&.1415926535897_real_kind" + +.PP +pi +.PP +Definition at line 30 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SS "integer, parameter gsl_oro_data_sm_scale::real_kind = selected_real_kind(6)" + +.PP +single precision +.PP +Definition at line 27 of file module_gsl_oro_data_sm_scale\&.f90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/mtnlm7_oclsm.F.3 b/ver-1.11.0/orog_mask_tools/man/man3/mtnlm7_oclsm.F.3 new file mode 100644 index 000000000..ad973d0c4 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/mtnlm7_oclsm.F.3 @@ -0,0 +1,1441 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.F" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.F \- Terrain maker for global spectral model\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "program \fB__mtnlm7_oclsm\&.F__\fP" +.br +.RI "This program creates 7 terrain-related files computed from the navy 10-minute terrain dataset\&. " +.ti -1c +.RI "subroutine \fBget_index\fP (IMN, JMN, npts, lonO, latO, DELXN, jst, jen, ilist, numx)" +.br +.RI "Determine the location of a cubed-sphere point within the high-resolution orography data\&. " +.ti -1c +.RI "real function \fBget_lat_angle\fP (dy, DEGRAD)" +.br +.RI "Convert the 'y' direction distance of a cubed-sphere grid point to the corresponding distance in latitude\&. " +.ti -1c +.RI "real function \fBget_lon_angle\fP (dx, lat, DEGRAD)" +.br +.RI "Convert the 'x' direction distance of a cubed-sphere grid point to the corresponding distance in longitude\&. " +.ti -1c +.RI "subroutine \fBget_mismatch_index\fP (im_in, jm_in, geolon_in, geolat_in, bitmap_in, num_out, lon_out, lat_out, iindx, jindx)" +.br +.RI "For unmapped land points, find the nearest land point on the input data and pass back its i/j index\&. " +.ti -1c +.RI "real function \fBget_xnsum\fP (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn)" +.br +.RI "Count the number of high-resolution orography points that are higher than the model grid box average orography height\&. " +.ti -1c +.RI "subroutine \fBget_xnsum2\fP (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)" +.br +.RI "Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box)\&. " +.ti -1c +.RI "subroutine \fBget_xnsum3\fP (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)" +.br +.RI "Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box)\&. " +.ti -1c +.RI "subroutine \fBgg2rg\fP (im, jm, numi, a)" +.br +.RI "Convert from a full grid to a reduced grid\&. " +.ti -1c +.RI "logical function \fBinside_a_polygon\fP (lon1, lat1, npts, lon2, lat2)" +.br +.RI "Check if a point is inside a polygon\&. " +.ti -1c +.RI "subroutine \fBinterpolate_mismatch\fP (im_in, jm_in, data_in, num_out, data_out, iindx, jindx)" +.br +.RI "Replace unmapped model land points with the nearest land point on the input grid\&. " +.ti -1c +.RI "subroutine \fBlatlon2xyz\fP (siz, lon, lat, x, y, z)" +.br +.RI "Convert from latitude and longitude to x,y,z coordinates\&. " +.ti -1c +.RI "subroutine \fBMAKEMT\fP (ZAVG, ZSLM, ORO, SLM, VAR, VAR4, GLAT, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)" +.br +.RI "Create the orography, land-mask, standard deviation of orography and the convexity on a model gaussian grid\&. " +.ti -1c +.RI "subroutine \fBMAKEMT2\fP (ZAVG, ZSLM, ORO, SLM, land_frac, VAR, VAR4, GLAT, IM, JM, IMN, JMN, lon_c, lat_c)" +.br +.RI "Create the orography, land-mask, land fraction, standard deviation of orography and the convexity on a model cubed-sphere tile\&. " +.ti -1c +.RI "subroutine \fBMAKEOA\fP (ZAVG, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)" +.br +.RI "Create orographic asymmetry and orographic length scale on the model grid\&. " +.ti -1c +.RI "subroutine \fBMAKEOA2\fP (ZAVG, zslm, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IM, JM, IMN, JMN, lon_c, lat_c, lon_t, lat_t, dx, dy, is_south_pole, is_north_pole)" +.br +.RI "Create orographic asymmetry and orographic length scale on the model grid\&. " +.ti -1c +.RI "subroutine \fBMAKEOA3\fP (ZAVG, zslm, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, SLM, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IM, JM, IMN, JMN, lon_c, lat_c, lon_t, lat_t, is_south_pole, is_north_pole, IMI, JMI, OA_IN, OL_IN, slm_in, lon_in, lat_in)" +.br +.RI "Create orographic asymmetry and orographic length scale on the model grid\&. " +.ti -1c +.RI "subroutine \fBMAKEPC\fP (ZAVG, ZSLM, THETA, GAMMA, SIGMA, GLAT, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)" +.br +.RI "Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east\&. " +.ti -1c +.RI "subroutine \fBMAKEPC2\fP (ZAVG, ZSLM, THETA, GAMMA, SIGMA, GLAT, IM, JM, IMN, JMN, lon_c, lat_c)" +.br +.RI "Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east\&. " +.ti -1c +.RI "subroutine \fBmaxmin\fP (ia, len, tile)" +.br +.RI "Print the maximum, mininum, mean and standard deviation of an array\&. " +.ti -1c +.RI "subroutine \fBminmaxj\fP (IM, JM, A, title)" +.br +.RI "Print out the maximum and minimum values of an array and their i/j location\&. " +.ti -1c +.RI "subroutine \fBminmxj\fP (IM, JM, A, title)" +.br +.RI "Print out the maximum and minimum values of an array\&. " +.ti -1c +.RI "subroutine \fBmnmxja\fP (IM, JM, A, imax, jmax, title)" +.br +.RI "Print out the maximum and minimum values of an array\&. " +.ti -1c +.RI "subroutine \fBnanc\fP (a, l, c)" +.br +.RI "Report NaNS and NaNQ within an address range for 8-byte real words\&. " +.ti -1c +.RI "subroutine \fBread_g\fP (glob, ITOPO)" +.br +.RI "Read input global 30-arc second orography data\&. " +.ti -1c +.RI "subroutine \fBREVERS\fP (IM, JM, numi, F, WRK)" +.br +.RI "Reverse the east-west and north-south axes in a two-dimensional array\&. " +.ti -1c +.RI "subroutine \fBrg2gg\fP (im, jm, numi, a)" +.br +.RI "Convert from a reduced grid to a full grid\&. " +.ti -1c +.RI "subroutine \fBSPFFT1\fP (IMAX, INCW, INCG, KMAX, W, G, IDIR)" +.br +.RI "Perform multiple fast fourier transforms\&. " +.ti -1c +.RI "real function \fBspherical_angle\fP (v1, v2, v3)" +.br +.RI "Compute spherical angle\&. " +.ti -1c +.RI "real function \fBspherical_distance\fP (theta1, phi1, theta2, phi2)" +.br +.RI "Compute a great circle distance between two points\&. " +.ti -1c +.RI "subroutine \fBTERSUB\fP (IMN, JMN, IM, JM, NM, NR, NF0, NF1, NW, EFAC, BLAT, OUTGRID, INPUTOROG)" +.br +.RI "Driver routine to compute terrain\&. " +.ti -1c +.RI "real function \fBtimef\fP ()" +.br +.RI "Get the date/time for the system clock\&. " +.in -1c +.SH "Detailed Description" +.PP +Terrain maker for global spectral model\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell +.RE +.PP +\fBDate:\fP +.RS 4 +92-04-16 +.RE +.PP + +.PP +Definition in file \fBmtnlm7_oclsm\&.F\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "program __mtnlm7_oclsm\&.F__ ()" + +.PP +This program creates 7 terrain-related files computed from the navy 10-minute terrain dataset\&. The model physics grid parameters and spectral truncation and filter parameters are read by this program as input\&. +.PP +The 7 files produced are: +.IP "1." 4 +sea-land mask on model physics grid +.IP "2." 4 +gridded orography on model physics grid +.IP "3." 4 +mountain std dev on model physics grid +.IP "4." 4 +spectral orography in spectral domain +.IP "5." 4 +unfiltered gridded orography on model physics grid +.IP "6." 4 +grib sea-land mask on model physics grid +.IP "7." 4 +grib gridded orography on model physics grid +.PP +.PP +The orography is only filtered for wavenumbers greater than nf0\&. For wavenumbers n between nf0 and nf1, the orography is filtered by the factor 1-((n-nf0)/(nf1-nf0))**2\&. The filtered orography will not have information beyond wavenumber nf1\&. +.PP +PROGRAM HISTORY LOG: +.IP "\(bu" 2 +92-04-16 IREDELL +.IP "\(bu" 2 +98-02-02 IREDELL FILTER +.IP "\(bu" 2 +98-05-31 HONG Modified for subgrid orography used in Kim's scheme +.IP "\(bu" 2 +98-12-31 HONG Modified for high-resolution GTOPO orography +.IP "\(bu" 2 +99-05-31 HONG Modified for getting OL4 (mountain fraction) +.IP " \(bu" 4 +00-02-10 Moorthi's modifications +.PP + +.IP "\(bu" 2 +00-04-11 HONG Modified for reduced grids +.IP "\(bu" 2 +00-04-12 Iredell Modified for reduced grids +.IP "\(bu" 2 +02-01-07 (\fIj\fP) modified for principal axes of orography There are now 14 files, 4 additional for lm mb +.IP " \(bu" 4 +04-04-04 (\fIj\fP) re-Test on IST/ilen calc for sea-land mask(\fIj\fP) +.IP " \(bu" 4 +04-09-04 minus sign here in MAKEOA IST and IEN as in MAKEMT! +.IP " \(bu" 4 +05-09-05 if test on HK and HLPRIM for GAMMA SQRT +.IP " \(bu" 4 +07-08-07 replace 8' with 30' incl GICE, conintue w/ S-Y\&. lake slm + - 08-08-07 All input 30', UMD option, and filter as described below Quadratic filter applied by default\&. NF0 is normally set to an even value beyond the previous truncation, for example, for jcap=382, NF0=254+2 NF1 is set as jcap+2 (and/or nearest even), eg\&., for t382, NF1=382+2=384 if no filter is desired then NF1=NF0=0 and ORF=ORO but if no filter but spectral to grid (with gibbs) then NF1=jcap+2, and NF1=jcap+1 +.PP +INPUT FILES: +.IP " \(bu" 4 +UNIT5 - PHYSICS LONGITUDES (IM), PHYSICS LATITUDES (JM), SPECTRAL TRUNCATION (NM), RHOMBOIDAL FLAG (NR), AND FIRST AND SECOND FILTER PARAMETERS (NF0,NF1)\&. RESPECTIVELY READ IN FREE FORMAT\&. +.IP " \(bu" 4 +UNIT235 - GTOPO 30' AVR for ZAVG elevation + - UNIT10 - 30' UMD land (lake) cover mask see MSKSRC switch +.IP " \(bu" 4 +XUNIT11 - GTOPO AVR +.IP " \(bu" 4 +XUNIT12 - GTOPO STD DEV +.IP " \(bu" 4 +XUNIT13 - GTOPO MAX +.IP " \(bu" 4 +UNIT14 - GTOPO SLM (10' NAVY if switched to get lakes +.IP " \(bu" 4 +UNIT15 - GICE Grumbine 30" RAMP Antarctica orog IMNx3616 +.IP " \(bu" 4 +UNIT25 - Ocean land-sea mask on gaussian grid +.br + OUTPUT FILES: +.IP " \(bu" 4 +UNIT51 - SEA-LAND MASK (IM,JM) +.IP " \(bu" 4 +UNIT52 - GRIDDED OROGRAPHY (IM,JM) +.IP " \(bu" 4 +UNIT54 - SPECTRAL OROGRAPHY ((NM+1)*((NR+1)*NM+2)) +.IP " \(bu" 4 +UNIT55 - UNFILTERED GRIDDED OROGRAPHY (IM,JM) +.IP " \(bu" 4 +UNIT57 - GRIB GRIDDED OROGRAPHY (IM,JM) +.PP +SUBPROGRAMS CALLED: +.IP " \(bu" 4 +UNIQUE: +.IP " \(bu" 4 +TERSUB - MAIN SUBPROGRAM +.IP " \(bu" 4 +SPLAT - COMPUTE GAUSSIAN LATITUDES OR EQUALLY-SPACED LATITUDES +.IP " \(bu" 4 +LIBRARY: +.IP " \(bu" 4 +SPTEZ - SPHERICAL TRANSFORM +.IP " \(bu" 4 +GBYTES - UNPACK BITS +.PP + +.PP +.PP +\fBReturns:\fP +.RS 4 +0 for success, error code otherwise\&. +.RE +.PP + +.PP +Definition at line 78 of file mtnlm7_oclsm\&.F\&. +.PP +References netcdf_err()\&. +.SS "subroutine get_index (integer, intent(in) IMN, integer, intent(in) JMN, integer npts, real, dimension(npts), intent(in) lonO, real, dimension(npts), intent(in) latO, real, intent(in) DELXN, integer, intent(out) jst, integer, intent(out) jen, integer, dimension(imn), intent(out) ilist, integer, intent(out) numx)" + +.PP +Determine the location of a cubed-sphere point within the high-resolution orography data\&. The location is described by the range of i/j indices on the high-res grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIimn\fP 'i' dimension of the high-resolution orography data set\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography data set\&. +.br +\fInpts\fP Number of vertices to describe the cubed-sphere point\&. +.br +\fIlonO\fP The longitudes of the cubed-sphere vertices\&. +.br +\fIlatO\fP The latitudes of the cubed-sphere vertices\&. +.br +\fIdelxn\fP Resolution of the high-resolution orography data set\&. +.br +\fIjst\fP Starting 'j' index on the high-resolution grid\&. +.br +\fIjen\fP Ending 'j' index on the high-resolution grid\&. +.br +\fIilist\fP List of 'i' indices on the high-resolution grid\&. +.br +\fInumx\fP The number of 'i' indices on the high-resolution grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 1790 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by MAKEMT2(), MAKEOA2(), MAKEOA3(), and MAKEPC2()\&. +.SS "real function get_lat_angle (real dy, real DEGRAD)" + +.PP +Convert the 'y' direction distance of a cubed-sphere grid point to the corresponding distance in latitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIdy\fP Distance along the 'y' direction of a cubed-sphere point\&. +.br +\fIdegrad\fP Conversion from radians to degrees\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +get_lat_angle Corresponding distance in latitude\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 2992 of file mtnlm7_oclsm\&.F\&. +.SS "real function get_lon_angle (real dx, real lat, real DEGRAD)" + +.PP +Convert the 'x' direction distance of a cubed-sphere grid point to the corresponding distance in longitude\&. +.PP +\fBParameters:\fP +.RS 4 +\fIdx\fP Distance along the 'x' direction of a cubed-sphere grid point\&. +.br +\fIlat\fP Latitude of the cubed-sphere point\&. +.br +\fIdegrad\fP Conversion from radians to degrees\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +get_lon_angle Corresponding distance in longitude\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 2973 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine get_mismatch_index (integer, intent(in) im_in, integer, intent(in) jm_in, real, dimension(im_in,jm_in), intent(in) geolon_in, real, dimension(im_in,jm_in), intent(in) geolat_in, logical*1, dimension(im_in,jm_in), intent(in) bitmap_in, integer, intent(in) num_out, real, dimension(num_out), intent(in) lon_out, real, dimension(num_out), intent(in) lat_out, integer, dimension(num_out), intent(out) iindx, integer, dimension(num_out), intent(out) jindx)" + +.PP +For unmapped land points, find the nearest land point on the input data and pass back its i/j index\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim_in\fP 'i' dimension of input data\&. +.br +\fIjm_in\fP 'j' dimension of input data\&. +.br +\fIgeolon_in\fP Longitude of input data\&. +.br +\fIgeolat_in\fP Latitude of input data\&. +.br +\fIbitmap_in\fP Bitmap (mask) of input data\&. +.br +\fInum_out\fP Number of unmapped points\&. +.br +\fIlon_out\fP Longitude of unmapped points\&. +.br +\fIlat_out\fP Latitude of unmapped points\&. +.br +\fIiindx\fP 'i' indices of nearest land points on the input data\&. +.br +\fIjindx\fP 'j' indices of nearest land points on the input data\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL progammer +.RE +.PP + +.PP +Definition at line 3470 of file mtnlm7_oclsm\&.F\&. +.PP +References spherical_distance()\&. +.PP +Referenced by MAKEOA3()\&. +.SS "real function get_xnsum (real lon1, real lat1, real lon2, real lat2, integer IMN, integer JMN, real, dimension(jmn) glat, integer, dimension(imn,jmn) zavg, integer, dimension(imn,jmn) zslm, real delxn)" + +.PP +Count the number of high-resolution orography points that are higher than the model grid box average orography height\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon1\fP Longitude of corner point 1 of the model grid box\&. +.br +\fIlat1\fP Latitude of corner point 1 of the model grid box\&. +.br +\fIlon2\fP Longitude of corner point 2 of the model grid box\&. +.br +\fIlat2\fP Latitude of corner point 2 of the model grid box\&. +.br +\fIimn\fP 'i' dimension of the high-resolution orography data\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography data\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography data\&. +.br +\fIzavg\fP The high-resolution orography\&. +.br +\fIzslm\fP The high-resolution land mask\&. +.br +\fIdelxn\fP Resolution of the high-res orography data\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +get_xnsum The number of high-res points above the mean orography\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 4574 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine get_xnsum2 (real lon1, real lat1, real lon2, real lat2, integer IMN, integer JMN, real, dimension(jmn) glat, integer, dimension(imn,jmn) zavg, integer, dimension(imn,jmn) zslm, real delxn, real, intent(out) xnsum1, real, intent(out) xnsum2, real, intent(out) HC)" + +.PP +Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box)\&. The critical value is a function of the standard deviation of orography\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon1\fP Longitude of corner point 1 of the model grid box\&. +.br +\fIlat1\fP Latitude of corner point 1 of the model grid box\&. +.br +\fIlon2\fP Longitude of corner point 2 of the model grid box\&. +.br +\fIlat2\fP Latitude of corner point 2 of the model grid box\&. +.br +\fIimn\fP 'i' dimension of the high-resolution orography data\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography data\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography data\&. +.br +\fIzavg\fP The high-resolution orography\&. +.br +\fIzslm\fP The high-resolution land mask\&. +.br +\fIdelxn\fP Resolution of the high-res orography data\&. +.br +\fIxnsum1\fP The number of high-resolution orography above the critical value inside a model grid box\&. +.br +\fIxnsum2\fP The number of high-resolution orography points inside a model grid box\&. +.br +\fIhc\fP Critical height\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 4681 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by MAKEOA2()\&. +.SS "subroutine get_xnsum3 (real lon1, real lat1, real lon2, real lat2, integer IMN, integer JMN, real, dimension(jmn) glat, integer, dimension(imn,jmn) zavg, integer, dimension(imn,jmn) zslm, real delxn, real, intent(out) xnsum1, real, intent(out) xnsum2, real HC)" + +.PP +Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box)\&. Unlike routine \fBget_xnsum2()\fP, this routine does not compute the critical value\&. Rather, it is passed in\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon1\fP Longitude of corner point 1 of the model grid box\&. +.br +\fIlat1\fP Latitude of corner point 1 of the model grid box\&. +.br +\fIlon2\fP Longitude of corner point 2 of the model grid box\&. +.br +\fIlat2\fP Latitude of corner point 2 of the model grid box\&. +.br +\fIimn\fP 'i' dimension of the high-resolution orography data\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography data\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography data\&. +.br +\fIzavg\fP The high-resolution orography\&. +.br +\fIzslm\fP The high-resolution land mask\&. +.br +\fIdelxn\fP Resolution of the high-res orography data\&. +.br +\fIxnsum1\fP The number of high-resolution orography above the critical value inside a model grid box\&. +.br +\fIxnsum2\fP The number of high-resolution orography points inside a model grid box\&. +.br +\fIhc\fP Critical height\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 4777 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by MAKEOA2()\&. +.SS "subroutine gg2rg (integer, intent(in) im, integer, intent(in) jm, integer, dimension(jm), intent(in) numi, real, dimension(im,jm), intent(inout) a)" + +.PP +Convert from a full grid to a reduced grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP 'i' dimension of the full grid\&. +.br +\fIjm\fP 'j' dimension of the full grid\&. +.br +\fInumi\fP Number of 'i' points for each row of the reduced grid\&. +.br +\fIa\fP The data to be converted\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4072 of file mtnlm7_oclsm\&.F\&. +.SS "logical function inside_a_polygon (real lon1, real lat1, integer npts, real, dimension(npts) lon2, real, dimension(npts) lat2)" + +.PP +Check if a point is inside a polygon\&. +.PP +\fBParameters:\fP +.RS 4 +\fIlon1\fP Longitude of the point to check\&. +.br +\fIlat1\fP Latitude of the point to check\&. +.br +\fInpts\fP Number of polygon vertices\&. +.br +\fIlon2\fP Longitude of the polygon vertices\&. +.br +\fIlat2\fP Latitude of the polygon vertices\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +inside_a_polygon When true, point is within the polygon\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 4478 of file mtnlm7_oclsm\&.F\&. +.PP +References latlon2xyz(), and spherical_angle()\&. +.SS "subroutine interpolate_mismatch (integer, intent(in) im_in, integer, intent(in) jm_in, real, dimension(im_in,jm_in), intent(in) data_in, integer, intent(in) num_out, real, dimension(num_out), intent(out) data_out, integer, dimension(num_out), intent(in) iindx, integer, dimension(num_out), intent(in) jindx)" + +.PP +Replace unmapped model land points with the nearest land point on the input grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim_in\fP 'i' dimension of input grid\&. +.br +\fIjm_in\fP 'j' dimension of input grid\&. +.br +\fIdata_in\fP Input grid data\&. +.br +\fInum_out\fP Number of unmapped model points\&. +.br +\fIdata_out\fP Data on the model tile\&. +.br +\fIiindx\fP 'i' indices of the nearest land points on the input grid\&. +.br +\fIjindx\fP 'j' indices of the nearest land points on the input grid\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 3551 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by MAKEOA3()\&. +.SS "subroutine latlon2xyz (integer, intent(in) siz, real, dimension(siz), intent(in) lon, real, dimension(siz), intent(in) lat, real, dimension(siz), intent(out) x, real, dimension(siz), intent(out) y, real, dimension(siz), intent(out) z)" + +.PP +Convert from latitude and longitude to x,y,z coordinates\&. +.PP +\fBParameters:\fP +.RS 4 +\fIsiz\fP Number of points to convert\&. +.br +\fIlon\fP Longitude of points to convert\&. +.br +\fIlat\fP Latitude of points to convert\&. +.br +\fIx\fP 'x' coordinate of the converted points\&. +.br +\fIy\fP 'y' coordinate of the converted points\&. +.br +\fIz\fP 'z' coordinate of the converted points\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 4406 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by inside_a_polygon()\&. +.SS "subroutine MAKEMT (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) ZSLM, dimension(im,jm) ORO, dimension(im,jm) SLM, dimension(im,jm) VAR, dimension(im,jm) VAR4, dimension(jmn) GLAT, dimension(im,jm) IST, dimension(im,jm) IEN, dimension(jm) JST, dimension(jm) JEN, IM, JM, IMN, JMN, dimension(jm) XLAT, dimension(jm) numi)" + +.PP +Create the orography, land-mask, standard deviation of orography and the convexity on a model gaussian grid\&. This routine was used for the spectral GFS model\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP The high-resolution input orography dataset\&. +.br +\fIzslm\fP The high-resolution input land-mask dataset\&. +.br +\fIoro\fP Orography on the model grid\&. +.br +\fIslm\fP Land-mask on the model grid\&. +.br +\fIvar\fP Standard deviation of orography on the model grid\&. +.br +\fIvar4\fP Convexity on the model grid\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography and land-mask datasets\&. +.br +\fIist\fP This is the 'i' index of high-resolution data set at the east edge of the model grid cell\&. the high-resolution dataset with respect to the 'east' edge +.br +\fIien\fP This is the 'i' index of high-resolution data set at the west edge of the model grid cell\&. +.br +\fIjst\fP This is the 'j' index of high-resolution data set at the south edge of the model grid cell\&. +.br +\fIjen\fP This is the 'j' index of high-resolution data set at the north edge of the model grid cell\&. +.br +\fIim\fP 'i' dimension of the model grid\&. +.br +\fIjm\fP 'j' dimension of the model grid\&. +.br +\fIimn\fP 'i' dimension of the hi-res input orog/mask dataset\&. +.br +\fIjmn\fP 'j' dimension of the hi-res input orog/mask dataset\&. +.br +\fIxlat\fP The latitude of each row of the model grid\&. +.br +\fInumi\fP For reduced gaussian grids, the number of 'i' points for each 'j' row\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 1624 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine MAKEMT2 (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) ZSLM, real, dimension(im,jm) ORO, real, dimension(im,jm) SLM, real, dimension(im,jm) land_frac, real, dimension(im,jm) VAR, real, dimension(im,jm) VAR4, real, dimension(jmn) GLAT, integer IM, integer JM, integer IMN, integer JMN, real, dimension(im+1,jm+1) lon_c, real, dimension(im+1,jm+1) lat_c)" + +.PP +Create the orography, land-mask, land fraction, standard deviation of orography and the convexity on a model cubed-sphere tile\&. This routine is used for the FV3GFS model\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP The high-resolution input orography dataset\&. +.br +\fIzslm\fP The high-resolution input land-mask dataset\&. +.br +\fIoro\fP Orography on the model tile\&. +.br +\fIslm\fP Land-mask on the model tile\&. +.br +\fIland_frac\fP Land fraction on the model tile\&. +.br +\fIvar\fP Standard deviation of orography on the model tile\&. +.br +\fIvar4\fP Convexity on the model tile\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography and land-mask datasets\&. +.br +\fIim\fP 'i' dimension of the model grid\&. +.br +\fIjm\fP 'j' dimension of the model grid\&. +.br +\fIimn\fP 'i' dimension of the hi-res input orog/mask datasets\&. +.br +\fIjmn\fP 'j' dimension of the hi-res input orog/mask datasets\&. +.br +\fIlon_c\fP Longitude of the model grid corner points\&. +.br +\fIlat_c\fP Latitude on the model grid corner points\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 1884 of file mtnlm7_oclsm\&.F\&. +.PP +References get_index()\&. +.SS "subroutine MAKEOA (integer, dimension(imn,jmn) ZAVG, dimension(im,jm) VAR, dimension(jmn) GLAT, dimension(im,jm,4) OA4, dimension(im,jm,4) OL, dimension(im,jm,4) IOA4, dimension(im,jm) ELVMAX, dimension(im,jm) ORO, dimension(im,jm) oro1, dimension(im,jm) XNSUM, dimension(im,jm) XNSUM1, dimension(im,jm) XNSUM2, dimension(im,jm) XNSUM3, dimension(im,jm) XNSUM4, dimension(im,jm) IST, dimension(im,jm) IEN, dimension(jm) JST, dimension(jm) JEN, IM, JM, IMN, JMN, dimension(jm) XLAT, dimension(jm) numi)" + +.PP +Create orographic asymmetry and orographic length scale on the model grid\&. This routine is used for the spectral GFS gaussian grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP The high-resolution input orography dataset\&. +.br +\fIvar\fP Standard deviation of orography on the model grid\&. +.br +\fIglat\fP Latitude of each row of input terrain dataset\&. +.br +\fIoa4\fP Orographic asymmetry on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIol\fP Orographic length scale on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIioa4\fP Count of oa4 values between certain thresholds\&. +.br +\fIelvmax\fP Maximum elevation on the model grid\&. +.br +\fIoro\fP Orography on the model grid\&. +.br +\fIoro1\fP Save array for model grid orography\&. +.br +\fIxnsum\fP Number of high-resolution orography points higher than the model grid box average\&. +.br +\fIxnsum1\fP Number of high-resolution orography points higher than the critical height\&. +.br +\fIxnsum2\fP Total number of high-resolution orography points within a model grid box\&. +.br +\fIxnsum3\fP Same as xnsum1, except shifted by half a model grid box\&. +.br +\fIxnsum4\fP Same as xnsum2, except shifted by half a model grid box\&. +.br +\fIist\fP This is the 'i' index of high-resolution data set at the east edge of the model grid cell\&. +.br +\fIien\fP This is the 'i' index of high-resolution data set at the west edge of the model grid cell\&. +.br +\fIjst\fP This is the 'j' index of high-resolution data set at the south edge of the model grid cell\&. +.br +\fIjen\fP This is the 'j' index of high-resolution data set at the north edge of the model grid cell\&. +.br +\fIim\fP 'i' dimension of the model grid\&. +.br +\fIjm\fP 'j' dimension of the model grid\&. +.br +\fIimn\fP 'i' dimension of the input terrain dataset\&. +.br +\fIjmn\fP 'j' dimension of the input terrain dataset\&. +.br +\fIxlat\fP The latitude of each row of the model grid\&. +.br +\fInumi\fP For reduced gaussian grids, the number of 'i' points for each 'j' row\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 2647 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine MAKEOA2 (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) zslm, real, dimension(im,jm) VAR, real, dimension(jmn) GLAT, real, dimension(im,jm,4) OA4, real, dimension(im,jm,4) OL, integer, dimension(im,jm,4) IOA4, real, dimension(im,jm) ELVMAX, real, dimension(im,jm) ORO, real, dimension(im,jm) oro1, real, dimension(im,jm) XNSUM, real, dimension(im,jm) XNSUM1, real, dimension(im,jm) XNSUM2, real, dimension(im,jm) XNSUM3, real, dimension(im,jm) XNSUM4, integer IM, integer JM, integer IMN, integer JMN, real, dimension(im+1,jm+1) lon_c, real, dimension(im+1,jm+1) lat_c, real, dimension(im,jm) lon_t, real, dimension(im,jm) lat_t, real, dimension(im,jm) dx, real, dimension(im,jm) dy, logical, dimension(im,jm) is_south_pole, logical, dimension(im,jm) is_north_pole)" + +.PP +Create orographic asymmetry and orographic length scale on the model grid\&. This routine is used for the cubed-sphere grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP High-resolution orography data\&. +.br +\fIzslm\fP High-resolution land-mask data\&. +.br +\fIvar\fP Standard deviation of orography on the model grid\&. +.br +\fIglat\fP Latitude of each row of input terrain dataset\&. +.br +\fIoa4\fP Orographic asymmetry on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIol\fP Orographic length scale on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIioa4\fP Count of oa4 values between certain thresholds\&. +.br +\fIelvmax\fP Maximum elevation within a model grid box\&. +.br +\fIoro\fP Orography on the model grid\&. +.br +\fIoro1\fP Save array for model grid orography\&. +.br +\fIxnsum\fP Not used\&. +.br +\fIxnsum1\fP Not used\&. +.br +\fIxnsum2\fP Not used\&. +.br +\fIxnsum3\fP Not used\&. +.br +\fIxnsum4\fP Not used\&. +.br +\fIim\fP 'i' dimension of the model grid tile\&. +.br +\fIjm\fP 'j' dimension of the model grid tile\&. +.br +\fIimn\fP 'i' dimension of the high-resolution orography and mask data\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography and mask data\&. +.br +\fIlon_c\fP Corner point longitudes of the model grid points\&. +.br +\fIlat_c\fP Corner point latitudes of the model grid points\&. +.br +\fIlon_t\fP Center point longitudes of the model grid points\&. +.br +\fIlat_t\fP Center point latitudes of the model grid points\&. +.br +\fIdx\fP Length of model grid points in the 'x' direction\&. +.br +\fIdy\fP Length of model grid points in the 'y' direction\&. +.br +\fIis_south_pole\fP Is the model point at the south pole? +.br +\fIis_north_pole\fP is the model point at the north pole? +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 3042 of file mtnlm7_oclsm\&.F\&. +.PP +References get_index(), get_xnsum2(), and get_xnsum3()\&. +.SS "subroutine MAKEOA3 (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) zslm, real, dimension(im,jm) VAR, real, dimension(jmn) GLAT, real, dimension(im,jm,4) OA4, real, dimension(im,jm,4) OL, integer, dimension(im,jm,4) IOA4, real, dimension(im,jm) ELVMAX, real, dimension(im,jm) ORO, real, dimension(im,jm) SLM, real, dimension(im,jm) oro1, real, dimension(im,jm) XNSUM, real, dimension(im,jm) XNSUM1, real, dimension(im,jm) XNSUM2, real, dimension(im,jm) XNSUM3, real, dimension(im,jm) XNSUM4, integer IM, integer JM, integer IMN, integer JMN, real, dimension(im+1,jm+1) lon_c, real, dimension(im+1,jm+1) lat_c, real, dimension(im,jm) lon_t, real, dimension(im,jm) lat_t, logical, dimension(im,jm) is_south_pole, logical, dimension(im,jm) is_north_pole, integer IMI, integer JMI, real, dimension(imi,jmi,4) OA_IN, real, dimension(imi,jmi,4) OL_IN, real, dimension(imi,jmi) slm_in, real, dimension(imi,jmi) lon_in, real, dimension(imi,jmi) lat_in)" + +.PP +Create orographic asymmetry and orographic length scale on the model grid\&. This routine is used for the cubed-sphere grid\&. The asymmetry and length scales are interpolated from an existing gfs orography file\&. The maximum elevation is computed from the high-resolution orography data\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP High-resolution orography data\&. +.br +\fIzslm\fP High-resolution land-mask data\&. Not used\&. +.br +\fIvar\fP Standard deviation of orography on the model grid\&. +.br +\fIglat\fP Latitude of each row of input terrain dataset\&. +.br +\fIoa4\fP Orographic asymmetry on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIol\fP Orographic length scale on the model grid\&. Four directional components - W/S/SW/NW +.br +\fIioa4\fP Count of oa4 values between certain thresholds\&. +.br +\fIelvmax\fP Maximum elevation within a model grid box\&. +.br +\fIslm\fP Land-mask on model grid\&. +.br +\fIoro\fP Orography on the model grid\&. +.br +\fIoro1\fP Save array for model grid orography\&. +.br +\fIxnsum\fP Not used\&. +.br +\fIxnsum1\fP Not used\&. +.br +\fIxnsum2\fP Not used\&. +.br +\fIxnsum3\fP Not used\&. +.br +\fIxnsum4\fP Not used\&. +.br +\fIim\fP 'i' dimension of the model grid tile\&. +.br +\fIjm\fP 'j' dimension of the model grid tile\&. +.br +\fIimn\fP 'i' dimension of the high-resolution orography and mask data\&. +.br +\fIjmn\fP 'j' dimension of the high-resolution orography and mask data\&. +.br +\fIlon_c\fP Corner point longitudes of the model grid points\&. +.br +\fIlat_c\fP Corner point latitudes of the model grid points\&. +.br +\fIlon_t\fP Center point longitudes of the model grid points\&. +.br +\fIlat_t\fP Center point latitudes of the model grid points\&. +.br +\fIis_south_pole\fP Not used\&. +.br +\fIis_north_pole\fP Not used\&. +.br +\fIimi\fP 'i' dimension of input gfs orography data\&. +.br +\fIjmi\fP 'j' dimension of input gfs orography data\&. +.br +\fIoa_in\fP Asymmetry on the input gfs orography data\&. +.br +\fIol_in\fP Length scales on the input gfs orography data\&. +.br +\fIslm_in\fP Land-sea mask on the input gfs orography data\&. +.br +\fIlon_in\fP Longitude on the input gfs orography data\&. +.br +\fIlat_in\fP Latitude on the input gfs orography data\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 3611 of file mtnlm7_oclsm\&.F\&. +.PP +References get_index(), get_mismatch_index(), and interpolate_mismatch()\&. +.SS "subroutine MAKEPC (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) ZSLM, dimension(im,jm) THETA, dimension(im,jm) GAMMA, dimension(im,jm) SIGMA, dimension(jmn) GLAT, dimension(im,jm) IST, dimension(im,jm) IEN, dimension(jm) JST, dimension(jm) JEN, IM, JM, IMN, JMN, dimension(jm) XLAT, dimension(jm) numi)" + +.PP +Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east\&. This routine is used for spectral GFS gaussian grids\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP The high-resolution input orography dataset\&. +.br +\fIzslm\fP The high-resolution input land-mask dataset\&. +.br +\fItheta\fP Angle of mountain range with respect to east for each model point\&. +.br +\fIgamma\fP Anisotropy for each model point\&. +.br +\fIsigma\fP Slope of orography for each model point\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography and land-mask datasets\&. +.br +\fIist\fP This is the 'i' index of high-resolution data set at the east edge of the model grid cell\&. +.br +\fIien\fP This is the 'i' index of high-resolution data set at the west edge of the model grid cell\&. +.br +\fIjst\fP This is the 'j' index of high-resolution data set at the south edge of the model grid cell\&. +.br +\fIjen\fP This is the 'j' index of high-resolution data set at the north edge of the model grid cell\&. +.br +\fIim\fP 'i' dimension of the model grid tile\&. +.br +\fIjm\fP 'j' dimension of the model grid tile\&. +.br +\fIimn\fP 'i' dimension of the hi-res input orog/mask datasets\&. +.br +\fIjmn\fP 'j' dimension of the hi-res input orog/mask datasets\&. +.br +\fIxlat\fP The latitude of each row of the model grid\&. +.br +\fInumi\fP For reduced gaussian grids, the number of 'i' points for each 'j' row\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 2098 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine MAKEPC2 (integer, dimension(imn,jmn) ZAVG, integer, dimension(imn,jmn) ZSLM, real, dimension(im,jm) THETA, real, dimension(im,jm) GAMMA, real, dimension(im,jm) SIGMA, real, dimension(jmn) GLAT, integer IM, integer JM, integer IMN, integer JMN, real, dimension(im+1,jm+1) lon_c, real, dimension(im+1,jm+1) lat_c)" + +.PP +Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east\&. This routine is used for the FV3GFS cubed-sphere grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIzavg\fP The high-resolution input orography dataset\&. +.br +\fIzslm\fP The high-resolution input land-mask dataset\&. +.br +\fItheta\fP Angle of mountain range with respect to east for each model point\&. +.br +\fIgamma\fP Anisotropy for each model point\&. +.br +\fIsigma\fP Slope of orography for each model point\&. +.br +\fIglat\fP Latitude of each row of the high-resolution orography and land-mask datasets\&. +.br +\fIim\fP 'i' dimension of the model grid tile\&. +.br +\fIjm\fP 'j' dimension of the model grid tile\&. +.br +\fIimn\fP 'i' dimension of the hi-res input orog/mask datasets\&. +.br +\fIjmn\fP 'j' dimension of the hi-res input orog/mask datasets\&. +.br +\fIlon_c\fP Longitude of model grid corner points\&. +.br +\fIlat_c\fP Latitude of the model grid corner points\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL Programmer +.RE +.PP + +.PP +Definition at line 2372 of file mtnlm7_oclsm\&.F\&. +.PP +References get_index()\&. +.SS "subroutine maxmin (integer*2, dimension(len) ia, integer len, character*7 tile)" + +.PP +Print the maximum, mininum, mean and standard deviation of an array\&. +.PP +\fBParameters:\fP +.RS 4 +\fIia\fP The array to be checked\&. +.br +\fIlen\fP The number of points to be checked\&. +.br +\fItile\fP A name associated with the array\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4296 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by read_g()\&. +.SS "subroutine minmaxj (integer IM, integer JM, real(kind=4), dimension(im,jm) A, character*8 title)" + +.PP +Print out the maximum and minimum values of an array and their i/j location\&. Also print out the number of undefined points\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP The 'i' dimension of the array\&. +.br +\fIjm\fP The 'i' dimension of the array\&. +.br +\fIa\fP The array to check\&. +.br +\fItitle\fP Name of the data to be checked\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4354 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine minmxj (integer IM, integer JM, real, dimension(im,jm) A, character*8 title)" + +.PP +Print out the maximum and minimum values of an array\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP The 'i' dimension of the array\&. +.br +\fIjm\fP The 'i' dimension of the array\&. +.br +\fIa\fP The array to check\&. +.br +\fItitle\fP Name of the data to be checked\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4098 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by TERSUB()\&. +.SS "subroutine mnmxja (integer IM, integer JM, real, dimension(im,jm) A, integer imax, integer jmax, character*8 title)" + +.PP +Print out the maximum and minimum values of an array\&. Pass back the i/j location of the maximum value\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP The 'i' dimension of the array\&. +.br +\fIjm\fP The 'i' dimension of the array\&. +.br +\fIa\fP The array to check\&. +.br +\fIimax\fP 'i' location of maximum +.br +\fIjmax\fP 'j' location of maximum +.br +\fItitle\fP Name of the data to be checked\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4133 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by TERSUB()\&. +.SS "subroutine nanc ( a, l, character*(*) c)" + +.PP +Report NaNS and NaNQ within an address range for 8-byte real words\&. This routine prints a single line for each call and prints a message and returns to the caller on detection of the FIRST NaN in the range\&. If no NaN values are found it returns silently\&. +.PP +\fBParameters:\fP +.RS 4 +\fIA\fP Real*8 variable or array +.br +\fIL\fP Number of words to scan (length of array) +.br +\fIC\fP Distinctive message set in caller to indicate where the routine was called\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4840 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine read_g (integer*2, dimension(360*120,180*120) glob, integer ITOPO)" + +.PP +Read input global 30-arc second orography data\&. +.PP +\fBParameters:\fP +.RS 4 +\fIglob\fP The orography data\&. +.br +\fIitopo\fP Not used\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4245 of file mtnlm7_oclsm\&.F\&. +.PP +References maxmin()\&. +.PP +Referenced by TERSUB()\&. +.SS "subroutine REVERS ( IM, JM, integer, dimension(jm) numi, real, dimension(im,jm) F, real, dimension(im,jm) WRK)" + +.PP +Reverse the east-west and north-south axes in a two-dimensional array\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP 'i' dimension of the 2-d array\&. +.br +\fIjm\fP 'j' dimension of the 2-d array\&. +.br +\fInumi\fP Not used\&. +.br +\fIf\fP The two-dimensional array to be processed\&. +.br +\fIwrk\fP Two-dimensional work array\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4009 of file mtnlm7_oclsm\&.F\&. +.SS "subroutine rg2gg (integer, intent(in) im, integer, intent(in) jm, integer, dimension(jm), intent(in) numi, real, dimension(im,jm), intent(inout) a)" + +.PP +Convert from a reduced grid to a full grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP 'i' dimension of the full grid\&. +.br +\fIjm\fP 'j' dimension of the full grid\&. +.br +\fInumi\fP Number of 'i' points for each row of the reduced grid\&. +.br +\fIa\fP The data to be converted\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 4046 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by TERSUB()\&. +.SS "subroutine SPFFT1 (integer, intent(in) IMAX, integer, intent(in) INCW, integer, intent(in) INCG, integer, intent(in) KMAX, complex, dimension(incw,kmax), intent(inout) W, real, dimension(incg,kmax), intent(inout) G, integer, intent(in) IDIR)" + +.PP +Perform multiple fast fourier transforms\&. This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space and real values in cyclic physical space\&. +.PP +Subprograms called (NCEPLIB SP Library): +.IP "\(bu" 2 +scrft Complex to real fourier transform +.IP "\(bu" 2 +dcrft Complex to real fourier transform +.IP "\(bu" 2 +srcft Real to complex fourier transform +.IP "\(bu" 2 +drcft Real to complex fourier transform +.PP +.PP +Program history log: 1998-12-18 Mark Iredell +.PP +\fBParameters:\fP +.RS 4 +\fIimax\fP Integer number of values in the cyclic physical space\&. See limitations on imax in remarks below\&. +.br +\fIincw\fP Integer first dimension of the complex amplitude array\&. (incw >= imax/2+1)\&. +.br +\fIincg\fP Integer first dimension of the real value array\&. (incg >= imax)\&. +.br +\fIkmax\fP Integer number of transforms to perform\&. +.br +\fIw\fP Complex amplitudes on input if idir>0, and on output if idir<0\&. +.br +\fIg\fP Real values on input if idir<0, and on output if idir>0\&. +.br +\fIidir\fP Integer direction flag\&. idir>0 to transform from fourier to physical space\&. idir<0 to transform from physical to fourier space\&. +.RE +.PP +\fBNote:\fP +.RS 4 +The restrictions on imax are that it must be a multiple of 1 to 25 factors of two, up to 2 factors of three, and up to 1 factor of five, seven and eleven\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell ORG: W/NMC23 +.RE +.PP +\fBDate:\fP +.RS 4 +96-02-20 +.RE +.PP + +.PP +Definition at line 4195 of file mtnlm7_oclsm\&.F\&. +.SS "real function spherical_angle (real, dimension(3) v1, real, dimension(3) v2, real, dimension(3) v3)" + +.PP +Compute spherical angle\&. +.PP +\fBParameters:\fP +.RS 4 +\fIv1\fP Vector 1\&. +.br +\fIv2\fP Vector 2\&. +.br +\fIv3\fP Vector 3\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +spherical_angle Spherical Angle\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 4428 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by inside_a_polygon()\&. +.SS "real function spherical_distance (real, intent(in) theta1, real, intent(in) phi1, real, intent(in) theta2, real, intent(in) phi2)" + +.PP +Compute a great circle distance between two points\&. +.PP +\fBParameters:\fP +.RS 4 +\fItheta1\fP Longitude of point 1\&. +.br +\fIphi1\fP Latitude of point 1\&. +.br +\fItheta2\fP Longitude of point 2\&. +.br +\fIphi2\fP Latitude of point2\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +spherical_distance Great circle distance\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +GFDL programmer +.RE +.PP + +.PP +Definition at line 3434 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by get_mismatch_index()\&. +.SS "subroutine TERSUB (integer IMN, integer JMN, integer IM, integer JM, integer NM, integer NR, integer NF0, integer NF1, integer NW, integer EFAC, integer BLAT, character(len=*), intent(in) OUTGRID, character(len=*), intent(in) INPUTOROG)" + +.PP +Driver routine to compute terrain\&. +.PP +\fBParameters:\fP +.RS 4 +\fIIMN\fP 'i' dimension of the input terrain dataset\&. +.br +\fIJMN\fP 'j' dimension of the input terrain dataset\&. +.br +\fIIM\fP 'i' dimension of the model grid tile\&. +.br +\fIJM\fP 'j' dimension of the model grid tile\&. +.br +\fINM\fP Spectral truncation\&. +.br +\fINR\fP Rhomboidal flag\&. +.br +\fINF0\fP First order spectral filter parameters\&. +.br +\fINF1\fP Second order spectral filter parameters\&. +.br +\fINW\fP Number of waves\&. +.br +\fIEFAC\fP Factor to adjust orography by its variance\&. +.br +\fIBLAT\fP When less than zero, reverse latitude/ longitude for output\&. +.br +\fIOUTGRID\fP The 'grid' file for the model tile\&. +.br +\fIINPUTOROG\fP Input orography/GWD file on gaussian grid\&. When specified, will be interpolated to model tile\&. When not specified, program will create fields from raw high-resolution topography data\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 184 of file mtnlm7_oclsm\&.F\&. +.PP +References minmxj(), mnmxja(), netcdf_err(), read_g(), rg2gg(), timef(), and write_netcdf()\&. +.SS "real function timef ()" + +.PP +Get the date/time for the system clock\&. +.PP +\fBAuthor:\fP +.RS 4 +Mark Iredell +.RE +.PP +\fBReturns:\fP +.RS 4 +timef +.RE +.PP + +.PP +Definition at line 4889 of file mtnlm7_oclsm\&.F\&. +.PP +Referenced by TERSUB()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nanc.3 b/ver-1.11.0/orog_mask_tools/man/man3/nanc.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nanc.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nb.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/nb.F90.3 new file mode 100644 index 000000000..d7e71b6f6 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nb.F90.3 @@ -0,0 +1,284 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90 \- This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid\&. + +.SH SYNOPSIS +.br +.PP +.SS "Data Types" + +.in +1c +.ti -1c +.RI "type \fBcs_nb::nb_gp_idx\fP" +.br +.RI "Neighboring cell descriptor\&. " +.ti -1c +.RI "type \fBcs_nb::nb_tile_idx\fP" +.br +.RI "Neighboring tile descriptor\&. " +.in -1c +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "integer function \fBcs_nb::bndry\fP (i, j)" +.br +.RI "Get boundary type from indices for global grid\&. " +.ti -1c +.RI "integer function \fBcs_nb::bndry_reg\fP (i, j)" +.br +.RI "Get boundary type from indices for regional grid\&. " +.ti -1c +.RI "subroutine \fBcs_nb::idx_init\fP (cres_in)" +.br +.RI "Initialize inter-panel neighbor index for global grid\&. " +.ti -1c +.RI "subroutine \fBcs_nb::idx_init_reg\fP (xres_in, yres_in)" +.br +.RI "Initialize resolution module variables for regional grid\&. " +.ti -1c +.RI "subroutine \fBcs_nb::neighbors\fP (tile, i, j, nb)" +.br +.RI "Get neighbors of cell 'c' at (tile, i, j) for global grid\&. " +.ti -1c +.RI "subroutine \fBcs_nb::neighbors_reg\fP (i, j, nb)" +.br +.RI "Get neighbors of cell 'c' at (tile, i, j) for regional grid\&. " +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "integer \fBcs_nb::cres\fP" +.br +.RI "Cubed sphere resolution\&. " +.ti -1c +.RI "type(nb_tile_idx), dimension(4, 6) \fBcs_nb::nb_tile\fP" +.br +.RI "Descriptor for each edge of each tile on the cubed sphere\&. " +.ti -1c +.RI "integer \fBcs_nb::xres\fP" +.br +.RI "x resolution of regional grid " +.ti -1c +.RI "integer \fBcs_nb::yres\fP" +.br +.RI "y resolution of regional grid " +.in -1c +.SH "Detailed Description" +.PP +This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid\&. + +Each neighbor is in the form of (i,j,tile)\&. +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP +\fBDate:\fP +.RS 4 +July 1, 2020 +.RE +.PP + +.PP +Definition in file \fBnb\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "integer function cs_nb::bndry (integer i, integer j)" + +.PP +Get boundary type from indices for global grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP cell index +.br +\fIj\fP cell index +.RE +.PP +\fBReturns:\fP +.RS 4 +bndry cell boundary type +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 107 of file nb\&.F90\&. +.SS "integer function cs_nb::bndry_reg (integer i, integer j)" + +.PP +Get boundary type from indices for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP cell index +.br +\fIj\fP cell index +.RE +.PP +\fBReturns:\fP +.RS 4 +cell boundary type +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 141 of file nb\&.F90\&. +.SS "subroutine cs_nb::idx_init (integer cres_in)" + +.PP +Initialize inter-panel neighbor index for global grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIcres_in\fP cubed sphere resolution (48, 96\&.\&.\&.) +.RE +.PP +.PP +.nf + _______1_______ + | | 1-upper, 2-bottom, 3-left, 4-right + | | + | | + 3| |4 + | | + | | + |_______________| + 2 + Figure 1. Boundary numbers.fi +.PP +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 49 of file nb\&.F90\&. +.SS "subroutine cs_nb::idx_init_reg (integer, intent(in) xres_in, integer, intent(in) yres_in)" + +.PP +Initialize resolution module variables for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIxres_in\fP x resolution +.br +\fIyres_in\fP y resolution +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 92 of file nb\&.F90\&. +.SS "subroutine cs_nb::neighbors (integer tile, integer i, integer j, type(\fBnb_gp_idx\fP) nb)" + +.PP +Get neighbors of cell 'c' at (tile, i, j) for global grid\&. +.PP +.nf + ______________ + | | | | ________ + | 5 | 1 | 6 | /\ 1 \ 6 + |____|____|____| / \___\___ + | | | | /\2 / c / 3 / + | 2 | c | 3 | / \/___/___/ + |____|____|____| \7 / 4 / 8 / + | | | | \/___/___/ + | 7 | 4 | 8 | + |____|____|____| + + Figure 2. Eight neighbors of cell 'c' and special cases at upper left + cornner of the tile +.fi +.PP +.PP +\fBParameters:\fP +.RS 4 +\fItile\fP tile face +.br +\fIi\fP cell index +.br +\fIj\fP cell index +.br +\fInb\fP neighbors +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 193 of file nb\&.F90\&. +.SS "subroutine cs_nb::neighbors_reg (integer i, integer j, type(\fBnb_gp_idx\fP) nb)" + +.PP +Get neighbors of cell 'c' at (tile, i, j) for regional grid\&. +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP cell index +.br +\fIj\fP cell index +.br +\fInb\fP neighbors +.RE +.PP +\fBAuthor:\fP +.RS 4 +Ning Wang +.RE +.PP + +.PP +Definition at line 394 of file nb\&.F90\&. +.SH "Variable Documentation" +.PP +.SS "integer cs_nb::cres" + +.PP +Cubed sphere resolution\&. +.PP +Definition at line 24 of file nb\&.F90\&. +.SS "type(nb_tile_idx), dimension(4,6) cs_nb::nb_tile" + +.PP +Descriptor for each edge of each tile on the cubed sphere\&. +.PP +Definition at line 22 of file nb\&.F90\&. +.SS "integer cs_nb::xres" + +.PP +x resolution of regional grid +.PP +Definition at line 25 of file nb\&.F90\&. +.SS "integer cs_nb::yres" + +.PP +y resolution of regional grid +.PP +Definition at line 26 of file nb\&.F90\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nb_tile.3 b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_bndry.3 b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_bndry.3 new file mode 100644 index 000000000..923437c60 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_bndry.3 @@ -0,0 +1 @@ +.so man3/cs_nb_nb_tile_idx.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_num.3 b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_num.3 new file mode 100644 index 000000000..923437c60 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nb_tile_num.3 @@ -0,0 +1 @@ +.so man3/cs_nb_nb_tile_idx.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nc_opchk.3 b/ver-1.11.0/orog_mask_tools/man/man3/nc_opchk.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nc_opchk.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_east.3 b/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_east.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_east.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_west.3 b/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_west.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nearest_i_west.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_north.3 b/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_north.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_north.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_south.3 b/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_south.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/nearest_j_south.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/neighbors.3 b/ver-1.11.0/orog_mask_tools/man/man3/neighbors.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/neighbors.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/neighbors_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/neighbors_reg.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/neighbors_reg.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/netcdf_err.3 b/ver-1.11.0/orog_mask_tools/man/man3/netcdf_err.3 new file mode 100644 index 000000000..7d7463cad --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/netcdf_err.3 @@ -0,0 +1 @@ +.so man3/netcdf_io.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/netcdf_io.F90.3 b/ver-1.11.0/orog_mask_tools/man/man3/netcdf_io.F90.3 new file mode 100644 index 000000000..b525b4ef2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/netcdf_io.F90.3 @@ -0,0 +1,108 @@ +.TH "/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90" 3 "Mon Oct 23 2023" "Version 1.11.0" "orog_mask_tools" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90 \- Write out data in netcdf format\&. + +.SH SYNOPSIS +.br +.PP +.SS "Functions/Subroutines" + +.in +1c +.ti -1c +.RI "subroutine \fBnetcdf_err\fP (err, string)" +.br +.RI "Check NetCDF error code and output the error message\&. " +.ti -1c +.RI "subroutine \fBwrite_netcdf\fP (im, jm, slm, land_frac, oro, orf, hprime, ntiles, tile, geolon, geolat, lon, lat)" +.br +.RI "Write out orography file in netcdf format\&. " +.in -1c +.SH "Detailed Description" +.PP +Write out data in netcdf format\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition in file \fBnetcdf_io\&.F90\fP\&. +.SH "Function/Subroutine Documentation" +.PP +.SS "subroutine netcdf_err (integer, intent(in) err, character(len=*), intent(in) string)" + +.PP +Check NetCDF error code and output the error message\&. +.PP +\fBParameters:\fP +.RS 4 +\fIerr\fP NetCDF error code +.br +\fIstring\fP The NetCDF error message +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC +.RE +.PP + +.PP +Definition at line 219 of file netcdf_io\&.F90\&. +.PP +Referenced by __mtnlm7_oclsm\&.F__(), gsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale(), gsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale(), TERSUB(), and write_netcdf()\&. +.SS "subroutine write_netcdf (integer, intent(in) im, integer, intent(in) jm, real, dimension(im,jm), intent(in) slm, real, dimension(im,jm), intent(in) land_frac, real, dimension(im,jm), intent(in) oro, real, dimension(im,jm), intent(in) orf, real, dimension(im,jm,14), intent(in) hprime, integer, intent(in) ntiles, integer, intent(in) tile, real, dimension(im,jm), intent(in) geolon, real, dimension(im,jm), intent(in) geolat, real, dimension(im), intent(in) lon, real, dimension(jm), intent(in) lat)" + +.PP +Write out orography file in netcdf format\&. +.PP +\fBParameters:\fP +.RS 4 +\fIim\fP 'i' dimension of a model grid tile\&. +.br +\fIjm\fP 'j' dimension of a model grid tile\&. +.br +\fIslm\fP Land-sea mask\&. +.br +\fIland_frac\fP Land fraction\&. +.br +\fIoro\fP Orography +.br +\fIorf\fP Filtered orography\&. Currently the same as 'oro'\&. +.br +\fIhprime\fP The gravity wave drag fields on the model grid tile\&. +.br +\fIntiles\fP Number of tiles to output\&. +.br +\fItile\fP Tile number to output\&. +.br +\fIgeolon\fP Longitude on the model grid tile\&. +.br +\fIgeolat\fP Latitude on the model grid tile\&. +.br +\fIlon\fP Longitude of the first row of the model grid tile\&. +.br +\fIlat\fP Latitude of the first column of the model grid tile\&. +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jordan Alpert NOAA/EMC GFDL Programmer +.RE +.PP + +.PP +Definition at line 22 of file netcdf_io\&.F90\&. +.PP +References netcdf_err()\&. +.PP +Referenced by TERSUB()\&. +.SH "Author" +.PP +Generated automatically by Doxygen for orog_mask_tools from the source code\&. diff --git a/ver-1.11.0/orog_mask_tools/man/man3/p5.3 b/ver-1.11.0/orog_mask_tools/man/man3/p5.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/p5.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/pi.3 b/ver-1.11.0/orog_mask_tools/man/man3/pi.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/pi.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_grid.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_grid.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_grid.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_reg_grid.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_reg_grid.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_cubed_sphere_reg_grid.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_g.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_g.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_g.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_lakedata.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_lakedata.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_lakedata.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_orog.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_orog.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_orog.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/read_orog_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/read_orog_reg.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/read_orog_reg.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/real_kind.3 b/ver-1.11.0/orog_mask_tools/man/man3/real_kind.3 new file mode 100644 index 000000000..66481dca0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/real_kind.3 @@ -0,0 +1 @@ +.so man3/module_gsl_oro_data_lg_scale.f90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/rg2gg.3 b/ver-1.11.0/orog_mask_tools/man/man3/rg2gg.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/rg2gg.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/spherical_angle.3 b/ver-1.11.0/orog_mask_tools/man/man3/spherical_angle.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/spherical_angle.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/spherical_distance.3 b/ver-1.11.0/orog_mask_tools/man/man3/spherical_distance.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/spherical_distance.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/timef.3 b/ver-1.11.0/orog_mask_tools/man/man3/timef.3 new file mode 100644 index 000000000..fbf048d86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/timef.3 @@ -0,0 +1 @@ +.so man3/mtnlm7_oclsm.F.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/write_inland.3 b/ver-1.11.0/orog_mask_tools/man/man3/write_inland.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/write_inland.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/write_inland_reg.3 b/ver-1.11.0/orog_mask_tools/man/man3/write_inland_reg.3 new file mode 100644 index 000000000..fd6d76a75 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/write_inland_reg.3 @@ -0,0 +1 @@ +.so man3/inland.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/write_lakedata_to_orodata.3 b/ver-1.11.0/orog_mask_tools/man/man3/write_lakedata_to_orodata.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/write_lakedata_to_orodata.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/write_netcdf.3 b/ver-1.11.0/orog_mask_tools/man/man3/write_netcdf.3 new file mode 100644 index 000000000..7d7463cad --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/write_netcdf.3 @@ -0,0 +1 @@ +.so man3/netcdf_io.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/write_reg_lakedata_to_orodata.3 b/ver-1.11.0/orog_mask_tools/man/man3/write_reg_lakedata_to_orodata.3 new file mode 100644 index 000000000..3bcbe5279 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/write_reg_lakedata_to_orodata.3 @@ -0,0 +1 @@ +.so man3/lakefrac.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/xres.3 b/ver-1.11.0/orog_mask_tools/man/man3/xres.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/xres.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/man/man3/yres.3 b/ver-1.11.0/orog_mask_tools/man/man3/yres.3 new file mode 100644 index 000000000..dfe9aa1ba --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/man/man3/yres.3 @@ -0,0 +1 @@ +.so man3/nb.F90.3 diff --git a/ver-1.11.0/orog_mask_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html b/ver-1.11.0/orog_mask_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html new file mode 100644 index 000000000..c098111c3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html @@ -0,0 +1,106 @@ + + + + + + + +orog_mask_tools: README + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    README
    +
    +
    +

    These programs are used in creating the terrain and land mask for a model grid.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/menu.js b/ver-1.11.0/orog_mask_tools/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/orog_mask_tools/menudata.js b/ver-1.11.0/orog_mask_tools/menudata.js new file mode 100644 index 000000000..fd9552d80 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/menudata.js @@ -0,0 +1,62 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__"}, +{text:"c",url:"globals.html#index_c"}, +{text:"e",url:"globals.html#index_e"}, +{text:"f",url:"globals.html#index_f"}, +{text:"g",url:"globals.html#index_g"}, +{text:"i",url:"globals.html#index_i"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"w",url:"globals.html#index_w"}]}, +{text:"Functions/Subroutines",url:"globals_func.html",children:[ +{text:"_",url:"globals_func.html#index__"}, +{text:"c",url:"globals_func.html#index_c"}, +{text:"e",url:"globals_func.html#index_e"}, +{text:"f",url:"globals_func.html#index_f"}, +{text:"g",url:"globals_func.html#index_g"}, +{text:"i",url:"globals_func.html#index_i"}, +{text:"l",url:"globals_func.html#index_l"}, +{text:"m",url:"globals_func.html#index_m"}, +{text:"n",url:"globals_func.html#index_n"}, +{text:"r",url:"globals_func.html#index_r"}, +{text:"s",url:"globals_func.html#index_s"}, +{text:"t",url:"globals_func.html#index_t"}, +{text:"w",url:"globals_func.html#index_w"}]}]}]}]} diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.html b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.html new file mode 100644 index 000000000..6939a68e3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.html @@ -0,0 +1,772 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_lg_scale.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_gsl_oro_data_lg_scale.f90 File Reference
    +
    +
    + +

    Calculates large-scale GWD orographic stats for FV3GFS grids. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine gsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale (tile_num, res_indx, halo)
     Subroutine to compute orographic statistics needed for large-scale orograhic drag (gravity wave and blocking) schemes. More...
     
    subroutine gsl_oro_data_lg_scale::calc_mean_HGT (s_ii, e_ii, s_jj, e_jj, HGT)
     Calculates average terrain height within coarse grid cell ("block") More...
     
    subroutine gsl_oro_data_lg_scale::HGT_interpolate (lat, lon_in, lat_blk, lon_blk, HGT_coarse, HGT_coarse_on_fine)
     Interpolates height from coarse grid on to fine grid points. More...
     
    real(kind=real_kind) function gsl_oro_data_lg_scale::interp_1d (x, x1, x2, y1, y2)
     Interpolates (or extrapolates) linear function y = y(x) More...
     
    integer function gsl_oro_data_lg_scale::nearest_i_east (lon_in)
     Finds nearest fine-grid i index to the east of a given longitude. More...
     
    integer function gsl_oro_data_lg_scale::nearest_i_west (lon_in)
     Finds nearest fine-grid i index to the west of a given longitude. More...
     
    integer function gsl_oro_data_lg_scale::nearest_j_north (lat_in)
     Calculates nearest fine-grid j index to the north of a given latitude. More...
     
    integer function gsl_oro_data_lg_scale::nearest_j_south (lat_in)
     Calculates nearest fine-grid j index to the south of a given latitude. More...
     
    subroutine gsl_oro_data_lg_scale::netcdf_err (err, string)
     Returns netCDF error given input err code. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer, parameter gsl_oro_data_lg_scale::dbl_kind = selected_real_kind(13)
     double precision More...
     
    integer gsl_oro_data_lg_scale::dimx_fine
     x-dimension of fine grid More...
     
    integer gsl_oro_data_lg_scale::dimy_fine
     y-dimension of fine grid More...
     
    real(kind=real_kind), dimension(:,:), allocatable gsl_oro_data_lg_scale::hgt_m_fine
     Height of fine grid pts (m) More...
     
    real(kind=real_kind), parameter gsl_oro_data_lg_scale::hgt_missing = 1.E+10
     Flag for missing data. More...
     
    real(kind=real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lat1d_fine
     latitude of fine grid pts More...
     
    real(kind=real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lon1d_fine
     longitude of fine grid pts More...
     
    real(kind=real_kind), parameter gsl_oro_data_lg_scale::p5 = 0.5_real_kind
     one half More...
     
    real, parameter gsl_oro_data_lg_scale::pi = 3.1415926535897_real_kind
     pi More...
     
    integer, parameter gsl_oro_data_lg_scale::real_kind = selected_real_kind(6)
     single precision More...
     
    +

    Detailed Description

    +

    Calculates large-scale GWD orographic stats for FV3GFS grids.

    +
    Author
    Michael Toy, NOAA/GSL
    +
    Date
    2021-03-12
    +

    This module calculates the parameters required for the subgrid- scale orographic gravity-wave drag (GWDO) scheme on the FV3 grid. These parameters are for the large-scale GWDO and blocking schemes of the GSL drag suite. 2.5minute (~5km) global topography is used. The topographic data comes from the 'fix' file geo_em.d01.lat-lon.2.5m.HGT_M.nc. The output fields are:

      +
    • stddev standard deviation of subgrid-scale topograpy
    • +
    • convexity convexity (kurtosis) of subgrid-scale topography
    • +
    • ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    • oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    +

    Based on code by Michael Duda provided by NCAR/MMM

    + +

    Definition in file module_gsl_oro_data_lg_scale.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ calc_gsl_oro_data_lg_scale()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale (character(len=2), intent(in) tile_num,
    character(len=7), intent(in) res_indx,
    character(len=4), intent(in) halo 
    )
    +
    + +

    Subroutine to compute orographic statistics needed for large-scale orograhic drag (gravity wave and blocking) schemes.

    +
    Parameters
    + + + + +
    [in]tile_num(tile number)
    [in]res_indx(resolution)
    [in]halo(halo number)
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 51 of file module_gsl_oro_data_lg_scale.f90.

    + +

    References netcdf_err().

    + +
    +
    + +

    ◆ calc_mean_HGT()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_lg_scale::calc_mean_HGT (integer s_ii,
    integer e_ii,
    integer s_jj,
    integer e_jj,
    real (kind=real_kind), intent(out) HGT 
    )
    +
    + +

    Calculates average terrain height within coarse grid cell ("block")

    +
    Parameters
    + + + + + + +
    [in]s_iiFine grid starting i-index
    [in]e_iiFine grid ending i-index
    [in]s_jjFine grid starting j-index
    [in]e_jjFine grid ending j-index
    [out]hgtFine grid height (m)
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1001 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ HGT_interpolate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_lg_scale::HGT_interpolate (real (kind = real_kind), intent(in) lat,
    real (kind = real_kind), intent(in) lon_in,
    real (kind = real_kind), dimension(3), intent(in) lat_blk,
    real (kind = real_kind), dimension(3), intent(in) lon_blk,
    real (kind = real_kind), dimension(3,3), intent(in) HGT_coarse,
    real (kind = real_kind), intent(out) HGT_coarse_on_fine 
    )
    +
    + +

    Interpolates height from coarse grid on to fine grid points.

    +
    Parameters
    + + + + + + + +
    [in]latLatitude of fine grid point.
    [in]lon_inLongitude of fine grid point.
    [in]lat_blkLatitudes of neighboring coarse grid points.
    [in]lon_blkLongitudes of neighboring coarse grid points.
    [in]hgt_coarseTopographic heights on coarse grid
    [out]hgt_coarse_on_fineCoarse grid heights interpolated on to fine grid
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1063 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ interp_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real (kind=real_kind) function gsl_oro_data_lg_scale::interp_1d (real (kind=real_kind), intent(in) x,
    real (kind=real_kind), intent(in) x1,
    real (kind=real_kind), intent(in) x2,
    real (kind=real_kind), intent(in) y1,
    real (kind=real_kind), intent(in) y2 
    )
    +
    + +

    Interpolates (or extrapolates) linear function y = y(x)

    +
    Parameters
    + + + + + + +
    [in]xInput "x" value
    [in]x1Known point 1
    [in]x2Known point 2
    [in]y1Known y(x1)
    [in]y2Known y(x2)
    +
    +
    +
    Returns
    interp_1d Interpolated y value at x
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1323 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ nearest_i_east()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_lg_scale::nearest_i_east (real (kind=real_kind), intent(in) lon_in)
    +
    + +

    Finds nearest fine-grid i index to the east of a given longitude.

    +
    Parameters
    + + +
    [in]lon_inlongitude (radians)
    +
    +
    +
    Returns
    nearest_i_east Nearest grid point i-index east of selected point
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1193 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ nearest_i_west()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_lg_scale::nearest_i_west (real (kind=real_kind), intent(in) lon_in)
    +
    + +

    Finds nearest fine-grid i index to the west of a given longitude.

    +
    Parameters
    + + +
    [in]lon_inlongitude (radians)
    +
    +
    +
    Returns
    nearest_i_west Nearest grid point i-index west of selected point
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1226 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ nearest_j_north()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_lg_scale::nearest_j_north (real (kind=real_kind), intent(in) lat_in)
    +
    + +

    Calculates nearest fine-grid j index to the north of a given latitude.

    +
    Parameters
    + + +
    [in]lat_inLatitude (radians)
    +
    +
    +
    Returns
    nearest_j_north Nearest fine-grid j index to the north of a given latitude
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1259 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ nearest_j_south()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_lg_scale::nearest_j_south (real (kind=real_kind), intent(in) lat_in)
    +
    + +

    Calculates nearest fine-grid j index to the south of a given latitude.

    +
    Parameters
    + + +
    [in]lat_inLatitude (radians)
    +
    +
    +
    Returns
    nearest_j_south Nearest fine-grid j index to the south of a given latitude
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1288 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ netcdf_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_lg_scale::netcdf_err (integer, intent(in) err,
    character(len=*), intent(in) string 
    )
    +
    + +

    Returns netCDF error given input err code.

    +
    Parameters
    + + + +
    [in]errError code from netCDF routine
    [in]stringPortion of error message
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1343 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ dbl_kind

    + +
    +
    + + + + +
    integer, parameter gsl_oro_data_lg_scale::dbl_kind = selected_real_kind(13)
    +
    + +

    double precision

    + +

    Definition at line 27 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ dimx_fine

    + +
    +
    + + + + +
    integer gsl_oro_data_lg_scale::dimx_fine
    +
    + +

    x-dimension of fine grid

    + +

    Definition at line 30 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ dimy_fine

    + +
    +
    + + + + +
    integer gsl_oro_data_lg_scale::dimy_fine
    +
    + +

    y-dimension of fine grid

    + +

    Definition at line 31 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ hgt_m_fine

    + +
    +
    + + + + +
    real (kind = real_kind), dimension(:,:), allocatable gsl_oro_data_lg_scale::hgt_m_fine
    +
    + +

    Height of fine grid pts (m)

    + +

    Definition at line 38 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ hgt_missing

    + +
    +
    + + + + +
    real (kind = real_kind), parameter gsl_oro_data_lg_scale::hgt_missing = 1.E+10
    +
    + +

    Flag for missing data.

    + +

    Definition at line 39 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ lat1d_fine

    + +
    +
    + + + + +
    real (kind = real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lat1d_fine
    +
    + +

    latitude of fine grid pts

    + +

    Definition at line 33 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ lon1d_fine

    + +
    +
    + + + + +
    real (kind = real_kind), dimension(:), allocatable gsl_oro_data_lg_scale::lon1d_fine
    +
    + +

    longitude of fine grid pts

    + +

    Definition at line 34 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ p5

    + +
    +
    + + + + +
    real (kind = real_kind), parameter gsl_oro_data_lg_scale::p5 = 0.5_real_kind
    +
    + +

    one half

    + +

    Definition at line 36 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ pi

    + +
    +
    + + + + +
    real, parameter gsl_oro_data_lg_scale::pi = 3.1415926535897_real_kind
    +
    + +

    pi

    + +

    Definition at line 29 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    + +

    ◆ real_kind

    + +
    +
    + + + + +
    integer, parameter gsl_oro_data_lg_scale::real_kind = selected_real_kind(6)
    +
    + +

    single precision

    + +

    Definition at line 26 of file module_gsl_oro_data_lg_scale.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.js b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.js new file mode 100644 index 000000000..de656e30c --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90.js @@ -0,0 +1,22 @@ +var module__gsl__oro__data__lg__scale_8f90 = +[ + [ "calc_gsl_oro_data_lg_scale", "module__gsl__oro__data__lg__scale_8f90.html#a9830b4caf14b991d636d80fc982d5051", null ], + [ "calc_mean_HGT", "module__gsl__oro__data__lg__scale_8f90.html#a90c214b49da3bc31101edd3d3c54b5fe", null ], + [ "HGT_interpolate", "module__gsl__oro__data__lg__scale_8f90.html#adbe21346d8ed23ff6d765b565c7058ff", null ], + [ "interp_1d", "module__gsl__oro__data__lg__scale_8f90.html#a5bb95a0f684cd2f38d45103b548e6e06", null ], + [ "nearest_i_east", "module__gsl__oro__data__lg__scale_8f90.html#a705e630d560e2e06f41e5fb270536e0c", null ], + [ "nearest_i_west", "module__gsl__oro__data__lg__scale_8f90.html#a76d4b7d1141c857bbc966501c10773bb", null ], + [ "nearest_j_north", "module__gsl__oro__data__lg__scale_8f90.html#ae0e03d1499520602a17d736865f0ba4e", null ], + [ "nearest_j_south", "module__gsl__oro__data__lg__scale_8f90.html#aa5337925dccfc23e3b53d5cd227b913d", null ], + [ "netcdf_err", "module__gsl__oro__data__lg__scale_8f90.html#a3bde411a1f85506a546fa572e48ff1a5", null ], + [ "dbl_kind", "module__gsl__oro__data__lg__scale_8f90.html#af515441651e6330674ca8d097d54f677", null ], + [ "dimx_fine", "module__gsl__oro__data__lg__scale_8f90.html#afd82effea9dc0b005e2087b3cec01a49", null ], + [ "dimy_fine", "module__gsl__oro__data__lg__scale_8f90.html#a885f79645890aad41b977914275ba525", null ], + [ "hgt_m_fine", "module__gsl__oro__data__lg__scale_8f90.html#a44e278cef37433021fe5511695e3d561", null ], + [ "hgt_missing", "module__gsl__oro__data__lg__scale_8f90.html#aeb13d7583cec4631c61eb20d09858d71", null ], + [ "lat1d_fine", "module__gsl__oro__data__lg__scale_8f90.html#a5afe7069f54a8e1b32f4902c998c982d", null ], + [ "lon1d_fine", "module__gsl__oro__data__lg__scale_8f90.html#a15e32bfe7c1d734a752fdce23e204ec2", null ], + [ "p5", "module__gsl__oro__data__lg__scale_8f90.html#acbd44de1592fc3f7a07abb060772b0ba", null ], + [ "pi", "module__gsl__oro__data__lg__scale_8f90.html#a106896e2e5275627cf76876923a4a4e7", null ], + [ "real_kind", "module__gsl__oro__data__lg__scale_8f90.html#abfba279932fc36445d8422b865401cce", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90_source.html b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90_source.html new file mode 100644 index 000000000..1ebf7a1ce --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__lg__scale_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_lg_scale.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    module_gsl_oro_data_lg_scale.f90
    +
    +
    +Go to the documentation of this file.
    1 
    22 module gsl_oro_data_lg_scale
    23 
    24 implicit none
    25 
    26 integer, parameter :: real_kind = selected_real_kind(6)
    27 integer, parameter :: dbl_kind = selected_real_kind(13)
    28 
    29 real, parameter :: pi = 3.1415926535897_real_kind
    30 integer :: dimx_fine
    31 integer :: dimy_fine
    32 
    33 real (kind = real_kind), allocatable :: lat1d_fine(:)
    34 real (kind = real_kind), allocatable :: lon1d_fine(:)
    35 
    36 real (kind = real_kind), parameter :: p5 = 0.5_real_kind
    37 
    38 real (kind = real_kind), allocatable :: hgt_m_fine(:,:)
    39 real (kind = real_kind), parameter :: hgt_missing = 1.e+10
    40 
    41 contains
    42 
    50 subroutine calc_gsl_oro_data_lg_scale(tile_num,res_indx,halo)
    51 
    52 use netcdf
    53 
    54 implicit none
    55 
    56 character(len=2), intent(in) :: tile_num ! tile number
    57 character(len=7), intent(in) :: res_indx ! grid-resolution index, e.g., 96, 192, 384, etc
    58 character(len=4), intent(in) :: halo ! halo value (for input grid data)
    59 
    60 integer :: i,j,ii,jj
    61 
    62 integer :: ncid_in,ncid_out,err
    63 integer :: varid
    64 integer :: dimid,latid,lonid
    65 integer, dimension (2) :: dimids
    66 
    67 integer :: nfinepoints ! number of fine grid points in each coarse grid cell
    68 
    69 real (kind = real_kind) :: sum2, sum4, var
    70 
    71 
    72 real (kind = real_kind), allocatable :: &
    73  zs(:,:)
    74 
    75 logical :: zs_accum
    76 
    77 real (kind = real_kind) :: zs_mean
    78 real (kind = real_kind), allocatable :: &
    79  std_dev(:),convexity(:), &
    80  OA1(:),OA2(:),OA3(:),OA4(:), &
    81  OL1(:),OL2(:),OL3(:),OL4(:)
    82 
    83 real (kind = real_kind), parameter :: max_convexity = 10._real_kind ! max value for convexity
    84 
    85 integer :: nu, nd, nw, nt
    86 real (kind = real_kind) :: ratio
    87 
    88 
    89 real, parameter :: ae = 6371200._real_kind ! Earth radius in meters
    90 
    91 character(len=35) :: FV3_grid_input_file_name
    92 character(len=150) :: fine_topo_source_file_name
    93 character(len=35) :: oro_data_output_file_name
    94 
    95 integer :: temp_int, dimX_FV3, dimY_FV3
    96 real (kind = dbl_kind), allocatable :: lat_FV3_raw(:,:), lon_FV3_raw(:,:)
    97 real (kind = real_kind), allocatable :: lat_FV3(:,:), lon_FV3(:,:)
    98 real (kind = real_kind), allocatable :: lat_FV3_deg(:,:) ! saved version of latitude for output
    99 real (kind = real_kind), allocatable :: lon_FV3_deg(:,:) ! saved version of longitude for output
    100 real (kind = dbl_kind), allocatable :: area_FV3_qtr(:,:) ! meters squared
    101 real (kind = real_kind), allocatable :: area_FV3(:,:) ! meters squared
    102 real (kind = real_kind) :: dlta_lat, dlta_lon
    103 
    104 integer :: i_blk, j_blk
    105 integer :: ii_loc, jj_loc, ii_m, jj_m
    106 integer, dimension(3) :: s_ii, e_ii, s_jj, e_jj
    107 real (kind = real_kind), dimension(3) :: lat_blk, lon_blk
    108 real (kind = real_kind), dimension(3,3) :: HGT_M_coarse
    109 real (kind = real_kind), allocatable :: HGT_M_coarse_on_fine(:,:)
    110 integer :: cell_count ! allows for use of 1D arrays for GWD statistics fields
    111 integer :: halo_int ! integer form of halo
    112 
    113 logical :: fexist
    114 
    115 logical, parameter :: detrend_topography = .true. ! switch for using detrended
    116  ! or actual fine-grid topography
    117  ! to represent subgrid terrain
    118 
    119 
    120 print *, "Creating oro_data_ls file"
    121 print *
    122 
    123 ! File name for file that contains grid information
    124 if ( halo.eq."-999" ) then ! global or nested tile
    125  fv3_grid_input_file_name = "C" // trim(res_indx) // "_grid.tile" // &
    126  trim(tile_num) // ".nc"
    127 else ! stand-alone regional tile
    128  fv3_grid_input_file_name = "C" // trim(res_indx) // "_grid.tile" // &
    129  trim(tile_num) // ".halo" // trim(halo) // ".nc"
    130 end if
    131 
    132 print *, "Reading from file: ", fv3_grid_input_file_name
    133 
    134 ! Check that input file exists -- exit with error message if not
    135 inquire(file=fv3_grid_input_file_name,exist=fexist)
    136 if (.not.fexist) then
    137  print *
    138  print *, "Fatal error: Input file "//trim(fv3_grid_input_file_name)// &
    139  " does not exist"
    140  print *, "Exiting program gsl_oro_data.f90"
    141  print *
    142  call exit(4)
    143 end if
    144 
    145 
    146 ! In preparation for reading in grid data, account for existence
    147 ! of halo points
    148 if ( halo.eq."-999" ) then ! global or nested tile
    149  halo_int = 0
    150 else
    151  read(halo,*) halo_int ! integer form of halo
    152 end if
    153 
    154 
    155 ! Open Cxxx_grid netCDF file for input and get dimensions
    156 err = nf90_open(fv3_grid_input_file_name,nf90_nowrite,ncid_in)
    157 call netcdf_err(err, 'opening: '//fv3_grid_input_file_name)
    158 
    159 err = nf90_inq_dimid(ncid_in,'nx',dimid)
    160 call netcdf_err(err, 'reading nx id')
    161 err = nf90_inquire_dimension(ncid_in,dimid,len=temp_int)
    162 call netcdf_err(err, 'reading nx value')
    163 dimx_fv3 = temp_int/2 - 2*halo_int ! shaving off any halo points from edges
    164 
    165 err = nf90_inq_dimid(ncid_in,'ny',dimid)
    166 call netcdf_err(err, 'reading ny id')
    167 err = nf90_inquire_dimension(ncid_in,dimid,len=temp_int)
    168 call netcdf_err(err, 'reading ny value')
    169 dimy_fv3 = temp_int/2 - 2*halo_int ! shaving off any halo points from edges
    170 
    171 print *, "dimX_FV3 =", dimx_fv3 ! number of model cells in x-direction
    172 print *, "dimY_FV3 =", dimy_fv3 ! number of model cells in y-direction
    173 print *
    174 
    175 ! Read in lat/lon (in degrees)
    176 allocate (lat_fv3_raw((2*dimx_fv3+1),(2*dimy_fv3+1)))
    177 err = nf90_inq_varid(ncid_in,'y',varid)
    178 call netcdf_err(err, 'reading y id')
    179 err = nf90_get_var(ncid_in,varid,lat_fv3_raw, &
    180  start=(/1+2*halo_int,1+2*halo_int/), &
    181  count=(/2*dimx_fv3+1,2*dimy_fv3+1/))
    182 call netcdf_err(err, 'reading y')
    183 
    184 allocate (lon_fv3_raw((2*dimx_fv3+1),(2*dimy_fv3+1)))
    185 err = nf90_inq_varid(ncid_in,'x',varid)
    186 call netcdf_err(err, 'reading x id')
    187 err = nf90_get_var(ncid_in,varid,lon_fv3_raw, &
    188  start=(/1+2*halo_int,1+2*halo_int/), &
    189  count=(/2*dimx_fv3+1,2*dimy_fv3+1/))
    190 call netcdf_err(err, 'reading x')
    191 
    192 ! Read in quarter grid-cell areas
    193 allocate (area_fv3_qtr((2*dimx_fv3),(2*dimy_fv3)))
    194 err = nf90_inq_varid(ncid_in,'area',varid)
    195 call netcdf_err(err, 'reading area id')
    196 err = nf90_get_var(ncid_in,varid,area_fv3_qtr, &
    197  start=(/1+2*halo_int,1+2*halo_int/), &
    198  count=(/2*dimx_fv3,2*dimy_fv3/))
    199 call netcdf_err(err, 'reading area')
    200 
    201 ! Calculate lat/lon at mass points (cell-centers)
    202 ! Stride by 2 starting with 2nd point
    203 ! NOTE: "Converting" from dbl_kind to real_kind
    204 allocate (lat_fv3(dimx_fv3,dimy_fv3))
    205 allocate (lon_fv3(dimx_fv3,dimy_fv3))
    206 allocate (lat_fv3_deg(dimx_fv3,dimy_fv3))
    207 allocate (lon_fv3_deg(dimx_fv3,dimy_fv3))
    208 do j = 1,dimy_fv3
    209  do i = 1,dimx_fv3
    210  lat_fv3(i,j) = lat_fv3_raw(2*i,2*j)
    211  lon_fv3(i,j) = lon_fv3_raw(2*i,2*j)
    212  end do
    213 end do
    214 lat_fv3_deg(:,:) = lat_fv3(:,:)
    215 lon_fv3_deg(:,:) = lon_fv3(:,:)
    216 deallocate(lat_fv3_raw)
    217 deallocate(lon_fv3_raw)
    218 
    219 ! Convert lat/lon to radians
    220 lat_fv3 = lat_fv3*pi/180._real_kind
    221 lon_fv3 = lon_fv3*pi/180._real_kind
    222 
    223 ! Create full grid-cell areas (4 raw areas per grid cell area)
    224 ! NOTE: "Converting" from dbl_kind to real_kind
    225 allocate(area_fv3(dimx_fv3,dimy_fv3))
    226 do j = 1,dimy_fv3
    227  do i = 1,dimx_fv3
    228  area_fv3(i,j) = area_fv3_qtr(2*i-1,2*j-1) + area_fv3_qtr(2*i-1,2*j) + &
    229  area_fv3_qtr(2*i,2*j-1) + area_fv3_qtr(2*i,2*j)
    230  end do
    231 end do
    232 deallocate(area_fv3_qtr)
    233 
    234 err = nf90_close(ncid_in)
    235 
    236 
    237 
    238 ! Open file containing 2.5min topo data (fine grid)
    239 fine_topo_source_file_name = "geo_em.d01.lat-lon.2.5m.HGT_M.nc"
    240 ! Check that input file exists -- exit with error message if not
    241 inquire(file=fine_topo_source_file_name,exist=fexist)
    242 if (.not.fexist) then
    243  print *
    244  print *, "Fatal error: Topo source file "// &
    245  trim(fine_topo_source_file_name)//" does not exist"
    246  print *, "Exiting program gsl_oro_data.f90"
    247  print *
    248  call exit(4)
    249 end if
    250 err = nf90_open(trim(fine_topo_source_file_name),nf90_nowrite,ncid_in)
    251 call netcdf_err(err, 'opening: '//trim(fine_topo_source_file_name))
    252 
    253 ! Get dimensions
    254 err = nf90_inq_dimid(ncid_in,'west_east',dimid)
    255 call netcdf_err(err, 'reading west_east id')
    256 err = nf90_inquire_dimension(ncid_in,dimid,len=dimx_fine)
    257 call netcdf_err(err, 'reading west_east value')
    258 
    259 err = nf90_inq_dimid(ncid_in,'south_north',dimid)
    260 call netcdf_err(err, 'reading south_north id')
    261 err = nf90_inquire_dimension(ncid_in,dimid,len=dimy_fine)
    262 call netcdf_err(err, 'reading south_north value')
    263 
    264 print *, "Source file for high-resolution topography: ", &
    265  trim(fine_topo_source_file_name)
    266 print *, "dimX_fine =", dimx_fine
    267 print *, "dimY_fine =", dimy_fine
    268 print *
    269 
    270 
    271 ! Read in lat/lon of fine grid
    272 allocate(lat1d_fine(dimy_fine))
    273 allocate(lon1d_fine(dimx_fine))
    274 err = nf90_inq_varid(ncid_in,'CLAT',varid)
    275 call netcdf_err(err, 'reading CLAT id')
    276 err = nf90_get_var(ncid_in,varid,lat1d_fine,start=(/1,1/), &
    277  count=(/1,dimy_fine/))
    278 call netcdf_err(err, 'reading CLAT')
    279 
    280 err = nf90_inq_varid(ncid_in,'CLONG',varid)
    281 call netcdf_err(err, 'reading CLONG id')
    282 err = nf90_get_var(ncid_in,varid,lon1d_fine,start=(/1,1/), &
    283  count=(/dimx_fine,1/))
    284 call netcdf_err(err, 'reading CLONG')
    285 
    286 ! Convert lat/lon to radians
    287 lat1d_fine = lat1d_fine*pi/180._real_kind
    288 lon1d_fine = lon1d_fine*pi/180._real_kind
    289 
    290 
    291 ! Reassign FV3 longitude to vary from -pi to pi to match lon1d_fine range
    292 do j = 1,dimy_fv3
    293  do i = 1,dimx_fv3
    294  if ( lon_fv3(i,j).gt.pi ) then
    295  lon_fv3(i,j) = lon_fv3(i,j) - 2*pi
    296  end if
    297  end do
    298 end do
    299 
    300 
    301 ! Read in fine-scale topography
    302 allocate(hgt_m_fine(dimx_fine,dimy_fine))
    303 err = nf90_inq_varid(ncid_in,'HGT_M',varid)
    304 call netcdf_err(err, 'reading HGT_M id')
    305 err = nf90_get_var(ncid_in,varid,hgt_m_fine,start=(/1,1/), &
    306  count=(/dimx_fine,dimy_fine/))
    307 call netcdf_err(err, 'reading HGT_M')
    308 
    309 
    310 err = nf90_close(ncid_in)
    311 
    312 
    313 ! Allocate GWD statistics fields
    314 allocate (std_dev(dimx_fv3*dimy_fv3))
    315 allocate (convexity(dimx_fv3*dimy_fv3))
    316 allocate (oa1(dimx_fv3*dimy_fv3))
    317 allocate (oa2(dimx_fv3*dimy_fv3))
    318 allocate (oa3(dimx_fv3*dimy_fv3))
    319 allocate (oa4(dimx_fv3*dimy_fv3))
    320 allocate (ol1(dimx_fv3*dimy_fv3))
    321 allocate (ol2(dimx_fv3*dimy_fv3))
    322 allocate (ol3(dimx_fv3*dimy_fv3))
    323 allocate (ol4(dimx_fv3*dimy_fv3))
    324 
    325 ! Initialize GWD statistics fields
    326 std_dev(:) = 0._real_kind
    327 convexity(:) = 0._real_kind
    328 oa1(:) = 0._real_kind
    329 oa2(:) = 0._real_kind
    330 oa3(:) = 0._real_kind
    331 oa4(:) = 0._real_kind
    332 ol1(:) = 0._real_kind
    333 ol2(:) = 0._real_kind
    334 ol3(:) = 0._real_kind
    335 ol4(:) = 0._real_kind
    336 
    337 
    338 
    339 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    340 ! This is a loop over all the FV3 (coarse) grid cells
    341 ! The subgrid-scale topographic variables needed for the large-scale
    342 ! orographic gravity wave drag schemes are calculated by the following steps:
    343 ! 1) Sample the fine-scale (2.5min) topography contained within each
    344 ! coarse grid cell.
    345 ! 2) Detrend the topography by subtracting a bilinear-interpolated height field
    346 ! from the fine-scale height field (if detrend_topography = .true.),
    347 ! otherwise actual fine-scale height field is used to calculate statistics
    348 ! 3) Calculate the orographic statistics: stddev,convexity,oa1,...oa4,
    349 ! ol1,...,ol4
    350 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    351 
    352 cell_count = 1
    353 
    354 do j = 1,dimy_fv3
    355  do i = 1,dimx_fv3
    356 
    357  ! Calculate approximate side-lengths of square lat-long "coarse" grid
    358  ! cell centered on FV3 cell (units = radians)
    359  dlta_lat = sqrt(area_fv3(i,j))/ae
    360  dlta_lon = sqrt(area_fv3(i,j))/(ae*cos(lat_fv3(i,j)))
    361 
    362  ! Determine lat/lon of 9 lat-lon block centers
    363  ! Note: lat_blk(2)/lon_blk(2) = lat_FV3(i,j)/lon_FV3(i,j)
    364  ! Note: abs(lon_blk) may exceed pi
    365  do i_blk = 1,3
    366  lon_blk(i_blk) = lon_fv3(i,j) + (i_blk-2)*dlta_lon
    367  end do
    368  ! Note: abs(lat_blk) may exceed pi/2 (90 degrees)
    369  do j_blk = 1,3
    370  lat_blk(j_blk) = lat_fv3(i,j) + (j_blk-2)*dlta_lat
    371  end do
    372 
    373  ! Find starting and ending fine-grid i,j indices for each
    374  ! of the 9 "coarse-grid" blocks
    375  ! Note: Index value of -999 is returned if latitude of grid points
    376  ! exceed 90 degrees north or south
    377  do i_blk = 1,3
    378  s_ii(i_blk) = nearest_i_east(lon_blk(i_blk)-p5*dlta_lon)
    379  e_ii(i_blk) = nearest_i_west(lon_blk(i_blk)+p5*dlta_lon)
    380  end do
    381  do j_blk = 1,3
    382  s_jj(j_blk) = nearest_j_north(lat_blk(j_blk)-p5*dlta_lat)
    383  e_jj(j_blk) = nearest_j_south(lat_blk(j_blk)+p5*dlta_lat)
    384  end do
    385 
    386 
    387  ! Calculate mean topographic height in each "coarse grid" block
    388  ! Note: We only do the mean-height calculation if we are detrending
    389  ! the subgrid topography, otherwise, we still need the
    390  ! fine-grid indices for the block limits -- s_ii, etc.
    391  do i_blk = 1,3
    392 
    393  ! "Shave" blocks on north or south due to proximity to poles
    394  ! if necessary
    395  j_blk = 1 ! southern row
    396  ! Check for "shaved" block due to proximity to south pole
    397  if ( (s_jj(j_blk).eq.-999).and.(e_jj(j_blk).ne.-999) ) then
    398  s_jj(j_blk) = 1 ! southern boundary of shaved block
    399  ! Reassign latitude of block center
    400  lat_blk(j_blk) = p5*(lat1d_fine(1)+lat1d_fine(e_jj(j_blk)))
    401  end if
    402 
    403  j_blk = 2 ! center row
    404  ! Check for "shaved" block due to proximity to south or north pole
    405  ! Note: We're assuming e_jj(2) and s_jj(2) can't both be -999
    406  if ( s_jj(j_blk).eq.-999 ) then
    407  s_jj(j_blk) = 1 ! block shaved on the south
    408  ! Reassign latitude of block center
    409  lat_blk(j_blk) = p5*(lat1d_fine(1)+lat1d_fine(e_jj(j_blk)))
    410  end if
    411  if ( e_jj(j_blk).eq.-999 ) then
    412  e_jj(j_blk) = dimy_fine ! block shaved on the north
    413  ! Reassign latitude of block center
    414  lat_blk(j_blk) = p5*(lat1d_fine(s_jj(j_blk))+lat1d_fine(dimy_fine))
    415  end if
    416 
    417  j_blk = 3 ! northern row
    418  ! Check for "shaved" block due to proximity to north pole
    419  if ( (e_jj(j_blk).eq.-999).and.(s_jj(j_blk).ne.-999) ) then
    420  e_jj(j_blk) = dimy_fine ! northern boundary of shaved block
    421  ! Reassign latitude of block center
    422  lat_blk(j_blk) = p5*(lat1d_fine(s_jj(j_blk))+lat1d_fine(dimy_fine))
    423  end if
    424 
    425  if ( detrend_topography ) then
    426  do j_blk = 1,3
    427  call calc_mean_hgt(s_ii(i_blk),e_ii(i_blk), &
    428  s_jj(j_blk),e_jj(j_blk),hgt_m_coarse(i_blk,j_blk))
    429  ! Note: If there is no block because s_jj and e_jj are
    430  ! both -999 HGT_M_coarse returns with a "missing"
    431  ! value of HGT_missing = 1.E+10
    432  end do
    433  end if
    434 
    435  end do
    436 
    437 
    438  ! Calculate number of fine-grid points within center coarse block (2,2)
    439  ! Check if center block straddles date line
    440  if ( s_ii(2).gt.e_ii(2) ) then
    441  ii_m = dimx_fine - s_ii(2) + 1 + e_ii(2)
    442  else
    443  ii_m = e_ii(2) - s_ii(2) + 1
    444  end if
    445  jj_m = e_jj(2) - s_jj(2) + 1
    446 
    447 
    448  ! Bilinearly interpolate coarse-grid topography of the 9 blocks to
    449  ! fine grid for the purpose of detrending the fine-grid topography
    450  ! to represent the sub-grid topography
    451  ! Note: The detrending only occurs within the center coarse block (2,2)
    452  if ( detrend_topography ) then
    453 
    454  ! i,j indices of HGT_M_coarse_on_fine range from 1,ii_m and 1,jj_m
    455  ! i.e., a "local" index system
    456  allocate (hgt_m_coarse_on_fine(ii_m,jj_m))
    457 
    458  do jj = s_jj(2), e_jj(2)
    459  jj_loc = jj - s_jj(2) + 1 ! local j-index (1 ... jj_m)
    460  ! Check if block straddles the date line
    461  if ( s_ii(2).gt.e_ii(2) ) then
    462  do ii = s_ii(2), dimx_fine ! west of the date line
    463  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    464  call hgt_interpolate(lat1d_fine(jj),lon1d_fine(ii), &
    465  lat_blk(:),lon_blk(:),hgt_m_coarse(:,:), &
    466  hgt_m_coarse_on_fine(ii_loc,jj_loc))
    467  end do
    468  do ii = 1, e_ii(2) ! east of the date line
    469  ii_loc = ii_loc + 1 ! local i-index ( 1 ... ii_m )
    470  call hgt_interpolate(lat1d_fine(jj),lon1d_fine(ii), &
    471  lat_blk(:),lon_blk(:),hgt_m_coarse(:,:), &
    472  hgt_m_coarse_on_fine(ii_loc,jj_loc))
    473  end do
    474  else ! no crossing of the date line
    475  do ii = s_ii(2), e_ii(2)
    476  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    477  call hgt_interpolate(lat1d_fine(jj),lon1d_fine(ii), &
    478  lat_blk(:),lon_blk(:),hgt_m_coarse(:,:), &
    479  hgt_m_coarse_on_fine(ii_loc,jj_loc))
    480  end do
    481  end if
    482  end do
    483 
    484  end if
    485 
    486 
    487  ! Assign values to "zs", which is the fine-grid surface topography field
    488  ! that we will calculate statistics on, i.e, stddev, convexity, etc.
    489  ! This will either be the detrended values (detrend_topography = .true.)
    490  ! or the actual values (detrend_topography = .false.)
    491  allocate (zs(ii_m,jj_m))
    492 
    493  do jj = s_jj(2), e_jj(2)
    494  jj_loc = jj - s_jj(2) + 1 ! local j-index (1 ... jj_m)
    495  ! Check if block straddles the date line
    496  if ( s_ii(2).gt.e_ii(2) ) then
    497  do ii = s_ii(2), dimx_fine ! west of the date line
    498  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    499  if ( detrend_topography ) then
    500  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj) - &
    501  hgt_m_coarse_on_fine(ii_loc,jj_loc)
    502  else
    503  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    504  end if
    505  end do
    506  do ii = 1, e_ii(2) ! east of the date line
    507  ii_loc = ii_loc + 1 ! local i-index ( 1 ... ii_m )
    508  if ( detrend_topography ) then
    509  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj) - &
    510  hgt_m_coarse_on_fine(ii_loc,jj_loc)
    511  else
    512  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    513  end if
    514  end do
    515  else ! no crossing of the date line
    516  do ii = s_ii(2), e_ii(2)
    517  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    518  if ( detrend_topography ) then
    519  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj) - &
    520  hgt_m_coarse_on_fine(ii_loc,jj_loc)
    521  else
    522  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    523  end if
    524  end do
    525  end if
    526  end do
    527 
    528 
    529 
    530  !
    531  ! Finally, we can now calculate the topographic statistics fields needed
    532  ! for the gravity wave drag scheme
    533  !
    534 
    535  ! Make sure statistics are zero if there is no terrain in the grid cell
    536  zs_accum = .false.
    537  do jj = 1,jj_m
    538  do ii = 1,ii_m
    539  if ( abs(zs(ii,jj)).gt.1.e-3 ) zs_accum = .true.
    540  end do
    541  end do
    542  if ( .not.zs_accum ) then ! no terrain in the grid cell
    543  std_dev(cell_count) = 0._real_kind
    544  convexity(cell_count) = 0._real_kind
    545  oa1(cell_count) = 0._real_kind
    546  oa2(cell_count) = 0._real_kind
    547  oa3(cell_count) = 0._real_kind
    548  oa4(cell_count) = 0._real_kind
    549  ol1(cell_count) = 0._real_kind
    550  ol2(cell_count) = 0._real_kind
    551  ol3(cell_count) = 0._real_kind
    552  ol4(cell_count) = 0._real_kind
    553  if ( detrend_topography ) deallocate (hgt_m_coarse_on_fine)
    554  deallocate(zs)
    555  cell_count = cell_count + 1
    556  cycle ! move on to next (coarse) grid cell
    557  end if
    558 
    559 
    560  !
    561  ! Calculate standard deviation of subgrid-scale terrain height
    562  !
    563 
    564  ! Calculate mean height
    565  sum2 = 0._real_kind
    566  nfinepoints = ii_m*jj_m
    567  do jj = 1,jj_m
    568  do ii = 1,ii_m
    569  sum2 = sum2 + zs(ii,jj)
    570  end do
    571  end do
    572  zs_mean = sum2 / real(nfinepoints,real_kind)
    573 
    574  ! Calculate standard deviation
    575  sum2 = 0._real_kind
    576  do jj = 1,jj_m
    577  do ii = 1,ii_m
    578  sum2 = sum2 + ( zs(ii,jj) - zs_mean )**2
    579  end do
    580  end do
    581  std_dev(cell_count) = sqrt( sum2/real(nfinepoints,real_kind) )
    582 
    583 
    584  !
    585  ! Calculate convexity of sub-grid-scale terrain
    586  !
    587 
    588  sum2 = 0._real_kind
    589  sum4 = 0._real_kind
    590  do jj = 1,jj_m
    591  do ii = 1,ii_m
    592  sum2 = sum2 + ( zs(ii,jj) - zs_mean )**2
    593  sum4 = sum4 + ( zs(ii,jj) - zs_mean )**4
    594  end do
    595  end do
    596 
    597  var = sum2 / real(nfinepoints,real_kind)
    598  if ( abs(var) < 1.0e-05_real_kind ) then
    599  convexity(cell_count) = 0._real_kind
    600  else
    601  convexity(cell_count) = min( sum4 / ( var**2 * &
    602  real(nfinepoints,real_kind) ), max_convexity )
    603  end if
    604 
    605 
    606  !
    607  ! Calculate orographic asymmetries
    608  !
    609 
    610  ! OA1 -- orographic asymmetry in West direction
    611  nu = 0
    612  nd = 0
    613  do jj = 1,jj_m
    614  if(mod(ii_m,2).eq.0.) then
    615  do ii = 1,ii_m/2 ! left half of box
    616  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    617  end do
    618  else
    619  do ii = 1,ii_m/2+1 ! left half of box
    620  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    621  end do
    622  endif
    623  do ii = ii_m/2 + 1, ii_m ! right half of box
    624  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    625  end do
    626  end do
    627  if ( nu + nd > 0 ) then
    628  oa1(cell_count) = real((nu - nd),real_kind) / &
    629  real((nu + nd),real_kind)
    630  else
    631  oa1(cell_count) = 0._real_kind
    632  end if
    633 
    634  ! OA2 -- orographic asymmetry in South direction
    635  nu = 0
    636  nd = 0
    637  if(mod(jj_m,2).eq.0.) then
    638  do jj = 1,jj_m/2 ! bottom half of box
    639  do ii = 1,ii_m
    640  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    641  end do
    642  end do
    643  else
    644  do jj = 1,jj_m/2+1 ! bottom half of box
    645  do ii = 1,ii_m
    646  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    647  end do
    648  end do
    649  endif
    650  do jj = jj_m/2 + 1,jj_m ! top half of box
    651  do ii = 1, ii_m
    652  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    653  end do
    654  end do
    655  if ( nu + nd > 0 ) then
    656  oa2(cell_count) = real((nu - nd),real_kind) / &
    657  real((nu + nd),real_kind)
    658  else
    659  oa2(cell_count) = 0._real_kind
    660  end if
    661 
    662  ! OA3 -- orographic asymmetry in South-West direction
    663  nu = 0
    664  nd = 0
    665  ratio = real(jj_m,real_kind)/real(ii_m,real_kind)
    666  do jj = 1,jj_m
    667  do ii = 1,ii_m
    668  if ( nint(real(ii,real_kind)*ratio) <= (jj_m - jj + 1) ) then
    669  ! south-west half of box
    670  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    671  endif
    672  if ( nint(real(ii,real_kind)*ratio) >= (jj_m - jj + 1) ) then
    673  ! north-east half of box
    674  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    675  end if
    676  end do
    677  end do
    678  if ( nu + nd > 0 ) then
    679  oa3(cell_count) = real((nu - nd),real_kind) / &
    680  real((nu + nd),real_kind)
    681  else
    682  oa3(cell_count) = 0._real_kind
    683  end if
    684 
    685  ! OA4 -- orographic asymmetry in North-West direction
    686  nu = 0
    687  nd = 0
    688  ratio = real(jj_m,real_kind)/real(ii_m,real_kind)
    689  do jj = 1,jj_m
    690  do ii = 1,ii_m
    691  if ( nint(real(ii,real_kind)*ratio) <= jj ) then
    692  ! north-west half of box
    693  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    694  end if
    695  if ( nint(real(ii,real_kind)*ratio) >= jj ) then
    696  ! south-east half of box
    697  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    698  end if
    699  end do
    700  end do
    701  if ( nu + nd > 0 ) then
    702  oa4(cell_count) = real((nu - nd),real_kind) / &
    703  real((nu + nd),real_kind)
    704  else
    705  oa4(cell_count) = 0._real_kind
    706  end if
    707 
    708 
    709  !
    710  ! Calculate orographic effective lengths
    711  !
    712 
    713  ! OL1 -- orographic effective length for Westerly flow
    714  nw = 0
    715  nt = 0
    716  do jj = max(jj_m/4,1), 3*jj_m/4
    717  ! within central east-west band of box
    718  do ii = 1, ii_m
    719  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    720  nt = nt + 1
    721  end do
    722  end do
    723  if ( nt /= 0 ) then
    724  ol1(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    725  else
    726  ol1(cell_count) = 0._real_kind
    727  end if
    728 
    729  ! OL2 -- orographic effective length for Southerly flow
    730  nw = 0
    731  nt = 0
    732  do jj = 1, jj_m
    733  do ii = max(ii_m/4,1), 3*ii_m/4
    734  ! within central north-south band of box
    735  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    736  nt = nt + 1
    737  end do
    738  end do
    739  if ( nt /= 0 ) then
    740  ol2(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    741  else
    742  ol2(cell_count) = 0._real_kind
    743  end if
    744 
    745  ! OL3 -- orographic effective length for South-Westerly flow
    746  nw = 0
    747  nt = 0
    748  do jj = 1, jj_m/2
    749  do ii = 1, ii_m/2
    750  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    751  nt = nt + 1
    752  end do
    753  end do
    754  do jj = jj_m/2+1, jj_m
    755  do ii = ii_m/2+1, ii_m
    756  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    757  nt = nt + 1
    758  end do
    759  end do
    760  if ( nt /= 0 ) then
    761  ol3(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    762  else
    763  ol3(cell_count) = 0._real_kind
    764  end if
    765 
    766  ! OL4 -- orographic effective length for North-Westerly flow
    767  nw = 0
    768  nt = 0
    769  do jj = jj_m/2+1, jj_m
    770  do ii = 1, ii_m/2
    771  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    772  nt = nt + 1
    773  end do
    774  end do
    775  do jj = 1, jj_m/2
    776  do ii = ii_m/2+1, ii_m
    777  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    778  nt = nt + 1
    779  end do
    780  end do
    781  if ( nt /= 0 ) then
    782  ol4(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    783  else
    784  ol4(cell_count) = 0._real_kind
    785  end if
    786 
    787 
    788 
    789  if ( detrend_topography ) deallocate (hgt_m_coarse_on_fine)
    790  deallocate (zs)
    791 
    792  cell_count = cell_count + 1
    793 
    794  end do ! j = 1,dimY_FV3
    795 end do ! i = 1,dimX_FV3
    796 
    797 
    798 
    799 !
    800 ! Output GWD statistics fields to netCDF file
    801 !
    802 
    803 
    804 if ( halo.eq."-999" ) then ! global or nested tile
    805  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ls.tile" &
    806  // trim(tile_num) // ".nc"
    807 else ! stand-alone regional tile
    808  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ls.tile" &
    809  // trim(tile_num) // ".halo0.nc"
    810 end if
    811 
    812 ! Open netCDF file for output
    813 err = nf90_create(oro_data_output_file_name, nf90_clobber, ncid_out)
    814 call netcdf_err(err, 'creating: '//oro_data_output_file_name)
    815 
    816 err = nf90_redef(ncid_out)
    817 
    818 ! Define dimensions
    819 err = nf90_def_dim(ncid_out,'lon',dimx_fv3,lonid)
    820 call netcdf_err(err, 'defining lon dimension')
    821 err = nf90_def_dim(ncid_out,'lat',dimy_fv3,latid)
    822 call netcdf_err(err, 'defining lat dimension')
    823 
    824 ! Define the 'dimensions vector' dimids to be used for writing
    825 ! the 2-dimensional variables to the netCDF file
    826 dimids(1) = lonid
    827 dimids(2) = latid
    828 
    829 ! Define variables and attributes to put in the netCDF file
    830 err = nf90_def_var(ncid_out,'geolon',nf90_float,dimids,varid)
    831 call netcdf_err(err, 'defining geolon')
    832 err = nf90_put_att(ncid_out,varid,'units','degrees')
    833 err = nf90_put_att(ncid_out,varid,'description','longitude')
    834 err = nf90_def_var(ncid_out,'geolat',nf90_float,dimids,varid)
    835 call netcdf_err(err, 'defining geolat')
    836 err = nf90_put_att(ncid_out,varid,'units','degrees')
    837 err = nf90_put_att(ncid_out,varid,'description','latitude')
    838 err = nf90_def_var(ncid_out,'stddev',nf90_float,dimids,varid)
    839 call netcdf_err(err, 'stddev')
    840 err = nf90_put_att(ncid_out,varid,'units','meters')
    841 err = nf90_put_att(ncid_out,varid,'description', &
    842  'standard deviation of subgrid topography')
    843 err = nf90_def_var(ncid_out,'convexity',nf90_float,dimids,varid)
    844 call netcdf_err(err, 'defining convexity')
    845 err = nf90_put_att(ncid_out,varid,'units','-')
    846 err = nf90_put_att(ncid_out,varid,'description', &
    847  'convexity of subgrid topography')
    848 err = nf90_def_var(ncid_out,'oa1',nf90_float,dimids,varid)
    849 call netcdf_err(err, 'defining oa1')
    850 err = nf90_put_att(ncid_out,varid,'units','-')
    851 err = nf90_put_att(ncid_out,varid,'description', &
    852  'orographic asymmetry in west direction')
    853 err = nf90_def_var(ncid_out,'oa2',nf90_float,dimids,varid)
    854 call netcdf_err(err, 'defining oa2')
    855 err = nf90_put_att(ncid_out,varid,'units','-')
    856 err = nf90_put_att(ncid_out,varid,'description', &
    857  'orographic asymmetry in south direction')
    858 err = nf90_def_var(ncid_out,'oa3',nf90_float,dimids,varid)
    859 call netcdf_err(err, 'defining oa3')
    860 err = nf90_put_att(ncid_out,varid,'units','-')
    861 err = nf90_put_att(ncid_out,varid,'description', &
    862  'orographic asymmetry in south-west direction')
    863 err = nf90_def_var(ncid_out,'oa4',nf90_float,dimids,varid)
    864 call netcdf_err(err, 'defining oa4')
    865 err = nf90_put_att(ncid_out,varid,'units','-')
    866 err = nf90_put_att(ncid_out,varid,'description', &
    867  'orographic asymmetry in north-west direction')
    868 err = nf90_def_var(ncid_out,'ol1',nf90_float,dimids,varid)
    869 call netcdf_err(err, 'defining ol1')
    870 err = nf90_put_att(ncid_out,varid,'units','-')
    871 err = nf90_put_att(ncid_out,varid,'description', &
    872  'orographic effective length for westerly flow')
    873 err = nf90_def_var(ncid_out,'ol2',nf90_float,dimids,varid)
    874 call netcdf_err(err, 'defining ol2')
    875 err = nf90_put_att(ncid_out,varid,'units','-')
    876 err = nf90_put_att(ncid_out,varid,'description', &
    877  'orographic effective length for southerly flow')
    878 err = nf90_def_var(ncid_out,'ol3',nf90_float,dimids,varid)
    879 call netcdf_err(err, 'defining ol3')
    880 err = nf90_put_att(ncid_out,varid,'units','-')
    881 err = nf90_put_att(ncid_out,varid,'description', &
    882  'orographic effective length for south-westerly flow')
    883 err = nf90_def_var(ncid_out,'ol4',nf90_float,dimids,varid)
    884 call netcdf_err(err, 'defining ol4')
    885 err = nf90_put_att(ncid_out,varid,'units','-')
    886 err = nf90_put_att(ncid_out,varid,'description', &
    887  'orographic effective length for north-westerly flow')
    888 
    889 ! Add global attributes
    890 err = nf90_put_att(ncid_out,nf90_global, &
    891  'source_file_for_high-resolution_topography', &
    892  trim(fine_topo_source_file_name))
    893 if ( detrend_topography ) then
    894  err = nf90_put_att(ncid_out,nf90_global, &
    895  'high-res_topography_detrended','.TRUE.')
    896 else
    897  err = nf90_put_att(ncid_out,nf90_global, &
    898  'high-res_topography_detrended','.FALSE.')
    899 end if
    900 
    901 err = nf90_enddef(ncid_out)
    902 
    903 
    904 ! Write data to output netCDF file
    905 err = nf90_inq_varid(ncid_out,'geolon',varid)
    906 call netcdf_err(err, 'reading geolon id')
    907 err = nf90_put_var(ncid_out,varid,lon_fv3_deg,start=(/1,1/), &
    908  count=(/dimx_fv3,dimy_fv3/))
    909 call netcdf_err(err, 'writing geolon')
    910 err = nf90_inq_varid(ncid_out,'geolat',varid)
    911 call netcdf_err(err, 'reading geolat id')
    912 err = nf90_put_var(ncid_out,varid,lat_fv3_deg,start=(/1,1/), &
    913  count=(/dimx_fv3,dimy_fv3/))
    914 call netcdf_err(err, 'writing geolat')
    915 err = nf90_inq_varid(ncid_out,'stddev',varid)
    916 call netcdf_err(err, 'reading stddev id')
    917 err = nf90_put_var(ncid_out,varid,std_dev,start=(/1,1/), &
    918  count=(/dimx_fv3,dimy_fv3/))
    919 call netcdf_err(err, 'writing stddev')
    920 err = nf90_inq_varid(ncid_out,'convexity',varid)
    921 call netcdf_err(err, 'reading convexity id')
    922 err = nf90_put_var(ncid_out,varid,convexity,start=(/1,1/), &
    923  count=(/dimx_fv3,dimy_fv3/))
    924 call netcdf_err(err, 'writing convexity')
    925 err = nf90_inq_varid(ncid_out,'oa1',varid)
    926 call netcdf_err(err, 'reading oa1 id')
    927 err = nf90_put_var(ncid_out,varid,oa1,start=(/1,1/), &
    928  count=(/dimx_fv3,dimy_fv3/))
    929 call netcdf_err(err, 'writing oa1')
    930 err = nf90_inq_varid(ncid_out,'oa2',varid)
    931 call netcdf_err(err, 'reading oa2 id')
    932 err = nf90_put_var(ncid_out,varid,oa2,start=(/1,1/), &
    933  count=(/dimx_fv3,dimy_fv3/))
    934 call netcdf_err(err, 'writing oa2')
    935 err = nf90_inq_varid(ncid_out,'oa3',varid)
    936 call netcdf_err(err, 'reading oa3 id')
    937 err = nf90_put_var(ncid_out,varid,oa3,start=(/1,1/), &
    938  count=(/dimx_fv3,dimy_fv3/))
    939 call netcdf_err(err, 'writing oa3')
    940 err = nf90_inq_varid(ncid_out,'oa4',varid)
    941 call netcdf_err(err, 'reading oa4 id')
    942 err = nf90_put_var(ncid_out,varid,oa4,start=(/1,1/), &
    943  count=(/dimx_fv3,dimy_fv3/))
    944 call netcdf_err(err, 'writing oa4')
    945 err = nf90_inq_varid(ncid_out,'ol1',varid)
    946 call netcdf_err(err, 'reading ol1 id')
    947 err = nf90_put_var(ncid_out,varid,ol1,start=(/1,1/), &
    948  count=(/dimx_fv3,dimy_fv3/))
    949 call netcdf_err(err, 'writing ol1')
    950 err = nf90_inq_varid(ncid_out,'ol2',varid)
    951 call netcdf_err(err, 'reading ol2 id')
    952 err = nf90_put_var(ncid_out,varid,ol2,start=(/1,1/), &
    953  count=(/dimx_fv3,dimy_fv3/))
    954 call netcdf_err(err, 'writing ol2')
    955 err = nf90_inq_varid(ncid_out,'ol3',varid)
    956 call netcdf_err(err, 'reading ol3 id')
    957 err = nf90_put_var(ncid_out,varid,ol3,start=(/1,1/), &
    958  count=(/dimx_fv3,dimy_fv3/))
    959 call netcdf_err(err, 'writing ol3')
    960 err = nf90_inq_varid(ncid_out,'ol4',varid)
    961 call netcdf_err(err, 'reading ol4 id')
    962 err = nf90_put_var(ncid_out,varid,ol4,start=(/1,1/), &
    963  count=(/dimx_fv3,dimy_fv3/))
    964 call netcdf_err(err, 'writing ol4')
    965 
    966 err = nf90_close(ncid_out)
    967 
    968 
    969 
    970 ! Deallocate arrays
    971 deallocate(lat_fv3)
    972 deallocate(lon_fv3)
    973 deallocate(lat_fv3_deg)
    974 deallocate(lon_fv3_deg)
    975 deallocate(area_fv3)
    976 deallocate(lat1d_fine)
    977 deallocate(lon1d_fine)
    978 deallocate(hgt_m_fine)
    979 deallocate(std_dev)
    980 deallocate(convexity)
    981 deallocate(oa1)
    982 deallocate(oa2)
    983 deallocate(oa3)
    984 deallocate(oa4)
    985 deallocate(ol1)
    986 deallocate(ol2)
    987 deallocate(ol3)
    988 deallocate(ol4)
    989 
    990 end subroutine calc_gsl_oro_data_lg_scale
    991 
    1000 subroutine calc_mean_hgt(s_ii,e_ii,s_jj,e_jj,HGT)
    1002 ! This subroutine calculates the average terrain height within
    1003 ! coarse grid cell ("block")
    1004 
    1005 implicit none
    1006 
    1007 integer :: s_ii, & ! starting fine-grid i-index
    1008  e_ii, & ! ending fine-grid i-index
    1009  s_jj, & ! starting fine-grid j-index
    1010  e_jj ! ending fine-grid j-index
    1011 real (kind=real_kind), intent(out) :: HGT
    1012 
    1013 ! Local variables
    1014 integer :: i,j,grid_pt_count
    1015 real (kind=real_kind) :: HGT_sum
    1016 
    1017 
    1018 ! Return a value of 0 if s_jj and e_jj are both -999,
    1019 ! i.e., if there is no block adjoining the center row
    1020 ! due to proximity to one of the poles
    1021 ! Note: The HGT value of the block will be ignored
    1022 if ( (s_jj.eq.-999).and.(e_jj.eq.-999) ) then
    1023  hgt = hgt_missing
    1024  return
    1025 end if
    1026 
    1027 grid_pt_count = 0
    1028 hgt_sum = 0._real_kind
    1029 do j = s_jj, e_jj
    1030  ! Note: If the grid block straddles the date line, then s_ii > e_ii
    1031  ! We need to correct for this
    1032  if ( s_ii.gt.e_ii ) then ! straddling the date line
    1033  do i = s_ii, dimx_fine ! west of the date line
    1034  hgt_sum = hgt_sum + hgt_m_fine(i,j)
    1035  grid_pt_count = grid_pt_count + 1
    1036  end do
    1037  do i = 1, e_ii ! east of the date line
    1038  hgt_sum = hgt_sum + hgt_m_fine(i,j)
    1039  grid_pt_count = grid_pt_count + 1
    1040  end do
    1041  else ! no crossing of the date line
    1042  do i = s_ii, e_ii
    1043  hgt_sum = hgt_sum + hgt_m_fine(i,j)
    1044  grid_pt_count = grid_pt_count + 1
    1045  end do
    1046  end if
    1047 end do
    1048 hgt = hgt_sum/grid_pt_count
    1049 
    1050 end subroutine calc_mean_hgt
    1051 
    1061 subroutine hgt_interpolate(lat,lon_in,lat_blk,lon_blk,HGT_coarse, &
    1062  HGT_coarse_on_fine)
    1064 ! This subroutine bilinearly interpolates neighboring coarse-grid terrain
    1065 ! heights (HGT_coarse) to fine-grid points (HGT_coarse_on_fine)
    1066 ! (extrapolates in the case near poles)
    1067 ! Note: Bilinear interpolation is done by calling a 1D interpolation
    1068 ! function of a 1D interpolation function
    1069 
    1070 implicit none
    1071 
    1072 real (kind = real_kind), intent(in) :: &
    1073  lat, & ! latitude of fine grid point
    1074  lon_in ! longitude of fine grid point
    1075 real (kind = real_kind), dimension(3),intent(in) :: &
    1076  lat_blk, & ! latitudes of neighboring coarse grid points
    1077  lon_blk ! longitudes of neighboring coarse grid points
    1078 real (kind = real_kind), dimension(3,3), intent(in) :: HGT_coarse
    1079 real (kind = real_kind), intent(out) :: HGT_coarse_on_fine
    1080 real (kind = real_kind) :: lon
    1081 
    1082 
    1083 lon = lon_in
    1084 ! We need to make sure that if we're straddling the date line, that
    1085 ! we remove the possible 2*pi discontinuity between lon and
    1086 ! {lon_blk(1),lon_blk(2),lon_blk(3)) for interpolation purposes
    1087 ! This will line the 4 longitudes up monotonically
    1088 if ( abs(lon_in-lon_blk(2)).gt.pi ) then ! discontinuity exists
    1089  if ( lon_in.gt.0. ) lon = lon - 2*pi ! lon_in lies west of date line
    1090  if ( lon_in.lt.0. ) lon = lon + 2*pi ! lon_in lies east of date line
    1091 end if
    1092 
    1093 
    1094 ! Check for need to extrapolate if top or bottom block rows
    1095 ! have height = HGT_missing
    1096 
    1097 ! Check for missing north row
    1098 if ( (hgt_coarse(1,3).eq.hgt_missing).or.(hgt_coarse(2,3).eq.hgt_missing) &
    1099  .or.(hgt_coarse(3,3).eq.hgt_missing) ) then
    1100 
    1101  ! Determine which quadrant of the coarse grid cell we are in
    1102  if ( (lat.ge.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant I
    1103  ! Extrapolate from lat_blk(1) and lat_blk(2)
    1104  hgt_coarse_on_fine = interp_1d( &
    1105  lon,lon_blk(2),lon_blk(3), &
    1106  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)), &
    1107  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(3,1),hgt_coarse(3,2)) )
    1108  elseif ( (lat.ge.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant II
    1109  ! Extrapolate from lat_blk(1) and lat_blk(2)
    1110  hgt_coarse_on_fine = interp_1d( &
    1111  lon,lon_blk(1),lon_blk(2), &
    1112  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(1,1),hgt_coarse(1,2)), &
    1113  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)) )
    1114  elseif ( (lat.lt.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant III
    1115  hgt_coarse_on_fine = interp_1d( &
    1116  lon,lon_blk(1),lon_blk(2), &
    1117  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(1,1),hgt_coarse(1,2)), &
    1118  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)) )
    1119  elseif ( (lat.lt.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant IV
    1120  hgt_coarse_on_fine = interp_1d( &
    1121  lon,lon_blk(2),lon_blk(3), &
    1122  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)), &
    1123  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(3,1),hgt_coarse(3,2)) )
    1124  end if
    1125 
    1126  return
    1127 end if
    1128 
    1129 ! Check for missing south row
    1130 if ( (hgt_coarse(1,1).eq.hgt_missing).or.(hgt_coarse(2,1).eq.hgt_missing) &
    1131  .or.(hgt_coarse(3,1).eq.hgt_missing) ) then
    1132 
    1133  ! Determine which quadrant of the coarse grid cell we are in
    1134  if ( (lat.ge.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant I
    1135  hgt_coarse_on_fine = interp_1d( &
    1136  lon,lon_blk(2),lon_blk(3), &
    1137  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)), &
    1138  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(3,2),hgt_coarse(3,3)) )
    1139  elseif ( (lat.ge.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant II
    1140  hgt_coarse_on_fine = interp_1d( &
    1141  lon,lon_blk(1),lon_blk(2), &
    1142  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(1,2),hgt_coarse(1,3)), &
    1143  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)) )
    1144  elseif ( (lat.lt.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant III
    1145  ! Extrapolate from lat_blk(2) and lat_blk(3)
    1146  hgt_coarse_on_fine = interp_1d( &
    1147  lon,lon_blk(1),lon_blk(2), &
    1148  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(1,2),hgt_coarse(1,3)), &
    1149  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)) )
    1150  elseif ( (lat.lt.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant IV
    1151  ! Extrapolate from lat_blk(2) and lat_blk(3)
    1152  hgt_coarse_on_fine = interp_1d( &
    1153  lon,lon_blk(2),lon_blk(3), &
    1154  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)), &
    1155  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(3,2),hgt_coarse(3,3)) )
    1156  end if
    1157 
    1158  return
    1159 end if
    1160 
    1161 ! Interpolation only
    1162 ! Determine which quadrant of the coarse grid cell we are in
    1163 if ( (lat.ge.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant I
    1164  hgt_coarse_on_fine = interp_1d( &
    1165  lon,lon_blk(2),lon_blk(3), &
    1166  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)), &
    1167  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(3,2),hgt_coarse(3,3)) )
    1168 elseif ( (lat.ge.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant II
    1169  hgt_coarse_on_fine = interp_1d( &
    1170  lon,lon_blk(1),lon_blk(2), &
    1171  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(1,2),hgt_coarse(1,3)), &
    1172  interp_1d(lat,lat_blk(2),lat_blk(3),hgt_coarse(2,2),hgt_coarse(2,3)) )
    1173 elseif ( (lat.lt.lat_blk(2)).and.(lon.lt.lon_blk(2)) ) then ! Quadrant III
    1174  hgt_coarse_on_fine = interp_1d( &
    1175  lon,lon_blk(1),lon_blk(2), &
    1176  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(1,1),hgt_coarse(1,2)), &
    1177  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)) )
    1178 elseif ( (lat.lt.lat_blk(2)).and.(lon.ge.lon_blk(2)) ) then ! Quadrant IV
    1179  hgt_coarse_on_fine = interp_1d( &
    1180  lon,lon_blk(2),lon_blk(3), &
    1181  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(2,1),hgt_coarse(2,2)), &
    1182  interp_1d(lat,lat_blk(1),lat_blk(2),hgt_coarse(3,1),hgt_coarse(3,2)) )
    1183 end if
    1184 
    1185 end subroutine hgt_interpolate
    1186 
    1192 function nearest_i_east(lon_in)
    1193 ! Calculates nearest fine-grid i index to the east of (or on) a given longitude
    1194 implicit none
    1195 
    1196 integer :: nearest_i_east
    1197 real (kind=real_kind), intent(in) :: lon_in
    1198 real (kind=real_kind) :: lon
    1199 integer :: i
    1200 
    1201 lon = lon_in
    1202 ! Make sure longitude is between -pi and pi
    1203 do while ( (lon.lt.(-pi)).or.(lon.gt.pi) )
    1204  if ( lon.lt.(-pi) ) lon = lon + 2*pi
    1205  if ( lon.gt.pi ) lon = lon - 2*pi
    1206 end do
    1207 
    1208 if ( lon.gt.lon1d_fine(dimx_fine) ) then
    1209  nearest_i_east = 1
    1210 else
    1211  i = 1
    1212  do while ( lon1d_fine(i).lt.lon )
    1213  i = i + 1
    1214  end do
    1215  nearest_i_east = i
    1216 end if
    1217 
    1218 end function nearest_i_east
    1219 
    1225 function nearest_i_west(lon_in)
    1226 ! Calculates nearest fine-grid i index to the west of a given longitude
    1227 implicit none
    1228 
    1229 integer :: nearest_i_west
    1230 real (kind=real_kind), intent(in) :: lon_in
    1231 real (kind=real_kind) :: lon
    1232 integer :: i
    1233 
    1234 lon = lon_in
    1235 ! Make sure longitude is between -pi and pi
    1236 do while ( (lon.lt.(-pi)).or.(lon.gt.pi) )
    1237  if ( lon.lt.(-pi) ) lon = lon + 2*pi
    1238  if ( lon.gt.pi ) lon = lon - 2*pi
    1239 end do
    1240 
    1241 if ( (lon.lt.lon1d_fine(1)).or.(lon.ge.lon1d_fine(dimx_fine)) ) then
    1242  nearest_i_west = dimx_fine
    1243 else
    1244  i = 1
    1245  do while ( lon1d_fine(i).le.lon )
    1246  i = i + 1
    1247  end do
    1248  nearest_i_west = i - 1
    1249 end if
    1250 
    1251 end function nearest_i_west
    1252 
    1258 function nearest_j_north(lat_in)
    1259 ! Calculates nearest fine-grid j index to the north of a given latitude
    1260 ! Note: If the abs(latitude) is greater than pi/2 (90 degrees) then
    1261 ! the value -999 is returned
    1262 implicit none
    1263 
    1264 integer :: nearest_j_north
    1265 real (kind=real_kind), intent(in) :: lat_in
    1266 real (kind=real_kind) :: lat
    1267 integer :: j
    1268 
    1269 lat = lat_in
    1270 if ( abs(lat_in).gt.p5*pi ) then
    1271  nearest_j_north = -999
    1272 else
    1273  j = 1
    1274  do while ( (lat1d_fine(j).lt.lat).and.(j.lt.dimy_fine) )
    1275  j = j + 1
    1276  end do
    1277  nearest_j_north = j
    1278 end if
    1279 
    1280 end function nearest_j_north
    1281 
    1287 function nearest_j_south(lat_in)
    1288 ! Calculates nearest fine-grid j index to the south of a given latitude
    1289 ! Note: If the abs(latitude) is greater than pi/2 (90 degrees) then
    1290 ! the value -999 is returned
    1291 implicit none
    1292 
    1293 integer :: nearest_j_south
    1294 real (kind=real_kind), intent(in) :: lat_in
    1295 real (kind=real_kind) :: lat
    1296 integer :: j
    1297 
    1298 lat = lat_in
    1299 if ( abs(lat_in).gt.p5*pi ) then
    1300  nearest_j_south = -999
    1301 elseif ( lat_in.le.lat1d_fine(1) ) then
    1302  nearest_j_south = 1
    1303 else
    1304  j = 2
    1305  do while ( (lat1d_fine(j).le.lat).and.(j.le.dimy_fine) )
    1306  j = j + 1
    1307  end do
    1308  nearest_j_south = j - 1
    1309 end if
    1310 
    1311 end function nearest_j_south
    1312 
    1322 function interp_1d(x,x1,x2,y1,y2)
    1323 ! Interpolates (or extrapolates) linear function y = y(x)
    1324 ! to x given y1 = y(x1) and y2 = y(x2)
    1325 implicit none
    1326 
    1327 real (kind=real_kind) :: interp_1d
    1328 real (kind=real_kind), intent(in) :: x,x1,x2,y1,y2
    1329 real (kind=real_kind) :: slope
    1330 
    1331 ! Formula for a line: y = y1 + slope*(x - x1)
    1332 slope = (y2-y1)/(x2-x1)
    1333 interp_1d = y1 + slope*(x-x1)
    1334 
    1335 end function interp_1d
    1336 
    1342 subroutine netcdf_err(err,string)
    1344 use netcdf
    1345 
    1346 implicit none
    1347 
    1348 integer, intent(in) :: err
    1349 character(len=*), intent(in) :: string
    1350 character(len=256) :: errmsg
    1351 
    1352 if (err.eq.nf90_noerr ) return
    1353 errmsg = nf90_strerror(err)
    1354 print *, ""
    1355 print *, "FATAL ERROR: ", trim(string), ": ", trim(errmsg)
    1356 print *, "STOP."
    1357 call exit(4)
    1358 
    1359 return
    1360 end subroutine netcdf_err
    1361 
    1362 end module gsl_oro_data_lg_scale
    subroutine netcdf_err(err, string)
    Check NetCDF error code and output the error message.
    Definition: netcdf_io.F90:219
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.html b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.html new file mode 100644 index 000000000..6b54eed31 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.html @@ -0,0 +1,602 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_sm_scale.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    module_gsl_oro_data_sm_scale.f90 File Reference
    +
    +
    + +

    Calculates small-scale GWD orographic stats for FV3GFS grids. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine gsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale (tile_num, res_indx, halo, duplicate_oro_data_file)
     Subroutine to compute orographic statistics needed for small-scale orograhic drag (gravity wave and form drag) schemes. More...
     
    real(kind=real_kind) function gsl_oro_data_sm_scale::interp_1d (x, x1, x2, y1, y2)
     Interpolates (or extrapolates) linear function y = y(x) More...
     
    integer function gsl_oro_data_sm_scale::nearest_i_east (lon_in)
     Finds nearest fine-grid i index to the east of a given longitude. More...
     
    integer function gsl_oro_data_sm_scale::nearest_i_west (lon_in)
     Finds nearest fine-grid i index to the west of a given longitude. More...
     
    integer function gsl_oro_data_sm_scale::nearest_j_north (lat_in)
     Calculates nearest fine-grid j index to the north of a given latitude. More...
     
    integer function gsl_oro_data_sm_scale::nearest_j_south (lat_in)
     Calculates nearest fine-grid j index to the south of a given latitude. More...
     
    subroutine gsl_oro_data_sm_scale::netcdf_err (err, string)
     Returns netCDF error given input err code. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer, parameter gsl_oro_data_sm_scale::dbl_kind = selected_real_kind(13)
     double precision More...
     
    integer gsl_oro_data_sm_scale::dimx_fine
     x-dimension of fine grid More...
     
    integer gsl_oro_data_sm_scale::dimy_fine
     y-dimension of fine grid More...
     
    real(kind=real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lat1d_fine
     latitude of fine grid pts More...
     
    real(kind=real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lon1d_fine
     longitude of fine grid pts More...
     
    real(kind=real_kind), parameter gsl_oro_data_sm_scale::p5 = 0.5_real_kind
     one half More...
     
    real, parameter gsl_oro_data_sm_scale::pi = 3.1415926535897_real_kind
     pi More...
     
    integer, parameter gsl_oro_data_sm_scale::real_kind = selected_real_kind(6)
     single precision More...
     
    +

    Detailed Description

    +

    Calculates small-scale GWD orographic stats for FV3GFS grids.

    +
    Author
    Michael Toy, NOAA/GSL
    +
    Date
    2021-03-12
    +

    This module calculates the parameters required for the subgrid- scale orographic gravity-wave drag (GWDO) scheme on the FV3 grid. These parameters are for the small-scale GWD (Tsiringakis et al., 2017) and the turbulent orographic form drag (TOFD) (Beljaars, 2004) schemes of the GSL drag suite. 30 second (~1km) global topography is used. The topographic data comes from the 'fix' file HGT.Beljaars_filtered.lat-lon.30s_res.nc. The output fields are:

      +
    • stddev standard deviation of subgrid-scale topograpy
    • +
    • convexity convexity (kurtosis) of subgrid-scale topography
    • +
    • ol{1,2,3,4} orographic effective lengths of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    • oa{1,2,3,4} orographic asymmetries of subgrid-scale topography for 4 orientations: 1-westerly, 2-southerly, 3-southwesterly, 4-northwesterly
    • +
    +

    Based on code by Michael Duda provided by NCAR/MMM

    + +

    Definition in file module_gsl_oro_data_sm_scale.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ calc_gsl_oro_data_sm_scale()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale (character(len=2), intent(in) tile_num,
    character(len=7), intent(in) res_indx,
    character(len=4), intent(in) halo,
    logical, intent(out) duplicate_oro_data_file 
    )
    +
    + +

    Subroutine to compute orographic statistics needed for small-scale orograhic drag (gravity wave and form drag) schemes.

    +
    Parameters
    + + + + + +
    [in]tile_num(tile number)
    [in]res_indx(resolution)
    [in]halo(halo number)
    [out]duplicate_oro_data_file(equals .true. if min grid size <= 7.5km)
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 51 of file module_gsl_oro_data_sm_scale.f90.

    + +

    References netcdf_err().

    + +
    +
    + +

    ◆ interp_1d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real (kind=real_kind) function gsl_oro_data_sm_scale::interp_1d (real (kind=real_kind), intent(in) x,
    real (kind=real_kind), intent(in) x1,
    real (kind=real_kind), intent(in) x2,
    real (kind=real_kind), intent(in) y1,
    real (kind=real_kind), intent(in) y2 
    )
    +
    + +

    Interpolates (or extrapolates) linear function y = y(x)

    +
    Parameters
    + + + + + + +
    [in]xInput "x" value
    [in]x1Known point 1
    [in]x2Known point 2
    [in]y1Known y(x1)
    [in]y2Known y(x2)
    +
    +
    +
    Returns
    interp_1d Interpolated y value at x
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1247 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ nearest_i_east()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_sm_scale::nearest_i_east (real (kind=real_kind), intent(in) lon_in)
    +
    + +

    Finds nearest fine-grid i index to the east of a given longitude.

    +
    Parameters
    + + +
    [in]lon_inlongitude (radians)
    +
    +
    +
    Returns
    nearest_i_east Nearest grid point i-index east of selected point
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1117 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ nearest_i_west()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_sm_scale::nearest_i_west (real (kind=real_kind), intent(in) lon_in)
    +
    + +

    Finds nearest fine-grid i index to the west of a given longitude.

    +
    Parameters
    + + +
    [in]lon_inlongitude (radians)
    +
    +
    +
    Returns
    nearest_i_west Nearest grid point i-index west of selected point
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1150 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ nearest_j_north()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_sm_scale::nearest_j_north (real (kind=real_kind), intent(in) lat_in)
    +
    + +

    Calculates nearest fine-grid j index to the north of a given latitude.

    +
    Parameters
    + + +
    [in]lat_inLatitude (radians)
    +
    +
    +
    Returns
    nearest_j_north Nearest fine-grid j index to the north of a given latitude
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1183 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ nearest_j_south()

    + +
    +
    + + + + + + + + +
    integer function gsl_oro_data_sm_scale::nearest_j_south (real (kind=real_kind), intent(in) lat_in)
    +
    + +

    Calculates nearest fine-grid j index to the south of a given latitude.

    +
    Parameters
    + + +
    [in]lat_inLatitude (radians)
    +
    +
    +
    Returns
    nearest_j_south Nearest fine-grid j index to the south of a given latitude
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1212 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ netcdf_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine gsl_oro_data_sm_scale::netcdf_err (integer, intent(in) err,
    character(len=*), intent(in) string 
    )
    +
    + +

    Returns netCDF error given input err code.

    +
    Parameters
    + + + +
    [in]errError code from netCDF routine
    [in]stringPortion of error message
    +
    +
    +
    Author
    Michael Toy, NOAA/GSL
    + +

    Definition at line 1267 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ dbl_kind

    + +
    +
    + + + + +
    integer, parameter gsl_oro_data_sm_scale::dbl_kind = selected_real_kind(13)
    +
    + +

    double precision

    + +

    Definition at line 28 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ dimx_fine

    + +
    +
    + + + + +
    integer gsl_oro_data_sm_scale::dimx_fine
    +
    + +

    x-dimension of fine grid

    + +

    Definition at line 31 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ dimy_fine

    + +
    +
    + + + + +
    integer gsl_oro_data_sm_scale::dimy_fine
    +
    + +

    y-dimension of fine grid

    + +

    Definition at line 32 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ lat1d_fine

    + +
    +
    + + + + +
    real (kind = real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lat1d_fine
    +
    + +

    latitude of fine grid pts

    + +

    Definition at line 34 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ lon1d_fine

    + +
    +
    + + + + +
    real (kind = real_kind), dimension(:), allocatable gsl_oro_data_sm_scale::lon1d_fine
    +
    + +

    longitude of fine grid pts

    + +

    Definition at line 35 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ p5

    + +
    +
    + + + + +
    real (kind = real_kind), parameter gsl_oro_data_sm_scale::p5 = 0.5_real_kind
    +
    + +

    one half

    + +

    Definition at line 37 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ pi

    + +
    +
    + + + + +
    real, parameter gsl_oro_data_sm_scale::pi = 3.1415926535897_real_kind
    +
    + +

    pi

    + +

    Definition at line 30 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    + +

    ◆ real_kind

    + +
    +
    + + + + +
    integer, parameter gsl_oro_data_sm_scale::real_kind = selected_real_kind(6)
    +
    + +

    single precision

    + +

    Definition at line 27 of file module_gsl_oro_data_sm_scale.f90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.js b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.js new file mode 100644 index 000000000..00b8cb12a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90.js @@ -0,0 +1,18 @@ +var module__gsl__oro__data__sm__scale_8f90 = +[ + [ "calc_gsl_oro_data_sm_scale", "module__gsl__oro__data__sm__scale_8f90.html#a47bccf36fd3d2c3abdd75e925b2e6d05", null ], + [ "interp_1d", "module__gsl__oro__data__sm__scale_8f90.html#ae51d541f8e6fed7a3b2bdc6de709f695", null ], + [ "nearest_i_east", "module__gsl__oro__data__sm__scale_8f90.html#a70eecd2214e27cc1b3a1ba9df34a0fa2", null ], + [ "nearest_i_west", "module__gsl__oro__data__sm__scale_8f90.html#a5c159035e2f834234c86d03d03501721", null ], + [ "nearest_j_north", "module__gsl__oro__data__sm__scale_8f90.html#ae3419ce89b20a3f4914aae1118c9e9a1", null ], + [ "nearest_j_south", "module__gsl__oro__data__sm__scale_8f90.html#a2c0fc49ed515bc17b7e948dfa666a4d3", null ], + [ "netcdf_err", "module__gsl__oro__data__sm__scale_8f90.html#adc21bfea4012c64cadd2ada20a011f2d", null ], + [ "dbl_kind", "module__gsl__oro__data__sm__scale_8f90.html#ac7d6d045f24fa1cc1ffab6706431ca1f", null ], + [ "dimx_fine", "module__gsl__oro__data__sm__scale_8f90.html#af8983b13c23372ece106c72bfbe63e90", null ], + [ "dimy_fine", "module__gsl__oro__data__sm__scale_8f90.html#a5025b4ef045cfd7738a92fd178938d8a", null ], + [ "lat1d_fine", "module__gsl__oro__data__sm__scale_8f90.html#ac960f2375dc2f5b3d62ccada02f8cb9c", null ], + [ "lon1d_fine", "module__gsl__oro__data__sm__scale_8f90.html#a34dc581bef8be30f67342415930dcfd9", null ], + [ "p5", "module__gsl__oro__data__sm__scale_8f90.html#acd4adce684fa1f847ae10a34e97880c8", null ], + [ "pi", "module__gsl__oro__data__sm__scale_8f90.html#a7782391988931c3e4adb847fb77a5d1b", null ], + [ "real_kind", "module__gsl__oro__data__sm__scale_8f90.html#aae73fa27b19ea2549289acdf058e7302", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90_source.html b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90_source.html new file mode 100644 index 000000000..847afef2d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/module__gsl__oro__data__sm__scale_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog_gsl.fd/module_gsl_oro_data_sm_scale.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    module_gsl_oro_data_sm_scale.f90
    +
    +
    +Go to the documentation of this file.
    1 
    23 module gsl_oro_data_sm_scale
    24 
    25 implicit none
    26 
    27 integer, parameter :: real_kind = selected_real_kind(6)
    28 integer, parameter :: dbl_kind = selected_real_kind(13)
    29 
    30 real, parameter :: pi = 3.1415926535897_real_kind
    31 integer :: dimx_fine
    32 integer :: dimy_fine
    33 
    34 real (kind = real_kind), allocatable :: lat1d_fine(:)
    35 real (kind = real_kind), allocatable :: lon1d_fine(:)
    36 
    37 real (kind = real_kind), parameter :: p5 = 0.5_real_kind
    38 
    39 contains
    40 
    49 subroutine calc_gsl_oro_data_sm_scale(tile_num,res_indx,halo, &
    50  duplicate_oro_data_file)
    51 
    52 use netcdf
    53 
    54 implicit none
    55 
    56 character(len=2), intent(in) :: tile_num ! tile number
    57 character(len=7), intent(in) :: res_indx ! grid-resolution index, e.g., 96, 192, 384, etc
    58 character(len=4), intent(in) :: halo ! halo value (for input grid data)
    59 
    60 logical, intent(out) :: duplicate_oro_data_file ! flag to let main program know that
    61  ! oro_data_ls file was created by this subroutine
    62  ! as dupliate of oro_data_ss file due to grid size
    63  ! being below 7.5km
    64 
    65 real (kind = real_kind) :: min_area_FV3 ! minimum grid area in m^2
    66 real (kind = real_kind) :: min_DX ! minimum grid size in km
    67 
    68 integer :: i,j,ii,jj
    69 
    70 integer :: ncid_in,ncid_out,err
    71 integer :: varid
    72 integer :: dimid,latid,lonid
    73 integer, dimension (2) :: dimids
    74 
    75 integer :: nfinepoints ! number of fine grid points in each coarse grid cell
    76 
    77 real (kind = real_kind) :: sum2, sum4, var
    78 
    79 
    80 real (kind = real_kind), allocatable :: &
    81  zs(:,:)
    82 
    83 logical :: zs_accum
    84 
    85 real (kind = real_kind) :: zs_mean
    86 real (kind = real_kind), allocatable :: &
    87  std_dev(:),convexity(:), &
    88  OA1(:),OA2(:),OA3(:),OA4(:), &
    89  OL1(:),OL2(:),OL3(:),OL4(:)
    90 
    91 real (kind = real_kind), parameter :: max_convexity = 10._real_kind ! max value for convexity
    92 
    93 integer :: nu, nd, nw, nt
    94 real (kind = real_kind) :: ratio
    95 
    96 
    97 real, parameter :: ae = 6371200._real_kind ! Earth radius in meters
    98 
    99 character(len=35) :: FV3_grid_input_file_name
    100 character(len=150) :: fine_topo_source_file_name
    101 character(len=35) :: oro_data_output_file_name
    102 
    103 integer :: temp_int, dimX_FV3, dimY_FV3
    104 real (kind = dbl_kind), allocatable :: lat_FV3_raw(:,:), lon_FV3_raw(:,:)
    105 real (kind = real_kind), allocatable :: lat_FV3(:,:), lon_FV3(:,:)
    106 real (kind = real_kind), allocatable :: lat_FV3_deg(:,:) ! saved version of latitude for output
    107 real (kind = real_kind), allocatable :: lon_FV3_deg(:,:) ! saved version of longitude for output
    108 real (kind = dbl_kind), allocatable :: area_FV3_qtr(:,:) ! meters squared
    109 real (kind = real_kind), allocatable :: area_FV3(:,:) ! meters squared
    110 real (kind = real_kind), allocatable :: HGT_M_fine(:,:)
    111 real (kind = real_kind) :: dlta_lat, dlta_lon
    112 
    113 integer :: i_blk, j_blk
    114 integer :: ii_loc, jj_loc, ii_m, jj_m
    115 integer, dimension(3) :: s_ii, e_ii, s_jj, e_jj
    116 real (kind = real_kind), dimension(3) :: lat_blk, lon_blk
    117 integer :: cell_count ! allows for use of 1D arrays for GWD statistics fields
    118 integer :: halo_int ! integer form of halo
    119 
    120 logical :: fexist
    121 
    122 
    123 print *, "Creating oro_data_ss file"
    124 print *
    125 
    126 ! File name for file that contains grid information
    127 if ( halo.eq."-999" ) then ! global or nested tile
    128  fv3_grid_input_file_name = "C" // trim(res_indx) // "_grid.tile" // &
    129  trim(tile_num) // ".nc"
    130 else ! stand-alone regional tile
    131  fv3_grid_input_file_name = "C" // trim(res_indx) // "_grid.tile" // &
    132  trim(tile_num) // ".halo" // trim(halo) // ".nc"
    133 end if
    134 
    135 print *, "Reading from file: ", fv3_grid_input_file_name
    136 
    137 
    138 ! Check that input file exists -- exit with error message if not
    139 inquire(file=fv3_grid_input_file_name,exist=fexist)
    140 if (.not.fexist) then
    141  print *
    142  print *, "Fatal error: Input file "//trim(fv3_grid_input_file_name)// &
    143  " does not exist"
    144  print *, "Exiting program gsl_oro_data.f90"
    145  print *
    146  call exit(4)
    147 end if
    148 
    149 
    150 ! In preparation for reading in grid data, account for existence
    151 ! of halo points
    152 if ( halo.eq."-999" ) then ! global or nested tile
    153  halo_int = 0
    154 else
    155  read(halo,*) halo_int ! integer form of halo
    156 end if
    157 
    158 
    159 ! Open Cxxx_grid netCDF file for input and get dimensions
    160 err = nf90_open(fv3_grid_input_file_name,nf90_nowrite,ncid_in)
    161 call netcdf_err(err, 'opening: '//fv3_grid_input_file_name)
    162 
    163 err = nf90_inq_dimid(ncid_in,'nx',dimid)
    164 call netcdf_err(err, 'reading nx id')
    165 err = nf90_inquire_dimension(ncid_in,dimid,len=temp_int)
    166 call netcdf_err(err, 'reading nx value')
    167 dimx_fv3 = temp_int/2 - 2*halo_int ! shaving off any halo points from edges
    168 
    169 err = nf90_inq_dimid(ncid_in,'ny',dimid)
    170 call netcdf_err(err, 'reading ny id')
    171 err = nf90_inquire_dimension(ncid_in,dimid,len=temp_int)
    172 call netcdf_err(err, 'reading ny value')
    173 dimy_fv3 = temp_int/2 - 2*halo_int ! shaving off any halo points from edges
    174 
    175 print *, "dimX_FV3 =", dimx_fv3 ! number of model cells in x-direction (halo0)
    176 print *, "dimY_FV3 =", dimy_fv3 ! number of model cells in y-direction (halo0)
    177 print *
    178 
    179 ! Read in lat/lon (in degrees)
    180 allocate (lat_fv3_raw((2*dimx_fv3+1),(2*dimy_fv3+1)))
    181 err = nf90_inq_varid(ncid_in,'y',varid)
    182 call netcdf_err(err, 'reading y id')
    183 err = nf90_get_var(ncid_in,varid,lat_fv3_raw, &
    184  start=(/1+2*halo_int,1+2*halo_int/), &
    185  count=(/2*dimx_fv3+1,2*dimy_fv3+1/))
    186 call netcdf_err(err, 'reading y')
    187 
    188 allocate (lon_fv3_raw((2*dimx_fv3+1),(2*dimy_fv3+1)))
    189 err = nf90_inq_varid(ncid_in,'x',varid)
    190 call netcdf_err(err, 'reading x id')
    191 err = nf90_get_var(ncid_in,varid,lon_fv3_raw, &
    192  start=(/1+2*halo_int,1+2*halo_int/), &
    193  count=(/2*dimx_fv3+1,2*dimy_fv3+1/))
    194 call netcdf_err(err, 'reading x')
    195 
    196 ! Read in quarter grid-cell areas
    197 allocate (area_fv3_qtr((2*dimx_fv3),(2*dimy_fv3)))
    198 err = nf90_inq_varid(ncid_in,'area',varid)
    199 call netcdf_err(err, 'reading area id')
    200 err = nf90_get_var(ncid_in,varid,area_fv3_qtr, &
    201  start=(/1+2*halo_int,1+2*halo_int/), &
    202  count=(/2*dimx_fv3,2*dimy_fv3/))
    203 call netcdf_err(err, 'reading area')
    204 
    205 ! Calculate lat/lon at mass points (cell-centers)
    206 ! Stride by 2 starting with 2nd point
    207 ! NOTE: "Converting" from dbl_kind to real_kind
    208 allocate (lat_fv3(dimx_fv3,dimy_fv3))
    209 allocate (lon_fv3(dimx_fv3,dimy_fv3))
    210 allocate (lat_fv3_deg(dimx_fv3,dimy_fv3))
    211 allocate (lon_fv3_deg(dimx_fv3,dimy_fv3))
    212 do j = 1,dimy_fv3
    213  do i = 1,dimx_fv3
    214  lat_fv3(i,j) = lat_fv3_raw(2*i,2*j)
    215  lon_fv3(i,j) = lon_fv3_raw(2*i,2*j)
    216  end do
    217 end do
    218 lat_fv3_deg(:,:) = lat_fv3(:,:)
    219 lon_fv3_deg(:,:) = lon_fv3(:,:)
    220 deallocate(lat_fv3_raw)
    221 deallocate(lon_fv3_raw)
    222 
    223 ! Convert lat/lon to radians
    224 lat_fv3 = lat_fv3*pi/180._real_kind
    225 lon_fv3 = lon_fv3*pi/180._real_kind
    226 
    227 ! Create full grid-cell areas (4 raw areas per grid cell area)
    228 ! NOTE: "Converting" from dbl_kind to real_kind
    229 allocate(area_fv3(dimx_fv3,dimy_fv3))
    230 do j = 1,dimy_fv3
    231  do i = 1,dimx_fv3
    232  area_fv3(i,j) = area_fv3_qtr(2*i-1,2*j-1) + area_fv3_qtr(2*i-1,2*j) + &
    233  area_fv3_qtr(2*i,2*j-1) + area_fv3_qtr(2*i,2*j)
    234  end do
    235 end do
    236 deallocate(area_fv3_qtr)
    237 
    238 err = nf90_close(ncid_in)
    239 
    240 
    241 
    242 ! Open file containing 30sec topo data (fine grid)
    243 fine_topo_source_file_name = "HGT.Beljaars_filtered.lat-lon.30s_res.nc"
    244 ! Check that input file exists -- exit with error message if not
    245 inquire(file=fine_topo_source_file_name,exist=fexist)
    246 if (.not.fexist) then
    247  print *
    248  print *, "Fatal error: Topo source file "// &
    249  trim(fine_topo_source_file_name)//" does not exist"
    250  print *, "Exiting program gsl_oro_data.f90"
    251  print *
    252  call exit(4)
    253 end if
    254 err = nf90_open(trim(fine_topo_source_file_name),nf90_nowrite,ncid_in)
    255 call netcdf_err(err, 'opening: '//trim(fine_topo_source_file_name))
    256 
    257 ! Get dimensions
    258 err = nf90_inq_dimid(ncid_in,'west_east',dimid)
    259 call netcdf_err(err, 'reading west_east id')
    260 err = nf90_inquire_dimension(ncid_in,dimid,len=dimx_fine)
    261 call netcdf_err(err, 'reading west_east value')
    262 
    263 err = nf90_inq_dimid(ncid_in,'south_north',dimid)
    264 call netcdf_err(err, 'reading south_north id')
    265 err = nf90_inquire_dimension(ncid_in,dimid,len=dimy_fine)
    266 call netcdf_err(err, 'reading south_north value')
    267 
    268 print *, "Source file for high-resolution topography: ", &
    269  trim(fine_topo_source_file_name)
    270 print *, "dimX_fine =", dimx_fine
    271 print *, "dimY_fine =", dimy_fine
    272 print *
    273 
    274 
    275 ! Read in lat/lon of fine grid
    276 allocate(lat1d_fine(dimy_fine))
    277 allocate(lon1d_fine(dimx_fine))
    278 err = nf90_inq_varid(ncid_in,'CLAT',varid)
    279 call netcdf_err(err, 'reading CLAT id')
    280 err = nf90_get_var(ncid_in,varid,lat1d_fine,start=(/1,1/), &
    281  count=(/1,dimy_fine/))
    282 call netcdf_err(err, 'reading CLAT')
    283 
    284 err = nf90_inq_varid(ncid_in,'CLONG',varid)
    285 call netcdf_err(err, 'reading CLONG id')
    286 err = nf90_get_var(ncid_in,varid,lon1d_fine,start=(/1,1/), &
    287  count=(/dimx_fine,1/))
    288 call netcdf_err(err, 'reading CLONG')
    289 
    290 ! Convert lat/lon to radians
    291 lat1d_fine = lat1d_fine*pi/180._real_kind
    292 lon1d_fine = lon1d_fine*pi/180._real_kind
    293 
    294 
    295 ! Reassign FV3 longitude to vary from -pi to pi to match lon1d_fine range
    296 do j = 1,dimy_fv3
    297  do i = 1,dimx_fv3
    298  if ( lon_fv3(i,j).gt.pi ) then
    299  lon_fv3(i,j) = lon_fv3(i,j) - 2*pi
    300  end if
    301  end do
    302 end do
    303 
    304 
    305 ! Read in fine-scale topography
    306 allocate(hgt_m_fine(dimx_fine,dimy_fine))
    307 err = nf90_inq_varid(ncid_in,'HGT_M',varid)
    308 call netcdf_err(err, 'reading HGT_M id')
    309 err = nf90_get_var(ncid_in,varid,hgt_m_fine,start=(/1,1/), &
    310  count=(/dimx_fine,dimy_fine/))
    311 call netcdf_err(err, 'reading HGT_M')
    312 
    313 
    314 err = nf90_close(ncid_in)
    315 
    316 
    317 ! Allocate GWD statistics fields
    318 allocate (std_dev(dimx_fv3*dimy_fv3))
    319 allocate (convexity(dimx_fv3*dimy_fv3))
    320 allocate (oa1(dimx_fv3*dimy_fv3))
    321 allocate (oa2(dimx_fv3*dimy_fv3))
    322 allocate (oa3(dimx_fv3*dimy_fv3))
    323 allocate (oa4(dimx_fv3*dimy_fv3))
    324 allocate (ol1(dimx_fv3*dimy_fv3))
    325 allocate (ol2(dimx_fv3*dimy_fv3))
    326 allocate (ol3(dimx_fv3*dimy_fv3))
    327 allocate (ol4(dimx_fv3*dimy_fv3))
    328 
    329 ! Initialize GWD statistics fields
    330 std_dev(:) = 0._real_kind
    331 convexity(:) = 0._real_kind
    332 oa1(:) = 0._real_kind
    333 oa2(:) = 0._real_kind
    334 oa3(:) = 0._real_kind
    335 oa4(:) = 0._real_kind
    336 ol1(:) = 0._real_kind
    337 ol2(:) = 0._real_kind
    338 ol3(:) = 0._real_kind
    339 ol4(:) = 0._real_kind
    340 
    341 
    342 
    343 ! Calculate the minimum coarse grid cell size as implied by the cell area
    344 min_area_fv3 = 1.e+14
    345 do j = 1,dimy_fv3
    346  do i = 1,dimx_fv3
    347  min_area_fv3 = min(min_area_fv3,area_fv3(i,j))
    348  end do
    349 end do
    350 ! The square root of min_area_FV3 will count as the minimum cell size
    351 min_dx = sqrt(min_area_fv3)/1000._real_kind ! grid size in km
    352 ! NOTE: min_DX will be used after the big loop below to determine whether
    353 ! to copy topographic statistics to "large-scale" file
    354 
    355 
    356 
    357 
    358 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    359 ! This is a loop over all the FV3 (coarse) grid cells
    360 ! The subgrid-scale topographic variables needed for the large-scale
    361 ! orographic gravity wave drag schemes are calculated by the following steps:
    362 ! 1) Sample the fine-scale (30sec) topography contained within each
    363 ! coarse grid cell.
    364 ! 2) Calculate the orographic statistics: stddev,convexity,oa1,...oa4,
    365 ! ol1,...,ol4
    366 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    367 
    368 cell_count = 1
    369 
    370 do j = 1,dimy_fv3
    371  do i = 1,dimx_fv3
    372 
    373  ! Calculate approximate side-lengths of square lat-long "coarse" grid
    374  ! cell centered on FV3 cell (units = radians)
    375  dlta_lat = sqrt(area_fv3(i,j))/ae
    376  dlta_lon = sqrt(area_fv3(i,j))/(ae*cos(lat_fv3(i,j)))
    377 
    378  ! Determine lat/lon of 9 lat-lon block centers
    379  ! Note: lat_blk(2)/lon_blk(2) = lat_FV3(i,j)/lon_FV3(i,j)
    380  ! Note: abs(lon_blk) may exceed pi
    381  do i_blk = 1,3
    382  lon_blk(i_blk) = lon_fv3(i,j) + (i_blk-2)*dlta_lon
    383  end do
    384  ! Note: abs(lat_blk) may exceed pi/2 (90 degrees)
    385  do j_blk = 1,3
    386  lat_blk(j_blk) = lat_fv3(i,j) + (j_blk-2)*dlta_lat
    387  end do
    388 
    389  ! Find starting and ending fine-grid i,j indices for each
    390  ! of the 9 "coarse-grid" blocks
    391  ! Note: Index value of -999 is returned if latitude of grid points
    392  ! exceed 90 degrees north or south
    393  do i_blk = 1,3
    394  s_ii(i_blk) = nearest_i_east(lon_blk(i_blk)-p5*dlta_lon)
    395  e_ii(i_blk) = nearest_i_west(lon_blk(i_blk)+p5*dlta_lon)
    396  end do
    397  do j_blk = 1,3
    398  s_jj(j_blk) = nearest_j_north(lat_blk(j_blk)-p5*dlta_lat)
    399  e_jj(j_blk) = nearest_j_south(lat_blk(j_blk)+p5*dlta_lat)
    400  end do
    401 
    402 
    403  ! Calculate lat/lon relevant to each "coarse grid" block
    404  do i_blk = 1,3
    405 
    406  ! "Shave" blocks on north or south due to proximity to poles
    407  ! if necessary
    408  j_blk = 1 ! southern row
    409  ! Check for "shaved" block due to proximity to south pole
    410  if ( (s_jj(j_blk).eq.-999).and.(e_jj(j_blk).ne.-999) ) then
    411  s_jj(j_blk) = 1 ! southern boundary of shaved block
    412  ! Reassign latitude of block center
    413  lat_blk(j_blk) = p5*(lat1d_fine(1)+lat1d_fine(e_jj(j_blk)))
    414  end if
    415 
    416  j_blk = 2 ! center row
    417  ! Check for "shaved" block due to proximity to south or north pole
    418  ! Note: We're assuming e_jj(2) and s_jj(2) can't both be -999
    419  if ( s_jj(j_blk).eq.-999 ) then
    420  s_jj(j_blk) = 1 ! block shaved on the south
    421  ! Reassign latitude of block center
    422  lat_blk(j_blk) = p5*(lat1d_fine(1)+lat1d_fine(e_jj(j_blk)))
    423  end if
    424  if ( e_jj(j_blk).eq.-999 ) then
    425  e_jj(j_blk) = dimy_fine ! block shaved on the north
    426  ! Reassign latitude of block center
    427  lat_blk(j_blk) = p5*(lat1d_fine(s_jj(j_blk))+lat1d_fine(dimy_fine))
    428  end if
    429 
    430  j_blk = 3 ! northern row
    431  ! Check for "shaved" block due to proximity to north pole
    432  if ( (e_jj(j_blk).eq.-999).and.(s_jj(j_blk).ne.-999) ) then
    433  e_jj(j_blk) = dimy_fine ! northern boundary of shaved block
    434  ! Reassign latitude of block center
    435  lat_blk(j_blk) = p5*(lat1d_fine(s_jj(j_blk))+lat1d_fine(dimy_fine))
    436  end if
    437 
    438  end do
    439 
    440 
    441  ! Calculate number of fine-grid points within center coarse block (2,2)
    442  ! Check if center block straddles date line
    443  if ( s_ii(2).gt.e_ii(2) ) then
    444  ii_m = dimx_fine - s_ii(2) + 1 + e_ii(2)
    445  else
    446  ii_m = e_ii(2) - s_ii(2) + 1
    447  end if
    448  jj_m = e_jj(2) - s_jj(2) + 1
    449 
    450 
    451  ! Assign values to "zs", which is the fine-grid surface topography field
    452  ! that we will calculate statistics on, i.e, stddev, convexity, etc.
    453  allocate (zs(ii_m,jj_m))
    454 
    455  do jj = s_jj(2), e_jj(2)
    456  jj_loc = jj - s_jj(2) + 1 ! local j-index (1 ... jj_m)
    457  ! Check if block straddles the date line
    458  if ( s_ii(2).gt.e_ii(2) ) then
    459  do ii = s_ii(2), dimx_fine ! west of the date line
    460  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    461  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    462  end do
    463  do ii = 1, e_ii(2) ! east of the date line
    464  ii_loc = ii_loc + 1 ! local i-index ( 1 ... ii_m )
    465  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    466  end do
    467  else ! no crossing of the date line
    468  do ii = s_ii(2), e_ii(2)
    469  ii_loc = ii - s_ii(2) + 1 ! local i-index ( 1 ... ii_m)
    470  zs(ii_loc,jj_loc) = hgt_m_fine(ii,jj)
    471  end do
    472  end if
    473  end do
    474 
    475 
    476 
    477  !
    478  ! Finally, we can now calculate the topographic statistics fields needed
    479  ! for the gravity wave drag scheme
    480  !
    481 
    482  ! Make sure statistics are zero if there is no terrain in the grid cell
    483  ! Note: This is a proxy for a landmask
    484  zs_accum = .false.
    485  do jj = 1,jj_m
    486  do ii = 1,ii_m
    487  if ( abs(zs(ii,jj)).gt.1.e-1 ) zs_accum = .true.
    488  end do
    489  end do
    490  if ( .not.zs_accum ) then ! no terrain in the grid cell
    491  std_dev(cell_count) = 0._real_kind
    492  convexity(cell_count) = 0._real_kind
    493  oa1(cell_count) = 0._real_kind
    494  oa2(cell_count) = 0._real_kind
    495  oa3(cell_count) = 0._real_kind
    496  oa4(cell_count) = 0._real_kind
    497  ol1(cell_count) = 0._real_kind
    498  ol2(cell_count) = 0._real_kind
    499  ol3(cell_count) = 0._real_kind
    500  ol4(cell_count) = 0._real_kind
    501  deallocate(zs)
    502  cell_count = cell_count + 1
    503  cycle ! move on to next (coarse) grid cell
    504  end if
    505 
    506 
    507  !
    508  ! Calculate standard deviation of subgrid-scale terrain height
    509  !
    510 
    511  ! Calculate mean height
    512  sum2 = 0._real_kind
    513  nfinepoints = ii_m*jj_m
    514  do jj = 1,jj_m
    515  do ii = 1,ii_m
    516  sum2 = sum2 + zs(ii,jj)
    517  end do
    518  end do
    519  zs_mean = sum2 / real(nfinepoints,real_kind)
    520 
    521  ! Calculate standard deviation
    522  sum2 = 0._real_kind
    523  do jj = 1,jj_m
    524  do ii = 1,ii_m
    525  sum2 = sum2 + ( zs(ii,jj) - zs_mean )**2
    526  end do
    527  end do
    528  std_dev(cell_count) = sqrt( sum2/real(nfinepoints,real_kind) )
    529 
    530 
    531  !
    532  ! Calculate convexity of sub-grid-scale terrain
    533  !
    534 
    535  sum2 = 0._real_kind
    536  sum4 = 0._real_kind
    537  do jj = 1,jj_m
    538  do ii = 1,ii_m
    539  sum2 = sum2 + ( zs(ii,jj) - zs_mean )**2
    540  sum4 = sum4 + ( zs(ii,jj) - zs_mean )**4
    541  end do
    542  end do
    543 
    544  var = sum2 / real(nfinepoints,real_kind)
    545  if ( abs(var) < 1.0e-05_real_kind ) then
    546  convexity(cell_count) = 0._real_kind
    547  else
    548  convexity(cell_count) = min( sum4 / ( var**2 * &
    549  real(nfinepoints,real_kind) ), max_convexity )
    550  end if
    551 
    552 
    553  !
    554  ! Calculate orographic asymmetries
    555  !
    556 
    557  ! OA1 -- orographic asymmetry in West direction
    558  nu = 0
    559  nd = 0
    560  do jj = 1,jj_m
    561  if(mod(ii_m,2).eq.0.) then
    562  do ii = 1,ii_m/2 ! left half of box
    563  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    564  end do
    565  else
    566  do ii = 1,ii_m/2+1 ! left half of box
    567  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    568  end do
    569  endif
    570  do ii = ii_m/2 + 1, ii_m ! right half of box
    571  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    572  end do
    573  end do
    574  if ( nu + nd > 0 ) then
    575  oa1(cell_count) = real((nu - nd),real_kind) / &
    576  real((nu + nd),real_kind)
    577  else
    578  oa1(cell_count) = 0._real_kind
    579  end if
    580 
    581  ! OA2 -- orographic asymmetry in South direction
    582  nu = 0
    583  nd = 0
    584  if(mod(jj_m,2).eq.0.) then
    585  do jj = 1,jj_m/2 ! bottom half of box
    586  do ii = 1,ii_m
    587  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    588  end do
    589  end do
    590  else
    591  do jj = 1,jj_m/2+1 ! bottom half of box
    592  do ii = 1,ii_m
    593  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    594  end do
    595  end do
    596  endif
    597  do jj = jj_m/2 + 1,jj_m ! top half of box
    598  do ii = 1, ii_m
    599  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    600  end do
    601  end do
    602  if ( nu + nd > 0 ) then
    603  oa2(cell_count) = real((nu - nd),real_kind) / &
    604  real((nu + nd),real_kind)
    605  else
    606  oa2(cell_count) = 0._real_kind
    607  end if
    608 
    609  ! OA3 -- orographic asymmetry in South-West direction
    610  nu = 0
    611  nd = 0
    612  ratio = real(jj_m,real_kind)/real(ii_m,real_kind)
    613  do jj = 1,jj_m
    614  do ii = 1,ii_m
    615  if ( nint(real(ii,real_kind)*ratio) <= (jj_m - jj + 1) ) then
    616  ! south-west half of box
    617  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    618  endif
    619  if ( nint(real(ii,real_kind)*ratio) >= (jj_m - jj + 1) ) then
    620  ! north-east half of box
    621  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    622  end if
    623  end do
    624  end do
    625  if ( nu + nd > 0 ) then
    626  oa3(cell_count) = real((nu - nd),real_kind) / &
    627  real((nu + nd),real_kind)
    628  else
    629  oa3(cell_count) = 0._real_kind
    630  end if
    631 
    632  ! OA4 -- orographic asymmetry in North-West direction
    633  nu = 0
    634  nd = 0
    635  ratio = real(jj_m,real_kind)/real(ii_m,real_kind)
    636  do jj = 1,jj_m
    637  do ii = 1,ii_m
    638  if ( nint(real(ii,real_kind)*ratio) <= jj ) then
    639  ! north-west half of box
    640  if ( zs(ii,jj) > zs_mean ) nu = nu + 1
    641  end if
    642  if ( nint(real(ii,real_kind)*ratio) >= jj ) then
    643  ! south-east half of box
    644  if ( zs(ii,jj) > zs_mean ) nd = nd + 1
    645  end if
    646  end do
    647  end do
    648  if ( nu + nd > 0 ) then
    649  oa4(cell_count) = real((nu - nd),real_kind) / &
    650  real((nu + nd),real_kind)
    651  else
    652  oa4(cell_count) = 0._real_kind
    653  end if
    654 
    655 
    656  !
    657  ! Calculate orographic effective lengths
    658  !
    659 
    660  ! OL1 -- orographic effective length for Westerly flow
    661  nw = 0
    662  nt = 0
    663  do jj = max(jj_m/4,1), 3*jj_m/4
    664  ! within central east-west band of box
    665  do ii = 1, ii_m
    666  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    667  nt = nt + 1
    668  end do
    669  end do
    670  if ( nt /= 0 ) then
    671  ol1(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    672  else
    673  ol1(cell_count) = 0._real_kind
    674  end if
    675 
    676  ! OL2 -- orographic effective length for Southerly flow
    677  nw = 0
    678  nt = 0
    679  do jj = 1, jj_m
    680  do ii = max(ii_m/4,1), 3*ii_m/4
    681  ! within central north-south band of box
    682  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    683  nt = nt + 1
    684  end do
    685  end do
    686  if ( nt /= 0 ) then
    687  ol2(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    688  else
    689  ol2(cell_count) = 0._real_kind
    690  end if
    691 
    692  ! OL3 -- orographic effective length for South-Westerly flow
    693  nw = 0
    694  nt = 0
    695  do jj = 1, jj_m/2
    696  do ii = 1, ii_m/2
    697  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    698  nt = nt + 1
    699  end do
    700  end do
    701  do jj = jj_m/2+1, jj_m
    702  do ii = ii_m/2+1, ii_m
    703  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    704  nt = nt + 1
    705  end do
    706  end do
    707  if ( nt /= 0 ) then
    708  ol3(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    709  else
    710  ol3(cell_count) = 0._real_kind
    711  end if
    712 
    713  ! OL4 -- orographic effective length for North-Westerly flow
    714  nw = 0
    715  nt = 0
    716  do jj = jj_m/2+1, jj_m
    717  do ii = 1, ii_m/2
    718  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    719  nt = nt + 1
    720  end do
    721  end do
    722  do jj = 1, jj_m/2
    723  do ii = ii_m/2+1, ii_m
    724  if ( zs(ii,jj) > zs_mean ) nw = nw + 1
    725  nt = nt + 1
    726  end do
    727  end do
    728  if ( nt /= 0 ) then
    729  ol4(cell_count) = real(nw,real_kind) / real(nt,real_kind)
    730  else
    731  ol4(cell_count) = 0._real_kind
    732  end if
    733 
    734 
    735 
    736  deallocate (zs)
    737 
    738  cell_count = cell_count + 1
    739 
    740  end do ! j = 1,dimY_FV3
    741 end do ! i = 1,dimX_FV3
    742 
    743 
    744 
    745 !
    746 ! Output GWD statistics fields to netCDF file
    747 !
    748 
    749 
    750 if ( halo.eq."-999" ) then ! global or nested tile
    751  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ss.tile" &
    752  // trim(tile_num) // ".nc"
    753 else ! stand-alone regional tile
    754  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ss.tile" &
    755  // trim(tile_num) // ".halo0.nc"
    756 end if
    757 
    758 ! Open netCDF file for output
    759 err = nf90_create(oro_data_output_file_name, nf90_clobber, ncid_out)
    760 call netcdf_err(err, 'creating: '//oro_data_output_file_name)
    761 
    762 err = nf90_redef(ncid_out)
    763 
    764 ! Define dimensions
    765 err = nf90_def_dim(ncid_out,'lon',dimx_fv3,lonid)
    766 call netcdf_err(err, 'defining lon dimension')
    767 err = nf90_def_dim(ncid_out,'lat',dimy_fv3,latid)
    768 call netcdf_err(err, 'defining lat dimension')
    769 
    770 ! Define the 'dimensions vector' dimids to be used for writing
    771 ! the 2-dimensional variables to the netCDF file
    772 dimids(1) = lonid
    773 dimids(2) = latid
    774 
    775 ! Define variables and attributes to put in the netCDF file
    776 err = nf90_def_var(ncid_out,'geolon',nf90_float,dimids,varid)
    777 call netcdf_err(err, 'defining geolon')
    778 err = nf90_put_att(ncid_out,varid,'units','degrees')
    779 err = nf90_put_att(ncid_out,varid,'description','longitude')
    780 err = nf90_def_var(ncid_out,'geolat',nf90_float,dimids,varid)
    781 call netcdf_err(err, 'defining geolat')
    782 err = nf90_put_att(ncid_out,varid,'units','degrees')
    783 err = nf90_put_att(ncid_out,varid,'description','latitude')
    784 err = nf90_def_var(ncid_out,'stddev',nf90_float,dimids,varid)
    785 call netcdf_err(err, 'stddev')
    786 err = nf90_put_att(ncid_out,varid,'units','meters')
    787 err = nf90_put_att(ncid_out,varid,'description', &
    788  'standard deviation of subgrid topography')
    789 err = nf90_def_var(ncid_out,'convexity',nf90_float,dimids,varid)
    790 call netcdf_err(err, 'defining convexity')
    791 err = nf90_put_att(ncid_out,varid,'units','-')
    792 err = nf90_put_att(ncid_out,varid,'description', &
    793  'convexity of subgrid topography')
    794 err = nf90_def_var(ncid_out,'oa1',nf90_float,dimids,varid)
    795 call netcdf_err(err, 'defining oa1')
    796 err = nf90_put_att(ncid_out,varid,'units','-')
    797 err = nf90_put_att(ncid_out,varid,'description', &
    798  'orographic asymmetry in west direction')
    799 err = nf90_def_var(ncid_out,'oa2',nf90_float,dimids,varid)
    800 call netcdf_err(err, 'defining oa2')
    801 err = nf90_put_att(ncid_out,varid,'units','-')
    802 err = nf90_put_att(ncid_out,varid,'description', &
    803  'orographic asymmetry in south direction')
    804 err = nf90_def_var(ncid_out,'oa3',nf90_float,dimids,varid)
    805 call netcdf_err(err, 'defining oa3')
    806 err = nf90_put_att(ncid_out,varid,'units','-')
    807 err = nf90_put_att(ncid_out,varid,'description', &
    808  'orographic asymmetry in south-west direction')
    809 err = nf90_def_var(ncid_out,'oa4',nf90_float,dimids,varid)
    810 call netcdf_err(err, 'defining oa4')
    811 err = nf90_put_att(ncid_out,varid,'units','-')
    812 err = nf90_put_att(ncid_out,varid,'description', &
    813  'orographic asymmetry in north-west direction')
    814 err = nf90_def_var(ncid_out,'ol1',nf90_float,dimids,varid)
    815 call netcdf_err(err, 'defining ol1')
    816 err = nf90_put_att(ncid_out,varid,'units','-')
    817 err = nf90_put_att(ncid_out,varid,'description', &
    818  'orographic effective length for westerly flow')
    819 err = nf90_def_var(ncid_out,'ol2',nf90_float,dimids,varid)
    820 call netcdf_err(err, 'defining ol2')
    821 err = nf90_put_att(ncid_out,varid,'units','-')
    822 err = nf90_put_att(ncid_out,varid,'description', &
    823  'orographic effective length for southerly flow')
    824 err = nf90_def_var(ncid_out,'ol3',nf90_float,dimids,varid)
    825 call netcdf_err(err, 'defining ol3')
    826 err = nf90_put_att(ncid_out,varid,'units','-')
    827 err = nf90_put_att(ncid_out,varid,'description', &
    828  'orographic effective length for south-westerly flow')
    829 err = nf90_def_var(ncid_out,'ol4',nf90_float,dimids,varid)
    830 call netcdf_err(err, 'defining ol4')
    831 err = nf90_put_att(ncid_out,varid,'units','-')
    832 err = nf90_put_att(ncid_out,varid,'description', &
    833  'orographic effective length for north-westerly flow')
    834 
    835 ! Add global attributes
    836 err = nf90_put_att(ncid_out,nf90_global, &
    837  'source_file_for_high-resolution_topography', &
    838  trim(fine_topo_source_file_name))
    839 
    840 err = nf90_enddef(ncid_out)
    841 
    842 
    843 ! Write data to output netCDF file
    844 err = nf90_inq_varid(ncid_out,'geolon',varid)
    845 call netcdf_err(err, 'reading geolon id')
    846 err = nf90_put_var(ncid_out,varid,lon_fv3_deg,start=(/1,1/), &
    847  count=(/dimx_fv3,dimy_fv3/))
    848 call netcdf_err(err, 'writing geolon')
    849 err = nf90_inq_varid(ncid_out,'geolat',varid)
    850 call netcdf_err(err, 'reading geolat id')
    851 err = nf90_put_var(ncid_out,varid,lat_fv3_deg,start=(/1,1/), &
    852  count=(/dimx_fv3,dimy_fv3/))
    853 call netcdf_err(err, 'writing geolat')
    854 err = nf90_inq_varid(ncid_out,'stddev',varid)
    855 call netcdf_err(err, 'reading stddev id')
    856 err = nf90_put_var(ncid_out,varid,std_dev,start=(/1,1/), &
    857  count=(/dimx_fv3,dimy_fv3/))
    858 call netcdf_err(err, 'writing stddev')
    859 err = nf90_inq_varid(ncid_out,'convexity',varid)
    860 call netcdf_err(err, 'reading convexity id')
    861 err = nf90_put_var(ncid_out,varid,convexity,start=(/1,1/), &
    862  count=(/dimx_fv3,dimy_fv3/))
    863 call netcdf_err(err, 'writing convexity')
    864 err = nf90_inq_varid(ncid_out,'oa1',varid)
    865 call netcdf_err(err, 'reading oa1 id')
    866 err = nf90_put_var(ncid_out,varid,oa1,start=(/1,1/), &
    867  count=(/dimx_fv3,dimy_fv3/))
    868 call netcdf_err(err, 'writing oa1')
    869 err = nf90_inq_varid(ncid_out,'oa2',varid)
    870 call netcdf_err(err, 'reading oa2 id')
    871 err = nf90_put_var(ncid_out,varid,oa2,start=(/1,1/), &
    872  count=(/dimx_fv3,dimy_fv3/))
    873 call netcdf_err(err, 'writing oa2')
    874 err = nf90_inq_varid(ncid_out,'oa3',varid)
    875 call netcdf_err(err, 'reading oa3 id')
    876 err = nf90_put_var(ncid_out,varid,oa3,start=(/1,1/), &
    877  count=(/dimx_fv3,dimy_fv3/))
    878 call netcdf_err(err, 'writing oa3')
    879 err = nf90_inq_varid(ncid_out,'oa4',varid)
    880 call netcdf_err(err, 'reading oa4 id')
    881 err = nf90_put_var(ncid_out,varid,oa4,start=(/1,1/), &
    882  count=(/dimx_fv3,dimy_fv3/))
    883 call netcdf_err(err, 'writing oa4')
    884 err = nf90_inq_varid(ncid_out,'ol1',varid)
    885 call netcdf_err(err, 'reading ol1 id')
    886 err = nf90_put_var(ncid_out,varid,ol1,start=(/1,1/), &
    887  count=(/dimx_fv3,dimy_fv3/))
    888 call netcdf_err(err, 'writing ol1')
    889 err = nf90_inq_varid(ncid_out,'ol2',varid)
    890 call netcdf_err(err, 'reading ol2 id')
    891 err = nf90_put_var(ncid_out,varid,ol2,start=(/1,1/), &
    892  count=(/dimx_fv3,dimy_fv3/))
    893 call netcdf_err(err, 'writing ol2')
    894 err = nf90_inq_varid(ncid_out,'ol3',varid)
    895 call netcdf_err(err, 'reading ol3 id')
    896 err = nf90_put_var(ncid_out,varid,ol3,start=(/1,1/), &
    897  count=(/dimx_fv3,dimy_fv3/))
    898 call netcdf_err(err, 'writing ol3')
    899 err = nf90_inq_varid(ncid_out,'ol4',varid)
    900 call netcdf_err(err, 'reading ol4 id')
    901 err = nf90_put_var(ncid_out,varid,ol4,start=(/1,1/), &
    902  count=(/dimx_fv3,dimy_fv3/))
    903 call netcdf_err(err, 'writing ol4')
    904 
    905 err = nf90_close(ncid_out)
    906 
    907 
    908 
    909 ! Determine whether grid size falls below threshold for use by large-scale
    910 ! orographic gravity wave drag and blocking scheme. If it is, then
    911 ! create "dummy" oro_data_ls file containing the same data as oro_data_ss file
    912 
    913 duplicate_oro_data_file = .false.
    914 
    915 if ( min_dx.le.7.5 ) then
    916 
    917  duplicate_oro_data_file = .true.
    918  print *, "Creating oro_data_ls file as duplicate of oro_data_ss"
    919  print *, "Minimum grid cell size = ", min_dx, " km"
    920  print *
    921 
    922 
    923  if ( halo.eq."-999" ) then ! global or nested tile
    924  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ls.tile" &
    925  // trim(tile_num) // ".nc"
    926  else ! stand-alone regional tile
    927  oro_data_output_file_name = "C" // trim(res_indx) // "_oro_data_ls.tile" &
    928  // trim(tile_num) // ".halo0.nc"
    929  end if
    930 
    931  ! Open netCDF file for output
    932  err = nf90_create(oro_data_output_file_name, nf90_clobber, ncid_out)
    933  call netcdf_err(err, 'creating: '//oro_data_output_file_name)
    934 
    935  err = nf90_redef(ncid_out)
    936 
    937  ! Define dimensions
    938  err = nf90_def_dim(ncid_out,'lon',dimx_fv3,lonid)
    939  call netcdf_err(err, 'defining lon dimension')
    940  err = nf90_def_dim(ncid_out,'lat',dimy_fv3,latid)
    941  call netcdf_err(err, 'defining lat dimension')
    942 
    943  ! Define the 'dimensions vector' dimids to be used for writing
    944  ! the 2-dimensional variables to the netCDF file
    945  dimids(1) = lonid
    946  dimids(2) = latid
    947 
    948  ! Define variables and attributes to put in the netCDF file
    949  err = nf90_def_var(ncid_out,'geolon',nf90_float,dimids,varid)
    950  call netcdf_err(err, 'defining geolon')
    951  err = nf90_put_att(ncid_out,varid,'units','degrees')
    952  err = nf90_put_att(ncid_out,varid,'description','longitude')
    953  err = nf90_def_var(ncid_out,'geolat',nf90_float,dimids,varid)
    954  call netcdf_err(err, 'defining geolat')
    955  err = nf90_put_att(ncid_out,varid,'units','degrees')
    956  err = nf90_put_att(ncid_out,varid,'description','latitude')
    957  err = nf90_def_var(ncid_out,'stddev',nf90_float,dimids,varid)
    958  call netcdf_err(err, 'defining stddev')
    959  err = nf90_put_att(ncid_out,varid,'units','meters')
    960  err = nf90_put_att(ncid_out,varid,'description', &
    961  'standard deviation of subgrid topography')
    962  err = nf90_def_var(ncid_out,'convexity',nf90_float,dimids,varid)
    963  call netcdf_err(err, 'defining convexity')
    964  err = nf90_put_att(ncid_out,varid,'units','-')
    965  err = nf90_put_att(ncid_out,varid,'description', &
    966  'convexity of subgrid topography')
    967  err = nf90_def_var(ncid_out,'oa1',nf90_float,dimids,varid)
    968  call netcdf_err(err, 'defining oa1')
    969  err = nf90_put_att(ncid_out,varid,'units','-')
    970  err = nf90_put_att(ncid_out,varid,'description', &
    971  'orographic asymmetry in west direction')
    972  err = nf90_def_var(ncid_out,'oa2',nf90_float,dimids,varid)
    973  call netcdf_err(err, 'defining oa2')
    974  err = nf90_put_att(ncid_out,varid,'units','-')
    975  err = nf90_put_att(ncid_out,varid,'description', &
    976  'orographic asymmetry in south direction')
    977  err = nf90_def_var(ncid_out,'oa3',nf90_float,dimids,varid)
    978  call netcdf_err(err, 'defining oa3')
    979  err = nf90_put_att(ncid_out,varid,'units','-')
    980  err = nf90_put_att(ncid_out,varid,'description', &
    981  'orographic asymmetry in south-west direction')
    982  err = nf90_def_var(ncid_out,'oa4',nf90_float,dimids,varid)
    983  call netcdf_err(err, 'defining oa4')
    984  err = nf90_put_att(ncid_out,varid,'units','-')
    985  err = nf90_put_att(ncid_out,varid,'description', &
    986  'orographic asymmetry in north-west direction')
    987  err = nf90_def_var(ncid_out,'ol1',nf90_float,dimids,varid)
    988  call netcdf_err(err, 'defining ol1')
    989  err = nf90_put_att(ncid_out,varid,'units','-')
    990  err = nf90_put_att(ncid_out,varid,'description', &
    991  'orographic effective length for westerly flow')
    992  err = nf90_def_var(ncid_out,'ol2',nf90_float,dimids,varid)
    993  call netcdf_err(err, 'defining ol2')
    994  err = nf90_put_att(ncid_out,varid,'units','-')
    995  err = nf90_put_att(ncid_out,varid,'description', &
    996  'orographic effective length for southerly flow')
    997  err = nf90_def_var(ncid_out,'ol3',nf90_float,dimids,varid)
    998  call netcdf_err(err, 'defining ol3')
    999  err = nf90_put_att(ncid_out,varid,'units','-')
    1000  err = nf90_put_att(ncid_out,varid,'description', &
    1001  'orographic effective length for south-westerly flow')
    1002  err = nf90_def_var(ncid_out,'ol4',nf90_float,dimids,varid)
    1003  call netcdf_err(err, 'defining ol4')
    1004  err = nf90_put_att(ncid_out,varid,'units','-')
    1005  err = nf90_put_att(ncid_out,varid,'description', &
    1006  'orographic effective length for north-westerly flow')
    1007 
    1008  ! Add global attributes
    1009  err = nf90_put_att(ncid_out,nf90_global, &
    1010  'NOTE','This is a duplicate of the oro_data_ss file')
    1011 
    1012  err = nf90_enddef(ncid_out)
    1013 
    1014 
    1015  ! Write data to output netCDF file
    1016  err = nf90_inq_varid(ncid_out,'geolon',varid)
    1017  call netcdf_err(err, 'reading geolon id')
    1018  err = nf90_put_var(ncid_out,varid,lon_fv3_deg,start=(/1,1/), &
    1019  count=(/dimx_fv3,dimy_fv3/))
    1020  call netcdf_err(err, 'writing geolon')
    1021  err = nf90_inq_varid(ncid_out,'geolat',varid)
    1022  call netcdf_err(err, 'reading geolat id')
    1023  err = nf90_put_var(ncid_out,varid,lat_fv3_deg,start=(/1,1/), &
    1024  count=(/dimx_fv3,dimy_fv3/))
    1025  call netcdf_err(err, 'writing geolat')
    1026  err = nf90_inq_varid(ncid_out,'stddev',varid)
    1027  call netcdf_err(err, 'reading stddev id')
    1028  err = nf90_put_var(ncid_out,varid,std_dev,start=(/1,1/), &
    1029  count=(/dimx_fv3,dimy_fv3/))
    1030  call netcdf_err(err, 'writing stddev')
    1031  err = nf90_inq_varid(ncid_out,'convexity',varid)
    1032  call netcdf_err(err, 'reading convexity id')
    1033  err = nf90_put_var(ncid_out,varid,convexity,start=(/1,1/), &
    1034  count=(/dimx_fv3,dimy_fv3/))
    1035  call netcdf_err(err, 'writing convexity')
    1036  err = nf90_inq_varid(ncid_out,'oa1',varid)
    1037  call netcdf_err(err, 'reading oa1 id')
    1038  err = nf90_put_var(ncid_out,varid,oa1,start=(/1,1/), &
    1039  count=(/dimx_fv3,dimy_fv3/))
    1040  call netcdf_err(err, 'writing oa1')
    1041  err = nf90_inq_varid(ncid_out,'oa2',varid)
    1042  call netcdf_err(err, 'reading oa2 id')
    1043  err = nf90_put_var(ncid_out,varid,oa2,start=(/1,1/), &
    1044  count=(/dimx_fv3,dimy_fv3/))
    1045  call netcdf_err(err, 'writing oa2')
    1046  err = nf90_inq_varid(ncid_out,'oa3',varid)
    1047  call netcdf_err(err, 'reading oa3 id')
    1048  err = nf90_put_var(ncid_out,varid,oa3,start=(/1,1/), &
    1049  count=(/dimx_fv3,dimy_fv3/))
    1050  call netcdf_err(err, 'writing oa3')
    1051  err = nf90_inq_varid(ncid_out,'oa4',varid)
    1052  call netcdf_err(err, 'reading oa4 id')
    1053  err = nf90_put_var(ncid_out,varid,oa4,start=(/1,1/), &
    1054  count=(/dimx_fv3,dimy_fv3/))
    1055  call netcdf_err(err, 'writing oa4')
    1056  err = nf90_inq_varid(ncid_out,'ol1',varid)
    1057  call netcdf_err(err, 'reading ol1 id')
    1058  err = nf90_put_var(ncid_out,varid,ol1,start=(/1,1/), &
    1059  count=(/dimx_fv3,dimy_fv3/))
    1060  call netcdf_err(err, 'writing ol1')
    1061  err = nf90_inq_varid(ncid_out,'ol2',varid)
    1062  call netcdf_err(err, 'reading ol2 id')
    1063  err = nf90_put_var(ncid_out,varid,ol2,start=(/1,1/), &
    1064  count=(/dimx_fv3,dimy_fv3/))
    1065  call netcdf_err(err, 'writing ol2')
    1066  err = nf90_inq_varid(ncid_out,'ol3',varid)
    1067  call netcdf_err(err, 'reading ol3 id')
    1068  err = nf90_put_var(ncid_out,varid,ol3,start=(/1,1/), &
    1069  count=(/dimx_fv3,dimy_fv3/))
    1070  call netcdf_err(err, 'writing ol3')
    1071  err = nf90_inq_varid(ncid_out,'ol4',varid)
    1072  call netcdf_err(err, 'reading ol4 id')
    1073  err = nf90_put_var(ncid_out,varid,ol4,start=(/1,1/), &
    1074  count=(/dimx_fv3,dimy_fv3/))
    1075  call netcdf_err(err, 'writing ol4')
    1076 
    1077  err = nf90_close(ncid_out)
    1078 
    1079 else
    1080 
    1081  print *, "Minimum grid cell size = ", min_dx, " km"
    1082  print *
    1083 
    1084 end if
    1085 
    1086 
    1087 
    1088 ! Deallocate arrays
    1089 deallocate(lat_fv3)
    1090 deallocate(lon_fv3)
    1091 deallocate(lat_fv3_deg)
    1092 deallocate(lon_fv3_deg)
    1093 deallocate(area_fv3)
    1094 deallocate(lat1d_fine)
    1095 deallocate(lon1d_fine)
    1096 deallocate(hgt_m_fine)
    1097 deallocate(std_dev)
    1098 deallocate(convexity)
    1099 deallocate(oa1)
    1100 deallocate(oa2)
    1101 deallocate(oa3)
    1102 deallocate(oa4)
    1103 deallocate(ol1)
    1104 deallocate(ol2)
    1105 deallocate(ol3)
    1106 deallocate(ol4)
    1107 
    1108 
    1109 end subroutine calc_gsl_oro_data_sm_scale
    1110 
    1116 function nearest_i_east(lon_in)
    1117 ! Calculates nearest fine-grid i index to the east of (or on) a given longitude
    1118 implicit none
    1119 
    1120 integer :: nearest_i_east
    1121 real (kind=real_kind), intent(in) :: lon_in
    1122 real (kind=real_kind) :: lon
    1123 integer :: i
    1124 
    1125 lon = lon_in
    1126 ! Make sure longitude is between -pi and pi
    1127 do while ( (lon.lt.(-pi)).or.(lon.gt.pi) )
    1128  if ( lon.lt.(-pi) ) lon = lon + 2*pi
    1129  if ( lon.gt.pi ) lon = lon - 2*pi
    1130 end do
    1131 
    1132 if ( lon.gt.lon1d_fine(dimx_fine) ) then
    1133  nearest_i_east = 1
    1134 else
    1135  i = 1
    1136  do while ( lon1d_fine(i).lt.lon )
    1137  i = i + 1
    1138  end do
    1139  nearest_i_east = i
    1140 end if
    1141 
    1142 end function nearest_i_east
    1143 
    1149 function nearest_i_west(lon_in)
    1150 ! Calculates nearest fine-grid i index to the west of a given longitude
    1151 implicit none
    1152 
    1153 integer :: nearest_i_west
    1154 real (kind=real_kind), intent(in) :: lon_in
    1155 real (kind=real_kind) :: lon
    1156 integer :: i
    1157 
    1158 lon = lon_in
    1159 ! Make sure longitude is between -pi and pi
    1160 do while ( (lon.lt.(-pi)).or.(lon.gt.pi) )
    1161  if ( lon.lt.(-pi) ) lon = lon + 2*pi
    1162  if ( lon.gt.pi ) lon = lon - 2*pi
    1163 end do
    1164 
    1165 if ( (lon.lt.lon1d_fine(1)).or.(lon.ge.lon1d_fine(dimx_fine)) ) then
    1166  nearest_i_west = dimx_fine
    1167 else
    1168  i = 1
    1169  do while ( lon1d_fine(i).le.lon )
    1170  i = i + 1
    1171  end do
    1172  nearest_i_west = i - 1
    1173 end if
    1174 
    1175 end function nearest_i_west
    1176 
    1182 function nearest_j_north(lat_in)
    1183 ! Calculates nearest fine-grid j index to the north of a given latitude
    1184 ! Note: If the abs(latitude) is greater than pi/2 (90 degrees) then
    1185 ! the value -999 is returned
    1186 implicit none
    1187 
    1188 integer :: nearest_j_north
    1189 real (kind=real_kind), intent(in) :: lat_in
    1190 real (kind=real_kind) :: lat
    1191 integer :: j
    1192 
    1193 lat = lat_in
    1194 if ( abs(lat_in).gt.p5*pi ) then
    1195  nearest_j_north = -999
    1196 else
    1197  j = 1
    1198  do while ( (lat1d_fine(j).lt.lat).and.(j.lt.dimy_fine) )
    1199  j = j + 1
    1200  end do
    1201  nearest_j_north = j
    1202 end if
    1203 
    1204 end function nearest_j_north
    1205 
    1211 function nearest_j_south(lat_in)
    1212 ! Calculates nearest fine-grid j index to the south of a given latitude
    1213 ! Note: If the abs(latitude) is greater than pi/2 (90 degrees) then
    1214 ! the value -999 is returned
    1215 implicit none
    1216 
    1217 integer :: nearest_j_south
    1218 real (kind=real_kind), intent(in) :: lat_in
    1219 real (kind=real_kind) :: lat
    1220 integer :: j
    1221 
    1222 lat = lat_in
    1223 if ( abs(lat_in).gt.p5*pi ) then
    1224  nearest_j_south = -999
    1225 elseif ( lat_in.le.lat1d_fine(1) ) then
    1226  nearest_j_south = 1
    1227 else
    1228  j = 2
    1229  do while ( (lat1d_fine(j).le.lat).and.(j.le.dimy_fine) )
    1230  j = j + 1
    1231  end do
    1232  nearest_j_south = j - 1
    1233 end if
    1234 
    1235 end function nearest_j_south
    1236 
    1246 function interp_1d(x,x1,x2,y1,y2)
    1247 ! Interpolates (or extrapolates) linear function y = y(x)
    1248 ! to x given y1 = y(x1) and y2 = y(x2)
    1249 implicit none
    1250 
    1251 real (kind=real_kind) :: interp_1d
    1252 real (kind=real_kind), intent(in) :: x,x1,x2,y1,y2
    1253 real (kind=real_kind) :: slope
    1254 
    1255 ! Formula for a line: y = y1 + slope*(x - x1)
    1256 slope = (y2-y1)/(x2-x1)
    1257 interp_1d = y1 + slope*(x-x1)
    1258 
    1259 end function interp_1d
    1260 
    1266 subroutine netcdf_err(err,string)
    1268 use netcdf
    1269 
    1270 implicit none
    1271 
    1272 integer, intent(in) :: err
    1273 character(len=*), intent(in) :: string
    1274 character(len=256) :: errmsg
    1275 
    1276 if (err.eq.nf90_noerr ) return
    1277 errmsg = nf90_strerror(err)
    1278 print *, ""
    1279 print *, "FATAL ERROR: ", trim(string), ": ", trim(errmsg)
    1280 print *, "STOP."
    1281 call exit(4)
    1282 
    1283 return
    1284 end subroutine netcdf_err
    1285 
    1286 
    1287 
    1288 end module gsl_oro_data_sm_scale
    subroutine netcdf_err(err, string)
    Check NetCDF error code and output the error message.
    Definition: netcdf_io.F90:219
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.html b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.html new file mode 100644 index 000000000..14619b918 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.html @@ -0,0 +1,3163 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.F File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    mtnlm7_oclsm.F File Reference
    +
    +
    + +

    Terrain maker for global spectral model. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    program __mtnlm7_oclsm.F__
     This program creates 7 terrain-related files computed from the navy 10-minute terrain dataset. More...
     
    subroutine get_index (IMN, JMN, npts, lonO, latO, DELXN, jst, jen, ilist, numx)
     Determine the location of a cubed-sphere point within the high-resolution orography data. More...
     
    real function get_lat_angle (dy, DEGRAD)
     Convert the 'y' direction distance of a cubed-sphere grid point to the corresponding distance in latitude. More...
     
    real function get_lon_angle (dx, lat, DEGRAD)
     Convert the 'x' direction distance of a cubed-sphere grid point to the corresponding distance in longitude. More...
     
    subroutine get_mismatch_index (im_in, jm_in, geolon_in, geolat_in, bitmap_in, num_out, lon_out, lat_out, iindx, jindx)
     For unmapped land points, find the nearest land point on the input data and pass back its i/j index. More...
     
    real function get_xnsum (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn)
     Count the number of high-resolution orography points that are higher than the model grid box average orography height. More...
     
    subroutine get_xnsum2 (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)
     Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box). More...
     
    subroutine get_xnsum3 (lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)
     Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box). More...
     
    subroutine gg2rg (im, jm, numi, a)
     Convert from a full grid to a reduced grid. More...
     
    logical function inside_a_polygon (lon1, lat1, npts, lon2, lat2)
     Check if a point is inside a polygon. More...
     
    subroutine interpolate_mismatch (im_in, jm_in, data_in, num_out, data_out, iindx, jindx)
     Replace unmapped model land points with the nearest land point on the input grid. More...
     
    subroutine latlon2xyz (siz, lon, lat, x, y, z)
     Convert from latitude and longitude to x,y,z coordinates. More...
     
    subroutine MAKEMT (ZAVG, ZSLM, ORO, SLM, VAR, VAR4, GLAT, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)
     Create the orography, land-mask, standard deviation of orography and the convexity on a model gaussian grid. More...
     
    subroutine MAKEMT2 (ZAVG, ZSLM, ORO, SLM, land_frac, VAR, VAR4, GLAT, IM, JM, IMN, JMN, lon_c, lat_c)
     Create the orography, land-mask, land fraction, standard deviation of orography and the convexity on a model cubed-sphere tile. More...
     
    subroutine MAKEOA (ZAVG, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)
     Create orographic asymmetry and orographic length scale on the model grid. More...
     
    subroutine MAKEOA2 (ZAVG, zslm, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IM, JM, IMN, JMN, lon_c, lat_c, lon_t, lat_t, dx, dy, is_south_pole, is_north_pole)
     Create orographic asymmetry and orographic length scale on the model grid. More...
     
    subroutine MAKEOA3 (ZAVG, zslm, VAR, GLAT, OA4, OL, IOA4, ELVMAX, ORO, SLM, oro1, XNSUM, XNSUM1, XNSUM2, XNSUM3, XNSUM4, IM, JM, IMN, JMN, lon_c, lat_c, lon_t, lat_t, is_south_pole, is_north_pole, IMI, JMI, OA_IN, OL_IN, slm_in, lon_in, lat_in)
     Create orographic asymmetry and orographic length scale on the model grid. More...
     
    subroutine MAKEPC (ZAVG, ZSLM, THETA, GAMMA, SIGMA, GLAT, IST, IEN, JST, JEN, IM, JM, IMN, JMN, XLAT, numi)
     Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east. More...
     
    subroutine MAKEPC2 (ZAVG, ZSLM, THETA, GAMMA, SIGMA, GLAT, IM, JM, IMN, JMN, lon_c, lat_c)
     Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east. More...
     
    subroutine maxmin (ia, len, tile)
     Print the maximum, mininum, mean and standard deviation of an array. More...
     
    subroutine minmaxj (IM, JM, A, title)
     Print out the maximum and minimum values of an array and their i/j location. More...
     
    subroutine minmxj (IM, JM, A, title)
     Print out the maximum and minimum values of an array. More...
     
    subroutine mnmxja (IM, JM, A, imax, jmax, title)
     Print out the maximum and minimum values of an array. More...
     
    subroutine nanc (a, l, c)
     Report NaNS and NaNQ within an address range for 8-byte real words. More...
     
    subroutine read_g (glob, ITOPO)
     Read input global 30-arc second orography data. More...
     
    subroutine REVERS (IM, JM, numi, F, WRK)
     Reverse the east-west and north-south axes in a two-dimensional array. More...
     
    subroutine rg2gg (im, jm, numi, a)
     Convert from a reduced grid to a full grid. More...
     
    subroutine SPFFT1 (IMAX, INCW, INCG, KMAX, W, G, IDIR)
     Perform multiple fast fourier transforms. More...
     
    real function spherical_angle (v1, v2, v3)
     Compute spherical angle. More...
     
    real function spherical_distance (theta1, phi1, theta2, phi2)
     Compute a great circle distance between two points. More...
     
    subroutine TERSUB (IMN, JMN, IM, JM, NM, NR, NF0, NF1, NW, EFAC, BLAT, OUTGRID, INPUTOROG)
     Driver routine to compute terrain. More...
     
    real function timef ()
     Get the date/time for the system clock. More...
     
    +

    Detailed Description

    +

    Terrain maker for global spectral model.

    +
    Author
    Mark Iredell
    +
    Date
    92-04-16
    + +

    Definition in file mtnlm7_oclsm.F.

    +

    Function/Subroutine Documentation

    + +

    ◆ __mtnlm7_oclsm.F__()

    + +
    +
    + + + + + + + +
    program __mtnlm7_oclsm.F__ ()
    +
    + +

    This program creates 7 terrain-related files computed from the navy 10-minute terrain dataset.

    +

    The model physics grid parameters and spectral truncation and filter parameters are read by this program as input.

    +

    The 7 files produced are:

      +
    1. sea-land mask on model physics grid
    2. +
    3. gridded orography on model physics grid
    4. +
    5. mountain std dev on model physics grid
    6. +
    7. spectral orography in spectral domain
    8. +
    9. unfiltered gridded orography on model physics grid
    10. +
    11. grib sea-land mask on model physics grid
    12. +
    13. grib gridded orography on model physics grid
    14. +
    +

    The orography is only filtered for wavenumbers greater than nf0. For wavenumbers n between nf0 and nf1, the orography is filtered by the factor 1-((n-nf0)/(nf1-nf0))**2. The filtered orography will not have information beyond wavenumber nf1.

    +

    PROGRAM HISTORY LOG:

      +
    • 92-04-16 IREDELL
    • +
    • 98-02-02 IREDELL FILTER
    • +
    • 98-05-31 HONG Modified for subgrid orography used in Kim's scheme
    • +
    • 98-12-31 HONG Modified for high-resolution GTOPO orography
    • +
    • 99-05-31 HONG Modified for getting OL4 (mountain fraction)
        +
      • 00-02-10 Moorthi's modifications
      • +
      +
    • +
    • 00-04-11 HONG Modified for reduced grids
    • +
    • 00-04-12 Iredell Modified for reduced grids
    • +
    • 02-01-07 (j) modified for principal axes of orography There are now 14 files, 4 additional for lm mb
        +
      • 04-04-04 (j) re-Test on IST/ilen calc for sea-land mask(j)
      • +
      • 04-09-04 minus sign here in MAKEOA IST and IEN as in MAKEMT!
      • +
      • 05-09-05 if test on HK and HLPRIM for GAMMA SQRT
      • +
      • 07-08-07 replace 8' with 30" incl GICE, conintue w/ S-Y. lake slm + - 08-08-07 All input 30", UMD option, and filter as described below Quadratic filter applied by default. NF0 is normally set to an even value beyond the previous truncation, for example, for jcap=382, NF0=254+2 NF1 is set as jcap+2 (and/or nearest even), eg., for t382, NF1=382+2=384 if no filter is desired then NF1=NF0=0 and ORF=ORO but if no filter but spectral to grid (with gibbs) then NF1=jcap+2, and NF1=jcap+1

        +

        INPUT FILES:

        +
      • +
      • UNIT5 - PHYSICS LONGITUDES (IM), PHYSICS LATITUDES (JM), SPECTRAL TRUNCATION (NM), RHOMBOIDAL FLAG (NR), AND FIRST AND SECOND FILTER PARAMETERS (NF0,NF1). RESPECTIVELY READ IN FREE FORMAT.
      • +
      • UNIT235 - GTOPO 30" AVR for ZAVG elevation + - UNIT10 - 30" UMD land (lake) cover mask see MSKSRC switch
      • +
      • XUNIT11 - GTOPO AVR
      • +
      • XUNIT12 - GTOPO STD DEV
      • +
      • XUNIT13 - GTOPO MAX
      • +
      • UNIT14 - GTOPO SLM (10' NAVY if switched to get lakes
      • +
      • UNIT15 - GICE Grumbine 30" RAMP Antarctica orog IMNx3616
      • +
      • UNIT25 - Ocean land-sea mask on gaussian grid
        + OUTPUT FILES:
      • +
      • UNIT51 - SEA-LAND MASK (IM,JM)
      • +
      • UNIT52 - GRIDDED OROGRAPHY (IM,JM)
      • +
      • UNIT54 - SPECTRAL OROGRAPHY ((NM+1)*((NR+1)*NM+2))
      • +
      • UNIT55 - UNFILTERED GRIDDED OROGRAPHY (IM,JM)
      • +
      • UNIT57 - GRIB GRIDDED OROGRAPHY (IM,JM)

        +

        SUBPROGRAMS CALLED:

        +
      • +
      • UNIQUE:
      • +
      • TERSUB - MAIN SUBPROGRAM
      • +
      • SPLAT - COMPUTE GAUSSIAN LATITUDES OR EQUALLY-SPACED LATITUDES
      • +
      • LIBRARY:
      • +
      • SPTEZ - SPHERICAL TRANSFORM
      • +
      • GBYTES - UNPACK BITS
      • +
      +
    • +
    +
    Returns
    0 for success, error code otherwise.
    + +

    Definition at line 78 of file mtnlm7_oclsm.F.

    + +

    References netcdf_err().

    + +
    +
    + +

    ◆ get_index()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_index (integer, intent(in) IMN,
    integer, intent(in) JMN,
    integer npts,
    real, dimension(npts), intent(in) lonO,
    real, dimension(npts), intent(in) latO,
    real, intent(in) DELXN,
    integer, intent(out) jst,
    integer, intent(out) jen,
    integer, dimension(imn), intent(out) ilist,
    integer, intent(out) numx 
    )
    +
    + +

    Determine the location of a cubed-sphere point within the high-resolution orography data.

    +

    The location is described by the range of i/j indices on the high-res grid.

    +
    Parameters
    + + + + + + + + + + + +
    [in]imn'i' dimension of the high-resolution orography data set.
    [in]jmn'j' dimension of the high-resolution orography data set.
    [in]nptsNumber of vertices to describe the cubed-sphere point.
    [in]lonOThe longitudes of the cubed-sphere vertices.
    [in]latOThe latitudes of the cubed-sphere vertices.
    [in]delxnResolution of the high-resolution orography data set.
    [out]jstStarting 'j' index on the high-resolution grid.
    [out]jenEnding 'j' index on the high-resolution grid.
    [out]ilistList of 'i' indices on the high-resolution grid.
    [out]numxThe number of 'i' indices on the high-resolution grid.
    +
    +
    +
    Author
    GFDL programmer
    + +

    Definition at line 1790 of file mtnlm7_oclsm.F.

    + +

    Referenced by MAKEMT2(), MAKEOA2(), MAKEOA3(), and MAKEPC2().

    + +
    +
    + +

    ◆ get_lat_angle()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    real function get_lat_angle (real dy,
    real DEGRAD 
    )
    +
    + +

    Convert the 'y' direction distance of a cubed-sphere grid point to the corresponding distance in latitude.

    +
    Parameters
    + + + +
    [in]dyDistance along the 'y' direction of a cubed-sphere point.
    [in]degradConversion from radians to degrees.
    +
    +
    +
    Returns
    get_lat_angle Corresponding distance in latitude.
    +
    Author
    GFDL programmer
    + +

    Definition at line 2992 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ get_lon_angle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real function get_lon_angle (real dx,
    real lat,
    real DEGRAD 
    )
    +
    + +

    Convert the 'x' direction distance of a cubed-sphere grid point to the corresponding distance in longitude.

    +
    Parameters
    + + + + +
    [in]dxDistance along the 'x' direction of a cubed-sphere grid point.
    [in]latLatitude of the cubed-sphere point.
    [in]degradConversion from radians to degrees.
    +
    +
    +
    Returns
    get_lon_angle Corresponding distance in longitude.
    +
    Author
    GFDL programmer
    + +

    Definition at line 2973 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ get_mismatch_index()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_mismatch_index (integer, intent(in) im_in,
    integer, intent(in) jm_in,
    real, dimension(im_in,jm_in), intent(in) geolon_in,
    real, dimension(im_in,jm_in), intent(in) geolat_in,
    logical*1, dimension(im_in,jm_in), intent(in) bitmap_in,
    integer, intent(in) num_out,
    real, dimension(num_out), intent(in) lon_out,
    real, dimension(num_out), intent(in) lat_out,
    integer, dimension(num_out), intent(out) iindx,
    integer, dimension(num_out), intent(out) jindx 
    )
    +
    + +

    For unmapped land points, find the nearest land point on the input data and pass back its i/j index.

    +
    Parameters
    + + + + + + + + + + + +
    [in]im_in'i' dimension of input data.
    [in]jm_in'j' dimension of input data.
    [in]geolon_inLongitude of input data.
    [in]geolat_inLatitude of input data.
    [in]bitmap_inBitmap (mask) of input data.
    [in]num_outNumber of unmapped points.
    [in]lon_outLongitude of unmapped points.
    [in]lat_outLatitude of unmapped points.
    [out]iindx'i' indices of nearest land points on the input data.
    [out]jindx'j' indices of nearest land points on the input data.
    +
    +
    +
    Author
    GFDL progammer
    + +

    Definition at line 3470 of file mtnlm7_oclsm.F.

    + +

    References spherical_distance().

    + +

    Referenced by MAKEOA3().

    + +
    +
    + +

    ◆ get_xnsum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real function get_xnsum (real lon1,
    real lat1,
    real lon2,
    real lat2,
    integer IMN,
    integer JMN,
    real, dimension(jmn) glat,
    integer, dimension(imn,jmn) zavg,
    integer, dimension(imn,jmn) zslm,
    real delxn 
    )
    +
    + +

    Count the number of high-resolution orography points that are higher than the model grid box average orography height.

    +
    Parameters
    + + + + + + + + + + + +
    [in]lon1Longitude of corner point 1 of the model grid box.
    [in]lat1Latitude of corner point 1 of the model grid box.
    [in]lon2Longitude of corner point 2 of the model grid box.
    [in]lat2Latitude of corner point 2 of the model grid box.
    [in]imn'i' dimension of the high-resolution orography data.
    [in]jmn'j' dimension of the high-resolution orography data.
    [in]glatLatitude of each row of the high-resolution orography data.
    [in]zavgThe high-resolution orography.
    [in]zslmThe high-resolution land mask.
    [in]delxnResolution of the high-res orography data.
    +
    +
    +
    Returns
    get_xnsum The number of high-res points above the mean orography.
    +
    Author
    GFDL Programmer
    + +

    Definition at line 4574 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ get_xnsum2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_xnsum2 (real lon1,
    real lat1,
    real lon2,
    real lat2,
    integer IMN,
    integer JMN,
    real, dimension(jmn) glat,
    integer, dimension(imn,jmn) zavg,
    integer, dimension(imn,jmn) zslm,
    real delxn,
    real, intent(out) xnsum1,
    real, intent(out) xnsum2,
    real, intent(out) HC 
    )
    +
    + +

    Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box).

    +

    The critical value is a function of the standard deviation of orography.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]lon1Longitude of corner point 1 of the model grid box.
    [in]lat1Latitude of corner point 1 of the model grid box.
    [in]lon2Longitude of corner point 2 of the model grid box.
    [in]lat2Latitude of corner point 2 of the model grid box.
    [in]imn'i' dimension of the high-resolution orography data.
    [in]jmn'j' dimension of the high-resolution orography data.
    [in]glatLatitude of each row of the high-resolution orography data.
    [in]zavgThe high-resolution orography.
    [in]zslmThe high-resolution land mask.
    [in]delxnResolution of the high-res orography data.
    [out]xnsum1The number of high-resolution orography above the critical value inside a model grid box.
    [out]xnsum2The number of high-resolution orography points inside a model grid box.
    [out]hcCritical height.
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 4681 of file mtnlm7_oclsm.F.

    + +

    Referenced by MAKEOA2().

    + +
    +
    + +

    ◆ get_xnsum3()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine get_xnsum3 (real lon1,
    real lat1,
    real lon2,
    real lat2,
    integer IMN,
    integer JMN,
    real, dimension(jmn) glat,
    integer, dimension(imn,jmn) zavg,
    integer, dimension(imn,jmn) zslm,
    real delxn,
    real, intent(out) xnsum1,
    real, intent(out) xnsum2,
    real HC 
    )
    +
    + +

    Count the number of high-resolution orography points that are higher than a critical value inside a model grid box (or a portion of a model grid box).

    +

    Unlike routine get_xnsum2(), this routine does not compute the critical value. Rather, it is passed in.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]lon1Longitude of corner point 1 of the model grid box.
    [in]lat1Latitude of corner point 1 of the model grid box.
    [in]lon2Longitude of corner point 2 of the model grid box.
    [in]lat2Latitude of corner point 2 of the model grid box.
    [in]imn'i' dimension of the high-resolution orography data.
    [in]jmn'j' dimension of the high-resolution orography data.
    [in]glatLatitude of each row of the high-resolution orography data.
    [in]zavgThe high-resolution orography.
    [in]zslmThe high-resolution land mask.
    [in]delxnResolution of the high-res orography data.
    [out]xnsum1The number of high-resolution orography above the critical value inside a model grid box.
    [out]xnsum2The number of high-resolution orography points inside a model grid box.
    [in]hcCritical height.
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 4777 of file mtnlm7_oclsm.F.

    + +

    Referenced by MAKEOA2().

    + +
    +
    + +

    ◆ gg2rg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine gg2rg (integer, intent(in) im,
    integer, intent(in) jm,
    integer, dimension(jm), intent(in) numi,
    real, dimension(im,jm), intent(inout) a 
    )
    +
    + +

    Convert from a full grid to a reduced grid.

    +
    Parameters
    + + + + + +
    [in]im'i' dimension of the full grid.
    [in]jm'j' dimension of the full grid.
    [in]numiNumber of 'i' points for each row of the reduced grid.
    [in,out]aThe data to be converted.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4072 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ inside_a_polygon()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    logical function inside_a_polygon (real lon1,
    real lat1,
    integer npts,
    real, dimension(npts) lon2,
    real, dimension(npts) lat2 
    )
    +
    + +

    Check if a point is inside a polygon.

    +
    Parameters
    + + + + + + +
    [in]lon1Longitude of the point to check.
    [in]lat1Latitude of the point to check.
    [in]nptsNumber of polygon vertices.
    [in]lon2Longitude of the polygon vertices.
    [in]lat2Latitude of the polygon vertices.
    +
    +
    +
    Returns
    inside_a_polygon When true, point is within the polygon.
    +
    Author
    GFDL programmer
    + +

    Definition at line 4478 of file mtnlm7_oclsm.F.

    + +

    References latlon2xyz(), and spherical_angle().

    + +
    +
    + +

    ◆ interpolate_mismatch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine interpolate_mismatch (integer, intent(in) im_in,
    integer, intent(in) jm_in,
    real, dimension(im_in,jm_in), intent(in) data_in,
    integer, intent(in) num_out,
    real, dimension(num_out), intent(out) data_out,
    integer, dimension(num_out), intent(in) iindx,
    integer, dimension(num_out), intent(in) jindx 
    )
    +
    + +

    Replace unmapped model land points with the nearest land point on the input grid.

    +
    Parameters
    + + + + + + + + +
    [in]im_in'i' dimension of input grid.
    [in]jm_in'j' dimension of input grid.
    [in]data_inInput grid data.
    [in]num_outNumber of unmapped model points.
    [out]data_outData on the model tile.
    [in]iindx'i' indices of the nearest land points on the input grid.
    [in]jindx'j' indices of the nearest land points on the input grid.
    +
    +
    +
    Author
    GFDL programmer
    + +

    Definition at line 3551 of file mtnlm7_oclsm.F.

    + +

    Referenced by MAKEOA3().

    + +
    +
    + +

    ◆ latlon2xyz()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine latlon2xyz (integer, intent(in) siz,
    real, dimension(siz), intent(in) lon,
    real, dimension(siz), intent(in) lat,
    real, dimension(siz), intent(out) x,
    real, dimension(siz), intent(out) y,
    real, dimension(siz), intent(out) z 
    )
    +
    + +

    Convert from latitude and longitude to x,y,z coordinates.

    +
    Parameters
    + + + + + + + +
    [in]sizNumber of points to convert.
    [in]lonLongitude of points to convert.
    [in]latLatitude of points to convert.
    [out]x'x' coordinate of the converted points.
    [out]y'y' coordinate of the converted points.
    [out]z'z' coordinate of the converted points.
    +
    +
    +
    Author
    GFDL programmer
    + +

    Definition at line 4406 of file mtnlm7_oclsm.F.

    + +

    Referenced by inside_a_polygon().

    + +
    +
    + +

    ◆ MAKEMT()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEMT (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) ZSLM,
    dimension(im,jm) ORO,
    dimension(im,jm) SLM,
    dimension(im,jm) VAR,
    dimension(im,jm) VAR4,
    dimension(jmn) GLAT,
    dimension(im,jm) IST,
    dimension(im,jm) IEN,
    dimension(jm) JST,
    dimension(jm) JEN,
     IM,
     JM,
     IMN,
     JMN,
    dimension(jm) XLAT,
    dimension(jm) numi 
    )
    +
    + +

    Create the orography, land-mask, standard deviation of orography and the convexity on a model gaussian grid.

    +

    This routine was used for the spectral GFS model.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + +
    [in]zavgThe high-resolution input orography dataset.
    [in]zslmThe high-resolution input land-mask dataset.
    [out]oroOrography on the model grid.
    [out]slmLand-mask on the model grid.
    [out]varStandard deviation of orography on the model grid.
    [out]var4Convexity on the model grid.
    [out]glatLatitude of each row of the high-resolution orography and land-mask datasets.
    [out]istThis is the 'i' index of high-resolution data set at the east edge of the model grid cell. the high-resolution dataset with respect to the 'east' edge
    [out]ienThis is the 'i' index of high-resolution data set at the west edge of the model grid cell.
    [out]jstThis is the 'j' index of high-resolution data set at the south edge of the model grid cell.
    [out]jenThis is the 'j' index of high-resolution data set at the north edge of the model grid cell.
    [in]im"i" dimension of the model grid.
    [in]jm"j" dimension of the model grid.
    [in]imn"i" dimension of the hi-res input orog/mask dataset.
    [in]jmn"j" dimension of the hi-res input orog/mask dataset.
    [in]xlatThe latitude of each row of the model grid.
    [in]numiFor reduced gaussian grids, the number of 'i' points for each 'j' row.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 1624 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ MAKEMT2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEMT2 (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) ZSLM,
    real, dimension(im,jm) ORO,
    real, dimension(im,jm) SLM,
    real, dimension(im,jm) land_frac,
    real, dimension(im,jm) VAR,
    real, dimension(im,jm) VAR4,
    real, dimension(jmn) GLAT,
    integer IM,
    integer JM,
    integer IMN,
    integer JMN,
    real, dimension(im+1,jm+1) lon_c,
    real, dimension(im+1,jm+1) lat_c 
    )
    +
    + +

    Create the orography, land-mask, land fraction, standard deviation of orography and the convexity on a model cubed-sphere tile.

    +

    This routine is used for the FV3GFS model.

    +
    Parameters
    + + + + + + + + + + + + + + + +
    [in]zavgThe high-resolution input orography dataset.
    [in]zslmThe high-resolution input land-mask dataset.
    [out]oroOrography on the model tile.
    [out]slmLand-mask on the model tile.
    [out]land_fracLand fraction on the model tile.
    [out]varStandard deviation of orography on the model tile.
    [out]var4Convexity on the model tile.
    [out]glatLatitude of each row of the high-resolution orography and land-mask datasets.
    [in]im"i" dimension of the model grid.
    [in]jm"j" dimension of the model grid.
    [in]imn"i" dimension of the hi-res input orog/mask datasets.
    [in]jmn"j" dimension of the hi-res input orog/mask datasets.
    [in]lon_cLongitude of the model grid corner points.
    [in]lat_cLatitude on the model grid corner points.
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 1884 of file mtnlm7_oclsm.F.

    + +

    References get_index().

    + +
    +
    + +

    ◆ MAKEOA()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEOA (integer, dimension(imn,jmn) ZAVG,
    dimension(im,jm) VAR,
    dimension(jmn) GLAT,
    dimension(im,jm,4) OA4,
    dimension(im,jm,4) OL,
    dimension(im,jm,4) IOA4,
    dimension(im,jm) ELVMAX,
    dimension(im,jm) ORO,
    dimension(im,jm) oro1,
    dimension(im,jm) XNSUM,
    dimension(im,jm) XNSUM1,
    dimension(im,jm) XNSUM2,
    dimension(im,jm) XNSUM3,
    dimension(im,jm) XNSUM4,
    dimension(im,jm) IST,
    dimension(im,jm) IEN,
    dimension(jm) JST,
    dimension(jm) JEN,
     IM,
     JM,
     IMN,
     JMN,
    dimension(jm) XLAT,
    dimension(jm) numi 
    )
    +
    + +

    Create orographic asymmetry and orographic length scale on the model grid.

    +

    This routine is used for the spectral GFS gaussian grid.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]zavgThe high-resolution input orography dataset.
    [in]varStandard deviation of orography on the model grid.
    [out]glatLatitude of each row of input terrain dataset.
    [out]oa4Orographic asymmetry on the model grid. Four directional components - W/S/SW/NW
    [out]olOrographic length scale on the model grid. Four directional components - W/S/SW/NW
    [out]ioa4Count of oa4 values between certain thresholds.
    [out]elvmaxMaximum elevation on the model grid.
    [in]oroOrography on the model grid.
    [out]oro1Save array for model grid orography.
    [out]xnsumNumber of high-resolution orography points higher than the model grid box average.
    [out]xnsum1Number of high-resolution orography points higher than the critical height.
    [out]xnsum2Total number of high-resolution orography points within a model grid box.
    [out]xnsum3Same as xnsum1, except shifted by half a model grid box.
    [out]xnsum4Same as xnsum2, except shifted by half a model grid box.
    [out]istThis is the 'i' index of high-resolution data set at the east edge of the model grid cell.
    [out]ienThis is the 'i' index of high-resolution data set at the west edge of the model grid cell.
    [out]jstThis is the 'j' index of high-resolution data set at the south edge of the model grid cell.
    [out]jenThis is the 'j' index of high-resolution data set at the north edge of the model grid cell.
    [in]im"i" dimension of the model grid.
    [in]jm"j" dimension of the model grid.
    [in]imn"i" dimension of the input terrain dataset.
    [in]jmn"j" dimension of the input terrain dataset.
    [in]xlatThe latitude of each row of the model grid.
    [in]numiFor reduced gaussian grids, the number of 'i' points for each 'j' row.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 2647 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ MAKEOA2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEOA2 (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) zslm,
    real, dimension(im,jm) VAR,
    real, dimension(jmn) GLAT,
    real, dimension(im,jm,4) OA4,
    real, dimension(im,jm,4) OL,
    integer, dimension(im,jm,4) IOA4,
    real, dimension(im,jm) ELVMAX,
    real, dimension(im,jm) ORO,
    real, dimension(im,jm) oro1,
    real, dimension(im,jm) XNSUM,
    real, dimension(im,jm) XNSUM1,
    real, dimension(im,jm) XNSUM2,
    real, dimension(im,jm) XNSUM3,
    real, dimension(im,jm) XNSUM4,
    integer IM,
    integer JM,
    integer IMN,
    integer JMN,
    real, dimension(im+1,jm+1) lon_c,
    real, dimension(im+1,jm+1) lat_c,
    real, dimension(im,jm) lon_t,
    real, dimension(im,jm) lat_t,
    real, dimension(im,jm) dx,
    real, dimension(im,jm) dy,
    logical, dimension(im,jm) is_south_pole,
    logical, dimension(im,jm) is_north_pole 
    )
    +
    + +

    Create orographic asymmetry and orographic length scale on the model grid.

    +

    This routine is used for the cubed-sphere grid.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]zavgHigh-resolution orography data.
    [in]zslmHigh-resolution land-mask data.
    [in]varStandard deviation of orography on the model grid.
    [out]glatLatitude of each row of input terrain dataset.
    [out]oa4Orographic asymmetry on the model grid. Four directional components - W/S/SW/NW
    [out]olOrographic length scale on the model grid. Four directional components - W/S/SW/NW
    [out]ioa4Count of oa4 values between certain thresholds.
    [out]elvmaxMaximum elevation within a model grid box.
    [in]oroOrography on the model grid.
    [out]oro1Save array for model grid orography.
    [out]xnsumNot used.
    [out]xnsum1Not used.
    [out]xnsum2Not used.
    [out]xnsum3Not used.
    [out]xnsum4Not used.
    [in]im"i" dimension of the model grid tile.
    [in]jm"j" dimension of the model grid tile.
    [in]imn"i" dimension of the high-resolution orography and mask data.
    [in]jmn"j" dimension of the high-resolution orography and mask data.
    [in]lon_cCorner point longitudes of the model grid points.
    [in]lat_cCorner point latitudes of the model grid points.
    [in]lon_tCenter point longitudes of the model grid points.
    [in]lat_tCenter point latitudes of the model grid points.
    [in]dxLength of model grid points in the 'x' direction.
    [in]dyLength of model grid points in the 'y' direction.
    [in]is_south_poleIs the model point at the south pole?
    [in]is_north_poleis the model point at the north pole?
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 3042 of file mtnlm7_oclsm.F.

    + +

    References get_index(), get_xnsum2(), and get_xnsum3().

    + +
    +
    + +

    ◆ MAKEOA3()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEOA3 (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) zslm,
    real, dimension(im,jm) VAR,
    real, dimension(jmn) GLAT,
    real, dimension(im,jm,4) OA4,
    real, dimension(im,jm,4) OL,
    integer, dimension(im,jm,4) IOA4,
    real, dimension(im,jm) ELVMAX,
    real, dimension(im,jm) ORO,
    real, dimension(im,jm) SLM,
    real, dimension(im,jm) oro1,
    real, dimension(im,jm) XNSUM,
    real, dimension(im,jm) XNSUM1,
    real, dimension(im,jm) XNSUM2,
    real, dimension(im,jm) XNSUM3,
    real, dimension(im,jm) XNSUM4,
    integer IM,
    integer JM,
    integer IMN,
    integer JMN,
    real, dimension(im+1,jm+1) lon_c,
    real, dimension(im+1,jm+1) lat_c,
    real, dimension(im,jm) lon_t,
    real, dimension(im,jm) lat_t,
    logical, dimension(im,jm) is_south_pole,
    logical, dimension(im,jm) is_north_pole,
    integer IMI,
    integer JMI,
    real, dimension(imi,jmi,4) OA_IN,
    real, dimension(imi,jmi,4) OL_IN,
    real, dimension(imi,jmi) slm_in,
    real, dimension(imi,jmi) lon_in,
    real, dimension(imi,jmi) lat_in 
    )
    +
    + +

    Create orographic asymmetry and orographic length scale on the model grid.

    +

    This routine is used for the cubed-sphere grid. The asymmetry and length scales are interpolated from an existing gfs orography file. The maximum elevation is computed from the high-resolution orography data.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [in]zavgHigh-resolution orography data.
    [in]zslmHigh-resolution land-mask data. Not used.
    [in]varStandard deviation of orography on the model grid.
    [out]glatLatitude of each row of input terrain dataset.
    [out]oa4Orographic asymmetry on the model grid. Four directional components - W/S/SW/NW
    [out]olOrographic length scale on the model grid. Four directional components - W/S/SW/NW
    [out]ioa4Count of oa4 values between certain thresholds.
    [out]elvmaxMaximum elevation within a model grid box.
    [in]slmLand-mask on model grid.
    [in]oroOrography on the model grid.
    [out]oro1Save array for model grid orography.
    [in]xnsumNot used.
    [in]xnsum1Not used.
    [in]xnsum2Not used.
    [in]xnsum3Not used.
    [in]xnsum4Not used.
    [in]im"i" dimension of the model grid tile.
    [in]jm"j" dimension of the model grid tile.
    [in]imn"i" dimension of the high-resolution orography and mask data.
    [in]jmn"j" dimension of the high-resolution orography and mask data.
    [in]lon_cCorner point longitudes of the model grid points.
    [in]lat_cCorner point latitudes of the model grid points.
    [in]lon_tCenter point longitudes of the model grid points.
    [in]lat_tCenter point latitudes of the model grid points.
    [in]is_south_poleNot used.
    [in]is_north_poleNot used.
    [in]imi'i' dimension of input gfs orography data.
    [in]jmi'j' dimension of input gfs orography data.
    [in]oa_inAsymmetry on the input gfs orography data.
    [in]ol_inLength scales on the input gfs orography data.
    [in]slm_inLand-sea mask on the input gfs orography data.
    [in]lon_inLongitude on the input gfs orography data.
    [in]lat_inLatitude on the input gfs orography data.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 3611 of file mtnlm7_oclsm.F.

    + +

    References get_index(), get_mismatch_index(), and interpolate_mismatch().

    + +
    +
    + +

    ◆ MAKEPC()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEPC (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) ZSLM,
    dimension(im,jm) THETA,
    dimension(im,jm) GAMMA,
    dimension(im,jm) SIGMA,
    dimension(jmn) GLAT,
    dimension(im,jm) IST,
    dimension(im,jm) IEN,
    dimension(jm) JST,
    dimension(jm) JEN,
     IM,
     JM,
     IMN,
     JMN,
    dimension(jm) XLAT,
    dimension(jm) numi 
    )
    +
    + +

    Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east.

    +

    This routine is used for spectral GFS gaussian grids.

    +
    Parameters
    + + + + + + + + + + + + + + + + + +
    [in]zavgThe high-resolution input orography dataset.
    [in]zslmThe high-resolution input land-mask dataset.
    [out]thetaAngle of mountain range with respect to east for each model point.
    [out]gammaAnisotropy for each model point.
    [out]sigmaSlope of orography for each model point.
    [out]glatLatitude of each row of the high-resolution orography and land-mask datasets.
    [out]istThis is the 'i' index of high-resolution data set at the east edge of the model grid cell.
    [out]ienThis is the 'i' index of high-resolution data set at the west edge of the model grid cell.
    [out]jstThis is the 'j' index of high-resolution data set at the south edge of the model grid cell.
    [out]jenThis is the 'j' index of high-resolution data set at the north edge of the model grid cell.
    [in]im"i" dimension of the model grid tile.
    [in]jm"j" dimension of the model grid tile.
    [in]imn"i" dimension of the hi-res input orog/mask datasets.
    [in]jmn"j" dimension of the hi-res input orog/mask datasets.
    [in]xlatThe latitude of each row of the model grid.
    [in]numiFor reduced gaussian grids, the number of 'i' points for each 'j' row.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 2098 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ MAKEPC2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine MAKEPC2 (integer, dimension(imn,jmn) ZAVG,
    integer, dimension(imn,jmn) ZSLM,
    real, dimension(im,jm) THETA,
    real, dimension(im,jm) GAMMA,
    real, dimension(im,jm) SIGMA,
    real, dimension(jmn) GLAT,
    integer IM,
    integer JM,
    integer IMN,
    integer JMN,
    real, dimension(im+1,jm+1) lon_c,
    real, dimension(im+1,jm+1) lat_c 
    )
    +
    + +

    Make the principle coordinates - slope of orography, anisotropy, angle of mountain range with respect to east.

    +

    This routine is used for the FV3GFS cubed-sphere grid.

    +
    Parameters
    + + + + + + + + + + + + + +
    [in]zavgThe high-resolution input orography dataset.
    [in]zslmThe high-resolution input land-mask dataset.
    [out]thetaAngle of mountain range with respect to east for each model point.
    [out]gammaAnisotropy for each model point.
    [out]sigmaSlope of orography for each model point.
    [out]glatLatitude of each row of the high-resolution orography and land-mask datasets.
    [in]im"i" dimension of the model grid tile.
    [in]jm"j" dimension of the model grid tile.
    [in]imn"i" dimension of the hi-res input orog/mask datasets.
    [in]jmn"j" dimension of the hi-res input orog/mask datasets.
    [in]lon_cLongitude of model grid corner points.
    [in]lat_cLatitude of the model grid corner points.
    +
    +
    +
    Author
    GFDL Programmer
    + +

    Definition at line 2372 of file mtnlm7_oclsm.F.

    + +

    References get_index().

    + +
    +
    + +

    ◆ maxmin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine maxmin (integer*2, dimension(len) ia,
    integer len,
    character*7 tile 
    )
    +
    + +

    Print the maximum, mininum, mean and standard deviation of an array.

    +
    Parameters
    + + + + +
    [in]iaThe array to be checked.
    [in]lenThe number of points to be checked.
    [in]tileA name associated with the array.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4296 of file mtnlm7_oclsm.F.

    + +

    Referenced by read_g().

    + +
    +
    + +

    ◆ minmaxj()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine minmaxj (integer IM,
    integer JM,
    real(kind=4), dimension(im,jm) A,
    character*8 title 
    )
    +
    + +

    Print out the maximum and minimum values of an array and their i/j location.

    +

    Also print out the number of undefined points.

    +
    Parameters
    + + + + + +
    [in]imThe 'i' dimension of the array.
    [in]jmThe 'i' dimension of the array.
    [in]aThe array to check.
    [in]titleName of the data to be checked.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4354 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ minmxj()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine minmxj (integer IM,
    integer JM,
    real, dimension(im,jm) A,
    character*8 title 
    )
    +
    + +

    Print out the maximum and minimum values of an array.

    +
    Parameters
    + + + + + +
    [in]imThe 'i' dimension of the array.
    [in]jmThe 'i' dimension of the array.
    [in]aThe array to check.
    [in]titleName of the data to be checked.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4098 of file mtnlm7_oclsm.F.

    + +

    Referenced by TERSUB().

    + +
    +
    + +

    ◆ mnmxja()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine mnmxja (integer IM,
    integer JM,
    real, dimension(im,jm) A,
    integer imax,
    integer jmax,
    character*8 title 
    )
    +
    + +

    Print out the maximum and minimum values of an array.

    +

    Pass back the i/j location of the maximum value.

    +
    Parameters
    + + + + + + + +
    [in]imThe 'i' dimension of the array.
    [in]jmThe 'i' dimension of the array.
    [in]aThe array to check.
    [out]imax'i' location of maximum
    [out]jmax'j' location of maximum
    [in]titleName of the data to be checked.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4133 of file mtnlm7_oclsm.F.

    + +

    Referenced by TERSUB().

    + +
    +
    + +

    ◆ nanc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine nanc ( a,
     l,
    character*(*) c 
    )
    +
    + +

    Report NaNS and NaNQ within an address range for 8-byte real words.

    +

    This routine prints a single line for each call and prints a message and returns to the caller on detection of the FIRST NaN in the range. If no NaN values are found it returns silently.

    +
    Parameters
    + + + + +
    [in]AReal*8 variable or array
    [in]LNumber of words to scan (length of array)
    [in]CDistinctive message set in caller to indicate where the routine was called.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4840 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ read_g()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine read_g (integer*2, dimension(360*120,180*120) glob,
    integer ITOPO 
    )
    +
    + +

    Read input global 30-arc second orography data.

    +
    Parameters
    + + + +
    [out]globThe orography data.
    [in]itopoNot used.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4245 of file mtnlm7_oclsm.F.

    + +

    References maxmin().

    + +

    Referenced by TERSUB().

    + +
    +
    + +

    ◆ REVERS()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine REVERS ( IM,
     JM,
    integer, dimension(jm) numi,
    real, dimension(im,jm) F,
    real, dimension(im,jm) WRK 
    )
    +
    + +

    Reverse the east-west and north-south axes in a two-dimensional array.

    +
    Parameters
    + + + + + + +
    [in]im'i' dimension of the 2-d array.
    [in]jm'j' dimension of the 2-d array.
    [in]numiNot used.
    [in,out]fThe two-dimensional array to be processed.
    [out]wrkTwo-dimensional work array.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4009 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ rg2gg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine rg2gg (integer, intent(in) im,
    integer, intent(in) jm,
    integer, dimension(jm), intent(in) numi,
    real, dimension(im,jm), intent(inout) a 
    )
    +
    + +

    Convert from a reduced grid to a full grid.

    +
    Parameters
    + + + + + +
    [in]im'i' dimension of the full grid.
    [in]jm'j' dimension of the full grid.
    [in]numiNumber of 'i' points for each row of the reduced grid.
    [in,out]aThe data to be converted.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 4046 of file mtnlm7_oclsm.F.

    + +

    Referenced by TERSUB().

    + +
    +
    + +

    ◆ SPFFT1()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine SPFFT1 (integer, intent(in) IMAX,
    integer, intent(in) INCW,
    integer, intent(in) INCG,
    integer, intent(in) KMAX,
    complex, dimension(incw,kmax), intent(inout) W,
    real, dimension(incg,kmax), intent(inout) G,
    integer, intent(in) IDIR 
    )
    +
    + +

    Perform multiple fast fourier transforms.

    +

    This subprogram performs multiple fast fourier transforms between complex amplitudes in fourier space and real values in cyclic physical space.

    +

    Subprograms called (NCEPLIB SP Library):

      +
    • scrft Complex to real fourier transform
    • +
    • dcrft Complex to real fourier transform
    • +
    • srcft Real to complex fourier transform
    • +
    • drcft Real to complex fourier transform
    • +
    +

    Program history log: 1998-12-18 Mark Iredell

    +
    Parameters
    + + + + + + + + +
    [in]imaxInteger number of values in the cyclic physical space. See limitations on imax in remarks below.
    [in]incwInteger first dimension of the complex amplitude array. (incw >= imax/2+1).
    [in]incgInteger first dimension of the real value array. (incg >= imax).
    [in]kmaxInteger number of transforms to perform.
    [in]wComplex amplitudes on input if idir>0, and on output if idir<0.
    [in]gReal values on input if idir<0, and on output if idir>0.
    [in]idirInteger direction flag. idir>0 to transform from fourier to physical space. idir<0 to transform from physical to fourier space.
    +
    +
    +
    Note
    The restrictions on imax are that it must be a multiple of 1 to 25 factors of two, up to 2 factors of three, and up to 1 factor of five, seven and eleven.
    +
    Author
    Mark Iredell ORG: W/NMC23
    +
    Date
    96-02-20
    + +

    Definition at line 4195 of file mtnlm7_oclsm.F.

    + +
    +
    + +

    ◆ spherical_angle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    real function spherical_angle (real, dimension(3) v1,
    real, dimension(3) v2,
    real, dimension(3) v3 
    )
    +
    + +

    Compute spherical angle.

    +
    Parameters
    + + + + +
    [in]v1Vector 1.
    [in]v2Vector 2.
    [in]v3Vector 3.
    +
    +
    +
    Returns
    spherical_angle Spherical Angle.
    +
    Author
    GFDL programmer
    + +

    Definition at line 4428 of file mtnlm7_oclsm.F.

    + +

    Referenced by inside_a_polygon().

    + +
    +
    + +

    ◆ spherical_distance()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    real function spherical_distance (real, intent(in) theta1,
    real, intent(in) phi1,
    real, intent(in) theta2,
    real, intent(in) phi2 
    )
    +
    + +

    Compute a great circle distance between two points.

    +
    Parameters
    + + + + + +
    [in]theta1Longitude of point 1.
    [in]phi1Latitude of point 1.
    [in]theta2Longitude of point 2.
    [in]phi2Latitude of point2.
    +
    +
    +
    Returns
    spherical_distance Great circle distance.
    +
    Author
    GFDL programmer
    + +

    Definition at line 3434 of file mtnlm7_oclsm.F.

    + +

    Referenced by get_mismatch_index().

    + +
    +
    + +

    ◆ TERSUB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine TERSUB (integer IMN,
    integer JMN,
    integer IM,
    integer JM,
    integer NM,
    integer NR,
    integer NF0,
    integer NF1,
    integer NW,
    integer EFAC,
    integer BLAT,
    character(len=*), intent(in) OUTGRID,
    character(len=*), intent(in) INPUTOROG 
    )
    +
    + +

    Driver routine to compute terrain.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]IMN"i" dimension of the input terrain dataset.
    [in]JMN"j" dimension of the input terrain dataset.
    [in]IM"i" dimension of the model grid tile.
    [in]JM"j" dimension of the model grid tile.
    [in]NMSpectral truncation.
    [in]NRRhomboidal flag.
    [in]NF0First order spectral filter parameters.
    [in]NF1Second order spectral filter parameters.
    [in]NWNumber of waves.
    [in]EFACFactor to adjust orography by its variance.
    [in]BLATWhen less than zero, reverse latitude/ longitude for output.
    [in]OUTGRIDThe 'grid' file for the model tile.
    [in]INPUTOROGInput orography/GWD file on gaussian grid. When specified, will be interpolated to model tile. When not specified, program will create fields from raw high-resolution topography data.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 184 of file mtnlm7_oclsm.F.

    + +

    References minmxj(), mnmxja(), netcdf_err(), read_g(), rg2gg(), timef(), and write_netcdf().

    + +
    +
    + +

    ◆ timef()

    + +
    +
    + + + + + + + +
    real function timef ()
    +
    + +

    Get the date/time for the system clock.

    +
    Author
    Mark Iredell
    +
    Returns
    timef
    + +

    Definition at line 4889 of file mtnlm7_oclsm.F.

    + +

    Referenced by TERSUB().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.js b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.js new file mode 100644 index 000000000..d3c579a52 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F.js @@ -0,0 +1,35 @@ +var mtnlm7__oclsm_8F = +[ + [ "__mtnlm7_oclsm.F__", "mtnlm7__oclsm_8F.html#a1ada2e10f7782dcebf9b4f1f8655f5dd", null ], + [ "get_index", "mtnlm7__oclsm_8F.html#a769428525e5b18b568caee947d3b82a9", null ], + [ "get_lat_angle", "mtnlm7__oclsm_8F.html#a78820ab0db4ba91dfe77bf7c217a5b57", null ], + [ "get_lon_angle", "mtnlm7__oclsm_8F.html#a3f1211168f9c2ab893d7fc6570b6f2d5", null ], + [ "get_mismatch_index", "mtnlm7__oclsm_8F.html#a705d54995150872d6ae14236173e46e8", null ], + [ "get_xnsum", "mtnlm7__oclsm_8F.html#ab8f4b7ec89af87c58814d6a58ac2fbb1", null ], + [ "get_xnsum2", "mtnlm7__oclsm_8F.html#a18c367f7d76c7c3d586be9ce028bbb02", null ], + [ "get_xnsum3", "mtnlm7__oclsm_8F.html#a6d50be662748bf70df0762927f612590", null ], + [ "gg2rg", "mtnlm7__oclsm_8F.html#a6089afa6ac190f08ef375fee7c689f85", null ], + [ "inside_a_polygon", "mtnlm7__oclsm_8F.html#af10c3a1bba5248b6a97c15b5a3b0cb43", null ], + [ "interpolate_mismatch", "mtnlm7__oclsm_8F.html#a065d9f691c8d972ccd6513e2789466ff", null ], + [ "latlon2xyz", "mtnlm7__oclsm_8F.html#a5869b044207f7ecb10fb381ece00732c", null ], + [ "MAKEMT", "mtnlm7__oclsm_8F.html#a5c2e2a509b6e61e6b6f3f5e9f557f840", null ], + [ "MAKEMT2", "mtnlm7__oclsm_8F.html#a414eafe8038c2fab3946184779fde05e", null ], + [ "MAKEOA", "mtnlm7__oclsm_8F.html#a7e691da90c36d54272f96a2bf0af1911", null ], + [ "MAKEOA2", "mtnlm7__oclsm_8F.html#aa7ab3d50b802188dfd1423400a497b3f", null ], + [ "MAKEOA3", "mtnlm7__oclsm_8F.html#ae0b135a5ca65d703a8dbfbbf7f3f8f1a", null ], + [ "MAKEPC", "mtnlm7__oclsm_8F.html#a51453de3ed7c8a88cd52cf83ef95afed", null ], + [ "MAKEPC2", "mtnlm7__oclsm_8F.html#a4bc2434bf006798fdc689584f325eab3", null ], + [ "maxmin", "mtnlm7__oclsm_8F.html#a8648e114af02377f94e03cc40412de58", null ], + [ "minmaxj", "mtnlm7__oclsm_8F.html#a574feab9626884b79a10fdcd2d8543aa", null ], + [ "minmxj", "mtnlm7__oclsm_8F.html#aba287a6bf35bffc12e6abc31c13c3874", null ], + [ "mnmxja", "mtnlm7__oclsm_8F.html#aa54e80b7136f9cc0d224515945c960f0", null ], + [ "nanc", "mtnlm7__oclsm_8F.html#ae8df58dcb775885e68d83118c2f449af", null ], + [ "read_g", "mtnlm7__oclsm_8F.html#a5c6879e7eac4e636da7a9ca4f45cbadf", null ], + [ "REVERS", "mtnlm7__oclsm_8F.html#ac9d0cb9dc1c7923d5f5e63b0bcf1998c", null ], + [ "rg2gg", "mtnlm7__oclsm_8F.html#a77b3e5e25f53c7c59daa7639c0b2dc2b", null ], + [ "SPFFT1", "mtnlm7__oclsm_8F.html#a4d7c649162dc230e994b8b9e28a20c32", null ], + [ "spherical_angle", "mtnlm7__oclsm_8F.html#a09845caa8530e4792b7d7dbeac0609b7", null ], + [ "spherical_distance", "mtnlm7__oclsm_8F.html#af72c017d12f741c8cecd92603d4dfa0c", null ], + [ "TERSUB", "mtnlm7__oclsm_8F.html#af7ce95e03de8598d7973206258f49b3e", null ], + [ "timef", "mtnlm7__oclsm_8F.html#a6e5afa4168cab2cdedef3c01e086494f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F_source.html b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F_source.html new file mode 100644 index 000000000..6aa53d0a0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/mtnlm7__oclsm_8F_source.html @@ -0,0 +1,128 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.F Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    mtnlm7_oclsm.F
    +
    +
    +Go to the documentation of this file.
    1 C> @file
    2 C> Terrain maker for global spectral model.
    3 C> @author Mark Iredell @date 92-04-16
    4 
    5 C> This program creates 7 terrain-related files computed from the navy
    6 C> 10-minute terrain dataset. The model physics grid parameters and
    7 C> spectral truncation and filter parameters are read by this program as
    8 C> input.
    9 C>
    10 C> The 7 files produced are:
    11 C> 1. sea-land mask on model physics grid
    12 C> 2. gridded orography on model physics grid
    13 C> 3. mountain std dev on model physics grid
    14 C> 4. spectral orography in spectral domain
    15 C> 5. unfiltered gridded orography on model physics grid
    16 C> 6. grib sea-land mask on model physics grid
    17 C> 7. grib gridded orography on model physics grid
    18 C>
    19 C> The orography is only filtered for wavenumbers greater than nf0. For
    20 C> wavenumbers n between nf0 and nf1, the orography is filtered by the
    21 C> factor 1-((n-nf0)/(nf1-nf0))**2. The filtered orography will not have
    22 C> information beyond wavenumber nf1.
    23 C>
    24 C> PROGRAM HISTORY LOG:
    25 C> - 92-04-16 IREDELL
    26 C> - 98-02-02 IREDELL FILTER
    27 C> - 98-05-31 HONG Modified for subgrid orography used in Kim's scheme
    28 C> - 98-12-31 HONG Modified for high-resolution GTOPO orography
    29 C> - 99-05-31 HONG Modified for getting OL4 (mountain fraction)
    30 C> - 00-02-10 Moorthi's modifications
    31 C> - 00-04-11 HONG Modified for reduced grids
    32 C> - 00-04-12 Iredell Modified for reduced grids
    33 C> - 02-01-07 (*j*) modified for principal axes of orography
    34 C> There are now 14 files, 4 additional for lm mb
    35 C> - 04-04-04 (*j*) re-Test on IST/ilen calc for sea-land mask(*j*)
    36 C> - 04-09-04 minus sign here in MAKEOA IST and IEN as in MAKEMT!
    37 C> - 05-09-05 if test on HK and HLPRIM for GAMMA SQRT
    38 C> - 07-08-07 replace 8' with 30" incl GICE, conintue w/ S-Y. lake slm
    39 C> - 08-08-07 All input 30", UMD option, and filter as described below
    40 C> Quadratic filter applied by default.
    41 C> NF0 is normally set to an even value beyond the previous truncation,
    42 C> for example, for jcap=382, NF0=254+2
    43 C> NF1 is set as jcap+2 (and/or nearest even), eg., for t382, NF1=382+2=384
    44 C> if no filter is desired then NF1=NF0=0 and ORF=ORO
    45 C> but if no filter but spectral to grid (with gibbs) then NF1=jcap+2, and NF1=jcap+1
    46 C>
    47 C> INPUT FILES:
    48 C> - UNIT5 - PHYSICS LONGITUDES (IM), PHYSICS LATITUDES (JM),
    49 C> SPECTRAL TRUNCATION (NM), RHOMBOIDAL FLAG (NR),
    50 C> AND FIRST AND SECOND FILTER PARAMETERS (NF0,NF1).
    51 C> RESPECTIVELY READ IN FREE FORMAT.
    52 C> - UNIT235 - GTOPO 30" AVR for ZAVG elevation
    53 C> - UNIT10 - 30" UMD land (lake) cover mask see MSKSRC switch
    54 C> - XUNIT11 - GTOPO AVR
    55 C> - XUNIT12 - GTOPO STD DEV
    56 C> - XUNIT13 - GTOPO MAX
    57 C> - UNIT14 - GTOPO SLM (10' NAVY if switched to get lakes
    58 C> - UNIT15 - GICE Grumbine 30" RAMP Antarctica orog IMNx3616
    59 C> - UNIT25 - Ocean land-sea mask on gaussian grid
    60 C>
    61 C> OUTPUT FILES:
    62 C> - UNIT51 - SEA-LAND MASK (IM,JM)
    63 C> - UNIT52 - GRIDDED OROGRAPHY (IM,JM)
    64 C> - UNIT54 - SPECTRAL OROGRAPHY ((NM+1)*((NR+1)*NM+2))
    65 C> - UNIT55 - UNFILTERED GRIDDED OROGRAPHY (IM,JM)
    66 C> - UNIT57 - GRIB GRIDDED OROGRAPHY (IM,JM)
    67 C>
    68 C> SUBPROGRAMS CALLED:
    69 C> - UNIQUE:
    70 C> - TERSUB - MAIN SUBPROGRAM
    71 C> - SPLAT - COMPUTE GAUSSIAN LATITUDES OR EQUALLY-SPACED LATITUDES
    72 C> - LIBRARY:
    73 C> - SPTEZ - SPHERICAL TRANSFORM
    74 C> - GBYTES - UNPACK BITS
    75 C>
    76 C> @return 0 for success, error code otherwise.
    77  include 'netcdf.inc'
    78  logical fexist, opened
    79  integer fsize, ncid, error, id_dim, nx, ny
    80  character(len=256) :: outgrid = "none"
    81  character(len=256) :: inputorog = "none"
    82  integer :: mtnres,im,jm,nm,nr,nf0,nf1,efac,blat,nw
    83  fsize=65536
    84  READ(5,*) mtnres,im,jm,nm,nr,nf0,nf1,efac,blat
    85  READ(5,*) outgrid
    86  READ(5,*) inputorog
    87 ! MTNRES=1
    88 ! IM=48
    89 ! JM=48
    90 ! NM=46
    91 ! NF0=0
    92 ! NF1=0
    93 ! efac=0
    94 ! blat=0
    95 ! NR=0
    96 ! OUTGRID = "C48_grid.tile1.nc"
    97 ! INPUTOROG = "oro.288x144.nc"
    98  print*, "INPUTOROG=", trim(inputorog)
    99  print*, "IM,JM=", im, jm
    100 ! --- MTNRES defines the input (highest) elev resolution
    101 ! --- =1 is topo30 30" in units of 1/2 minute.
    102 ! so MTNRES for old values must be *2.
    103 ! =16 is now Song Yu's 8' orog the old ops standard
    104 ! --- other possibilities are =8 for 4' and =4 for 2' see
    105 ! HJ for T1000 test. Must set to 1 for now.
    106  mtnres=1
    107  print*, mtnres,im,jm,nm,nr,nf0,nf1,efac,blat
    108  nw=(nm+1)*((nr+1)*nm+2)
    109  imn = 360*120/mtnres
    110  jmn = 180*120/mtnres
    111  print *, ' Starting terr12 mtnlm7_slm30.f IMN,JMN:',imn,jmn
    112 
    113 ! --- read the grid resolution if the OUTGRID exists.
    114  if( trim(outgrid) .NE. "none" ) then
    115  inquire(file=trim(outgrid), exist=fexist)
    116  if(.not. fexist) then
    117  print*, "file "//trim(outgrid)//" does not exist"
    118  CALL errexit(4)
    119  endif
    120  do ncid = 103, 512
    121  inquire( ncid,opened=opened )
    122  if( .NOT.opened )exit
    123  end do
    124 
    125  print*, "outgrid=", trim(outgrid)
    126  error=nf__open(trim(outgrid),nf_nowrite,fsize,ncid)
    127  call netcdf_err(error, 'Open file '//trim(outgrid) )
    128  error=nf_inq_dimid(ncid, 'nx', id_dim)
    129  call netcdf_err(error, 'inquire dimension nx from file '//
    130  & trim(outgrid) )
    131  error=nf_inq_dimlen(ncid,id_dim,nx)
    132  call netcdf_err(error, 'inquire dimension nx length '//
    133  & 'from file '//trim(outgrid) )
    134 
    135  error=nf_inq_dimid(ncid, 'ny', id_dim)
    136  call netcdf_err(error, 'inquire dimension ny from file '//
    137  & trim(outgrid) )
    138  error=nf_inq_dimlen(ncid,id_dim,ny)
    139  call netcdf_err(error, 'inquire dimension ny length '//
    140  & 'from file '//trim(outgrid) )
    141  print*, "nx = ", nx
    142  if(im .ne. nx/2) then
    143  print*, "IM=",im, " /= grid file nx/2=",nx/2
    144  print*, "Set IM = ", nx/2
    145  im = nx/2
    146  endif
    147  if(jm .ne. ny/2) then
    148  print*, "JM=",jm, " /= grid file ny/2=",ny/2
    149  print*, "Set JM = ", ny/2
    150  jm = ny/2
    151  endif
    152  error=nf_close(ncid)
    153  call netcdf_err(error, 'close file '//trim(outgrid) )
    154 
    155  endif
    156 
    157  CALL tersub(imn,jmn,im,jm,nm,nr,nf0,nf1,nw,efac,blat,
    158  & outgrid,inputorog)
    159  stop
    160  END
    161 
    182  SUBROUTINE tersub(IMN,JMN,IM,JM,NM,NR,NF0,NF1,NW,EFAC,BLAT,
    183  & OUTGRID,INPUTOROG)
    184  implicit none
    185  include 'netcdf.inc'
    186 C
    187  integer :: IMN,JMN,IM,JM,NM,NR,NF0,NF1,NW
    188  character(len=*), intent(in) :: OUTGRID
    189  character(len=*), intent(in) :: INPUTOROG
    190 
    191  real, parameter :: MISSING_VALUE=-9999.
    192  real, PARAMETER :: PI=3.1415926535897931
    193  integer, PARAMETER :: NMT=14
    194 
    195  integer :: efac,blat,zsave1,zsave2,itopo,kount
    196  integer :: kount2,islmx,jslmx,oldslm,msksrc,mskocn,notocn
    197  integer :: i,j,nx,ny,ncid,js,jn,iw,ie,k,it,jt,i1,error,id_dim
    198  integer :: id_var,nx_in,ny_in,fsize,wgta,IN,INW,INE,IS,ISW,ISE
    199  integer :: M,N,IMT,IRET,ios,iosg,latg2,istat,itest,jtest
    200  integer :: i_south_pole,j_south_pole,i_north_pole,j_north_pole
    201  integer :: maxc3,maxc4,maxc5,maxc6,maxc7,maxc8
    202  integer(1) :: i3save
    203  integer(2) :: i2save
    204 
    205  integer, allocatable :: JST(:),JEN(:),KPDS(:),KGDS(:),numi(:)
    206  integer, allocatable :: lonsperlat(:)
    207 
    208  integer, allocatable :: IST(:,:),IEN(:,:),ZSLMX(:,:)
    209  integer, allocatable :: ZAVG(:,:),ZSLM(:,:)
    210  integer(1), allocatable :: UMD(:,:)
    211  integer(2), allocatable :: glob(:,:)
    212 
    213  integer, allocatable :: IWORK(:,:,:)
    214 
    215  real :: DEGRAD,maxlat, minlat,timef,tbeg,tend,tbeg1
    216  real :: PHI,DELXN,RS,RN,slma,oroa,vara,var4a,xn,XS,FFF,WWW
    217  real :: sumdif,avedif
    218 
    219  real, allocatable :: COSCLT(:),WGTCLT(:),RCLT(:),XLAT(:),DIFFX(:)
    220  real, allocatable :: XLON(:),ORS(:),oaa(:),ola(:),GLAT(:)
    221 
    222  real, allocatable :: GEOLON(:,:),GEOLON_C(:,:),DX(:,:)
    223  real, allocatable :: GEOLAT(:,:),GEOLAT_C(:,:),DY(:,:)
    224  real, allocatable :: SLM(:,:),ORO(:,:),VAR(:,:),ORF(:,:)
    225  real, allocatable :: land_frac(:,:)
    226  real, allocatable :: THETA(:,:),GAMMA(:,:),SIGMA(:,:),ELVMAX(:,:)
    227  real, allocatable :: VAR4(:,:),SLMI(:,:)
    228  real, allocatable :: WORK1(:,:),WORK2(:,:),WORK3(:,:),WORK4(:,:)
    229  real, allocatable :: WORK5(:,:),WORK6(:,:)
    230  real, allocatable :: tmpvar(:,:)
    231  real, allocatable :: slm_in(:,:), lon_in(:,:), lat_in(:,:)
    232  real(4), allocatable:: GICE(:,:),OCLSM(:,:)
    233 
    234  real, allocatable :: OA(:,:,:),OL(:,:,:),HPRIME(:,:,:)
    235  real, allocatable :: oa_in(:,:,:), ol_in(:,:,:)
    236 
    237 
    238  complex :: ffj(im/2+1)
    239 
    240  logical :: grid_from_file,output_binary,fexist,opened
    241  logical :: SPECTR, REVLAT, FILTER
    242 
    243  logical :: is_south_pole(IM,JM), is_north_pole(IM,JM)
    244  logical :: LB(IM*JM)
    245 
    246  output_binary = .false.
    247  tbeg1=timef()
    248  tbeg=timef()
    249  fsize = 65536
    250 ! integers
    251  allocate (jst(jm),jen(jm),kpds(200),kgds(200),numi(jm))
    252  allocate (lonsperlat(jm/2))
    253  allocate (ist(im,jm),ien(im,jm),zslmx(2700,1350))
    254  allocate (glob(imn,jmn))
    255 
    256 ! reals
    257  allocate (cosclt(jm),wgtclt(jm),rclt(jm),xlat(jm),diffx(jm/2))
    258  allocate (xlon(im),ors(nw),oaa(4),ola(4),glat(jmn))
    259 
    260  allocate (zavg(imn,jmn))
    261  allocate (zslm(imn,jmn))
    262  allocate (umd(imn,jmn))
    263 
    264 !
    265 ! SET CONSTANTS AND ZERO FIELDS
    266 !
    267  degrad = 180./pi
    268  spectr = nm .GT. 0 ! if NM <=0 grid is assumed lat/lon
    269  filter = .true. ! Spectr Filter defaults true and set by NF1 & NF0
    270 ! MSKSRC = 0 ! MSKSRC=0 navy 10 lake msk, 1 UMD 30, -1 no lakes
    271  msksrc = 1 ! MSKSRC=0 navy 10 lake msk, 1 UMD 30, -1 no lakes
    272  revlat = blat .LT. 0 ! Reverse latitude/longitude for output
    273  itopo = 1 ! topo 30" read, otherwise tiles (opt offline)
    274  mskocn = 1 ! Ocean land sea mask =1, =0 if not present
    275  notocn = 1 ! =1 Ocean lsm input reverse: Ocean=1, land=0
    276 ! --- The LSM Gaussian file from the ocean model sometimes arrives with
    277 ! --- 0=Ocean and 1=Land or it arrives with 1=Ocean and 0=land without
    278 ! --- metadata to distinguish its disposition. The AI below mitigates this.
    279 
    280  print *,' In TERSUB, ITOPO=',itopo
    281  if (mskocn .eq. 1)then
    282  print *,' Ocean Model LSM Present and '
    283  print *, ' Overrides OCEAN POINTS in LSM: mskocn=',mskocn
    284  if (notocn .eq. 1)then
    285  print *,' Ocean LSM Reversed: NOTOCN=',notocn
    286  endif
    287  endif
    288 C
    289 C --- old S-Y. files
    290 C- OPEN(UNIT=11,FORM='FORMATTED',ERR=900) ! average
    291 C- OPEN(UNIT=12,FORM='FORMATTED',ERR=900) ! Std Dev
    292 C- OPEN(UNIT=13,FORM='FORMATTED',ERR=900) ! maximum
    293 C- OPEN(UNIT=14,FORM='FORMATTED',ERR=900) ! sea-land-lake-mask
    294 C
    295 ! --- READ(11,11) ZAVG
    296 ! --- READ(12,11) ZVAR
    297 ! --- READ(13,11) ZMAX
    298 ! --- 11 FORMAT(20I4)
    299 !
    300 ! --- MSKSRC 0 navy 10' lake mask, =1 for 30" UMD lake mask,
    301 ! --- MSKSRC internally set if above fails at -1 for no lakes
    302 ! ---
    303  IF (msksrc .eq. 0 ) then
    304  READ(14,12,iostat=ios) zslmx
    305  12 FORMAT(80i1)
    306  if (ios.ne.0) then
    307  msksrc=-1
    308  print *,' navy10 lake mask rd fail -- ios,MSKSRC:',ios,msksrc
    309  endif
    310  ELSE
    311  print *,' Attempt to open/read UMD 30" slmsk MSKSRC=',msksrc
    312 ! --- not 0 so MSKSRC=1 and attempt to open/read UMD 30" slmsk
    313 ! open(10,file=
    314 ! &"/scratch2/portfolios/NCEPDEV/global/noscrub/Jordan.Alpert/wx23ja
    315 ! &/terrain30/landcover30.fixed",
    316 ! & recl=43200*21600, access='direct',iostat=istat)
    317  open(10,file="landcover30.fixed",
    318  & recl=43200*21600, access='direct',iostat=istat)
    319 
    320  IF (istat.ne.0) then
    321  msksrc=-1
    322  print *,' UMD lake mask open failed -- ios,MSKSRC:',istat,msksrc
    323  ELSE
    324 !
    325  read(10, rec=1,iostat=istat) umd
    326  print *,' UMD lake mask opened OK -- ios,MSKSRC:',istat,msksrc
    327 !
    328  ENDIF
    329 ! --------------
    330  IF (istat.ne.0) then
    331 ! --- When UMD read fails attempt to read navy 10'
    332  print *,' UMD lake mask rd err -- trying navy 10',istat
    333  msksrc=0
    334  print *,' ***** MSKSRC set to 0 MSKSRC=',msksrc
    335  if (msksrc .eq. 0 ) then
    336  READ(14,12,iostat=ios) zslmx
    337  if (ios.ne.0) then
    338  msksrc=-1
    339  print *,' navy10 lake mask rd fail - ios,MSKSRC:',ios,msksrc
    340  endif
    341  endif
    342  ELSE
    343  print *,' UMD lake, UMD(50,50)=',umd(50,50),msksrc
    344  ENDIF
    345 ! --------------
    346 ! --- good UMD land cover read and MSKSRC=1
    347  ENDIF
    348 C
    349 C- READ_G for global 30" terrain
    350 C
    351  print *,' About to call read_g, ITOPO=',itopo
    352  if ( itopo .ne. 0 ) call read_g(glob,itopo)
    353 ! --- transpose even though glob 30" is from S to N and NCEP std is N to S
    354  do j=1,jmn/2
    355  do i=1,imn
    356  jt=jmn - j + 1
    357  i2save = glob(i,j)
    358  glob(i,j)=glob(i,jt)
    359  glob(i,jt) = i2save
    360  enddo
    361  enddo
    362 ! --- transpose glob as USGS 30" is from dateline and NCEP std is 0
    363  do j=1,jmn
    364  do i=1,imn/2
    365  it=imn/2 + i
    366  i2save = glob(i,j)
    367  glob(i,j)=glob(it,j)
    368  glob(it,j) = i2save
    369  enddo
    370  enddo
    371  print *,' After read_g, glob(500,500)=',glob(500,500)
    372 !
    373 
    374 ! --- IMN,JMN
    375  print*, ' IM, JM, NM, NR, NF0, NF1, EFAC, BLAT'
    376  print*, im,jm,nm,nr,nf0,nf1,efac,blat
    377  print *,' imn,jmn,glob(imn,jmn)=',imn,jmn,glob(imn,jmn)
    378  print *,' UBOUND ZAVG=',ubound(zavg)
    379  print *,' UBOUND glob=',ubound(glob)
    380  print *,' UBOUND ZSLM=',ubound(zslm)
    381  print *,' UBOUND GICE=',imn+1,3601
    382  print *,' UBOUND OCLSM=',im,jm
    383 !
    384 ! --- 0 is ocean and 1 is land for slm
    385 !
    386 C
    387 ! --- ZSLM initialize with all land 1, ocean 0
    388  zslm=1
    389 ! --- ZAVG initialize from glob
    390  zavg=glob
    391 
    392  SELECTCASE(msksrc)
    393 C---- 30" sea land mask. 0 are water (lake or ocean)
    394  CASE(1)
    395 ! --- transpose even though glob 30" is from S to N and NCEP std is N to S
    396  do j=1,jmn/2
    397  do i=1,imn
    398  jt=jmn - j + 1
    399  i3save = umd(i,j)
    400  umd(i,j)=umd(i,jt)
    401  umd(i,jt) = i3save
    402  enddo
    403  enddo
    404 ! --- transpose UMD as USGS 30" is from dateline and NCEP std is 0
    405  do j=1,jmn
    406  do i=1,imn/2
    407  it=imn/2 + i
    408  i3save = umd(i,j)
    409  umd(i,j)=umd(it,j)
    410  umd(it,j) = i3save
    411  enddo
    412  enddo
    413 ! --- UMD slmsk with 30" lakes
    414  do j=1,jmn
    415  do i=1,imn
    416  if ( umd(i,j) .eq. 0 ) zslm(i,j) = 0
    417  enddo
    418  enddo
    419 ! --- Global land in slm plus lakes on 30" grid and elev set over globe
    420 ! ---
    421 ! --- When navy 10' mask is set MSKSRC=0
    422  CASE(0)
    423 ! --- MSKSRC 0 navy 10' lake mask, =1 for 30" UMD lake mask, -1 no lakes
    424  print *,' NAVY 10 (8) slmsk for lakes, MSKSRC=',msksrc
    425  kount = 0
    426  kount2 = 0
    427  do j=1,jmn
    428  oldslm = zslm(imn,j)
    429  do i=1,imn
    430  i1 = i + 1
    431 ! --- slmsk with 10' lakes
    432  if ( glob(i,j) .eq. -9999 ) then
    433  zslm(i,j) = 0
    434  kount = kount + 1
    435  endif
    436  islmx=(i-1)/16 + 1
    437  jslmx=(j-1)/16 + 1
    438  if ( zslmx(islmx,jslmx) .eq. 0 ) then
    439  if ( j .gt. 8 .and. j .lt. jmn-8 ) then
    440  if (i1 .gt. imn ) i1 = i1 - imn
    441 ! -----
    442  if(zslm(i,j).eq.1 .and. oldslm .eq. 1 .and. zslm(i1,j).eq.1)then
    443  if (i .ne. 1) oldslm = zslm(i,j)
    444  zslm(i,j) = 0
    445  kount2 = kount2 + 1
    446  endif
    447 ! -----
    448  endif
    449  endif
    450  enddo
    451  enddo
    452 ! ---
    453  CASE(-1)
    454  print *,' ***** set slm from 30" glob, MSKSRC=',msksrc
    455  kount = 0
    456  kount2 = 0
    457  do j=1,jmn
    458  do i=1,imn
    459  i1 = i + 1
    460 ! --- UMD slmsk with 10' lakes and set ZAVG from 30" glob
    461  if ( glob(i,j) .eq. -9999 ) then
    462  zslm(i,j) = 0
    463  kount = kount + 1
    464  endif
    465  enddo
    466  enddo
    467  END SELECT
    468 
    469  deallocate (zslmx,umd,glob)
    470 ! ---
    471 ! --- Fixing an error in the topo 30" data set at pole (-9999).
    472  do i=1,imn
    473  zslm(i,1)=0
    474  zslm(i,jmn)=1
    475  enddo
    476 !
    477 ! print *,' kount1,2,ZAVG(1,1),ZAVG(imn,jmn),ZAVG(500,500)',
    478 ! & kount,kount2,ZAVG(1,1),ZAVG(imn,jmn),ZAVG(500,500)
    479 ! --- The center of pixel (1,1) is 89.9958333N/179.9958333W with dx/dy
    480 ! --- spacing of 1/120 degrees.
    481 !
    482 ! READ REDUCED GRID EXTENTS IF GIVEN
    483 !
    484  read(20,*,iostat=ios) latg2,lonsperlat
    485  if(ios.ne.0.or.2*latg2.ne.jm) then
    486  do j=1,jm
    487  numi(j)=im
    488  enddo
    489  print *,ios,latg2,'COMPUTE TERRAIN ON A FULL GAUSSIAN GRID'
    490  else
    491  do j=1,jm/2
    492  numi(j)=lonsperlat(j)
    493  enddo
    494  do j=jm/2+1,jm
    495  numi(j)=lonsperlat(jm+1-j)
    496  enddo
    497  print *,ios,latg2,'COMPUTE TERRAIN ON A REDUCED GAUSSIAN GRID',
    498  & numi
    499 C print *,ios,latg2,'COMPUTE TERRAIN ON A REDUCED GAUSSIAN GRID'
    500  endif
    501 ! print *,ios,latg2,'TERRAIN ON GAUSSIAN GRID',numi
    502 
    503 !
    504 ! This code assumes that lat runs from north to south for gg!
    505 !
    506 
    507  print *,' SPECTR=',spectr,' REVLAT=',revlat,' ** with GICE-07 **'
    508  IF (spectr) THEN
    509  CALL splat(4,jm,cosclt,wgtclt)
    510  DO j=1,jm/2
    511  rclt(j) = acos(cosclt(j))
    512  ENDDO
    513  DO j = 1,jm/2
    514  phi = rclt(j) * degrad
    515  xlat(j) = 90. - phi
    516  xlat(jm-j+1) = phi - 90.
    517  ENDDO
    518  ELSE
    519  CALL splat(0,jm,cosclt,wgtclt)
    520  DO j=1,jm
    521  rclt(j) = acos(cosclt(j))
    522  xlat(j) = 90.0 - rclt(j) * degrad
    523  ENDDO
    524  ENDIF
    525 
    526  allocate (gice(imn+1,3601))
    527 !
    528  sumdif = 0.
    529  DO j = jm/2,2,-1
    530  diffx(j) = xlat(j) - xlat(j-1)
    531  sumdif = sumdif + diffx(j)
    532  ENDDO
    533  avedif=sumdif/(float(jm/2))
    534 ! print *,' XLAT= avedif: ',avedif
    535 ! write (6,107) (xlat(J)-xlat(j-1),J=JM,2,-1)
    536  print *,' XLAT='
    537  write (6,106) (xlat(j),j=jm,1,-1)
    538  106 format( 10(f7.3,1x))
    539  107 format( 10(f9.5,1x))
    540 C
    541  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    542 C
    543  DO j=1,jmn
    544  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    545  ENDDO
    546  print *,
    547  & ' Before GICE ZAVG(1,2)=',zavg(1,2),zslm(1,2)
    548  print *,
    549  & ' Before GICE ZAVG(1,12)=',zavg(1,12),zslm(1,12)
    550  print *,
    551  & ' Before GICE ZAVG(1,52)=',zavg(1,52),zslm(1,52)
    552  print *,
    553  & ' Before GICE ZAVG(1,112)=',zavg(1,jmn-112),zslm(1,112)
    554 ! GICE: Grumbine 30" Antarctica orog IMNx3616 from S to N & wraped E-W.
    555 ! NB: Zfields are S to N and W-E!
    556  iosg = 0
    557  READ(15,iostat=iosg) gice
    558  if(iosg .ne. 0 ) then
    559  print *,' *** Err on reading GICE record, iosg=',iosg
    560  print *,' exec continues but NO GICE correction done '
    561 ! stop
    562  else
    563  print *,' GICE 30" Antarctica RAMP orog 43200x3616 read OK'
    564  print *,' Processing! '
    565  print *,' Processing! '
    566  print *,' Processing! '
    567  do j = 1, 3601
    568  do i = 1, imn
    569  zsave1 = zavg(i,j)
    570  zsave2 = zslm(i,j)
    571  if( gice(i,j) .ne. -99. .and. gice(i,j) .ne. -1.0 ) then
    572  if ( gice(i,j) .gt. 0.) then
    573  zavg(i,j) = int( gice(i,j) + 0.5 )
    574 !! --- for GICE values less than or equal to 0 (0, -1, or -99) then
    575 !! --- radar-sat (RAMP) values are not valid and revert back to old orog
    576  zslm(i,j) = 1
    577  endif
    578  endif
    579  152 format(1x,' ZAVG(i=',i4,' j=',i4,')=',i5,i3,
    580  &' orig:',i5,i4,' Lat=',f7.3,f8.2,'E',' GICE=',f8.1)
    581  enddo
    582  enddo
    583  endif
    584 
    585  deallocate (gice)
    586 
    587  allocate (oclsm(im,jm),slmi(im,jm))
    588 !C
    589 C COMPUTE MOUNTAIN DATA : ORO SLM VAR (Std Dev) OC
    590 C
    591 ! --- The coupled ocean model is already on a Guasian grid if (IM,JM)
    592 ! --- Attempt to Open the file if mskocn=1
    593  istat=0
    594  if (mskocn .eq. 1) then
    595 ! open(25,form='unformatted',iostat=istat)
    596 ! open(25,form='binary',iostat=istat)
    597 ! --- open to fort.25 with link to file in script
    598  open(25,form='formatted',iostat=istat)
    599  if (istat.ne.0) then
    600  mskocn = 0
    601  print *,' Ocean lsm file Open failure: mskocn,istat=',mskocn,istat
    602  else
    603  mskocn = 1
    604  print *,' Ocean lsm file Opened OK: mskocn,istat=',mskocn,istat
    605  endif
    606 ! --- Read it in
    607  ios=0
    608  oclsm=0.
    609 ! read(25,iostat=ios)OCLSM
    610  read(25,*,iostat=ios)oclsm
    611  if (ios.ne.0) then
    612  mskocn = 0
    613 ! --- did not properly read Gaussian grid ocean land-sea mask, but
    614 ! continue using ZSLMX
    615  print *,' Rd fail: Ocean lsm - continue, mskocn,ios=',mskocn,ios
    616  else
    617  mskocn = 1
    618  print *,' Rd OK: ocean lsm: mskocn,ios=',mskocn,ios
    619 ! --- LSM initialized to ocean mask especially for case where Ocean
    620 ! --- changed by ocean model to land to cope with its problems
    621 ! --- remember, that lake mask is in zslm to be assigned in MAKEMT.
    622  if ( mskocn .eq. 1 ) then
    623  DO j = 1,jm
    624  DO i = 1,numi(j)
    625  if ( notocn .eq. 0 ) then
    626  slmi(i,j) = float(nint(oclsm(i,j)))
    627  else
    628  if ( nint(oclsm(i,j)) .eq. 0) then
    629  slmi(i,j) = 1
    630  else
    631  slmi(i,j) = 0
    632  endif
    633  endif
    634  enddo
    635  enddo
    636  print *,' OCLSM',oclsm(1,1),oclsm(50,50),oclsm(75,75),oclsm(im,jm)
    637  print *,' SLMI:',slmi(1,1),slmi(50,50),slmi(75,75),slmi(im,jm)
    638 ! --- Diag
    639 ! WRITE(27,iostat=ios) REAL(SLMI,4)
    640 ! print *,' write SLMI/OCLSM diag input:',ios
    641  endif
    642  endif
    643 
    644  else
    645  print *,' Not using Ocean model land sea mask'
    646  endif
    647 
    648  if (mskocn .eq. 1)then
    649  print *,' LSM:',oclsm(1,1),oclsm(50,50),oclsm(75,75),oclsm(im,jm)
    650  endif
    651 
    652  allocate (geolon(im,jm),geolon_c(im+1,jm+1),dx(im,jm))
    653  allocate (geolat(im,jm),geolat_c(im+1,jm+1),dy(im,jm))
    654  allocate (slm(im,jm),oro(im,jm),var(im,jm),var4(im,jm))
    655  allocate (land_frac(im,jm))
    656 
    657 !--- reading grid file.
    658  grid_from_file = .false.
    659  is_south_pole = .false.
    660  is_north_pole = .false.
    661  i_south_pole = 0
    662  j_south_pole = 0
    663  i_north_pole = 0
    664  j_north_pole = 0
    665  if( trim(outgrid) .NE. "none" ) then
    666  grid_from_file = .true.
    667  inquire(file=trim(outgrid), exist=fexist)
    668  if(.not. fexist) then
    669  print*, "file "//trim(outgrid)//" does not exist"
    670  CALL errexit(4)
    671  endif
    672  do ncid = 103, 512
    673  inquire( ncid,opened=opened )
    674  if( .NOT.opened )exit
    675  end do
    676 
    677  print*, "outgrid=", trim(outgrid)
    678  error=nf__open(trim(outgrid),nf_nowrite,fsize,ncid)
    679  call netcdf_err(error, 'Open file '//trim(outgrid) )
    680  error=nf_inq_dimid(ncid, 'nx', id_dim)
    681  call netcdf_err(error, 'inquire dimension nx from file '//
    682  & trim(outgrid) )
    683  nx = 2*im
    684  ny = 2*jm
    685 ! error=nf_inq_dimlen(ncid,id_dim,nx)
    686 ! print*, "nx = ", nx, id_dim
    687 ! call netcdf_err(error, 'inquire dimension nx length '//
    688 ! & 'from file '//trim(OUTGRID) )
    689 ! error=nf_inq_dimid(ncid, 'ny', id_dim)
    690 ! call netcdf_err(error, 'inquire dimension ny from file '//
    691 ! & trim(OUTGRID) )
    692 ! error=nf_inq_dimlen(ncid,id_dim,ny)
    693 ! call netcdf_err(error, 'inquire dimension ny length '//
    694 ! & 'from file '//trim(OUTGRID) )
    695 ! IM should equal nx/2 and JM should equal ny/2
    696 ! if(IM .ne. nx/2) then
    697 ! print*, "IM=",IM, " /= grid file nx/2=",nx/2
    698 ! CALL ERREXIT(4)
    699 ! endif
    700 ! if(JM .ne. ny/2) then
    701 ! print*, "JM=",JM, " /= grid file ny/2=",ny/2
    702 ! CALL ERREXIT(4)
    703 ! endif
    704  print*, "Read the grid from file "//trim(outgrid)
    705 
    706  allocate(tmpvar(nx+1,ny+1))
    707 
    708  error=nf_inq_varid(ncid, 'x', id_var)
    709  call netcdf_err(error, 'inquire varid of x from file '
    710  & //trim(outgrid) )
    711  error=nf_get_var_double(ncid, id_var, tmpvar)
    712  call netcdf_err(error, 'inquire data of x from file '
    713  & //trim(outgrid) )
    714  !--- adjust lontitude to be between 0 and 360.
    715  do j = 1,ny+1; do i = 1,nx+1
    716  if(tmpvar(i,j) .NE. missing_value) then
    717  if(tmpvar(i,j) .GT. 360) tmpvar(i,j) = tmpvar(i,j) - 360
    718  if(tmpvar(i,j) .LT. 0) tmpvar(i,j) = tmpvar(i,j) + 360
    719  endif
    720  enddo; enddo
    721 
    722  geolon(1:im,1:jm) = tmpvar(2:nx:2,2:ny:2)
    723  geolon_c(1:im+1,1:jm+1) = tmpvar(1:nx+1:2,1:ny+1:2)
    724 
    725  error=nf_inq_varid(ncid, 'y', id_var)
    726  call netcdf_err(error, 'inquire varid of y from file '
    727  & //trim(outgrid) )
    728  error=nf_get_var_double(ncid, id_var, tmpvar)
    729  call netcdf_err(error, 'inquire data of y from file '
    730  & //trim(outgrid) )
    731  geolat(1:im,1:jm) = tmpvar(2:nx:2,2:ny:2)
    732  geolat_c(1:im+1,1:jm+1) = tmpvar(1:nx+1:2,1:ny+1:2)
    733 
    734  !--- figure out pole location.
    735  maxlat = -90
    736  minlat = 90
    737  i_north_pole = 0
    738  j_north_pole = 0
    739  i_south_pole = 0
    740  j_south_pole = 0
    741  do j = 1, ny+1; do i = 1, nx+1
    742  if( tmpvar(i,j) > maxlat ) then
    743  i_north_pole=i
    744  j_north_pole=j
    745  maxlat = tmpvar(i,j)
    746  endif
    747  if( tmpvar(i,j) < minlat ) then
    748  i_south_pole=i
    749  j_south_pole=j
    750  minlat = tmpvar(i,j)
    751  endif
    752  enddo ; enddo
    753  !--- only when maxlat is close to 90. the point is north pole
    754  if(maxlat < 89.9 ) then
    755  i_north_pole = 0
    756  j_north_pole = 0
    757  endif
    758  if(minlat > -89.9 ) then
    759  i_south_pole = 0
    760  j_south_pole = 0
    761  endif
    762  print*, "minlat=", minlat, "maxlat=", maxlat
    763  print*, "north pole supergrid index is ",
    764  & i_north_pole, j_north_pole
    765  print*, "south pole supergrid index is ",
    766  & i_south_pole, j_south_pole
    767  deallocate(tmpvar)
    768 
    769  if(i_south_pole >0 .and. j_south_pole > 0) then
    770  if(mod(i_south_pole,2)==0) then ! stretched grid
    771  do j = 1, jm; do i = 1, im
    772  if(i==i_south_pole/2 .and. (j==j_south_pole/2
    773  & .or. j==j_south_pole/2+1) ) then
    774  is_south_pole(i,j) = .true.
    775  print*, "south pole at i,j=", i, j
    776  endif
    777  enddo; enddo
    778  else
    779  do j = 1, jm; do i = 1, im
    780  if((i==i_south_pole/2 .or. i==i_south_pole/2+1)
    781  & .and. (j==j_south_pole/2 .or.
    782  & j==j_south_pole/2+1) ) then
    783  is_south_pole(i,j) = .true.
    784  print*, "south pole at i,j=", i, j
    785  endif
    786  enddo; enddo
    787  endif
    788  endif
    789  if(i_north_pole >0 .and. j_north_pole > 0) then
    790  if(mod(i_north_pole,2)==0) then ! stretched grid
    791  do j = 1, jm; do i = 1, im
    792  if(i==i_north_pole/2 .and. (j==j_north_pole/2 .or.
    793  & j==j_north_pole/2+1) ) then
    794  is_north_pole(i,j) = .true.
    795  print*, "north pole at i,j=", i, j
    796  endif
    797  enddo; enddo
    798  else
    799  do j = 1, jm; do i = 1, im
    800  if((i==i_north_pole/2 .or. i==i_north_pole/2+1)
    801  & .and. (j==j_north_pole/2 .or.
    802  & j==j_north_pole/2+1) ) then
    803  is_north_pole(i,j) = .true.
    804  print*, "north pole at i,j=", i, j
    805  endif
    806  enddo; enddo
    807  endif
    808  endif
    809 
    810 
    811  allocate(tmpvar(nx,ny))
    812  error=nf_inq_varid(ncid, 'area', id_var)
    813  call netcdf_err(error, 'inquire varid of area from file '
    814  & //trim(outgrid) )
    815  error=nf_get_var_double(ncid, id_var, tmpvar)
    816  call netcdf_err(error, 'inquire data of area from file '
    817  & //trim(outgrid) )
    818 
    819  do j = 1, jm
    820  do i = 1, im
    821  dx(i,j) = sqrt(tmpvar(2*i-1,2*j-1)+tmpvar(2*i,2*j-1)
    822  & +tmpvar(2*i-1,2*j )+tmpvar(2*i,2*j ))
    823  dy(i,j) = dx(i,j)
    824  enddo
    825  enddo
    826 ! allocate(tmpvar(nx,ny+1))
    827 
    828 ! error=nf_inq_varid(ncid, 'dx', id_var)
    829 ! call netcdf_err(error, 'inquire varid of dx from file '
    830 ! & //trim(OUTGRID) )
    831 ! error=nf_get_var_double(ncid, id_var, tmpvar)
    832 ! call netcdf_err(error, 'inquire data of dx from file '
    833 ! & //trim(OUTGRID) )
    834 ! dx(1:IM,1:JM+1) = tmpvar(2:nx:2,1:ny+1:2)
    835 ! deallocate(tmpvar)
    836 
    837 ! allocate(tmpvar(nx+1,ny))
    838 ! error=nf_inq_varid(ncid, 'dy', id_var)
    839 ! call netcdf_err(error, 'inquire varid of dy from file '
    840 ! & //trim(OUTGRID) )
    841 ! error=nf_get_var_double(ncid, id_var, tmpvar)
    842 ! call netcdf_err(error, 'inquire data of dy from file '
    843 ! & //trim(OUTGRID) )
    844 ! dy(1:IM+1,1:JM) = tmpvar(1:nx+1:2,2:ny:2)
    845  deallocate(tmpvar)
    846  endif
    847  tend=timef()
    848  write(6,*)' Timer 1 time= ',tend-tbeg
    849  !
    850  if(grid_from_file) then
    851  tbeg=timef()
    852  CALL makemt2(zavg,zslm,oro,slm,land_frac,var,var4,glat,
    853  & im,jm,imn,jmn,geolon_c,geolat_c)
    854  tend=timef()
    855  write(6,*)' MAKEMT2 time= ',tend-tbeg
    856  else
    857  CALL makemt(zavg,zslm,oro,slm,var,var4,glat,
    858  & ist,ien,jst,jen,im,jm,imn,jmn,xlat,numi)
    859  endif
    860 
    861  call minmxj(im,jm,oro,' ORO')
    862  call minmxj(im,jm,slm,' SLM')
    863  call minmxj(im,jm,var,' VAR')
    864  call minmxj(im,jm,var4,' VAR4')
    865 C --- check for nands in above
    866 ! call nanc(ORO,IM*JM,"MAKEMT_ORO")
    867 ! call nanc(SLM,IM*JM,"MAKEMT_SLM")
    868 ! call nanc(VAR,IM*JM,"MAKEMT_VAR")
    869 ! call nanc(VAR4,IM*JM,"MAKEMT_VAR4")
    870 !
    871 C check antarctic pole
    872 ! DO J = 1,JM
    873 ! DO I = 1,numi(j)
    874 ! if ( i .le. 100 .and. i .ge. 1 )then
    875 ! if (j .ge. JM-1 )then
    876 ! if (height .eq. 0.) print *,'I,J,SLM:',I,J,SLM(I,J)
    877 ! write(6,153)i,j,ORO(i,j),HEIGHT,SLM(i,j)
    878 ! endif
    879 ! endif
    880 ! ENDDO
    881 ! ENDDO
    882 C
    883 C === Compute mtn principal coord HTENSR: THETA,GAMMA,SIGMA
    884 C
    885  allocate (theta(im,jm),gamma(im,jm),sigma(im,jm),elvmax(im,jm))
    886  if(grid_from_file) then
    887  tbeg=timef()
    888  CALL makepc2(zavg,zslm,theta,gamma,sigma,glat,
    889  1 im,jm,imn,jmn,geolon_c,geolat_c)
    890  tend=timef()
    891  write(6,*)' MAKEPC2 time= ',tend-tbeg
    892  else
    893  CALL makepc(zavg,zslm,theta,gamma,sigma,glat,
    894  1 ist,ien,jst,jen,im,jm,imn,jmn,xlat,numi)
    895  endif
    896 
    897  call minmxj(im,jm,theta,' THETA')
    898  call minmxj(im,jm,gamma,' GAMMA')
    899  call minmxj(im,jm,sigma,' SIGMA')
    900 
    901 C --- check for nands in above
    902 ! call nanc(THETA,IM*JM,"MAKEPC_THETA")
    903 ! call nanc(GAMMA,IM*JM,"MAKEPC_GAMMA")
    904 ! call nanc(SIGMA,IM*JM,"MAKEPC_SIGMA")
    905 C
    906 C COMPUTE MOUNTAIN DATA : OA OL
    907 C
    908  allocate (iwork(im,jm,4))
    909  allocate (oa(im,jm,4),ol(im,jm,4),hprime(im,jm,14))
    910  allocate (work1(im,jm),work2(im,jm),work3(im,jm),work4(im,jm))
    911  allocate (work5(im,jm),work6(im,jm))
    912 
    913  call minmxj(im,jm,oro,' ORO')
    914  print*, "inputorog=", trim(inputorog)
    915  if(grid_from_file) then
    916  if(trim(inputorog) == "none") then
    917  print*, "calling MAKEOA2 to compute OA, OL"
    918  tbeg=timef()
    919  CALL makeoa2(zavg,zslm,var,glat,oa,ol,iwork,elvmax,oro,
    920  1 work1,work2,work3,work4,work5,work6,
    921  2 im,jm,imn,jmn,geolon_c,geolat_c,
    922  3 geolon,geolat,dx,dy,is_south_pole,is_north_pole)
    923  tend=timef()
    924  write(6,*)' MAKEOA2 time= ',tend-tbeg
    925  else
    926  !-- read the data from INPUTOROG file.
    927  error=nf__open(trim(inputorog),nf_nowrite,fsize,ncid)
    928  call netcdf_err(error, 'Open file '//trim(inputorog) )
    929  error=nf_inq_dimid(ncid, 'lon', id_dim)
    930  call netcdf_err(error, 'inquire dimension lon from file '//
    931  & trim(inputorog) )
    932  error=nf_inq_dimlen(ncid,id_dim,nx_in)
    933  call netcdf_err(error, 'inquire dimension lon length '//
    934  & 'from file '//trim(inputorog) )
    935  error=nf_inq_dimid(ncid, 'lat', id_dim)
    936  call netcdf_err(error, 'inquire dimension lat from file '//
    937  & trim(inputorog) )
    938  error=nf_inq_dimlen(ncid,id_dim,ny_in)
    939  call netcdf_err(error, 'inquire dimension lat length '//
    940  & 'from file '//trim(inputorog) )
    941 
    942  print*, "extrapolate OA, OL from Gaussian grid with nx=",
    943  & nx_in, ", ny=", ny_in
    944  allocate(oa_in(nx_in,ny_in,4), ol_in(nx_in,ny_in,4))
    945  allocate(slm_in(nx_in,ny_in) )
    946  allocate(lon_in(nx_in,ny_in), lat_in(nx_in,ny_in) )
    947 
    948  error=nf_inq_varid(ncid, 'oa1', id_var)
    949  call netcdf_err(error, 'inquire varid of oa1 from file '
    950  & //trim(inputorog) )
    951  error=nf_get_var_double(ncid, id_var, oa_in(:,:,1))
    952  call netcdf_err(error, 'inquire data of oa1 from file '
    953  & //trim(inputorog) )
    954  error=nf_inq_varid(ncid, 'oa2', id_var)
    955  call netcdf_err(error, 'inquire varid of oa2 from file '
    956  & //trim(inputorog) )
    957  error=nf_get_var_double(ncid, id_var, oa_in(:,:,2))
    958  call netcdf_err(error, 'inquire data of oa2 from file '
    959  & //trim(inputorog) )
    960  error=nf_inq_varid(ncid, 'oa3', id_var)
    961  call netcdf_err(error, 'inquire varid of oa3 from file '
    962  & //trim(inputorog) )
    963  error=nf_get_var_double(ncid, id_var, oa_in(:,:,3))
    964  call netcdf_err(error, 'inquire data of oa3 from file '
    965  & //trim(inputorog) )
    966  error=nf_inq_varid(ncid, 'oa4', id_var)
    967  call netcdf_err(error, 'inquire varid of oa4 from file '
    968  & //trim(inputorog) )
    969  error=nf_get_var_double(ncid, id_var, oa_in(:,:,4))
    970  call netcdf_err(error, 'inquire data of oa4 from file '
    971  & //trim(inputorog) )
    972 
    973  error=nf_inq_varid(ncid, 'ol1', id_var)
    974  call netcdf_err(error, 'inquire varid of ol1 from file '
    975  & //trim(inputorog) )
    976  error=nf_get_var_double(ncid, id_var, ol_in(:,:,1))
    977  call netcdf_err(error, 'inquire data of ol1 from file '
    978  & //trim(inputorog) )
    979  error=nf_inq_varid(ncid, 'ol2', id_var)
    980  call netcdf_err(error, 'inquire varid of ol2 from file '
    981  & //trim(inputorog) )
    982  error=nf_get_var_double(ncid, id_var, ol_in(:,:,2))
    983  call netcdf_err(error, 'inquire data of ol2 from file '
    984  & //trim(inputorog) )
    985  error=nf_inq_varid(ncid, 'ol3', id_var)
    986  call netcdf_err(error, 'inquire varid of ol3 from file '
    987  & //trim(inputorog) )
    988  error=nf_get_var_double(ncid, id_var, ol_in(:,:,3))
    989  call netcdf_err(error, 'inquire data of ol3 from file '
    990  & //trim(inputorog) )
    991  error=nf_inq_varid(ncid, 'ol4', id_var)
    992  call netcdf_err(error, 'inquire varid of ol4 from file '
    993  & //trim(inputorog) )
    994  error=nf_get_var_double(ncid, id_var, ol_in(:,:,4))
    995  call netcdf_err(error, 'inquire data of ol4 from file '
    996  & //trim(inputorog) )
    997 
    998  error=nf_inq_varid(ncid, 'slmsk', id_var)
    999  call netcdf_err(error, 'inquire varid of slmsk from file '
    1000  & //trim(inputorog) )
    1001  error=nf_get_var_double(ncid, id_var, slm_in)
    1002  call netcdf_err(error, 'inquire data of slmsk from file '
    1003  & //trim(inputorog) )
    1004 
    1005  error=nf_inq_varid(ncid, 'geolon', id_var)
    1006  call netcdf_err(error, 'inquire varid of geolon from file '
    1007  & //trim(inputorog) )
    1008  error=nf_get_var_double(ncid, id_var, lon_in)
    1009  call netcdf_err(error, 'inquire data of geolon from file '
    1010  & //trim(inputorog) )
    1011 
    1012  error=nf_inq_varid(ncid, 'geolat', id_var)
    1013  call netcdf_err(error, 'inquire varid of geolat from file '
    1014  & //trim(inputorog) )
    1015  error=nf_get_var_double(ncid, id_var, lat_in)
    1016  call netcdf_err(error, 'inquire data of geolat from file '
    1017  & //trim(inputorog) )
    1018 
    1019  ! set slmsk=2 to be ocean (0)
    1020  do j=1,ny_in; do i=1,nx_in
    1021  if(slm_in(i,j) == 2) slm_in(i,j) = 0
    1022  enddo; enddo
    1023 
    1024  error=nf_close(ncid)
    1025  call netcdf_err(error, 'close file '
    1026  & //trim(inputorog) )
    1027 
    1028  print*, "calling MAKEOA3 to compute OA, OL"
    1029  CALL makeoa3(zavg,zslm,var,glat,oa,ol,iwork,elvmax,oro,slm,
    1030  1 work1,work2,work3,work4,work5,work6,
    1031  2 im,jm,imn,jmn,geolon_c,geolat_c,
    1032  3 geolon,geolat,is_south_pole,is_north_pole,nx_in,ny_in,
    1033  4 oa_in,ol_in,slm_in,lon_in,lat_in)
    1034 
    1035  deallocate(oa_in,ol_in,slm_in,lon_in,lat_in)
    1036 
    1037  endif
    1038  else
    1039  CALL makeoa(zavg,var,glat,oa,ol,iwork,elvmax,oro,
    1040  1 work1,work2,work3,work4,
    1041  2 work5,work6,
    1042  3 ist,ien,jst,jen,im,jm,imn,jmn,xlat,numi)
    1043  endif
    1044 
    1045 ! Deallocate 2d vars
    1046  deallocate(ist,ien)
    1047  deallocate (zslm,zavg)
    1048  deallocate (dx,dy)
    1049  deallocate (work2,work3,work4,work5,work6)
    1050 
    1051 ! Deallocate 3d vars
    1052  deallocate(iwork)
    1053 
    1054  tbeg=timef()
    1055  call minmxj(im,jm,oa,' OA')
    1056  call minmxj(im,jm,ol,' OL')
    1057  call minmxj(im,jm,elvmax,' ELVMAX')
    1058  call minmxj(im,jm,oro,' ORO')
    1059 C --- check for nands in above
    1060 ! call nanc(OA(1,1,1), IM*JM,"MAKEOA_OA(1,1,1)")
    1061 ! call nanc(OA(1,1,2), IM*JM,"MAKEOA_OA(1,1,2)")
    1062 ! call nanc(OA(1,1,3), IM*JM,"MAKEOA_OA(1,1,3)")
    1063 ! call nanc(OA(1,1,4), IM*JM,"MAKEOA_OA(1,1,4)")
    1064 ! call nanc(OL(1,1,1), IM*JM,"MAKEOA_OL(1,1,1)")
    1065 ! call nanc(OL(1,1,2), IM*JM,"MAKEOA_OL(1,1,2)")
    1066 ! call nanc(OL(1,1,3), IM*JM,"MAKEOA_OL(1,1,3)")
    1067 ! call nanc(OL(1,1,4), IM*JM,"MAKEOA_OL(1,1,4)")
    1068 ! call nanc(ELVMAX, IM*JM,"MAKEPC_ELVMAX")
    1069 
    1070  maxc3 = 0
    1071  maxc4 = 0
    1072  maxc5 = 0
    1073  maxc6 = 0
    1074  maxc7 = 0
    1075  maxc8 = 0
    1076  DO j = 1,jm
    1077  DO i = 1,numi(j)
    1078  if (elvmax(i,j) .gt. 3000.) maxc3 = maxc3 +1
    1079  if (elvmax(i,j) .gt. 4000.) maxc4 = maxc4 +1
    1080  if (elvmax(i,j) .gt. 5000.) maxc5 = maxc5 +1
    1081  if (elvmax(i,j) .gt. 6000.) maxc6 = maxc6 +1
    1082  if (elvmax(i,j) .gt. 7000.) maxc7 = maxc7 +1
    1083  if (elvmax(i,j) .gt. 8000.) maxc8 = maxc8 +1
    1084  ENDDO
    1085  ENDDO
    1086  print *,' MAXC3:',maxc3,maxc4,maxc5,maxc6,maxc7,maxc8
    1087 !
    1088 c itest=151
    1089 c jtest=56
    1090 C
    1091  print *,' ===> Replacing ELVMAX with ELVMAX-ORO <=== '
    1092  print *,' ===> if ELVMAX<=ORO replace with proxy <=== '
    1093  print *,' ===> the sum of mean orog (ORO) and std dev <=== '
    1094  DO j = 1,jm
    1095  DO i = 1,numi(j)
    1096  if (elvmax(i,j) .lt. oro(i,j) ) then
    1097 C--- subtracting off ORO leaves std dev (this should never happen)
    1098  elvmax(i,j) = max( 3. * var(i,j),0.)
    1099  else
    1100  elvmax(i,j) = max( elvmax(i,j) - oro(i,j),0.)
    1101  endif
    1102  ENDDO
    1103  ENDDO
    1104  maxc3 = 0
    1105  maxc4 = 0
    1106  maxc5 = 0
    1107  maxc6 = 0
    1108  maxc7 = 0
    1109  maxc8 = 0
    1110  DO j = 1,jm
    1111  DO i = 1,numi(j)
    1112  if (elvmax(i,j) .gt. 3000.) maxc3 = maxc3 +1
    1113  if (elvmax(i,j) .gt. 4000.) maxc4 = maxc4 +1
    1114  if (elvmax(i,j) .gt. 5000.) maxc5 = maxc5 +1
    1115  if (elvmax(i,j) .gt. 6000.) maxc6 = maxc6 +1
    1116  if (elvmax(i,j) .gt. 7000.) maxc7 = maxc7 +1
    1117  if (elvmax(i,j) .gt. 8000.) maxc8 = maxc8 +1
    1118  ENDDO
    1119  ENDDO
    1120  print *,' after MAXC 3-6 km:',maxc3,maxc4,maxc5,maxc6
    1121 c
    1122  call mnmxja(im,jm,elvmax,itest,jtest,' ELVMAX')
    1123 ! if (JM .gt. 0) stop
    1124 C
    1125 C ZERO OVER OCEAN
    1126 C
    1127  print *,' Testing at point (itest,jtest)=',itest,jtest
    1128  print *,' SLM(itest,jtest)=',slm(itest,jtest),itest,jtest
    1129  print *,' ORO(itest,jtest)=',oro(itest,jtest),itest,jtest
    1130  DO j = 1,jm
    1131  DO i = 1,numi(j)
    1132  IF(slm(i,j).EQ.0.) THEN
    1133 C VAR(I,J) = 0.
    1134  var4(i,j) = 0.
    1135  oa(i,j,1) = 0.
    1136  oa(i,j,2) = 0.
    1137  oa(i,j,3) = 0.
    1138  oa(i,j,4) = 0.
    1139  ol(i,j,1) = 0.
    1140  ol(i,j,2) = 0.
    1141  ol(i,j,3) = 0.
    1142  ol(i,j,4) = 0.
    1143 C THETA(I,J) =0.
    1144 C GAMMA(I,J) =0.
    1145 C SIGMA(I,J) =0.
    1146 C ELVMAX(I,J)=0.
    1147 ! --- the sub-grid scale parameters for mtn blocking and gwd retain
    1148 ! --- properties even if over ocean but there is elevation within the
    1149 ! --- gaussian grid box.
    1150  ENDIF
    1151  ENDDO
    1152  ENDDO
    1153 C
    1154 ! --- if mskocn=1 ocean land sea mask given, =0 if not present
    1155 ! --- OCLSM is real(*4) array with fractional values possible
    1156 ! --- 0 is ocean and 1 is land for slm
    1157 ! --- Step 1: Only change SLM after GFS SLM is applied
    1158 ! --- SLM is only field that will be altered by OCLSM
    1159 ! --- Ocean land sea mask ocean points made ocean in atm model
    1160 ! --- Land and Lakes and all other atm elv moments remain unchanged.
    1161  if ( mskocn .eq. 1 ) then
    1162 
    1163  DO j = 1,jm
    1164  DO i = 1,numi(j)
    1165  if (abs(oro(i,j)) .lt. 1. ) then
    1166  slm(i,j) = slmi(i,j)
    1167  else
    1168  if ( slmi(i,j) .eq. 1. .and. slm(i,j) .eq. 1) slm(i,j) = 1
    1169  if ( slmi(i,j) .eq. 0. .and. slm(i,j) .eq. 0) slm(i,j) = 0
    1170  if ( slmi(i,j) .eq. 0. .and. slm(i,j) .eq. 1) slm(i,j) = 0
    1171  if ( slmi(i,j) .eq. 0. .and. slm(i,j) .eq. 0) slm(i,j) = 0
    1172  endif
    1173  enddo
    1174  enddo
    1175  endif
    1176  print *,' SLM(itest,jtest)=',slm(itest,jtest),itest,jtest
    1177  print *,' ORO(itest,jtest)=',oro(itest,jtest),itest,jtest
    1178 
    1179  deallocate(slmi)
    1180 
    1181 C REMOVE ISOLATED POINTS
    1182  DO j=2,jm-1
    1183  jn=j-1
    1184  js=j+1
    1185  rn=REAL(NUMI(JN))/REAL(NUMI(J))
    1186  rs=REAL(NUMI(JS))/REAL(NUMI(J))
    1187  DO i=1,numi(j)
    1188  iw=mod(i+im-2,im)+1
    1189  ie=mod(i,im)+1
    1190  slma=slm(iw,j)+slm(ie,j)
    1191  oroa=oro(iw,j)+oro(ie,j)
    1192  vara=var(iw,j)+var(ie,j)
    1193  var4a=var4(iw,j)+var4(ie,j)
    1194  DO k=1,4
    1195  oaa(k)=oa(iw,j,k)+oa(ie,j,k)
    1196 ! --- (*j*) fix typo:
    1197  ola(k)=ol(iw,j,k)+ol(ie,j,k)
    1198  ENDDO
    1199  wgta=2
    1200  xn=rn*(i-1)+1
    1201  IF(abs(xn-nint(xn)).LT.1.e-2) THEN
    1202  in=mod(nint(xn)-1,numi(jn))+1
    1203  inw=mod(in+numi(jn)-2,numi(jn))+1
    1204  ine=mod(in,numi(jn))+1
    1205  slma=slma+slm(inw,jn)+slm(in,jn)+slm(ine,jn)
    1206  oroa=oroa+oro(inw,jn)+oro(in,jn)+oro(ine,jn)
    1207  vara=vara+var(inw,jn)+var(in,jn)+var(ine,jn)
    1208  var4a=var4a+var4(inw,jn)+var4(in,jn)+var4(ine,jn)
    1209  DO k=1,4
    1210  oaa(k)=oaa(k)+oa(inw,jn,k)+oa(in,jn,k)+oa(ine,jn,k)
    1211  ola(k)=ola(k)+ol(inw,jn,k)+ol(in,jn,k)+ol(ine,jn,k)
    1212  ENDDO
    1213  wgta=wgta+3
    1214  ELSE
    1215  inw=int(xn)
    1216  ine=mod(inw,numi(jn))+1
    1217  slma=slma+slm(inw,jn)+slm(ine,jn)
    1218  oroa=oroa+oro(inw,jn)+oro(ine,jn)
    1219  vara=vara+var(inw,jn)+var(ine,jn)
    1220  var4a=var4a+var4(inw,jn)+var4(ine,jn)
    1221  DO k=1,4
    1222  oaa(k)=oaa(k)+oa(inw,jn,k)+oa(ine,jn,k)
    1223  ola(k)=ola(k)+ol(inw,jn,k)+ol(ine,jn,k)
    1224  ENDDO
    1225  wgta=wgta+2
    1226  ENDIF
    1227  xs=rs*(i-1)+1
    1228  IF(abs(xs-nint(xs)).LT.1.e-2) THEN
    1229  is=mod(nint(xs)-1,numi(js))+1
    1230  isw=mod(is+numi(js)-2,numi(js))+1
    1231  ise=mod(is,numi(js))+1
    1232  slma=slma+slm(isw,js)+slm(is,js)+slm(ise,js)
    1233  oroa=oroa+oro(isw,js)+oro(is,js)+oro(ise,js)
    1234  vara=vara+var(isw,js)+var(is,js)+var(ise,js)
    1235  var4a=var4a+var4(isw,js)+var4(is,js)+var4(ise,js)
    1236  DO k=1,4
    1237  oaa(k)=oaa(k)+oa(isw,js,k)+oa(is,js,k)+oa(ise,js,k)
    1238  ola(k)=ola(k)+ol(isw,js,k)+ol(is,js,k)+ol(ise,js,k)
    1239  ENDDO
    1240  wgta=wgta+3
    1241  ELSE
    1242  isw=int(xs)
    1243  ise=mod(isw,numi(js))+1
    1244  slma=slma+slm(isw,js)+slm(ise,js)
    1245  oroa=oroa+oro(isw,js)+oro(ise,js)
    1246  vara=vara+var(isw,js)+var(ise,js)
    1247  var4a=var4a+var4(isw,js)+var4(ise,js)
    1248  DO k=1,4
    1249  oaa(k)=oaa(k)+oa(isw,js,k)+oa(ise,js,k)
    1250  ola(k)=ola(k)+ol(isw,js,k)+ol(ise,js,k)
    1251  ENDDO
    1252  wgta=wgta+2
    1253  ENDIF
    1254  oroa=oroa/wgta
    1255  vara=vara/wgta
    1256  var4a=var4a/wgta
    1257  DO k=1,4
    1258  oaa(k)=oaa(k)/wgta
    1259  ola(k)=ola(k)/wgta
    1260  ENDDO
    1261  IF(slm(i,j).EQ.0..AND.slma.EQ.wgta) THEN
    1262  print '("SEA ",2F8.0," MODIFIED TO LAND",2F8.0," AT ",2I8)',
    1263  & oro(i,j),var(i,j),oroa,vara,i,j
    1264  slm(i,j)=1.
    1265  oro(i,j)=oroa
    1266  var(i,j)=vara
    1267  var4(i,j)=var4a
    1268  DO k=1,4
    1269  oa(i,j,k)=oaa(k)
    1270  ol(i,j,k)=ola(k)
    1271  ENDDO
    1272  ELSEIF(slm(i,j).EQ.1..AND.slma.EQ.0.) THEN
    1273  print '("LAND",2F8.0," MODIFIED TO SEA ",2F8.0," AT ",2I8)',
    1274  & oro(i,j),var(i,j),oroa,vara,i,j
    1275  slm(i,j)=0.
    1276  oro(i,j)=oroa
    1277  var(i,j)=vara
    1278  var4(i,j)=var4a
    1279  DO k=1,4
    1280  oa(i,j,k)=oaa(k)
    1281  ol(i,j,k)=ola(k)
    1282  ENDDO
    1283  ENDIF
    1284  ENDDO
    1285  ENDDO
    1286 C--- print for testing after isolated points removed
    1287  print *,' after isolated points removed'
    1288  call minmxj(im,jm,oro,' ORO')
    1289 C print *,' JM=',JM,' numi=',numi
    1290  print *,' ORO(itest,jtest)=',oro(itest,jtest)
    1291  print *,' VAR(itest,jtest)=',var(itest,jtest)
    1292  print *,' VAR4(itest,jtest)=',var4(itest,jtest)
    1293  print *,' OA(itest,jtest,1)=',oa(itest,jtest,1)
    1294  print *,' OA(itest,jtest,2)=',oa(itest,jtest,2)
    1295  print *,' OA(itest,jtest,3)=',oa(itest,jtest,3)
    1296  print *,' OA(itest,jtest,4)=',oa(itest,jtest,4)
    1297  print *,' OL(itest,jtest,1)=',ol(itest,jtest,1)
    1298  print *,' OL(itest,jtest,2)=',ol(itest,jtest,2)
    1299  print *,' OL(itest,jtest,3)=',ol(itest,jtest,3)
    1300  print *,' OL(itest,jtest,4)=',ol(itest,jtest,4)
    1301  print *,' Testing at point (itest,jtest)=',itest,jtest
    1302  print *,' THETA(itest,jtest)=',theta(itest,jtest)
    1303  print *,' GAMMA(itest,jtest)=',gamma(itest,jtest)
    1304  print *,' SIGMA(itest,jtest)=',sigma(itest,jtest)
    1305  print *,' ELVMAX(itest,jtest)=',elvmax(itest,jtest)
    1306  print *,' EFAC=',efac
    1307 C
    1308  DO j=1,jm
    1309  DO i=1,numi(j)
    1310  oro(i,j) = oro(i,j) + efac*var(i,j)
    1311  hprime(i,j,1) = var(i,j)
    1312  hprime(i,j,2) = var4(i,j)
    1313  hprime(i,j,3) = oa(i,j,1)
    1314  hprime(i,j,4) = oa(i,j,2)
    1315  hprime(i,j,5) = oa(i,j,3)
    1316  hprime(i,j,6) = oa(i,j,4)
    1317  hprime(i,j,7) = ol(i,j,1)
    1318  hprime(i,j,8) = ol(i,j,2)
    1319  hprime(i,j,9) = ol(i,j,3)
    1320  hprime(i,j,10)= ol(i,j,4)
    1321  hprime(i,j,11)= theta(i,j)
    1322  hprime(i,j,12)= gamma(i,j)
    1323  hprime(i,j,13)= sigma(i,j)
    1324  hprime(i,j,14)= elvmax(i,j)
    1325  ENDDO
    1326  ENDDO
    1327 !
    1328  call mnmxja(im,jm,elvmax,itest,jtest,' ELVMAX')
    1329 ! --- Quadratic filter applied by default.
    1330 ! --- NF0 is normally set to an even value beyond the previous truncation,
    1331 ! --- for example, for jcap=382, NF0=254+2
    1332 ! --- NF1 is set as jcap+2 (and/or nearest even), eg., for t382, NF1=382+2=384
    1333 ! --- if no filter is desired then NF1=NF0=0 and ORF=ORO
    1334 ! --- if no filter but spectral to grid (with gibbs) then NF1=jcap+2, and NF1=jcap+1
    1335 !
    1336  deallocate(var4)
    1337  allocate (orf(im,jm))
    1338  IF ( nf1 - nf0 .eq. 0 ) filter=.false.
    1339  print *,' NF1, NF0, FILTER=',nf1,nf0,filter
    1340  IF (filter) THEN
    1341 C SPECTRALLY TRUNCATE AND FILTER OROGRAPHY
    1342  do j=1,jm
    1343  if(numi(j).lt.im) then
    1344  ffj=cmplx(0.,0.)
    1345  call spfft1(numi(j),im/2+1,numi(j),1,ffj,oro(1,j),-1)
    1346  call spfft1(im,im/2+1,im,1,ffj,oro(1,j),+1)
    1347  endif
    1348  enddo
    1349  CALL sptez(nr,nm,4,im,jm,ors,oro,-1)
    1350 !
    1351  print *,' about to apply spectral filter '
    1352  fff=1./(nf1-nf0)**2
    1353  i=0
    1354  DO m=0,nm
    1355  DO n=m,nm+nr*m
    1356  IF(n.GT.nf0) THEN
    1357  www=max(1.-fff*(n-nf0)**2,0.)
    1358  ors(i+1)=ors(i+1)*www
    1359  ors(i+2)=ors(i+2)*www
    1360  ENDIF
    1361  i=i+2
    1362  ENDDO
    1363  ENDDO
    1364 !
    1365  CALL sptez(nr,nm,4,im,jm,ors,orf,+1)
    1366  do j=1,jm
    1367  if(numi(j).lt.im) then
    1368  call spfft1(im,im/2+1,im,1,ffj,orf(1,j),-1)
    1369  call spfft1(numi(j),im/2+1,numi(j),1,ffj,orf(1,j),+1)
    1370  endif
    1371  enddo
    1372 
    1373  ELSE
    1374  IF (revlat) THEN
    1375  CALL revers(im, jm, numi, slm, work1)
    1376  CALL revers(im, jm, numi, oro, work1)
    1377  DO imt=1,nmt
    1378  CALL revers(im, jm, numi, hprime(1,1,imt), work1)
    1379  ENDDO
    1380  ENDIF
    1381  ors=0.
    1382  orf=oro
    1383  ENDIF
    1384 
    1385  deallocate (work1)
    1386 
    1387  call mnmxja(im,jm,elvmax,itest,jtest,' ELVMAX')
    1388  print *,' ELVMAX(',itest,jtest,')=',elvmax(itest,jtest)
    1389  print *,' after spectral filter is applied'
    1390  call minmxj(im,jm,oro,' ORO')
    1391  call minmxj(im,jm,orf,' ORF')
    1392 C
    1393 C USE NEAREST NEIGHBOR INTERPOLATION TO FILL FULL GRIDS
    1394  call rg2gg(im,jm,numi,slm)
    1395  call rg2gg(im,jm,numi,oro)
    1396  call rg2gg(im,jm,numi,orf)
    1397 C --- not apply to new prin coord and ELVMAX (*j*)
    1398  do imt=1,10
    1399  call rg2gg(im,jm,numi,hprime(1,1,imt))
    1400  enddo
    1401 C
    1402  print *,' after nearest neighbor interpolation applied '
    1403  call minmxj(im,jm,oro,' ORO')
    1404  call minmxj(im,jm,orf,' ORF')
    1405  call mnmxja(im,jm,elvmax,itest,jtest,' ELVMAX')
    1406  print *,' ORO,ORF(itest,jtest),itest,jtest:',
    1407  & oro(itest,jtest),orf(itest,jtest),itest,jtest
    1408  print *,' ELVMAX(',itest,jtest,')=',elvmax(itest,jtest)
    1409 
    1410 
    1411 C check antarctic pole
    1412  DO j = 1,jm
    1413  DO i = 1,numi(j)
    1414  if ( i .le. 21 .and. i .ge. 1 )then
    1415  if (j .eq. jm )write(6,153)i,j,oro(i,j),elvmax(i,j),slm(i,j)
    1416  153 format(1x,' ORO,ELVMAX(i=',i4,' j=',i4,')=',2e14.5,f5.1)
    1417  endif
    1418  ENDDO
    1419  ENDDO
    1420  tend=timef()
    1421  write(6,*)' Timer 5 time= ',tend-tbeg
    1422  if (output_binary) then
    1423  tbeg=timef()
    1424 C OUTPUT BINARY FIELDS
    1425  print *,' OUTPUT BINARY FIELDS'
    1426  WRITE(51) REAL(SLM,4)
    1427  WRITE(52) REAL(ORF,4)
    1428  WRITE(53) REAL(HPRIME,4)
    1429  WRITE(54) REAL(ORS,4)
    1430  WRITE(55) REAL(ORO,4)
    1431  WRITE(66) REAL(THETA,4)
    1432  WRITE(67) REAL(GAMMA,4)
    1433  WRITE(68) REAL(SIGMA,4)
    1434 ! --- OCLSM is real(4) write only if ocean mask is present
    1435  if ( mskocn .eq. 1 ) then
    1436  ios=0
    1437  WRITE(27,iostat=ios) oclsm
    1438  print *,' write OCLSM input:',ios
    1439 ! print *,' LSM:',OCLSM(1,1),OCLSM(50,50),OCLSM(75,75),OCLSM(IM,JM)
    1440  endif
    1441 C
    1442  call minmxj(im,jm,oro,' ORO')
    1443  print *,' IM=',im,' JM=',jm,' SPECTR=',spectr
    1444 C--- Test binary file output:
    1445  WRITE(71) REAL(SLM,4)
    1446  DO imt=1,nmt
    1447  WRITE(71) REAL(HPRIME(:,:,IMT),4)
    1448  print *,' HPRIME(',itest,jtest,imt,')=',hprime(itest,jtest,imt)
    1449  ENDDO
    1450  WRITE(71) REAL(ORO,4)
    1451  IF (spectr) THEN
    1452  WRITE(71) REAL(ORF,4) ! smoothed spectral orography!
    1453  ENDIF
    1454 C OUTPUT GRIB FIELDS
    1455  kpds=0
    1456  kpds(1)=7
    1457  kpds(2)=78
    1458  kpds(3)=255
    1459  kpds(4)=128
    1460  kpds(5)=81
    1461  kpds(6)=1
    1462  kpds(8)=2004
    1463  kpds(9)=1
    1464  kpds(10)=1
    1465  kpds(13)=4
    1466  kpds(15)=1
    1467  kpds(16)=51
    1468  kpds(17)=1
    1469  kpds(18)=1
    1470  kpds(19)=1
    1471  kpds(21)=20
    1472  kpds(22)=0
    1473  kgds=0
    1474  kgds(1)=4
    1475  kgds(2)=im
    1476  kgds(3)=jm
    1477  kgds(4)=90000-180000/pi*rclt(1)
    1478  kgds(6)=128
    1479  kgds(7)=180000/pi*rclt(1)-90000
    1480  kgds(8)=-nint(360000./im)
    1481  kgds(9)=nint(360000./im)
    1482  kgds(10)=jm/2
    1483  kgds(20)=255
    1484 ! --- SLM
    1485  CALL baopen(56,'fort.56',iret)
    1486  if (iret .ne. 0) print *,' BAOPEN ERROR UNIT 56: IRET=',iret
    1487  CALL putgb(56,im*jm,kpds,kgds,lb,slm,iret)
    1488  print *,' SLM: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1489  if (iret .ne. 0) print *,' SLM PUTGB ERROR: UNIT 56: IRET=',iret
    1490  print *,' SLM: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1491 ! --- OCLSM if present
    1492 ! if ( mskocn .eq. 1 ) then
    1493 ! CALL BAOPEN(27,'fort.27',IRET)
    1494 ! if (iret .ne. 0) print *,' OCLSM BAOPEN ERROR UNIT 27:IRET=',IRET
    1495 ! CALL PUTGB(27,IM*JM,KPDS,KGDS,LB,OCLSM,IRET)
    1496 ! if (iret .ne. 0) print *,' OCLSM PUTGB ERROR: UNIT 27:IRET=',IRET
    1497 ! print *,' OCLSM: putgb-KPDS(22,5),iret:',KPDS(22),KPDS(5),IRET
    1498 ! endif
    1499 
    1500  kpds(5)=8
    1501  IF (spectr) THEN
    1502  CALL baopen(57,'fort.57',iret)
    1503  CALL putgb(57,im*jm,kpds,kgds,lb,orf,iret)
    1504  print *,' ORF (ORO): putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1505  ENDIF
    1506 C
    1507 C === write out theta (angle of land to East) using #101 (wave dir)
    1508 C === [radians] and since < 1 scale adjust kpds(22)
    1509 C
    1510  kpds(5)=101
    1511  CALL baopen(58,'fort.58',iret)
    1512  CALL putgb(58,im*jm,kpds,kgds,lb,theta,iret)
    1513  print *,' THETA: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1514 C
    1515 C === write out (land aspect ratio or anisotropy) using #102
    1516 C === (as in wind wave hgt)
    1517 C
    1518  kpds(22)=2
    1519  kpds(5)=102
    1520  CALL baopen(60,'fort.60',iret)
    1521  CALL putgb(60,im*jm,kpds,kgds,lb,sigma,iret)
    1522  print *,' SIGMA: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1523 C
    1524 C === write out (slope parameter sigma) using #9
    1525 C === (as in std hgt)
    1526 C
    1527  kpds(22)=1
    1528  kpds(5)=103
    1529  CALL baopen(59,'fort.59',iret)
    1530  CALL putgb(59,im*jm,kpds,kgds,lb,gamma,iret)
    1531  print *,' GAMMA: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1532 C
    1533  kpds(22)=1
    1534  kpds(5)=9
    1535  CALL baopen(61,'fort.61',iret)
    1536  CALL putgb(61,im*jm,kpds,kgds,lb,hprime,iret)
    1537  print *,' HPRIME: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1538 C
    1539 C
    1540  kpds(22)=0
    1541  kpds(5)=8
    1542  CALL baopen(62,'fort.62',iret)
    1543  CALL putgb(62,im*jm,kpds,kgds,lb,elvmax,iret)
    1544  print *,' ELVMAX: putgb-KPDS(22,5),iret:',kpds(22),kpds(5),iret
    1545  endif ! output_binary
    1546 C
    1547  delxn = 360./im
    1548  do i=1,im
    1549  xlon(i) = delxn*(i-1)
    1550  enddo
    1551  IF(trim(outgrid) == "none") THEN
    1552  do j=1,jm
    1553  do i=1,im
    1554  geolon(i,j) = xlon(i)
    1555  geolat(i,j) = xlat(j)
    1556  enddo
    1557  enddo
    1558  else
    1559  do j = 1, jm
    1560  xlat(j) = geolat(1,j)
    1561  enddo
    1562  do i = 1, im
    1563  xlon(i) = geolon(i,1)
    1564  enddo
    1565  endif
    1566  tend=timef()
    1567  write(6,*)' Binary output time= ',tend-tbeg
    1568  tbeg=timef()
    1569  CALL write_netcdf(im,jm,slm,land_frac,oro,orf,hprime,1,1,
    1570  1 geolon(1:im,1:jm),geolat(1:im,1:jm), xlon,xlat)
    1571  tend=timef()
    1572  write(6,*)' WRITE_NETCDF time= ',tend-tbeg
    1573  print *,' wrote netcdf file out.oro.tile?.nc'
    1574 
    1575  print *,' ===== Deallocate Arrays and ENDING MTN VAR OROG program'
    1576 
    1577 ! Deallocate 1d vars
    1578  deallocate(jst,jen,kpds,kgds,numi,lonsperlat)
    1579  deallocate(cosclt,wgtclt,rclt,xlat,diffx,xlon,ors,oaa,ola,glat)
    1580 
    1581 ! Deallocate 2d vars
    1582  deallocate (oclsm)
    1583  deallocate (geolon,geolon_c,geolat,geolat_c)
    1584  deallocate (slm,oro,var,orf,land_frac)
    1585  deallocate (theta,gamma,sigma,elvmax)
    1586 
    1587 
    1588  tend=timef()
    1589  write(6,*)' Total runtime time= ',tend-tbeg1
    1590  RETURN
    1591  END
    1592 
    1622  SUBROUTINE makemt(ZAVG,ZSLM,ORO,SLM,VAR,VAR4,
    1623  1 GLAT,IST,IEN,JST,JEN,IM,JM,IMN,JMN,XLAT,numi)
    1624  dimension glat(jmn),xlat(jm)
    1625 ! REAL*4 OCLSM
    1626  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    1627  DIMENSION ORO(IM,JM),SLM(IM,JM),VAR(IM,JM),VAR4(IM,JM)
    1628  dimension ist(im,jm),ien(im,jm),jst(jm),jen(jm),numi(jm)
    1629  INTEGER mskocn,isave
    1630  LOGICAL FLAG, DEBUG
    1631 C==== DATA DEBUG/.TRUE./
    1632  DATA debug/.false./
    1633 C
    1634 ! ---- OCLSM holds the ocean (im,jm) grid
    1635 ! --- mskocn=1 Use ocean model sea land mask, OK and present,
    1636 ! --- mskocn=0 dont use Ocean model sea land mask, not OK, not present
    1637  print *,' _____ SUBROUTINE MAKEMT '
    1638 C---- GLOBAL XLAT AND XLON ( DEGREE )
    1639 C
    1640  jm1 = jm - 1
    1641  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    1642 C
    1643  DO j=1,jmn
    1644  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    1645  ENDDO
    1646 C
    1647 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    1648 C
    1649 C (*j*) for hard wired zero offset (lambda s =0) for terr05
    1650  DO j=1,jm
    1651  DO i=1,numi(j)
    1652  im1 = numi(j) - 1
    1653  delx = 360./numi(j) ! GAUSSIAN GRID RESOLUTION
    1654  faclon = delx / delxn
    1655  ist(i,j) = faclon * float(i-1) - faclon * 0.5 + 1
    1656  ien(i,j) = faclon * float(i) - faclon * 0.5 + 1
    1657 ! IST(I,j) = FACLON * FLOAT(I-1) + 1.0001
    1658 ! IEN(I,j) = FACLON * FLOAT(I) + 0.0001
    1659 C
    1660  IF (ist(i,j) .LE. 0) ist(i,j) = ist(i,j) + imn
    1661  IF (ien(i,j) .LT. ist(i,j)) ien(i,j) = ien(i,j) + imn
    1662 !
    1663 ! if ( I .lt. 10 .and. J .ge. JM-1 )
    1664 ! 1 PRINT*,' MAKEMT: I j IST IEN ',I,j,IST(I,j),IEN(I,j)
    1665  ENDDO
    1666 ! if ( J .ge. JM-1 ) then
    1667 ! print *,' *** FACLON=',FACLON, 'numi(j=',j,')=',numi(j)
    1668 ! endif
    1669  ENDDO
    1670  print *,' DELX=',delx,' DELXN=',delxn
    1671  DO j=1,jm-1
    1672  flag=.true.
    1673  DO j1=1,jmn
    1674  xxlat = (xlat(j)+xlat(j+1))/2.
    1675  IF(flag.AND.glat(j1).GT.xxlat) THEN
    1676  jst(j) = j1
    1677  jen(j+1) = j1 - 1
    1678  flag = .false.
    1679  ENDIF
    1680  ENDDO
    1681 CX PRINT*, ' J JST JEN ',J,JST(J),JEN(J),XLAT(J),GLAT(J1)
    1682  ENDDO
    1683  jst(jm) = max(jst(jm-1) - (jen(jm-1)-jst(jm-1)),1)
    1684  jen(1) = min(jen(2) + (jen(2)-jst(2)),jmn)
    1685 ! PRINT*, ' JM JST JEN=',JST(JM),JEN(JM),XLAT(JM),GLAT(JMN)
    1686 C
    1687 C...FIRST, AVERAGED HEIGHT
    1688 C
    1689  DO j=1,jm
    1690  DO i=1,numi(j)
    1691  oro(i,j) = 0.0
    1692  var(i,j) = 0.0
    1693  var4(i,j) = 0.0
    1694  xnsum = 0.0
    1695  xland = 0.0
    1696  xwatr = 0.0
    1697  xl1 = 0.0
    1698  xs1 = 0.0
    1699  xw1 = 0.0
    1700  xw2 = 0.0
    1701  xw4 = 0.0
    1702  DO ii1 = 1, ien(i,j) - ist(i,j) + 1
    1703  i1 = ist(i,j) + ii1 - 1
    1704  IF(i1.LE.0.) i1 = i1 + imn
    1705  IF(i1.GT.imn) i1 = i1 - imn
    1706 ! if ( i .le. 10 .and. i .ge. 1 ) then
    1707 ! if (j .eq. JM )
    1708 ! &print *,' J,JST,JEN,IST,IEN,I1=',
    1709 ! &J,JST(j),JEN(J),IST(I,j),IEN(I,j),I1
    1710 ! endif
    1711  DO j1=jst(j),jen(j)
    1712  xland = xland + float(zslm(i1,j1))
    1713  xwatr = xwatr + float(1-zslm(i1,j1))
    1714  xnsum = xnsum + 1.
    1715  height = float(zavg(i1,j1))
    1716 C.........
    1717  IF(height.LT.-990.) height = 0.0
    1718  xl1 = xl1 + height * float(zslm(i1,j1))
    1719  xs1 = xs1 + height * float(1-zslm(i1,j1))
    1720  xw1 = xw1 + height
    1721  xw2 = xw2 + height ** 2
    1722 C check antarctic pole
    1723 ! if ( i .le. 10 .and. i .ge. 1 )then
    1724 ! if (j .ge. JM-1 )then
    1725 C=== degub testing
    1726 ! print *," I,J,I1,J1,XL1,XS1,XW1,XW2:",I,J,I1,J1,XL1,XS1,XW1,XW2
    1727 ! 153 format(1x,' ORO,ELVMAX(i=',i4,' j=',i4,')=',2E14.5,3f5.1)
    1728 ! endif
    1729 ! endif
    1730  ENDDO
    1731  ENDDO
    1732  IF(xnsum.GT.1.) THEN
    1733 ! --- SLM initialized with OCLSM calc from all land points except ....
    1734 ! --- 0 is ocean and 1 is land for slm
    1735 ! --- Step 1 is to only change SLM after GFS SLM is applied
    1736 
    1737  slm(i,j) = float(nint(xland/xnsum))
    1738  IF(slm(i,j).NE.0.) THEN
    1739  oro(i,j)= xl1 / xland
    1740  ELSE
    1741  oro(i,j)= xs1 / xwatr
    1742  ENDIF
    1743  var(i,j)=sqrt(max(xw2/xnsum-(xw1/xnsum)**2,0.))
    1744  DO ii1 = 1, ien(i,j) - ist(i,j) + 1
    1745  i1 = ist(i,j) + ii1 - 1
    1746  IF(i1.LE.0.) i1 = i1 + imn
    1747  IF(i1.GT.imn) i1 = i1 - imn
    1748  DO j1=jst(j),jen(j)
    1749  height = float(zavg(i1,j1))
    1750  IF(height.LT.-990.) height = 0.0
    1751  xw4 = xw4 + (height-oro(i,j)) ** 4
    1752  ENDDO
    1753  ENDDO
    1754  IF(var(i,j).GT.1.) THEN
    1755 ! if ( I .lt. 20 .and. J .ge. JM-19 ) then
    1756 ! print *,'I,J,XW4,XNSUM,VAR(I,J)',I,J,XW4,XNSUM,VAR(I,J)
    1757 ! endif
    1758  var4(i,j) = min(xw4/xnsum/var(i,j) **4,10.)
    1759  ENDIF
    1760  ENDIF
    1761  ENDDO
    1762  ENDDO
    1763  WRITE(6,*) "! MAKEMT ORO SLM VAR VAR4 DONE"
    1764 C
    1765 
    1766  RETURN
    1767  END
    1768 
    1788  SUBROUTINE get_index(IMN,JMN,npts,lonO,latO,DELXN,
    1789  & jst,jen,ilist,numx)
    1790  implicit none
    1791  integer, intent(in) :: IMN,JMN
    1792  integer :: npts
    1793  real, intent(in) :: LONO(npts), LATO(npts)
    1794  real, intent(in) :: DELXN
    1795  integer, intent(out) :: jst,jen
    1796  integer, intent(out) :: ilist(IMN)
    1797  integer, intent(out) :: numx
    1798  real minlat,maxlat,minlon,maxlon
    1799  integer i2, ii, ist, ien
    1800 
    1801  minlat = minval(lato)
    1802  maxlat = maxval(lato)
    1803  minlon = minval(lono)
    1804  maxlon = maxval(lono)
    1805  ist = minlon/delxn+1
    1806  ien = maxlon/delxn+1
    1807  jst = (minlat+90)/delxn+1
    1808  jen = (maxlat+90)/delxn
    1809  !--- add a few points to both ends of j-direction
    1810  jst = jst - 5
    1811  if(jst<1) jst = 1
    1812  jen = jen + 5
    1813  if(jen>jmn) jen = jmn
    1814 
    1815  !--- when around the pole, just search through all the points.
    1816  if((jst == 1 .OR. jen == jmn) .and.
    1817  & (ien-ist+1 > imn/2) )then
    1818  numx = imn
    1819  do i2 = 1, imn
    1820  ilist(i2) = i2
    1821  enddo
    1822  else if( ien-ist+1 > imn/2 ) then ! cross longitude = 0
    1823  !--- find the minimum that greater than IMN/2
    1824  !--- and maximum that less than IMN/2
    1825  ist = 0
    1826  ien = imn+1
    1827  do i2 = 1, npts
    1828  ii = lono(i2)/delxn+1
    1829  if(ii <0 .or. ii>imn) print*,"ii=",ii,imn,lono(i2),delxn
    1830  if( ii < imn/2 ) then
    1831  ist = max(ist,ii)
    1832  else if( ii > imn/2 ) then
    1833  ien = min(ien,ii)
    1834  endif
    1835  enddo
    1836  if(ist<1 .OR. ist>imn) then
    1837  print*, .or."ist<1 ist>IMN"
    1838  call abort()
    1839  endif
    1840  if(ien<1 .OR. ien>imn) then
    1841  print*, .or."iend<1 iend>IMN"
    1842  call abort()
    1843  endif
    1844 
    1845  numx = imn - ien + 1
    1846  do i2 = 1, numx
    1847  ilist(i2) = ien + (i2-1)
    1848  enddo
    1849  do i2 = 1, ist
    1850  ilist(numx+i2) = i2
    1851  enddo
    1852  numx = numx+ist
    1853  else
    1854  numx = ien-ist+1
    1855  do i2 = 1, numx
    1856  ilist(i2) = ist + (i2-1)
    1857  enddo
    1858  endif
    1859 
    1860  END
    1861 
    1882  SUBROUTINE makemt2(ZAVG,ZSLM,ORO,SLM,land_frac,VAR,VAR4,
    1883  1 GLAT,IM,JM,IMN,JMN,lon_c,lat_c)
    1884  implicit none
    1885  real, parameter :: D2R = 3.14159265358979/180.
    1886  integer, parameter :: MAXSUM=20000000
    1887  real, dimension(:), allocatable :: hgt_1d, hgt_1d_all
    1888  integer IM, JM, IMN, JMN
    1889  real GLAT(JMN), GLON(IMN)
    1890  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    1891  real land_frac(IM,JM)
    1892  real ORO(IM,JM),SLM(IM,JM),VAR(IM,JM),VAR4(IM,JM)
    1893  integer IST,IEN,JST, JEN
    1894  real lon_c(IM+1,JM+1), lat_c(IM+1,JM+1)
    1895  INTEGER mskocn,isave
    1896  LOGICAL FLAG, DEBUG
    1897  real LONO(4),LATO(4),LONI,LATI
    1898  real HEIGHT
    1899  integer JM1,i,j,nsum,nsum_all,ii,jj,i1,numx,i2
    1900  integer ilist(IMN)
    1901  real DELXN,XNSUM,XLAND,XWATR,XL1,XS1,XW1,XW2,XW4
    1902  real XNSUM_ALL,XLAND_ALL,XWATR_ALL,HEIGHT_ALL
    1903  real XL1_ALL,XS1_ALL,XW1_ALL,XW2_ALL,XW4_ALL
    1904 !jaa
    1905  real :: xnsum_j,xland_j,xwatr_j
    1906  logical inside_a_polygon
    1907 C==== DATA DEBUG/.TRUE./
    1908  DATA debug/.false./
    1909 C
    1910 ! ---- OCLSM holds the ocean (im,jm) grid
    1911 ! --- mskocn=1 Use ocean model sea land mask, OK and present,
    1912 ! --- mskocn=0 dont use Ocean model sea land mask, not OK, not present
    1913  print *,' _____ SUBROUTINE MAKEMT2 '
    1914  allocate(hgt_1d(maxsum))
    1915  allocate(hgt_1d_all(maxsum))
    1916 C---- GLOBAL XLAT AND XLON ( DEGREE )
    1917 C
    1918  jm1 = jm - 1
    1919  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    1920 C
    1921  DO j=1,jmn
    1922  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    1923  ENDDO
    1924  DO i=1,imn
    1925  glon(i) = 0. + (i-1) * delxn + delxn * 0.5
    1926  ENDDO
    1927 
    1928  land_frac(:,:) = 0.0
    1929 C
    1930 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    1931 C
    1932 C (*j*) for hard wired zero offset (lambda s =0) for terr05
    1933 !$omp parallel do
    1934 !$omp* private (j,i,xnsum,xland,xwatr,nsum,xl1,xs1,xw1,xw2,xw4,lono,
    1935 !$omp* lato,jst,jen,ilist,numx,jj,i2,ii,loni,lati,height,
    1936 !$omp* hgt_1d,
    1937 !$omp* xnsum_all,xland_all,xwatr_all,nsum_all,
    1938 !$omp* xl1_all,xs1_all,xw1_all,xw2_all,xw4_all,
    1939 !$omp* height_all,hgt_1d_all)
    1940  DO j=1,jm
    1941 ! print*, "J=", J
    1942  DO i=1,im
    1943  oro(i,j) = 0.0
    1944  var(i,j) = 0.0
    1945  var4(i,j) = 0.0
    1946  xnsum = 0.0
    1947  xland = 0.0
    1948  xwatr = 0.0
    1949  nsum = 0
    1950  xl1 = 0.0
    1951  xs1 = 0.0
    1952  xw1 = 0.0
    1953  xw2 = 0.0
    1954  xw4 = 0.0
    1955  xnsum_all = 0.0
    1956  xland_all = 0.0
    1957  xwatr_all = 0.0
    1958  nsum_all = 0
    1959  xl1_all = 0.0
    1960  xs1_all = 0.0
    1961  xw1_all = 0.0
    1962  xw2_all = 0.0
    1963  xw4_all = 0.0
    1964 
    1965  lono(1) = lon_c(i,j)
    1966  lono(2) = lon_c(i+1,j)
    1967  lono(3) = lon_c(i+1,j+1)
    1968  lono(4) = lon_c(i,j+1)
    1969  lato(1) = lat_c(i,j)
    1970  lato(2) = lat_c(i+1,j)
    1971  lato(3) = lat_c(i+1,j+1)
    1972  lato(4) = lat_c(i,j+1)
    1973  call get_index(imn,jmn,4,lono,lato,delxn,jst,jen,ilist,numx)
    1974  do jj = jst, jen; do i2 = 1, numx
    1975  ii = ilist(i2)
    1976  loni = ii*delxn
    1977  lati = -90 + jj*delxn
    1978 
    1979  xland_all = xland_all + float(zslm(ii,jj))
    1980  xwatr_all = xwatr_all + float(1-zslm(ii,jj))
    1981  xnsum_all = xnsum_all + 1.
    1982  height_all = float(zavg(ii,jj))
    1983  nsum_all = nsum_all+1
    1984  if(nsum_all > maxsum) then
    1985  print*, "nsum_all is greater than MAXSUM, increase MAXSUM"
    1986  call abort()
    1987  endif
    1988  hgt_1d_all(nsum_all) = height_all
    1989  IF(height_all.LT.-990.) height_all = 0.0
    1990  xl1_all = xl1_all + height_all * float(zslm(ii,jj))
    1991  xs1_all = xs1_all + height_all * float(1-zslm(ii,jj))
    1992  xw1_all = xw1_all + height_all
    1993  xw2_all = xw2_all + height_all ** 2
    1994 
    1995  if(inside_a_polygon(loni*d2r,lati*d2r,4,
    1996  & lono*d2r,lato*d2r))then
    1997 
    1998  xland = xland + float(zslm(ii,jj))
    1999  xwatr = xwatr + float(1-zslm(ii,jj))
    2000  xnsum = xnsum + 1.
    2001  height = float(zavg(ii,jj))
    2002  nsum = nsum+1
    2003  if(nsum > maxsum) then
    2004  print*, "nsum is greater than MAXSUM, increase MAXSUM"
    2005  call abort()
    2006  endif
    2007  hgt_1d(nsum) = height
    2008  IF(height.LT.-990.) height = 0.0
    2009  xl1 = xl1 + height * float(zslm(ii,jj))
    2010  xs1 = xs1 + height * float(1-zslm(ii,jj))
    2011  xw1 = xw1 + height
    2012  xw2 = xw2 + height ** 2
    2013  endif
    2014  enddo ; enddo
    2015 
    2016 
    2017  IF(xnsum.GT.1.) THEN
    2018 ! --- SLM initialized with OCLSM calc from all land points except ....
    2019 ! --- 0 is ocean and 1 is land for slm
    2020 ! --- Step 1 is to only change SLM after GFS SLM is applied
    2021  land_frac(i,j) = xland/xnsum
    2022  slm(i,j) = float(nint(xland/xnsum))
    2023  IF(slm(i,j).NE.0.) THEN
    2024  oro(i,j)= xl1 / xland
    2025  ELSE
    2026  oro(i,j)= xs1 / xwatr
    2027  ENDIF
    2028  var(i,j)=sqrt(max(xw2/xnsum-(xw1/xnsum)**2,0.))
    2029  do i1 = 1, nsum
    2030  xw4 = xw4 + (hgt_1d(i1) - oro(i,j)) ** 4
    2031  enddo
    2032 
    2033  IF(var(i,j).GT.1.) THEN
    2034  var4(i,j) = min(xw4/xnsum/var(i,j) **4,10.)
    2035  ENDIF
    2036  ELSEIF(xnsum_all.GT.1.) THEN
    2037  land_frac(i,j) = xland_all/xnsum _all
    2038  slm(i,j) = float(nint(xland_all/xnsum_all))
    2039  IF(slm(i,j).NE.0.) THEN
    2040  oro(i,j)= xl1_all / xland_all
    2041  ELSE
    2042  oro(i,j)= xs1_all / xwatr_all
    2043  ENDIF
    2044  var(i,j)=sqrt(max(xw2_all/xnsum_all-
    2045  & (xw1_all/xnsum_all)**2,0.))
    2046  do i1 = 1, nsum_all
    2047  xw4_all = xw4_all +
    2048  & (hgt_1d_all(i1) - oro(i,j)) ** 4
    2049  enddo
    2050 
    2051  IF(var(i,j).GT.1.) THEN
    2052  var4(i,j) = min(xw4_all/xnsum_all/var(i,j) **4,10.)
    2053  ENDIF
    2054  ELSE
    2055  print*, "no source points in MAKEMT2"
    2056  call abort()
    2057  ENDIF
    2058  ENDDO
    2059  ENDDO
    2060 !$omp end parallel do
    2061  WRITE(6,*) "! MAKEMT2 ORO SLM VAR VAR4 DONE"
    2062 C
    2063  deallocate(hgt_1d)
    2064  deallocate(hgt_1d_all)
    2065  RETURN
    2066  END
    2067 
    2096  SUBROUTINE makepc(ZAVG,ZSLM,THETA,GAMMA,SIGMA,
    2097  1 GLAT,IST,IEN,JST,JEN,IM,JM,IMN,JMN,XLAT,numi)
    2099 C=== PC: principal coordinates of each Z avg orog box for L&M
    2100 C
    2101  parameter(rearth=6.3712e+6)
    2102  dimension glat(jmn),xlat(jm),deltax(jmn)
    2103  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    2104  DIMENSION ORO(IM,JM),SLM(IM,JM),HL(IM,JM),HK(IM,JM)
    2105  DIMENSION HX2(IM,JM),HY2(IM,JM),HXY(IM,JM),HLPRIM(IM,JM)
    2106  dimension theta(im,jm),gamma(im,jm),sigma2(im,jm),sigma(im,jm)
    2107  dimension ist(im,jm),ien(im,jm),jst(jm),jen(jm),numi(jm)
    2108  LOGICAL FLAG, DEBUG
    2109 C=== DATA DEBUG/.TRUE./
    2110  DATA debug/.false./
    2111 C
    2112  pi = 4.0 * atan(1.0)
    2113  certh = pi * rearth
    2114 C---- GLOBAL XLAT AND XLON ( DEGREE )
    2115 C
    2116  jm1 = jm - 1
    2117  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    2118  deltay = certh / float(jmn)
    2119  print *, 'MAKEPC: DELTAY=',deltay
    2120 C
    2121  DO j=1,jmn
    2122  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    2123  deltax(j) = deltay * cos(glat(j)*pi/180.0)
    2124  ENDDO
    2125 C
    2126 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    2127 C
    2128  DO j=1,jm
    2129  DO i=1,numi(j)
    2130 C IM1 = numi(j) - 1
    2131  delx = 360./numi(j) ! GAUSSIAN GRID RESOLUTION
    2132  faclon = delx / delxn
    2133  ist(i,j) = faclon * float(i-1) - faclon * 0.5
    2134  ist(i,j) = ist(i,j) + 1
    2135  ien(i,j) = faclon * float(i) - faclon * 0.5
    2136 C if (debug) then
    2137 C if ( I .lt. 10 .and. J .lt. 10 )
    2138 C 1 PRINT*, ' I j IST IEN ',I,j,IST(I,j),IEN(I,j)
    2139 C endif
    2140 ! IST(I,j) = FACLON * FLOAT(I-1) + 1.0001
    2141 ! IEN(I,j) = FACLON * FLOAT(I) + 0.0001
    2142  IF (ist(i,j) .LE. 0) ist(i,j) = ist(i,j) + imn
    2143  IF (ien(i,j) .LT. ist(i,j)) ien(i,j) = ien(i,j) + imn
    2144  if (debug) then
    2145  if ( i .lt. 10 .and. j .lt. 10 )
    2146  1 print*, ' I j IST IEN ',i,j,ist(i,j),ien(i,j)
    2147  endif
    2148  IF (ien(i,j) .LT. ist(i,j))
    2149  1 print *,' MAKEPC: IEN < IST: I,J,IST(I,J),IEN(I,J)',
    2150  2 i,j,ist(i,j),ien(i,j)
    2151  ENDDO
    2152  ENDDO
    2153  DO j=1,jm-1
    2154  flag=.true.
    2155  DO j1=1,jmn
    2156  xxlat = (xlat(j)+xlat(j+1))/2.
    2157  IF(flag.AND.glat(j1).GT.xxlat) THEN
    2158  jst(j) = j1
    2159  jen(j+1) = j1 - 1
    2160  flag = .false.
    2161  ENDIF
    2162  ENDDO
    2163  ENDDO
    2164  jst(jm) = max(jst(jm-1) - (jen(jm-1)-jst(jm-1)),1)
    2165  jen(1) = min(jen(2) + (jen(2)-jst(2)),jmn)
    2166  if (debug) then
    2167  print*, ' IST,IEN(1,1-numi(1,JM))',ist(1,1),ien(1,1),
    2168  1 ist(numi(jm),jm),ien(numi(jm),jm), numi(jm)
    2169  print*, ' JST,JEN(1,JM) ',jst(1),jen(1),jst(jm),jen(jm)
    2170  endif
    2171 C
    2172 C... DERIVITIVE TENSOR OF HEIGHT
    2173 C
    2174  DO j=1,jm
    2175  DO i=1,numi(j)
    2176  oro(i,j) = 0.0
    2177  hx2(i,j) = 0.0
    2178  hy2(i,j) = 0.0
    2179  hxy(i,j) = 0.0
    2180  xnsum = 0.0
    2181  xland = 0.0
    2182  xwatr = 0.0
    2183  xl1 = 0.0
    2184  xs1 = 0.0
    2185  xfp = 0.0
    2186  yfp = 0.0
    2187  xfpyfp = 0.0
    2188  xfp2 = 0.0
    2189  yfp2 = 0.0
    2190  hl(i,j) = 0.0
    2191  hk(i,j) = 0.0
    2192  hlprim(i,j) = 0.0
    2193  theta(i,j) = 0.0
    2194  gamma(i,j) = 0.
    2195  sigma2(i,j) = 0.
    2196  sigma(i,j) = 0.
    2197 C
    2198  DO ii1 = 1, ien(i,j) - ist(i,j) + 1
    2199  i1 = ist(i,j) + ii1 - 1
    2200  IF(i1.LE.0.) i1 = i1 + imn
    2201  IF(i1.GT.imn) i1 = i1 - imn
    2202 C
    2203 C=== set the rest of the indexs for ave: 2pt staggered derivitive
    2204 C
    2205  i0 = i1 - 1
    2206  if (i1 - 1 .le. 0 ) i0 = i0 + imn
    2207  if (i1 - 1 .gt. imn) i0 = i0 - imn
    2208 C
    2209  ip1 = i1 + 1
    2210  if (i1 + 1 .le. 0 ) ip1 = ip1 + imn
    2211  if (i1 + 1 .gt. imn) ip1 = ip1 - imn
    2212 C
    2213  DO j1=jst(j),jen(j)
    2214  if (debug) then
    2215  if ( i1 .eq. ist(i,j) .and. j1 .eq. jst(j) )
    2216  1 print*, ' J, J1,IST,JST,DELTAX,GLAT ',
    2217  2 j,j1,ist(i,j),jst(j),deltax(j1),glat(j1)
    2218  if ( i1 .eq. ien(i,j) .and. j1 .eq. jen(j) )
    2219  1 print*, ' J, J1,IEN,JEN,DELTAX,GLAT ',
    2220  2 j,j1,ien(i,j),jen(j),deltax(j1),glat(j1)
    2221  endif
    2222  xland = xland + float(zslm(i1,j1))
    2223  xwatr = xwatr + float(1-zslm(i1,j1))
    2224  xnsum = xnsum + 1.
    2225 C
    2226  height = float(zavg(i1,j1))
    2227  hi0 = float(zavg(i0,j1))
    2228  hip1 = float(zavg(ip1,j1))
    2229 C
    2230  IF(height.LT.-990.) height = 0.0
    2231  if(hi0 .lt. -990.) hi0 = 0.0
    2232  if(hip1 .lt. -990.) hip1 = 0.0
    2233 C........ xfp = xfp + 0.5 * ( hip1 - hi0 ) / DELTAX(J1)
    2234  xfp = 0.5 * ( hip1 - hi0 ) / deltax(j1)
    2235  xfp2 = xfp2 + 0.25 * ( ( hip1 - hi0 )/deltax(j1) )** 2
    2236 C
    2237 ! --- not at boundaries
    2238 !RAB if ( J1 .ne. JST(1) .and. J1 .ne. JEN(JM) ) then
    2239  if ( j1 .ne. jst(jm) .and. j1 .ne. jen(1) ) then
    2240  hj0 = float(zavg(i1,j1-1))
    2241  hjp1 = float(zavg(i1,j1+1))
    2242  if(hj0 .lt. -990.) hj0 = 0.0
    2243  if(hjp1 .lt. -990.) hjp1 = 0.0
    2244 C....... yfp = yfp + 0.5 * ( hjp1 - hj0 ) / DELTAY
    2245  yfp = 0.5 * ( hjp1 - hj0 ) / deltay
    2246  yfp2 = yfp2 + 0.25 * ( ( hjp1 - hj0 )/deltay )**2
    2247 C
    2248 C..............elseif ( J1 .eq. JST(J) .or. J1 .eq. JEN(JM) ) then
    2249 C === the NH pole: NB J1 goes from High at NP to Low toward SP
    2250 C
    2251 !RAB elseif ( J1 .eq. JST(1) ) then
    2252  elseif ( j1 .eq. jst(jm) ) then
    2253  ijax = i1 + imn/2
    2254  if (ijax .le. 0 ) ijax = ijax + imn
    2255  if (ijax .gt. imn) ijax = ijax - imn
    2256 C..... at N pole we stay at the same latitude j1 but cross to opp side
    2257  hijax = float(zavg(ijax,j1))
    2258  hi1j1 = float(zavg(i1,j1))
    2259  if(hijax .lt. -990.) hijax = 0.0
    2260  if(hi1j1 .lt. -990.) hi1j1 = 0.0
    2261 C....... yfp = yfp + 0.5 * ( ( 0.5 * ( hijax + hi1j1) ) - hi1j1 )/DELTAY
    2262  yfp = 0.5 * ( ( 0.5 * ( hijax - hi1j1 ) ) )/deltay
    2263  yfp2 = yfp2 + 0.25 * ( ( 0.5 * ( hijax - hi1j1) )
    2264  1 / deltay )**2
    2265 C
    2266 C === the SH pole: NB J1 goes from High at NP to Low toward SP
    2267 C
    2268 !RAB elseif ( J1 .eq. JEN(JM) ) then
    2269  elseif ( j1 .eq. jen(1) ) then
    2270  ijax = i1 + imn/2
    2271  if (ijax .le. 0 ) ijax = ijax + imn
    2272  if (ijax .gt. imn) ijax = ijax - imn
    2273  hijax = float(zavg(ijax,j1))
    2274  hi1j1 = float(zavg(i1,j1))
    2275  if(hijax .lt. -990.) hijax = 0.0
    2276  if(hi1j1 .lt. -990.) hi1j1 = 0.0
    2277  if ( i1 .lt. 5 )print *,' S.Pole i1,j1 :',i1,j1,hijax,hi1j1
    2278 C..... yfp = yfp + 0.5 * (0.5 * ( hijax - hi1j1) )/DELTAY
    2279  yfp = 0.5 * (0.5 * ( hijax - hi1j1) )/deltay
    2280  yfp2 = yfp2 + 0.25 * ( (0.5 * (hijax - hi1j1) )
    2281  1 / deltay )**2
    2282  endif
    2283 C
    2284 C === The above does an average across the pole for the bndry in j.
    2285 C23456789012345678901234567890123456789012345678901234567890123456789012......
    2286 C
    2287  xfpyfp = xfpyfp + xfp * yfp
    2288  xl1 = xl1 + height * float(zslm(i1,j1))
    2289  xs1 = xs1 + height * float(1-zslm(i1,j1))
    2290 C
    2291 C === average the HX2, HY2 and HXY
    2292 C === This will be done over all land
    2293 C
    2294  ENDDO
    2295  ENDDO
    2296 C
    2297 C === HTENSR
    2298 C
    2299  IF(xnsum.GT.1.) THEN
    2300  slm(i,j) = float(nint(xland/xnsum))
    2301  IF(slm(i,j).NE.0.) THEN
    2302  oro(i,j)= xl1 / xland
    2303  hx2(i,j) = xfp2 / xland
    2304  hy2(i,j) = yfp2 / xland
    2305  hxy(i,j) = xfpyfp / xland
    2306  ELSE
    2307  oro(i,j)= xs1 / xwatr
    2308  ENDIF
    2309 C=== degub testing
    2310  if (debug) then
    2311  print *," I,J,i1,j1,HEIGHT:", i,j,i1,j1,height,
    2312  1 xland,slm(i,j)
    2313  print *," xfpyfp,xfp2,yfp2:",xfpyfp,xfp2,yfp2
    2314  print *," HX2,HY2,HXY:",hx2(i,j),hy2(i,j),hxy(i,j)
    2315  ENDIF
    2316 C
    2317 C === make the principal axes, theta, and the degree of anisotropy,
    2318 C === and sigma2, the slope parameter
    2319 C
    2320  hk(i,j) = 0.5 * ( hx2(i,j) + hy2(i,j) )
    2321  hl(i,j) = 0.5 * ( hx2(i,j) - hy2(i,j) )
    2322  hlprim(i,j) = sqrt(hl(i,j)*hl(i,j) + hxy(i,j)*hxy(i,j))
    2323  IF( hl(i,j).NE. 0. .AND. slm(i,j) .NE. 0. ) THEN
    2324 C
    2325  theta(i,j) = 0.5 * atan2(hxy(i,j),hl(i,j)) * 180.0 / pi
    2326 C === for testing print out in degrees
    2327 C THETA(I,J) = 0.5 * ATAN2(HXY(I,J),HL(I,J))
    2328  ENDIF
    2329  sigma2(i,j) = ( hk(i,j) + hlprim(i,j) )
    2330  if ( sigma2(i,j) .GE. 0. ) then
    2331  sigma(i,j) = sqrt(sigma2(i,j) )
    2332  if (sigma2(i,j) .ne. 0. .and.
    2333  & hk(i,j) .GE. hlprim(i,j) )
    2334  1 gamma(i,j) = sqrt( (hk(i,j) - hlprim(i,j)) / sigma2(i,j) )
    2335  else
    2336  sigma(i,j)=0.
    2337  endif
    2338  ENDIF
    2339  if (debug) then
    2340  print *," I,J,THETA,SIGMA,GAMMA,",i,j,theta(i,j),
    2341  1 sigma(i,j),gamma(i,j)
    2342  print *," HK,HL,HLPRIM:",hk(i,j),hl(i,j),hlprim(i,j)
    2343  endif
    2344  ENDDO
    2345  ENDDO
    2346  WRITE(6,*) "! MAKE Principal Coord DONE"
    2347 C
    2348  RETURN
    2349  END
    2350 
    2370  SUBROUTINE makepc2(ZAVG,ZSLM,THETA,GAMMA,SIGMA,
    2371  1 GLAT,IM,JM,IMN,JMN,lon_c,lat_c)
    2373 C=== PC: principal coordinates of each Z avg orog box for L&M
    2374 C
    2375  implicit none
    2376  real, parameter :: REARTH=6.3712e+6
    2377  real, parameter :: D2R = 3.14159265358979/180.
    2378  integer :: im,jm,imn,jmn
    2379  real :: GLAT(JMN),DELTAX(JMN)
    2380  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    2381  real lon_c(IM+1,JM+1), lat_c(IM+1,JM+1)
    2382  real ORO(IM,JM),SLM(IM,JM),HL(IM,JM),HK(IM,JM)
    2383  real HX2(IM,JM),HY2(IM,JM),HXY(IM,JM),HLPRIM(IM,JM)
    2384  real THETA(IM,JM),GAMMA(IM,JM),SIGMA2(IM,JM),SIGMA(IM,JM)
    2385  real PI,CERTH,DELXN,DELTAY,XNSUM,XLAND,XWATR,XL1,XS1
    2386  real xfp,yfp,xfpyfp,xfp2,yfp2,HEIGHT
    2387  real hi0,hip1,hj0,hjp1,hijax,hi1j1
    2388  real LONO(4),LATO(4),LONI,LATI
    2389  integer i,j,i1,j1,i2,jst,jen,numx,i0,ip1,ijax
    2390  integer ilist(IMN)
    2391  logical inside_a_polygon
    2392  LOGICAL FLAG, DEBUG
    2393 C=== DATA DEBUG/.TRUE./
    2394  DATA debug/.false./
    2395 C
    2396  pi = 4.0 * atan(1.0)
    2397  certh = pi * rearth
    2398 C---- GLOBAL XLAT AND XLON ( DEGREE )
    2399 C
    2400  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    2401  deltay = certh / float(jmn)
    2402  print *, 'MAKEPC2: DELTAY=',deltay
    2403 C
    2404  DO j=1,jmn
    2405  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    2406  deltax(j) = deltay * cos(glat(j)*d2r)
    2407  ENDDO
    2408 C
    2409 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    2410 C
    2411 
    2412 C... DERIVITIVE TENSOR OF HEIGHT
    2413 C
    2414 !$omp parallel do
    2415 !$omp* private (j,i,xnsum,xland,xwatr,xl1,xs1,xfp,yfp,xfpyfp,
    2416 !$omp* xfp2,yfp2,lono,lato,jst,jen,ilist,numx,j1,i2,i1,
    2417 !$omp* loni,lati,i0,ip1,height,hi0,hip1,hj0,hjp1,ijax,
    2418 !$omp* hijax,hi1j1)
    2419  DO j=1,jm
    2420 ! print*, "J=", J
    2421  DO i=1,im
    2422  oro(i,j) = 0.0
    2423  hx2(i,j) = 0.0
    2424  hy2(i,j) = 0.0
    2425  hxy(i,j) = 0.0
    2426  xnsum = 0.0
    2427  xland = 0.0
    2428  xwatr = 0.0
    2429  xl1 = 0.0
    2430  xs1 = 0.0
    2431  xfp = 0.0
    2432  yfp = 0.0
    2433  xfpyfp = 0.0
    2434  xfp2 = 0.0
    2435  yfp2 = 0.0
    2436  hl(i,j) = 0.0
    2437  hk(i,j) = 0.0
    2438  hlprim(i,j) = 0.0
    2439  theta(i,j) = 0.0
    2440  gamma(i,j) = 0.
    2441  sigma2(i,j) = 0.
    2442  sigma(i,j) = 0.
    2443 
    2444  lono(1) = lon_c(i,j)
    2445  lono(2) = lon_c(i+1,j)
    2446  lono(3) = lon_c(i+1,j+1)
    2447  lono(4) = lon_c(i,j+1)
    2448  lato(1) = lat_c(i,j)
    2449  lato(2) = lat_c(i+1,j)
    2450  lato(3) = lat_c(i+1,j+1)
    2451  lato(4) = lat_c(i,j+1)
    2452  call get_index(imn,jmn,4,lono,lato,delxn,jst,jen,ilist,numx)
    2453 
    2454  do j1 = jst, jen; do i2 = 1, numx
    2455  i1 = ilist(i2)
    2456  loni = i1*delxn
    2457  lati = -90 + j1*delxn
    2458  if(inside_a_polygon(loni*d2r,lati*d2r,4,
    2459  & lono*d2r,lato*d2r))then
    2460 
    2461 C=== set the rest of the indexs for ave: 2pt staggered derivitive
    2462 C
    2463  i0 = i1 - 1
    2464  if (i1 - 1 .le. 0 ) i0 = i0 + imn
    2465  if (i1 - 1 .gt. imn) i0 = i0 - imn
    2466 C
    2467  ip1 = i1 + 1
    2468  if (i1 + 1 .le. 0 ) ip1 = ip1 + imn
    2469  if (i1 + 1 .gt. imn) ip1 = ip1 - imn
    2470 
    2471  xland = xland + float(zslm(i1,j1))
    2472  xwatr = xwatr + float(1-zslm(i1,j1))
    2473  xnsum = xnsum + 1.
    2474 C
    2475  height = float(zavg(i1,j1))
    2476  hi0 = float(zavg(i0,j1))
    2477  hip1 = float(zavg(ip1,j1))
    2478 C
    2479  IF(height.LT.-990.) height = 0.0
    2480  if(hi0 .lt. -990.) hi0 = 0.0
    2481  if(hip1 .lt. -990.) hip1 = 0.0
    2482 C........ xfp = xfp + 0.5 * ( hip1 - hi0 ) / DELTAX(J1)
    2483  xfp = 0.5 * ( hip1 - hi0 ) / deltax(j1)
    2484  xfp2 = xfp2 + 0.25 * ( ( hip1 - hi0 )/deltax(j1) )** 2
    2485 C
    2486 ! --- not at boundaries
    2487 !RAB if ( J1 .ne. JST(1) .and. J1 .ne. JEN(JM) ) then
    2488  if ( j1 .ne. 1 .and. j1 .ne. jmn ) then
    2489  hj0 = float(zavg(i1,j1-1))
    2490  hjp1 = float(zavg(i1,j1+1))
    2491  if(hj0 .lt. -990.) hj0 = 0.0
    2492  if(hjp1 .lt. -990.) hjp1 = 0.0
    2493 C....... yfp = yfp + 0.5 * ( hjp1 - hj0 ) / DELTAY
    2494  yfp = 0.5 * ( hjp1 - hj0 ) / deltay
    2495  yfp2 = yfp2 + 0.25 * ( ( hjp1 - hj0 )/deltay )**2
    2496 C
    2497 C..............elseif ( J1 .eq. JST(J) .or. J1 .eq. JEN(JM) ) then
    2498 C === the NH pole: NB J1 goes from High at NP to Low toward SP
    2499 C
    2500 !RAB elseif ( J1 .eq. JST(1) ) then
    2501  elseif ( j1 .eq. 1 ) then
    2502  ijax = i1 + imn/2
    2503  if (ijax .le. 0 ) ijax = ijax + imn
    2504  if (ijax .gt. imn) ijax = ijax - imn
    2505 C..... at N pole we stay at the same latitude j1 but cross to opp side
    2506  hijax = float(zavg(ijax,j1))
    2507  hi1j1 = float(zavg(i1,j1))
    2508  if(hijax .lt. -990.) hijax = 0.0
    2509  if(hi1j1 .lt. -990.) hi1j1 = 0.0
    2510 C....... yfp = yfp + 0.5 * ( ( 0.5 * ( hijax + hi1j1) ) - hi1j1 )/DELTAY
    2511  yfp = 0.5 * ( ( 0.5 * ( hijax - hi1j1 ) ) )/deltay
    2512  yfp2 = yfp2 + 0.25 * ( ( 0.5 * ( hijax - hi1j1) )
    2513  1 / deltay )**2
    2514 C
    2515 C === the SH pole: NB J1 goes from High at NP to Low toward SP
    2516 C
    2517 !RAB elseif ( J1 .eq. JEN(JM) ) then
    2518  elseif ( j1 .eq. jmn ) then
    2519  ijax = i1 + imn/2
    2520  if (ijax .le. 0 ) ijax = ijax + imn
    2521  if (ijax .gt. imn) ijax = ijax - imn
    2522  hijax = float(zavg(ijax,j1))
    2523  hi1j1 = float(zavg(i1,j1))
    2524  if(hijax .lt. -990.) hijax = 0.0
    2525  if(hi1j1 .lt. -990.) hi1j1 = 0.0
    2526  if ( i1 .lt. 5 )print *,' S.Pole i1,j1 :',i1,j1,
    2527  & hijax,hi1j1
    2528 C..... yfp = yfp + 0.5 * (0.5 * ( hijax - hi1j1) )/DELTAY
    2529  yfp = 0.5 * (0.5 * ( hijax - hi1j1) )/deltay
    2530  yfp2 = yfp2 + 0.25 * ( (0.5 * (hijax - hi1j1) )
    2531  1 / deltay )**2
    2532  endif
    2533 C
    2534 C === The above does an average across the pole for the bndry in j.
    2535 C23456789012345678901234567890123456789012345678901234567890123456789012......
    2536 C
    2537  xfpyfp = xfpyfp + xfp * yfp
    2538  xl1 = xl1 + height * float(zslm(i1,j1))
    2539  xs1 = xs1 + height * float(1-zslm(i1,j1))
    2540  ENDIF
    2541 C
    2542 C === average the HX2, HY2 and HXY
    2543 C === This will be done over all land
    2544 C
    2545  ENDDO
    2546  ENDDO
    2547 C
    2548 C === HTENSR
    2549 C
    2550  IF(xnsum.GT.1.) THEN
    2551  slm(i,j) = float(nint(xland/xnsum))
    2552  IF(slm(i,j).NE.0.) THEN
    2553  oro(i,j)= xl1 / xland
    2554  hx2(i,j) = xfp2 / xland
    2555  hy2(i,j) = yfp2 / xland
    2556  hxy(i,j) = xfpyfp / xland
    2557  ELSE
    2558  oro(i,j)= xs1 / xwatr
    2559  ENDIF
    2560 C=== degub testing
    2561  if (debug) then
    2562  print *," I,J,i1,j1,HEIGHT:", i,j,i1,j1,height,
    2563  1 xland,slm(i,j)
    2564  print *," xfpyfp,xfp2,yfp2:",xfpyfp,xfp2,yfp2
    2565  print *," HX2,HY2,HXY:",hx2(i,j),hy2(i,j),hxy(i,j)
    2566  ENDIF
    2567 C
    2568 C === make the principal axes, theta, and the degree of anisotropy,
    2569 C === and sigma2, the slope parameter
    2570 C
    2571  hk(i,j) = 0.5 * ( hx2(i,j) + hy2(i,j) )
    2572  hl(i,j) = 0.5 * ( hx2(i,j) - hy2(i,j) )
    2573  hlprim(i,j) = sqrt(hl(i,j)*hl(i,j) + hxy(i,j)*hxy(i,j))
    2574  IF( hl(i,j).NE. 0. .AND. slm(i,j) .NE. 0. ) THEN
    2575 C
    2576  theta(i,j) = 0.5 * atan2(hxy(i,j),hl(i,j)) / d2r
    2577 C === for testing print out in degrees
    2578 C THETA(I,J) = 0.5 * ATAN2(HXY(I,J),HL(I,J))
    2579  ENDIF
    2580  sigma2(i,j) = ( hk(i,j) + hlprim(i,j) )
    2581  if ( sigma2(i,j) .GE. 0. ) then
    2582  sigma(i,j) = sqrt(sigma2(i,j) )
    2583  if (sigma2(i,j) .ne. 0. .and.
    2584  & hk(i,j) .GE. hlprim(i,j) )
    2585  1 gamma(i,j) = sqrt( (hk(i,j) - hlprim(i,j)) / sigma2(i,j) )
    2586  else
    2587  sigma(i,j)=0.
    2588  endif
    2589  ENDIF
    2590  if (debug) then
    2591  print *," I,J,THETA,SIGMA,GAMMA,",i,j,theta(i,j),
    2592  1 sigma(i,j),gamma(i,j)
    2593  print *," HK,HL,HLPRIM:",hk(i,j),hl(i,j),hlprim(i,j)
    2594  endif
    2595  ENDDO
    2596  ENDDO
    2597 !$omp end parallel do
    2598  WRITE(6,*) "! MAKE Principal Coord DONE"
    2599 C
    2600  RETURN
    2601  END SUBROUTINE makepc2
    2602 
    2644  SUBROUTINE makeoa(ZAVG,VAR,GLAT,OA4,OL,IOA4,ELVMAX,
    2645  1 ORO,oro1,XNSUM,XNSUM1,XNSUM2,XNSUM3,XNSUM4,
    2646  2 IST,IEN,JST,JEN,IM,JM,IMN,JMN,XLAT,numi)
    2647  dimension glat(jmn),xlat(jm)
    2648  INTEGER ZAVG(IMN,JMN)
    2649  DIMENSION ORO(IM,JM),ORO1(IM,JM),ELVMAX(IM,JM),ZMAX(IM,JM)
    2650  DIMENSION OA4(IM,JM,4),IOA4(IM,JM,4)
    2651  DIMENSION IST(IM,jm),IEN(IM,jm),JST(JM),JEN(JM)
    2652  dimension xnsum(im,jm),xnsum1(im,jm),xnsum2(im,jm)
    2653  dimension xnsum3(im,jm),xnsum4(im,jm)
    2654  dimension var(im,jm),ol(im,jm,4),numi(jm)
    2655  LOGICAL FLAG
    2656 C
    2657 C---- GLOBAL XLAT AND XLON ( DEGREE )
    2658 C
    2659 ! --- IM1 = IM - 1 removed (not used in this sub)
    2660  jm1 = jm - 1
    2661  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    2662 C
    2663  DO j=1,jmn
    2664  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    2665  ENDDO
    2666  print *,' IM=',im,' JM=',jm,' IMN=',imn,' JMN=',jmn
    2667 C
    2668 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    2669 C
    2670  DO j=1,jm
    2671  DO i=1,numi(j)
    2672  delx = 360./numi(j) ! GAUSSIAN GRID RESOLUTION
    2673  faclon = delx / delxn
    2674 C --- minus sign here in IST and IEN as in MAKEMT!
    2675  ist(i,j) = faclon * float(i-1) - faclon * 0.5
    2676  ist(i,j) = ist(i,j) + 1
    2677  ien(i,j) = faclon * float(i) - faclon * 0.5
    2678 ! IST(I,j) = FACLON * FLOAT(I-1) + 1.0001
    2679 ! IEN(I,j) = FACLON * FLOAT(I) + 0.0001
    2680  IF (ist(i,j) .LE. 0) ist(i,j) = ist(i,j) + imn
    2681  IF (ien(i,j) .LT. ist(i,j)) ien(i,j) = ien(i,j) + imn
    2682 cx PRINT*, ' I j IST IEN ',I,j,IST(I,j),IEN(I,j)
    2683  if ( i .lt. 3 .and. j .lt. 3 )
    2684  1print*,' MAKEOA: I j IST IEN ',i,j,ist(i,j),ien(i,j)
    2685  if ( i .lt. 3 .and. j .ge. jm-1 )
    2686  1print*,' MAKEOA: I j IST IEN ',i,j,ist(i,j),ien(i,j)
    2687  ENDDO
    2688  ENDDO
    2689  print *,'MAKEOA: DELXN,DELX,FACLON',delxn,delx,faclon
    2690  print *, ' ***** ready to start JST JEN section '
    2691  DO j=1,jm-1
    2692  flag=.true.
    2693  DO j1=1,jmn
    2694 ! --- XXLAT added as in MAKEMT and in next line as well
    2695  xxlat = (xlat(j)+xlat(j+1))/2.
    2696  IF(flag.AND.glat(j1).GT.xxlat) THEN
    2697  jst(j) = j1
    2698 ! --- JEN(J+1) = J1 - 1
    2699  flag = .false.
    2700  if ( j .eq. 1 )
    2701  1print*,' MAKEOA: XX j JST JEN ',j,jst(j),jen(j)
    2702  ENDIF
    2703  ENDDO
    2704  if ( j .lt. 3 )
    2705  1print*,' MAKEOA: j JST JEN ',j,jst(j),jen(j)
    2706  if ( j .ge. jm-2 )
    2707  1print*,' MAKEOA: j JST JEN ',j,jst(j),jen(j)
    2708 C FLAG=.TRUE.
    2709 C DO J1=JST(J),JMN
    2710 C IF(FLAG.AND.GLAT(J1).GT.XLAT(J)) THEN
    2711 C JEN(J) = J1 - 1
    2712 C FLAG = .FALSE.
    2713 C ENDIF
    2714 C ENDDO
    2715  ENDDO
    2716  jst(jm) = max(jst(jm-1) - (jen(jm-1)-jst(jm-1)),1)
    2717  jen(1) = min(jen(2) + (jen(2)-jst(2)),jmn)
    2718  print *,' ***** JST(1) JEN(1) ',jst(1),jen(1)
    2719  print *,' ***** JST(JM) JEN(JM) ',jst(jm),jen(jm)
    2720 C
    2721  DO j=1,jm
    2722  DO i=1,numi(j)
    2723  xnsum(i,j) = 0.0
    2724  elvmax(i,j) = oro(i,j)
    2725  zmax(i,j) = 0.0
    2726  ENDDO
    2727  ENDDO
    2728 !
    2729 ! --- # of peaks > ZAVG value and ZMAX(IM,JM) -- ORO is already avg.
    2730 ! --- to JM or to JM1
    2731  DO j=1,jm
    2732  DO i=1,numi(j)
    2733  DO ii1 = 1, ien(i,j) - ist(i,j) + 1
    2734  i1 = ist(i,j) + ii1 - 1
    2735 ! --- next line as in makemt (I1 not II1) (*j*) 20070701
    2736  IF(i1.LE.0.) i1 = i1 + imn
    2737  IF (i1 .GT. imn) i1 = i1 - imn
    2738  DO j1=jst(j),jen(j)
    2739  height = float(zavg(i1,j1))
    2740  IF(height.LT.-990.) height = 0.0
    2741  IF ( height .gt. oro(i,j) ) then
    2742  if ( height .gt. zmax(i,j) )zmax(i,j) = height
    2743  xnsum(i,j) = xnsum(i,j) + 1
    2744  ENDIF
    2745  ENDDO
    2746  ENDDO
    2747  if ( i .lt. 5 .and. j .ge. jm-5 ) then
    2748  print *,' I,J,ORO(I,J),XNSUM(I,J),ZMAX(I,J):',
    2749  1 i,j,oro(i,j),xnsum(i,j),zmax(i,j)
    2750  endif
    2751  ENDDO
    2752  ENDDO
    2753 !
    2754 C.... make ELVMAX ORO from MAKEMT sub
    2755 C
    2756 ! --- this will make work1 array take on oro's values on return
    2757  DO j=1,jm
    2758  DO i=1,numi(j)
    2759 
    2760  oro1(i,j) = oro(i,j)
    2761  elvmax(i,j) = zmax(i,j)
    2762  ENDDO
    2763  ENDDO
    2764 C........
    2765 C The MAX elev peak (no averaging)
    2766 C........
    2767 ! DO J=1,JM
    2768 ! DO I=1,numi(j)
    2769 ! DO II1 = 1, IEN(I,J) - IST(I,J) + 1
    2770 ! I1 = IST(I,J) + II1 - 1
    2771 ! IF(I1.LE.0.) I1 = I1 + IMN
    2772 ! IF(I1.GT.IMN) I1 = I1 - IMN
    2773 ! DO J1=JST(J),JEN(J)
    2774 ! if ( ELVMAX(I,J) .lt. ZMAX(I1,J1))
    2775 ! 1 ELVMAX(I,J) = ZMAX(I1,J1)
    2776 ! ENDDO
    2777 ! ENDDO
    2778 ! ENDDO
    2779 ! ENDDO
    2780 C
    2781 C---- COUNT NUMBER OF MODE. HIGHER THAN THE HC, CRITICAL HEIGHT
    2782 C IN A GRID BOX
    2783  DO j=1,jm
    2784  DO i=1,numi(j)
    2785  xnsum1(i,j) = 0.0
    2786  xnsum2(i,j) = 0.0
    2787  xnsum3(i,j) = 0.0
    2788  xnsum4(i,j) = 0.0
    2789  ENDDO
    2790  ENDDO
    2791 ! --- loop
    2792  DO j=1,jm1
    2793  DO i=1,numi(j)
    2794  hc = 1116.2 - 0.878 * var(i,j)
    2795 ! print *,' I,J,HC,VAR:',I,J,HC,VAR(I,J)
    2796  DO ii1 = 1, ien(i,j) - ist(i,j) + 1
    2797  i1 = ist(i,j) + ii1 - 1
    2798 ! IF (I1.LE.0.) print *,' I1 less than 0',I1,II1,IST(I,J),IEN(I,J)
    2799 ! if ( J .lt. 3 .or. J .gt. JM-2 ) then
    2800 ! IF(I1 .GT. IMN)print *,' I1 > IMN',J,I1,II1,IMN,IST(I,J),IEN(I,J)
    2801 ! endif
    2802  IF(i1.GT.imn) i1 = i1 - imn
    2803  DO j1=jst(j),jen(j)
    2804  IF(float(zavg(i1,j1)) .GT. hc)
    2805  1 xnsum1(i,j) = xnsum1(i,j) + 1
    2806  xnsum2(i,j) = xnsum2(i,j) + 1
    2807  ENDDO
    2808  ENDDO
    2809 C
    2810  inci = nint((ien(i,j)-ist(i,j)) * 0.5)
    2811  isttt = min(max(ist(i,j)-inci,1),imn)
    2812  ieddd = min(max(ien(i,j)-inci,1),imn)
    2813 C
    2814  incj = nint((jen(j)-jst(j)) * 0.5)
    2815  jsttt = min(max(jst(j)-incj,1),jmn)
    2816  jeddd = min(max(jen(j)-incj,1),jmn)
    2817 ! if ( J .lt. 3 .or. J .gt. JM-3 ) then
    2818 ! if(I .lt. 3 .or. I .gt. IM-3) then
    2819 ! print *,' INCI,ISTTT,IEDDD,INCJ,JSTTT,JEDDD:',
    2820 ! 1 I,J,INCI,ISTTT,IEDDD,INCJ,JSTTT,JEDDD
    2821 ! endif
    2822 ! endif
    2823 C
    2824  DO i1=isttt,ieddd
    2825  DO j1=jsttt,jeddd
    2826  IF(float(zavg(i1,j1)) .GT. hc)
    2827  1 xnsum3(i,j) = xnsum3(i,j) + 1
    2828  xnsum4(i,j) = xnsum4(i,j) + 1
    2829  ENDDO
    2830  ENDDO
    2831 cx print*,' i j hc var ',i,j,hc,var(i,j)
    2832 cx print*,'xnsum12 ',xnsum1(i,j),xnsum2(i,j)
    2833 cx print*,'xnsum34 ',xnsum3(i,j),xnsum4(i,j)
    2834  ENDDO
    2835  ENDDO
    2836 C
    2837 C---- CALCULATE THE 3D OROGRAPHIC ASYMMETRY FOR 4 WIND DIRECTIONS
    2838 C---- AND THE 3D OROGRAPHIC SUBGRID OROGRAPHY FRACTION
    2839 C (KWD = 1 2 3 4)
    2840 C ( WD = W S SW NW)
    2841 C
    2842 C
    2843  DO kwd = 1, 4
    2844  DO j=1,jm
    2845  DO i=1,numi(j)
    2846  oa4(i,j,kwd) = 0.0
    2847  ENDDO
    2848  ENDDO
    2849  ENDDO
    2850 C
    2851  DO j=1,jm-2
    2852  DO i=1,numi(j)
    2853  ii = i + 1
    2854  IF (ii .GT. numi(j)) ii = ii - numi(j)
    2855  xnpu = xnsum(i,j) + xnsum(i,j+1)
    2856  xnpd = xnsum(ii,j) + xnsum(ii,j+1)
    2857  IF (xnpd .NE. xnpu) oa4(ii,j+1,1) = 1. - xnpd / max(xnpu , 1.)
    2858  ol(ii,j+1,1) = (xnsum3(i,j+1)+xnsum3(ii,j+1))/
    2859  1 (xnsum4(i,j+1)+xnsum4(ii,j+1))
    2860 ! if ( I .lt. 20 .and. J .ge. JM-19 ) then
    2861 ! PRINT*,' MAKEOA: I J IST IEN ',I,j,IST(I,J),IEN(I,J)
    2862 ! PRINT*,' HC VAR ',HC,VAR(i,j)
    2863 ! PRINT*,' MAKEOA: XNSUM(I,J)=',XNSUM(I,J),XNPU, XNPD
    2864 ! PRINT*,' MAKEOA: XNSUM3(I,J+1),XNSUM3(II,J+1)',
    2865 ! 1 XNSUM3(I,J+1),XNSUM3(II,J+1)
    2866 ! PRINT*,' MAKEOA: II, OA4(II,J+1,1), OL(II,J+1,1):',
    2867 ! 1 II, OA4(II,J+1,1), OL(II,J+1,1)
    2868 ! endif
    2869  ENDDO
    2870  ENDDO
    2871  DO j=1,jm-2
    2872  DO i=1,numi(j)
    2873  ii = i + 1
    2874  IF (ii .GT. numi(j)) ii = ii - numi(j)
    2875  xnpu = xnsum(i,j+1) + xnsum(ii,j+1)
    2876  xnpd = xnsum(i,j) + xnsum(ii,j)
    2877  IF (xnpd .NE. xnpu) oa4(ii,j+1,2) = 1. - xnpd / max(xnpu , 1.)
    2878  ol(ii,j+1,2) = (xnsum3(ii,j)+xnsum3(ii,j+1))/
    2879  1 (xnsum4(ii,j)+xnsum4(ii,j+1))
    2880  ENDDO
    2881  ENDDO
    2882  DO j=1,jm-2
    2883  DO i=1,numi(j)
    2884  ii = i + 1
    2885  IF (ii .GT. numi(j)) ii = ii - numi(j)
    2886  xnpu = xnsum(i,j+1) + ( xnsum(i,j) + xnsum(ii,j+1) )*0.5
    2887  xnpd = xnsum(ii,j) + ( xnsum(i,j) + xnsum(ii,j+1) )*0.5
    2888  IF (xnpd .NE. xnpu) oa4(ii,j+1,3) = 1. - xnpd / max(xnpu , 1.)
    2889  ol(ii,j+1,3) = (xnsum1(ii,j)+xnsum1(i,j+1))/
    2890  1 (xnsum2(ii,j)+xnsum2(i,j+1))
    2891  ENDDO
    2892  ENDDO
    2893  DO j=1,jm-2
    2894  DO i=1,numi(j)
    2895  ii = i + 1
    2896  IF (ii .GT. numi(j)) ii = ii - numi(j)
    2897  xnpu = xnsum(i,j) + ( xnsum(ii,j) + xnsum(i,j+1) )*0.5
    2898  xnpd = xnsum(ii,j+1) + ( xnsum(ii,j) + xnsum(i,j+1) )*0.5
    2899  IF (xnpd .NE. xnpu) oa4(ii,j+1,4) = 1. - xnpd / max(xnpu , 1.)
    2900  ol(ii,j+1,4) = (xnsum1(i,j)+xnsum1(ii,j+1))/
    2901  1 (xnsum2(i,j)+xnsum2(ii,j+1))
    2902  ENDDO
    2903  ENDDO
    2904 C
    2905  DO kwd = 1, 4
    2906  DO i=1,numi(j)
    2907  ol(i,1,kwd) = ol(i,2,kwd)
    2908  ol(i,jm,kwd) = ol(i,jm-1,kwd)
    2909  ENDDO
    2910  ENDDO
    2911 C
    2912  DO kwd=1,4
    2913  DO j=1,jm
    2914  DO i=1,numi(j)
    2915  t = oa4(i,j,kwd)
    2916  oa4(i,j,kwd) = sign( min( abs(t), 1. ), t )
    2917  ENDDO
    2918  ENDDO
    2919  ENDDO
    2920 C
    2921  ns0 = 0
    2922  ns1 = 0
    2923  ns2 = 0
    2924  ns3 = 0
    2925  ns4 = 0
    2926  ns5 = 0
    2927  ns6 = 0
    2928  DO kwd=1,4
    2929  DO j=1,jm
    2930  DO i=1,numi(j)
    2931  t = abs( oa4(i,j,kwd) )
    2932  IF(t .EQ. 0.) THEN
    2933  ioa4(i,j,kwd) = 0
    2934  ns0 = ns0 + 1
    2935  ELSE IF(t .GT. 0. .AND. t .LE. 1.) THEN
    2936  ioa4(i,j,kwd) = 1
    2937  ns1 = ns1 + 1
    2938  ELSE IF(t .GT. 1. .AND. t .LE. 10.) THEN
    2939  ioa4(i,j,kwd) = 2
    2940  ns2 = ns2 + 1
    2941  ELSE IF(t .GT. 10. .AND. t .LE. 100.) THEN
    2942  ioa4(i,j,kwd) = 3
    2943  ns3 = ns3 + 1
    2944  ELSE IF(t .GT. 100. .AND. t .LE. 1000.) THEN
    2945  ioa4(i,j,kwd) = 4
    2946  ns4 = ns4 + 1
    2947  ELSE IF(t .GT. 1000. .AND. t .LE. 10000.) THEN
    2948  ioa4(i,j,kwd) = 5
    2949  ns5 = ns5 + 1
    2950  ELSE IF(t .GT. 10000.) THEN
    2951  ioa4(i,j,kwd) = 6
    2952  ns6 = ns6 + 1
    2953  ENDIF
    2954  ENDDO
    2955  ENDDO
    2956  ENDDO
    2957 C
    2958  WRITE(6,*) "! MAKEOA EXIT"
    2959 C
    2960  RETURN
    2961  END SUBROUTINE makeoa
    2962 
    2972  function get_lon_angle(dx,lat, DEGRAD)
    2973  implicit none
    2974  real dx, lat, degrad
    2975 
    2976  real get_lon_angle
    2977  real, parameter :: radius = 6371200
    2978 
    2979  get_lon_angle = 2*asin( sin(dx/radius*0.5)/cos(lat) )*degrad
    2980 
    2981  end function get_lon_angle
    2982 
    2991  function get_lat_angle(dy, DEGRAD)
    2992  implicit none
    2993  real dy, degrad
    2994 
    2995  real get_lat_angle
    2996  real, parameter :: radius = 6371200
    2997 
    2998  get_lat_angle = dy/radius*degrad
    2999 
    3000  end function get_lat_angle
    3001 
    3038  SUBROUTINE makeoa2(ZAVG,zslm,VAR,GLAT,OA4,OL,IOA4,ELVMAX,
    3039  1 ORO,oro1,XNSUM,XNSUM1,XNSUM2,XNSUM3,XNSUM4,
    3040  2 IM,JM,IMN,JMN,lon_c,lat_c,lon_t,lat_t,dx,dy,
    3041  3 is_south_pole,is_north_pole )
    3042  implicit none
    3043  real, parameter :: MISSING_VALUE = -9999.
    3044  real, parameter :: d2r = 3.14159265358979/180.
    3045  real, PARAMETER :: R2D=180./3.14159265358979
    3046  integer im,jm,imn,jmn
    3047  real GLAT(JMN)
    3048  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    3049  real ORO(IM,JM),ORO1(IM,JM),ELVMAX(IM,JM),ZMAX(IM,JM)
    3050  real OA4(IM,JM,4)
    3051  integer IOA4(IM,JM,4)
    3052  real lon_c(IM+1,JM+1), lat_c(IM+1,JM+1)
    3053  real lon_t(IM,JM), lat_t(IM,JM)
    3054  real dx(IM,JM), dy(IM,JM)
    3055  logical is_south_pole(IM,JM), is_north_pole(IM,JM)
    3056  real XNSUM(IM,JM),XNSUM1(IM,JM),XNSUM2(IM,JM)
    3057  real XNSUM3(IM,JM),XNSUM4(IM,JM)
    3058  real VAR(IM,JM),OL(IM,JM,4)
    3059  LOGICAL FLAG
    3060  integer i,j,ilist(IMN),numx,i1,j1,ii1
    3061  integer KWD,II,npts
    3062  real LONO(4),LATO(4),LONI,LATI
    3063  real DELXN,HC,HEIGHT,XNPU,XNPD,T
    3064  integer NS0,NS1,NS2,NS3,NS4,NS5,NS6
    3065  logical inside_a_polygon
    3066  real lon,lat,dlon,dlat,dlat_old
    3067  real lon1,lat1,lon2,lat2
    3068  real xnsum11,xnsum12,xnsum21,xnsum22,xnsumx
    3069  real HC_11, HC_12, HC_21, HC_22
    3070  real xnsum1_11,xnsum1_12,xnsum1_21,xnsum1_22
    3071  real xnsum2_11,xnsum2_12,xnsum2_21,xnsum2_22
    3072  real get_lon_angle, get_lat_angle, get_xnsum
    3073  integer ist, ien, jst, jen
    3074  real xland,xwatr,xl1,xs1,oroavg,slm
    3075 C
    3076 C---- GLOBAL XLAT AND XLON ( DEGREE )
    3077 C
    3078  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    3079 C
    3080  DO j=1,jmn
    3081  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    3082  ENDDO
    3083  print *,' IM=',im,' JM=',jm,' IMN=',imn,' JMN=',jmn
    3084 C
    3085 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    3086 C
    3087 C
    3088  DO j=1,jm
    3089  DO i=1,im
    3090  xnsum(i,j) = 0.0
    3091  elvmax(i,j) = oro(i,j)
    3092  zmax(i,j) = 0.0
    3093 C---- COUNT NUMBER OF MODE. HIGHER THAN THE HC, CRITICAL HEIGHT
    3094 C IN A GRID BOX
    3095  xnsum1(i,j) = 0.0
    3096  xnsum2(i,j) = 0.0
    3097  xnsum3(i,j) = 0.0
    3098  xnsum4(i,j) = 0.0
    3099  oro1(i,j) = oro(i,j)
    3100  elvmax(i,j) = zmax(i,j)
    3101  ENDDO
    3102  ENDDO
    3103 
    3104 ! --- # of peaks > ZAVG value and ZMAX(IM,JM) -- ORO is already avg.
    3105 ! --- to JM or to JM1
    3106 !$omp parallel do
    3107 !$omp* private (j,i,hc,lono,lato,jst,jen,ilist,numx,j1,ii1,i1,loni,
    3108 !$omp* lati,height)
    3109  DO j=1,jm
    3110 ! print*, "J=", J
    3111  DO i=1,im
    3112  hc = 1116.2 - 0.878 * var(i,j)
    3113  lono(1) = lon_c(i,j)
    3114  lono(2) = lon_c(i+1,j)
    3115  lono(3) = lon_c(i+1,j+1)
    3116  lono(4) = lon_c(i,j+1)
    3117  lato(1) = lat_c(i,j)
    3118  lato(2) = lat_c(i+1,j)
    3119  lato(3) = lat_c(i+1,j+1)
    3120  lato(4) = lat_c(i,j+1)
    3121  call get_index(imn,jmn,4,lono,lato,delxn,jst,jen,ilist,numx)
    3122  do j1 = jst, jen; do ii1 = 1, numx
    3123  i1 = ilist(ii1)
    3124  loni = i1*delxn
    3125  lati = -90 + j1*delxn
    3126  if(inside_a_polygon(loni*d2r,lati*d2r,4,
    3127  & lono*d2r,lato*d2r))then
    3128 
    3129  height = float(zavg(i1,j1))
    3130  IF(height.LT.-990.) height = 0.0
    3131  IF ( height .gt. oro(i,j) ) then
    3132  if ( height .gt. zmax(i,j) )zmax(i,j) = height
    3133  ENDIF
    3134  endif
    3135  ENDDO ; ENDDO
    3136  ENDDO
    3137  ENDDO
    3138 !$omp end parallel do
    3139 C
    3140 ! --- this will make work1 array take on oro's values on return
    3141 ! --- this will make work1 array take on oro's values on return
    3142  DO j=1,jm
    3143  DO i=1,im
    3144 
    3145  oro1(i,j) = oro(i,j)
    3146  elvmax(i,j) = zmax(i,j)
    3147  ENDDO
    3148  ENDDO
    3149 
    3150  DO kwd = 1, 4
    3151  DO j=1,jm
    3152  DO i=1,im
    3153  oa4(i,j,kwd) = 0.0
    3154  ol(i,j,kwd) = 0.0
    3155  ENDDO
    3156  ENDDO
    3157  ENDDO
    3158  !
    3159 ! --- # of peaks > ZAVG value and ZMAX(IM,JM) -- ORO is already avg.
    3160 C
    3161 C---- CALCULATE THE 3D OROGRAPHIC ASYMMETRY FOR 4 WIND DIRECTIONS
    3162 C---- AND THE 3D OROGRAPHIC SUBGRID OROGRAPHY FRACTION
    3163 C (KWD = 1 2 3 4)
    3164 C ( WD = W S SW NW)
    3165 C
    3166 C
    3167 !$omp parallel do
    3168 !$omp* private (j,i,lon,lat,kwd,dlon,dlat,lon1,lon2,lat1,lat2,
    3169 !$omp* xnsum11,xnsum12,xnsum21,xnsum22,xnpu,xnpd,
    3170 !$omp* xnsum1_11,xnsum2_11,hc_11, xnsum1_12,xnsum2_12,
    3171 !$omp* hc_12,xnsum1_21,xnsum2_21,hc_21, xnsum1_22,
    3172 !$omp* xnsum2_22,hc_22)
    3173  DO j=1,jm
    3174 ! print*, "j = ", j
    3175  DO i=1,im
    3176  lon = lon_t(i,j)
    3177  lat = lat_t(i,j)
    3178  !--- for around north pole, oa and ol are all 0
    3179 
    3180  if(is_north_pole(i,j)) then
    3181  print*, "set oa1 = 0 and ol=0 at i,j=", i,j
    3182  do kwd = 1, 4
    3183  oa4(i,j,kwd) = 0.
    3184  ol(i,j,kwd) = 0.
    3185  enddo
    3186  else if(is_south_pole(i,j)) then
    3187  print*, "set oa1 = 0 and ol=1 at i,j=", i,j
    3188  do kwd = 1, 4
    3189  oa4(i,j,kwd) = 0.
    3190  ol(i,j,kwd) = 1.
    3191  enddo
    3192  else
    3193 
    3194  !--- for each point, find a lat-lon grid box with same dx and dy as the cubic grid box
    3195  dlon = get_lon_angle(dx(i,j), lat*d2r, r2d )
    3196  dlat = get_lat_angle(dy(i,j), r2d)
    3197  !--- adjust dlat if the points are close to pole.
    3198  if( lat-dlat*0.5<-90.) then
    3199  print*, "at i,j =", i,j, lat, dlat, lat-dlat*0.5
    3200  print*, "ERROR: lat-dlat*0.5<-90."
    3201  call errexit(4)
    3202  endif
    3203  if( lat+dlat*2 > 90.) then
    3204  dlat_old = dlat
    3205  dlat = (90-lat)*0.5
    3206  print*, "at i,j=",i,j," adjust dlat from ",
    3207  & dlat_old, " to ", dlat
    3208  endif
    3209  !--- lower left
    3210  lon1 = lon-dlon*1.5
    3211  lon2 = lon-dlon*0.5
    3212  lat1 = lat-dlat*0.5
    3213  lat2 = lat+dlat*0.5
    3214 
    3215  if(lat1<-90 .or. lat2>90) then
    3216  print*, "at upper left i=,j=", i, j, lat, dlat,lat1,lat2
    3217  endif
    3218  xnsum11 = get_xnsum(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3219  & zavg,zslm,delxn)
    3220 
    3221  !--- upper left
    3222  lon1 = lon-dlon*1.5
    3223  lon2 = lon-dlon*0.5
    3224  lat1 = lat+dlat*0.5
    3225  lat2 = lat+dlat*1.5
    3226  if(lat1<-90 .or. lat2>90) then
    3227  print*, "at lower left i=,j=", i, j, lat, dlat,lat1,lat2
    3228  endif
    3229  xnsum12 = get_xnsum(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3230  & zavg,zslm,delxn)
    3231 
    3232  !--- lower right
    3233  lon1 = lon-dlon*0.5
    3234  lon2 = lon+dlon*0.5
    3235  lat1 = lat-dlat*0.5
    3236  lat2 = lat+dlat*0.5
    3237  if(lat1<-90 .or. lat2>90) then
    3238  print*, "at upper right i=,j=", i, j, lat, dlat,lat1,lat2
    3239  endif
    3240  xnsum21 = get_xnsum(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3241  & zavg,zslm,delxn)
    3242 
    3243  !--- upper right
    3244  lon1 = lon-dlon*0.5
    3245  lon2 = lon+dlon*0.5
    3246  lat1 = lat+dlat*0.5
    3247  lat2 = lat+dlat*1.5
    3248  if(lat1<-90 .or. lat2>90) then
    3249  print*, "at lower right i=,j=", i, j, lat, dlat,lat1,lat2
    3250  endif
    3251 
    3252  xnsum22 = get_xnsum(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3253  & zavg,zslm,delxn)
    3254 
    3255  xnpu = xnsum11 + xnsum12
    3256  xnpd = xnsum21 + xnsum22
    3257  IF (xnpd .NE. xnpu) oa4(i,j,1) = 1. - xnpd / max(xnpu , 1.)
    3258 
    3259  xnpu = xnsum11 + xnsum21
    3260  xnpd = xnsum12 + xnsum22
    3261  IF (xnpd .NE. xnpu) oa4(i,j,2) = 1. - xnpd / max(xnpu , 1.)
    3262 
    3263  xnpu = xnsum11 + (xnsum12+xnsum21)*0.5
    3264  xnpd = xnsum22 + (xnsum12+xnsum21)*0.5
    3265  IF (xnpd .NE. xnpu) oa4(i,j,3) = 1. - xnpd / max(xnpu , 1.)
    3266 
    3267  xnpu = xnsum12 + (xnsum11+xnsum22)*0.5
    3268  xnpd = xnsum21 + (xnsum11+xnsum22)*0.5
    3269  IF (xnpd .NE. xnpu) oa4(i,j,4) = 1. - xnpd / max(xnpu , 1.)
    3270 
    3271 
    3272  !--- calculate OL3 and OL4
    3273  !--- lower left
    3274  lon1 = lon-dlon*1.5
    3275  lon2 = lon-dlon*0.5
    3276  lat1 = lat-dlat*0.5
    3277  lat2 = lat+dlat*0.5
    3278  if(lat1<-90 .or. lat2>90) then
    3279  print*, "at upper left i=,j=", i, j, lat, dlat,lat1,lat2
    3280  endif
    3281  call get_xnsum2(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3282  & zavg,zslm,delxn, xnsum1_11, xnsum2_11, hc_11)
    3283 
    3284  !--- upper left
    3285  lon1 = lon-dlon*1.5
    3286  lon2 = lon-dlon*0.5
    3287  lat1 = lat+dlat*0.5
    3288  lat2 = lat+dlat*1.5
    3289  if(lat1<-90 .or. lat2>90) then
    3290  print*, "at lower left i=,j=", i, j, lat, dlat,lat1,lat2
    3291  endif
    3292  call get_xnsum2(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3293  & zavg,zslm,delxn, xnsum1_12, xnsum2_12, hc_12)
    3294 
    3295  !--- lower right
    3296  lon1 = lon-dlon*0.5
    3297  lon2 = lon+dlon*0.5
    3298  lat1 = lat-dlat*0.5
    3299  lat2 = lat+dlat*0.5
    3300  if(lat1<-90 .or. lat2>90) then
    3301  print*, "at upper right i=,j=", i, j, lat, dlat,lat1,lat2
    3302  endif
    3303  call get_xnsum2(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3304  & zavg,zslm,delxn, xnsum1_21, xnsum2_21, hc_21)
    3305 
    3306  !--- upper right
    3307  lon1 = lon-dlon*0.5
    3308  lon2 = lon+dlon*0.5
    3309  lat1 = lat+dlat*0.5
    3310  lat2 = lat+dlat*1.5
    3311  if(lat1<-90 .or. lat2>90) then
    3312  print*, "at lower right i=,j=", i, j, lat, dlat,lat1,lat2
    3313  endif
    3314  call get_xnsum2(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3315  & zavg,zslm,delxn, xnsum1_22, xnsum2_22, hc_22)
    3316 
    3317  ol(i,j,3) = (xnsum1_22+xnsum1_11)/(xnsum2_22+xnsum2_11)
    3318  ol(i,j,4) = (xnsum1_12+xnsum1_21)/(xnsum2_12+xnsum2_21)
    3319 
    3320  !--- calculate OL1 and OL2
    3321  !--- lower left
    3322  lon1 = lon-dlon*2.0
    3323  lon2 = lon-dlon
    3324  lat1 = lat
    3325  lat2 = lat+dlat
    3326  if(lat1<-90 .or. lat2>90) then
    3327  print*, "at upper left i=,j=", i, j, lat, dlat,lat1,lat2
    3328  endif
    3329  call get_xnsum3(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3330  & zavg,zslm,delxn, xnsum1_11, xnsum2_11, hc_11)
    3331 
    3332  !--- upper left
    3333  lon1 = lon-dlon*2.0
    3334  lon2 = lon-dlon
    3335  lat1 = lat+dlat
    3336  lat2 = lat+dlat*2.0
    3337  if(lat1<-90 .or. lat2>90) then
    3338  print*, "at lower left i=,j=", i, j, lat, dlat,lat1,lat2
    3339  endif
    3340 
    3341  call get_xnsum3(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3342  & zavg,zslm,delxn, xnsum1_12, xnsum2_12, hc_12)
    3343 
    3344  !--- lower right
    3345  lon1 = lon-dlon
    3346  lon2 = lon
    3347  lat1 = lat
    3348  lat2 = lat+dlat
    3349  if(lat1<-90 .or. lat2>90) then
    3350  print*, "at upper right i=,j=", i, j, lat, dlat,lat1,lat2
    3351  endif
    3352  call get_xnsum3(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3353  & zavg,zslm,delxn, xnsum1_21, xnsum2_21, hc_21)
    3354 
    3355  !--- upper right
    3356  lon1 = lon-dlon
    3357  lon2 = lon
    3358  lat1 = lat+dlat
    3359  lat2 = lat+dlat*2.0
    3360  if(lat1<-90 .or. lat2>90) then
    3361  print*, "at lower right i=,j=", i, j, lat, dlat,lat1,lat2
    3362  endif
    3363 
    3364  call get_xnsum3(lon1,lat1,lon2,lat2,imn,jmn,glat,
    3365  & zavg,zslm,delxn, xnsum1_22, xnsum2_22, hc_22)
    3366 
    3367  ol(i,j,1) = (xnsum1_11+xnsum1_21)/(xnsum2_11+xnsum2_21)
    3368  ol(i,j,2) = (xnsum1_21+xnsum1_22)/(xnsum2_21+xnsum2_22)
    3369  ENDIF
    3370  ENDDO
    3371  ENDDO
    3372 !$omp end parallel do
    3373  DO kwd=1,4
    3374  DO j=1,jm
    3375  DO i=1,im
    3376  t = oa4(i,j,kwd)
    3377  oa4(i,j,kwd) = sign( min( abs(t), 1. ), t )
    3378  ENDDO
    3379  ENDDO
    3380  ENDDO
    3381 C
    3382  ns0 = 0
    3383  ns1 = 0
    3384  ns2 = 0
    3385  ns3 = 0
    3386  ns4 = 0
    3387  ns5 = 0
    3388  ns6 = 0
    3389  DO kwd=1,4
    3390  DO j=1,jm
    3391  DO i=1,im
    3392  t = abs( oa4(i,j,kwd) )
    3393  IF(t .EQ. 0.) THEN
    3394  ioa4(i,j,kwd) = 0
    3395  ns0 = ns0 + 1
    3396  ELSE IF(t .GT. 0. .AND. t .LE. 1.) THEN
    3397  ioa4(i,j,kwd) = 1
    3398  ns1 = ns1 + 1
    3399  ELSE IF(t .GT. 1. .AND. t .LE. 10.) THEN
    3400  ioa4(i,j,kwd) = 2
    3401  ns2 = ns2 + 1
    3402  ELSE IF(t .GT. 10. .AND. t .LE. 100.) THEN
    3403  ioa4(i,j,kwd) = 3
    3404  ns3 = ns3 + 1
    3405  ELSE IF(t .GT. 100. .AND. t .LE. 1000.) THEN
    3406  ioa4(i,j,kwd) = 4
    3407  ns4 = ns4 + 1
    3408  ELSE IF(t .GT. 1000. .AND. t .LE. 10000.) THEN
    3409  ioa4(i,j,kwd) = 5
    3410  ns5 = ns5 + 1
    3411  ELSE IF(t .GT. 10000.) THEN
    3412  ioa4(i,j,kwd) = 6
    3413  ns6 = ns6 + 1
    3414  ENDIF
    3415  ENDDO
    3416  ENDDO
    3417  ENDDO
    3418 C
    3419  WRITE(6,*) "! MAKEOA2 EXIT"
    3420 C
    3421  RETURN
    3422 
    3423  END SUBROUTINE makeoa2
    3424 
    3433  function spherical_distance(theta1,phi1,theta2,phi2)
    3435  real, intent(in) :: theta1, phi1, theta2, phi2
    3436  real :: spherical_distance, dot
    3437 
    3438  if(theta1 == theta2 .and. phi1 == phi2) then
    3439  spherical_distance = 0.0
    3440  return
    3441  endif
    3442 
    3443  dot = cos(phi1)*cos(phi2)*cos(theta1-theta2) + sin(phi1)*sin(phi2)
    3444  if(dot > 1. ) dot = 1.
    3445  if(dot < -1.) dot = -1.
    3446  spherical_distance = acos(dot)
    3447 
    3448  return
    3449 
    3450  end function spherical_distance
    3451 
    3468  subroutine get_mismatch_index(im_in, jm_in, geolon_in,geolat_in,
    3469  & bitmap_in,num_out, lon_out,lat_out, iindx, jindx )
    3470  integer, intent(in) :: im_in, jm_in, num_out
    3471  real, intent(in) :: geolon_in(im_in,jm_in)
    3472  real, intent(in) :: geolat_in(im_in,jm_in)
    3473  logical*1, intent(in) :: bitmap_in(im_in,jm_in)
    3474  real, intent(in) :: lon_out(num_out), lat_out(num_out)
    3475  integer, intent(out):: iindx(num_out), jindx(num_out)
    3476  real, parameter :: MAX_DIST = 1.e+20
    3477  integer, parameter :: NUMNBR = 20
    3478  integer :: i_c,j_c,jstart,jend
    3479  real :: lon,lat
    3480 
    3481  print*, "im_in,jm_in = ", im_in, jm_in
    3482  print*, "num_out = ", num_out
    3483  print*, "max and min of lon_in is", minval(geolon_in),
    3484  & maxval(geolon_in)
    3485  print*, "max and min of lat_in is", minval(geolat_in),
    3486  & maxval(geolat_in)
    3487  print*, "max and min of lon_out is", minval(lon_out),
    3488  & maxval(lon_out)
    3489  print*, "max and min of lat_out is", minval(lat_out),
    3490  & maxval(lat_out)
    3491  print*, "count(bitmap_in)= ", count(bitmap_in), max_dist
    3492 
    3493  do n = 1, num_out
    3494  ! print*, "n = ", n
    3495  lon = lon_out(n)
    3496  lat = lat_out(n)
    3497  !--- find the j-index for the nearest point
    3498  i_c = 0; j_c = 0
    3499  do j = 1, jm_in-1
    3500  if(lat .LE. geolat_in(1,j) .and.
    3501  & lat .GE. geolat_in(1,j+1)) then
    3502  j_c = j
    3503  endif
    3504  enddo
    3505  if(lat > geolat_in(1,1)) j_c = 1
    3506  if(lat < geolat_in(1,jm_in)) j_c = jm_in
    3507  ! print*, "lat =", lat, geolat_in(1,jm_in), geolat_in(1,jm_in-1)
    3508  ! The input is Gaussian grid.
    3509  jstart = max(j_c-numnbr,1)
    3510  jend = min(j_c+numnbr,jm_in)
    3511  dist = max_dist
    3512  iindx(n) = 0
    3513  jindx(n) = 0
    3514  ! print*, "jstart, jend =", jstart, jend
    3515  do j = jstart, jend; do i = 1,im_in
    3516  if(bitmap_in(i,j) ) then
    3517  ! print*, "bitmap_in is true"
    3518  d = spherical_distance(lon_out(n),lat_out(n),
    3519  & geolon_in(i,j), geolat_in(i,j))
    3520  if( dist > d ) then
    3521  iindx(n) = i; jindx(n) = j
    3522  dist = d
    3523  endif
    3524  endif
    3525  enddo; enddo
    3526  if(iindx(n) ==0) then
    3527  print*, "lon,lat=", lon,lat
    3528  print*, "jstart, jend=", jstart, jend, dist
    3529  print*, "ERROR in get mismatch_index: not find nearest points"
    3530  call errexit(4)
    3531  endif
    3532  enddo
    3533 
    3534  end subroutine get_mismatch_index
    3535 
    3549  subroutine interpolate_mismatch(im_in, jm_in, data_in,
    3550  & num_out, data_out, iindx, jindx)
    3551  integer, intent(in) :: im_in, jm_in, num_out
    3552  real, intent(in) :: data_in(im_in,jm_in)
    3553  real, intent(out):: data_out(num_out)
    3554  integer, intent(in) :: iindx(num_out), jindx(num_out)
    3555 
    3556  do n = 1, num_out
    3557  data_out(n) = data_in(iindx(n),jindx(n))
    3558  enddo
    3559 
    3560  end subroutine interpolate_mismatch
    3561 
    3606  SUBROUTINE makeoa3(ZAVG,zslm,VAR,GLAT,OA4,OL,IOA4,ELVMAX,
    3607  1 ORO,SLM,oro1,XNSUM,XNSUM1,XNSUM2,XNSUM3,XNSUM4,
    3608  2 IM,JM,IMN,JMN,lon_c,lat_c,lon_t,lat_t,
    3609  3 is_south_pole,is_north_pole,IMI,JMI,OA_IN,OL_IN,
    3610  4 slm_in,lon_in,lat_in)
    3612 ! Required when using iplib v4.0 or higher.
    3613 #ifdef IP_V4
    3614  use ipolates_mod
    3615 #endif
    3616 
    3617  implicit none
    3618  real, parameter :: MISSING_VALUE = -9999.
    3619  real, parameter :: d2r = 3.14159265358979/180.
    3620  real, PARAMETER :: R2D=180./3.14159265358979
    3621  integer im,jm,imn,jmn,imi,jmi
    3622  real GLAT(JMN)
    3623  INTEGER ZAVG(IMN,JMN),ZSLM(IMN,JMN)
    3624  real SLM(IM,JM)
    3625  real ORO(IM,JM),ORO1(IM,JM),ELVMAX(IM,JM),ZMAX(IM,JM)
    3626  real OA4(IM,JM,4)
    3627  integer IOA4(IM,JM,4)
    3628  real OA_IN(IMI,JMI,4), OL_IN(IMI,JMI,4)
    3629  real slm_in(IMI,JMI)
    3630  real lon_in(IMI,JMI), lat_in(IMI,JMI)
    3631  real lon_c(IM+1,JM+1), lat_c(IM+1,JM+1)
    3632  real lon_t(IM,JM), lat_t(IM,JM)
    3633  logical is_south_pole(IM,JM), is_north_pole(IM,JM)
    3634  real XNSUM(IM,JM),XNSUM1(IM,JM),XNSUM2(IM,JM)
    3635  real XNSUM3(IM,JM),XNSUM4(IM,JM)
    3636  real VAR(IM,JM),OL(IM,JM,4)
    3637  LOGICAL FLAG
    3638  integer i,j,ilist(IMN),numx,i1,j1,ii1
    3639  integer KWD,II,npts
    3640  real LONO(4),LATO(4),LONI,LATI
    3641  real DELXN,HC,HEIGHT,XNPU,XNPD,T
    3642  integer NS0,NS1,NS2,NS3,NS4,NS5,NS6
    3643  logical inside_a_polygon
    3644  real lon,lat,dlon,dlat,dlat_old
    3645  real lon1,lat1,lon2,lat2
    3646  real xnsum11,xnsum12,xnsum21,xnsum22,xnsumx
    3647  real HC_11, HC_12, HC_21, HC_22
    3648  real xnsum1_11,xnsum1_12,xnsum1_21,xnsum1_22
    3649  real xnsum2_11,xnsum2_12,xnsum2_21,xnsum2_22
    3650  real get_lon_angle, get_lat_angle, get_xnsum
    3651  integer ist, ien, jst, jen
    3652  real xland,xwatr,xl1,xs1,oroavg
    3653  integer int_opt, ipopt(20), kgds_input(200), kgds_output(200)
    3654  integer count_land_output
    3655  integer ij, ijmdl_output, iret, num_mismatch_land, num
    3656  integer ibo(1), ibi(1)
    3657  logical*1, allocatable :: bitmap_input(:,:)
    3658  logical*1, allocatable :: bitmap_output(:,:)
    3659  integer, allocatable :: ijsav_land_output(:)
    3660  real, allocatable :: lats_land_output(:)
    3661  real, allocatable :: lons_land_output(:)
    3662  real, allocatable :: output_data_land(:,:)
    3663  real, allocatable :: lons_mismatch_output(:)
    3664  real, allocatable :: lats_mismatch_output(:)
    3665  real, allocatable :: data_mismatch_output(:)
    3666  integer, allocatable :: iindx(:), jindx(:)
    3667 C
    3668 C---- GLOBAL XLAT AND XLON ( DEGREE )
    3669 C
    3670  delxn = 360./imn ! MOUNTAIN DATA RESOLUTION
    3671 C
    3672  ijmdl_output = im*jm
    3673 
    3674  DO j=1,jmn
    3675  glat(j) = -90. + (j-1) * delxn + delxn * 0.5
    3676  ENDDO
    3677  print *,' IM=',im,' JM=',jm,' IMN=',imn,' JMN=',jmn
    3678 C
    3679 C---- FIND THE AVERAGE OF THE MODES IN A GRID BOX
    3680 C
    3681 C
    3682  DO j=1,jm
    3683  DO i=1,im
    3684  xnsum(i,j) = 0.0
    3685  elvmax(i,j) = oro(i,j)
    3686  zmax(i,j) = 0.0
    3687 C---- COUNT NUMBER OF MODE. HIGHER THAN THE HC, CRITICAL HEIGHT
    3688 C IN A GRID BOX
    3689  xnsum1(i,j) = 0.0
    3690  xnsum2(i,j) = 0.0
    3691  xnsum3(i,j) = 0.0
    3692  xnsum4(i,j) = 0.0
    3693  oro1(i,j) = oro(i,j)
    3694  elvmax(i,j) = zmax(i,j)
    3695  ENDDO
    3696  ENDDO
    3697 
    3698 ! --- # of peaks > ZAVG value and ZMAX(IM,JM) -- ORO is already avg.
    3699 ! --- to JM or to JM1
    3700  DO j=1,jm
    3701 ! print*, "J=", J
    3702  DO i=1,im
    3703  hc = 1116.2 - 0.878 * var(i,j)
    3704  lono(1) = lon_c(i,j)
    3705  lono(2) = lon_c(i+1,j)
    3706  lono(3) = lon_c(i+1,j+1)
    3707  lono(4) = lon_c(i,j+1)
    3708  lato(1) = lat_c(i,j)
    3709  lato(2) = lat_c(i+1,j)
    3710  lato(3) = lat_c(i+1,j+1)
    3711  lato(4) = lat_c(i,j+1)
    3712  call get_index(imn,jmn,4,lono,lato,delxn,jst,jen,ilist,numx)
    3713  do j1 = jst, jen; do ii1 = 1, numx
    3714  i1 = ilist(ii1)
    3715  loni = i1*delxn
    3716  lati = -90 + j1*delxn
    3717  if(inside_a_polygon(loni*d2r,lati*d2r,4,
    3718  & lono*d2r,lato*d2r))then
    3719 
    3720  height = float(zavg(i1,j1))
    3721  IF(height.LT.-990.) height = 0.0
    3722  IF ( height .gt. oro(i,j) ) then
    3723  if ( height .gt. zmax(i,j) )zmax(i,j) = height
    3724  ENDIF
    3725  endif
    3726  ENDDO ; ENDDO
    3727  ENDDO
    3728  ENDDO
    3729 
    3730 C
    3731 ! --- this will make work1 array take on oro's values on return
    3732 ! --- this will make work1 array take on oro's values on return
    3733  DO j=1,jm
    3734  DO i=1,im
    3735 
    3736  oro1(i,j) = oro(i,j)
    3737  elvmax(i,j) = zmax(i,j)
    3738  ENDDO
    3739  ENDDO
    3740 
    3741  DO kwd = 1, 4
    3742  DO j=1,jm
    3743  DO i=1,im
    3744  oa4(i,j,kwd) = 0.0
    3745  ol(i,j,kwd) = 0.0
    3746  ENDDO
    3747  ENDDO
    3748  ENDDO
    3749 
    3750  !--- use the nearest point to do remapping.
    3751  int_opt = 2
    3752  ipopt=0
    3753  kgds_input = 0
    3754  kgds_input(1) = 4 ! OCT 6 - TYPE OF GRID (GAUSSIAN)
    3755  kgds_input(2) = imi ! OCT 7-8 - # PTS ON LATITUDE CIRCLE
    3756  kgds_input(3) = jmi ! OCT 9-10 - # PTS ON LONGITUDE CIRCLE
    3757  kgds_input(4) = 90000 ! OCT 11-13 - LAT OF ORIGIN
    3758  kgds_input(5) = 0 ! OCT 14-16 - LON OF ORIGIN
    3759  kgds_input(6) = 128 ! OCT 17 - RESOLUTION FLAG
    3760  kgds_input(7) = -90000 ! OCT 18-20 - LAT OF EXTREME POINT
    3761  kgds_input(8) = nint(-360000./imi) ! OCT 21-23 - LON OF EXTREME POINT
    3762  kgds_input(9) = nint((360.0 / float(imi))*1000.0)
    3763  ! OCT 24-25 - LONGITUDE DIRECTION INCR.
    3764  kgds_input(10) = jmi /2 ! OCT 26-27 - NUMBER OF CIRCLES POLE TO EQUATOR
    3765  kgds_input(12) = 255 ! OCT 29 - RESERVED
    3766  kgds_input(20) = 255 ! OCT 5 - NOT USED, SET TO 255
    3767 
    3768 
    3769  kgds_output = -1
    3770 ! KGDS_OUTPUT(1) = IDRT ! OCT 6 - TYPE OF GRID (GAUSSIAN)
    3771  kgds_output(2) = im ! OCT 7-8 - # PTS ON LATITUDE CIRCLE
    3772  kgds_output(3) = jm ! OCT 9-10 - # PTS ON LONGITUDE CIRCLE
    3773  kgds_output(4) = 90000 ! OCT 11-13 - LAT OF ORIGIN
    3774  kgds_output(5) = 0 ! OCT 14-16 - LON OF ORIGIN
    3775  kgds_output(6) = 128 ! OCT 17 - RESOLUTION FLAG
    3776  kgds_output(7) = -90000 ! OCT 18-20 - LAT OF EXTREME POINT
    3777  kgds_output(8) = nint(-360000./im) ! OCT 21-23 - LON OF EXTREME POINT
    3778  kgds_output(9) = nint((360.0 / float(im))*1000.0)
    3779  ! OCT 24-25 - LONGITUDE DIRECTION INCR.
    3780  kgds_output(10) = jm /2 ! OCT 26-27 - NUMBER OF CIRCLES POLE TO EQUATOR
    3781  kgds_output(12) = 255 ! OCT 29 - RESERVED
    3782  kgds_output(20) = 255 ! OCT 5 - NOT USED, SET TO 255
    3783 
    3784  count_land_output=0
    3785  print*, "sum(slm) = ", sum(slm)
    3786  do ij = 1, ijmdl_output
    3787  j = (ij-1)/im + 1
    3788  i = mod(ij-1,im) + 1
    3789  if (slm(i,j) > 0.0) then
    3790  count_land_output=count_land_output+1
    3791  endif
    3792  enddo
    3793  allocate(bitmap_input(imi,jmi))
    3794  bitmap_input=.false.
    3795  print*, "number of land input=", sum(slm_in)
    3796  where(slm_in > 0.0) bitmap_input=.true.
    3797  print*, "count(bitmap_input)", count(bitmap_input)
    3798 
    3799  allocate(bitmap_output(count_land_output,1))
    3800  allocate(output_data_land(count_land_output,1))
    3801  allocate(ijsav_land_output(count_land_output))
    3802  allocate(lats_land_output(count_land_output))
    3803  allocate(lons_land_output(count_land_output))
    3804 
    3805 
    3806 
    3807  count_land_output=0
    3808  do ij = 1, ijmdl_output
    3809  j = (ij-1)/im + 1
    3810  i = mod(ij-1,im) + 1
    3811  if (slm(i,j) > 0.0) then
    3812  count_land_output=count_land_output+1
    3813  ijsav_land_output(count_land_output)=ij
    3814  lats_land_output(count_land_output)=lat_t(i,j)
    3815  lons_land_output(count_land_output)=lon_t(i,j)
    3816  endif
    3817  enddo
    3818 
    3819  oa4 = 0.0
    3820  ol = 0.0
    3821  ibi = 1
    3822 
    3823  do kwd=1,4
    3824  bitmap_output = .false.
    3825  output_data_land = 0.0
    3826  call ipolates(int_opt, ipopt, kgds_input, kgds_output,
    3827  & (imi*jmi), count_land_output,
    3828  & 1, ibi, bitmap_input, oa_in(:,:,kwd),
    3829  & count_land_output, lats_land_output,
    3830  & lons_land_output, ibo,
    3831  & bitmap_output, output_data_land, iret)
    3832  if (iret /= 0) then
    3833  print*,'- ERROR IN IPOLATES ',iret
    3834  call errexit(4)
    3835  endif
    3836 
    3837  num_mismatch_land = 0
    3838  do ij = 1, count_land_output
    3839  if (bitmap_output(ij,1)) then
    3840  j = (ijsav_land_output(ij)-1)/im + 1
    3841  i = mod(ijsav_land_output(ij)-1,im) + 1
    3842  oa4(i,j,kwd)=output_data_land(ij,1)
    3843  else ! default value
    3844  num_mismatch_land = num_mismatch_land + 1
    3845  endif
    3846  enddo
    3847  print*, "num_mismatch_land = ", num_mismatch_land
    3848 
    3849  if(.not. allocated(data_mismatch_output)) then
    3850  allocate(lons_mismatch_output(num_mismatch_land))
    3851  allocate(lats_mismatch_output(num_mismatch_land))
    3852  allocate(data_mismatch_output(num_mismatch_land))
    3853  allocate(iindx(num_mismatch_land))
    3854  allocate(jindx(num_mismatch_land))
    3855 
    3856  num = 0
    3857  do ij = 1, count_land_output
    3858  if (.not. bitmap_output(ij,1)) then
    3859  num = num+1
    3860  lons_mismatch_output(num) = lons_land_output(ij)
    3861  lats_mismatch_output(num) = lats_land_output(ij)
    3862  endif
    3863  enddo
    3864 
    3865  ! For those land points that with bitmap_output=.false. use
    3866  ! the nearest land points to interpolate.
    3867  print*,"before get_mismatch_index", count(bitmap_input)
    3868  call get_mismatch_index(imi,jmi,lon_in*d2r,
    3869  & lat_in*d2r,bitmap_input,num_mismatch_land,
    3870  & lons_mismatch_output*d2r,lats_mismatch_output*d2r,
    3871  & iindx, jindx )
    3872  endif
    3873 
    3874  data_mismatch_output = 0
    3875  call interpolate_mismatch(imi,jmi,oa_in(:,:,kwd),
    3876  & num_mismatch_land,data_mismatch_output,iindx,jindx)
    3877 
    3878  num = 0
    3879  do ij = 1, count_land_output
    3880  if (.not. bitmap_output(ij,1)) then
    3881  num = num+1
    3882  j = (ijsav_land_output(ij)-1)/im + 1
    3883  i = mod(ijsav_land_output(ij)-1,im) + 1
    3884  oa4(i,j,kwd) = data_mismatch_output(num)
    3885  if(i==372 .and. j== 611) then
    3886  print*, "ij=",ij, num, oa4(i,j,kwd),iindx(num),jindx(num)
    3887  endif
    3888  endif
    3889  enddo
    3890 
    3891 
    3892  enddo
    3893 
    3894  !OL
    3895  do kwd=1,4
    3896  bitmap_output = .false.
    3897  output_data_land = 0.0
    3898  call ipolates(int_opt, ipopt, kgds_input, kgds_output,
    3899  & (imi*jmi), count_land_output,
    3900  & 1, ibi, bitmap_input, ol_in(:,:,kwd),
    3901  & count_land_output, lats_land_output,
    3902  & lons_land_output, ibo,
    3903  & bitmap_output, output_data_land, iret)
    3904  if (iret /= 0) then
    3905  print*,'- ERROR IN IPOLATES ',iret
    3906  call errexit(4)
    3907  endif
    3908 
    3909  num_mismatch_land = 0
    3910  do ij = 1, count_land_output
    3911  if (bitmap_output(ij,1)) then
    3912  j = (ijsav_land_output(ij)-1)/im + 1
    3913  i = mod(ijsav_land_output(ij)-1,im) + 1
    3914  ol(i,j,kwd)=output_data_land(ij,1)
    3915  else ! default value
    3916  num_mismatch_land = num_mismatch_land + 1
    3917  endif
    3918  enddo
    3919  print*, "num_mismatch_land = ", num_mismatch_land
    3920 
    3921  data_mismatch_output = 0
    3922  call interpolate_mismatch(imi,jmi,ol_in(:,:,kwd),
    3923  & num_mismatch_land,data_mismatch_output,iindx,jindx)
    3924 
    3925  num = 0
    3926  do ij = 1, count_land_output
    3927  if (.not. bitmap_output(ij,1)) then
    3928  num = num+1
    3929  j = (ijsav_land_output(ij)-1)/im + 1
    3930  i = mod(ijsav_land_output(ij)-1,im) + 1
    3931  ol(i,j,kwd) = data_mismatch_output(num)
    3932  if(i==372 .and. j== 611) then
    3933  print*, "ij=",ij, num, ol(i,j,kwd),iindx(num),jindx(num)
    3934  endif
    3935  endif
    3936  enddo
    3937 
    3938 
    3939  enddo
    3940 
    3941  deallocate(lons_mismatch_output,lats_mismatch_output)
    3942  deallocate(data_mismatch_output,iindx,jindx)
    3943  deallocate(bitmap_output,output_data_land)
    3944  deallocate(ijsav_land_output,lats_land_output)
    3945  deallocate(lons_land_output)
    3946 
    3947  DO kwd=1,4
    3948  DO j=1,jm
    3949  DO i=1,im
    3950  t = oa4(i,j,kwd)
    3951  oa4(i,j,kwd) = sign( min( abs(t), 1. ), t )
    3952  ENDDO
    3953  ENDDO
    3954  ENDDO
    3955 C
    3956  ns0 = 0
    3957  ns1 = 0
    3958  ns2 = 0
    3959  ns3 = 0
    3960  ns4 = 0
    3961  ns5 = 0
    3962  ns6 = 0
    3963  DO kwd=1,4
    3964  DO j=1,jm
    3965  DO i=1,im
    3966  t = abs( oa4(i,j,kwd) )
    3967  IF(t .EQ. 0.) THEN
    3968  ioa4(i,j,kwd) = 0
    3969  ns0 = ns0 + 1
    3970  ELSE IF(t .GT. 0. .AND. t .LE. 1.) THEN
    3971  ioa4(i,j,kwd) = 1
    3972  ns1 = ns1 + 1
    3973  ELSE IF(t .GT. 1. .AND. t .LE. 10.) THEN
    3974  ioa4(i,j,kwd) = 2
    3975  ns2 = ns2 + 1
    3976  ELSE IF(t .GT. 10. .AND. t .LE. 100.) THEN
    3977  ioa4(i,j,kwd) = 3
    3978  ns3 = ns3 + 1
    3979  ELSE IF(t .GT. 100. .AND. t .LE. 1000.) THEN
    3980  ioa4(i,j,kwd) = 4
    3981  ns4 = ns4 + 1
    3982  ELSE IF(t .GT. 1000. .AND. t .LE. 10000.) THEN
    3983  ioa4(i,j,kwd) = 5
    3984  ns5 = ns5 + 1
    3985  ELSE IF(t .GT. 10000.) THEN
    3986  ioa4(i,j,kwd) = 6
    3987  ns6 = ns6 + 1
    3988  ENDIF
    3989  ENDDO
    3990  ENDDO
    3991  ENDDO
    3992 C
    3993  WRITE(6,*) "! MAKEOA3 EXIT"
    3994 C
    3995  RETURN
    3996  END SUBROUTINE makeoa3
    3997 
    4008  SUBROUTINE revers(IM, JM, numi, F, WRK)
    4010  REAL F(IM,JM), WRK(IM,JM)
    4011  integer numi(jm)
    4012  imb2 = im / 2
    4013  do i=1,im*jm
    4014  wrk(i,1) = f(i,1)
    4015  enddo
    4016  do j=1,jm
    4017  jr = jm - j + 1
    4018  do i=1,im
    4019  ir = i + imb2
    4020  if (ir .gt. im) ir = ir - im
    4021  f(ir,jr) = wrk(i,j)
    4022  enddo
    4023  enddo
    4024 !
    4025  tem = 0.0
    4026  do i=1,im
    4027  tem= tem + f(i,1)
    4028  enddo
    4029  tem = tem / im
    4030  do i=1,im
    4031  f(i,1) = tem
    4032  enddo
    4033 !
    4034  RETURN
    4035  END
    4036 
    4045  subroutine rg2gg(im,jm,numi,a)
    4046  implicit none
    4047  integer,intent(in):: im,jm,numi(jm)
    4048  real,intent(inout):: a(im,jm)
    4049  integer j,ir,ig
    4050  real r,t(im)
    4051  do j=1,jm
    4052  r=real(numi(j))/real(im)
    4053  do ig=1,im
    4054  ir=mod(nint((ig-1)*r),numi(j))+1
    4055  t(ig)=a(ir,j)
    4056  enddo
    4057  do ig=1,im
    4058  a(ig,j)=t(ig)
    4059  enddo
    4060  enddo
    4061  end subroutine
    4062 
    4071  subroutine gg2rg(im,jm,numi,a)
    4072  implicit none
    4073  integer,intent(in):: im,jm,numi(jm)
    4074  real,intent(inout):: a(im,jm)
    4075  integer j,ir,ig
    4076  real r,t(im)
    4077  do j=1,jm
    4078  r=real(numi(j))/real(im)
    4079  do ir=1,numi(j)
    4080  ig=nint((ir-1)/r)+1
    4081  t(ir)=a(ig,j)
    4082  enddo
    4083  do ir=1,numi(j)
    4084  a(ir,j)=t(ir)
    4085  enddo
    4086  enddo
    4087  end subroutine
    4088 
    4097  SUBROUTINE minmxj(IM,JM,A,title)
    4098  implicit none
    4099 
    4100  real A(IM,JM),rmin,rmax
    4101  integer i,j,IM,JM
    4102  character*8 title
    4103 
    4104  rmin=1.e+10
    4105  rmax=-rmin
    4106 csela....................................................
    4107 csela if(rmin.eq.1.e+10)return
    4108 csela....................................................
    4109  DO j=1,jm
    4110  DO i=1,im
    4111  if(a(i,j).ge.rmax)rmax=a(i,j)
    4112  if(a(i,j).le.rmin)rmin=a(i,j)
    4113  ENDDO
    4114  ENDDO
    4115  write(6,150)rmin,rmax,title
    4116 150 format('rmin=',e13.4,2x,'rmax=',e13.4,2x,a8,' ')
    4117 C
    4118  RETURN
    4119  END
    4120 
    4132  SUBROUTINE mnmxja(IM,JM,A,imax,jmax,title)
    4133  implicit none
    4134 
    4135  real A(IM,JM),rmin,rmax
    4136  integer i,j,IM,JM,imax,jmax
    4137  character*8 title
    4138 
    4139  rmin=1.e+10
    4140  rmax=-rmin
    4141 csela....................................................
    4142 csela if(rmin.eq.1.e+10)return
    4143 csela....................................................
    4144  DO j=1,jm
    4145  DO i=1,im
    4146  if(a(i,j).ge.rmax)then
    4147  rmax=a(i,j)
    4148  imax=i
    4149  jmax=j
    4150  endif
    4151  if(a(i,j).le.rmin)rmin=a(i,j)
    4152  ENDDO
    4153  ENDDO
    4154  write(6,150)rmin,rmax,title
    4155 150 format('rmin=',e13.4,2x,'rmax=',e13.4,2x,a8,' ')
    4156 C
    4157  RETURN
    4158  END
    4159 
    4194  SUBROUTINE spfft1(IMAX,INCW,INCG,KMAX,W,G,IDIR)
    4195  IMPLICIT NONE
    4196  INTEGER,INTENT(IN):: IMAX,INCW,INCG,KMAX,IDIR
    4197  COMPLEX,INTENT(INOUT):: W(INCW,KMAX)
    4198  REAL,INTENT(INOUT):: G(INCG,KMAX)
    4199  REAL:: AUX1(25000+INT(0.82*IMAX))
    4200  REAL:: AUX2(20000+INT(0.57*IMAX))
    4201  INTEGER:: NAUX1,NAUX2
    4202 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    4203  NAUX1=25000+int(0.82*imax)
    4204  naux2=20000+int(0.57*imax)
    4205 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    4206 C FOURIER TO PHYSICAL TRANSFORM.
    4207  SELECT CASE(idir)
    4208  CASE(1:)
    4209  SELECT CASE(digits(1.))
    4210  CASE(digits(1._4))
    4211  CALL scrft(1,w,incw,g,incg,imax,kmax,-1,1.,
    4212  & aux1,naux1,aux2,naux2,0.,0)
    4213  CALL scrft(0,w,incw,g,incg,imax,kmax,-1,1.,
    4214  & aux1,naux1,aux2,naux2,0.,0)
    4215  CASE(digits(1._8))
    4216  CALL dcrft(1,w,incw,g,incg,imax,kmax,-1,1.,
    4217  & aux1,naux1,aux2,naux2,0.,0)
    4218  CALL dcrft(0,w,incw,g,incg,imax,kmax,-1,1.,
    4219  & aux1,naux1,aux2,naux2,0.,0)
    4220  END SELECT
    4221 C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    4222 C PHYSICAL TO FOURIER TRANSFORM.
    4223  CASE(:-1)
    4224  SELECT CASE(digits(1.))
    4225  CASE(digits(1._4))
    4226  CALL srcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
    4227  & aux1,naux1,aux2,naux2,0.,0)
    4228  CALL srcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
    4229  & aux1,naux1,aux2,naux2,0.,0)
    4230  CASE(digits(1._8))
    4231  CALL drcft(1,g,incg,w,incw,imax,kmax,+1,1./imax,
    4232  & aux1,naux1,aux2,naux2,0.,0)
    4233  CALL drcft(0,g,incg,w,incw,imax,kmax,+1,1./imax,
    4234  & aux1,naux1,aux2,naux2,0.,0)
    4235  END SELECT
    4236  END SELECT
    4237  END SUBROUTINE
    4238 
    4244  subroutine read_g(glob,ITOPO)
    4245  implicit none
    4246 cc
    4247  integer*2 glob(360*120,180*120)
    4248 cc
    4249  integer ix,jx
    4250  integer ia,ja
    4251 cc
    4252  parameter(ix=40*120,jx=50*120)
    4253  parameter(ia=60*120,ja=30*120)
    4254 cc
    4255  integer*2 idat(ix,jx)
    4256  integer itopo
    4257 cc
    4258  integer i,j,inttyp
    4259 cc
    4260  real(kind=8) dloin,dlain,rlon,rlat
    4261 cc
    4262  open(235, file="./fort.235", access='direct', recl=43200*21600*2)
    4263  read(235,rec=1)glob
    4264  close(235)
    4265 cc
    4266  print*,' '
    4267  call maxmin (glob,360*120*180*120,'global0')
    4268 cc
    4269 cc
    4270  dloin=1.d0/120.d0
    4271  dlain=1.d0/120.d0
    4272 cc
    4273  rlon= -179.995833333333333333333333d0
    4274  rlat= 89.995833333333333333333333d0
    4275 cc
    4276  inttyp=-1 ! average rectangular subset
    4277 ccmr inttyp= 1 ! take closest grid point value
    4278 ccmr inttyp= 0 ! interpolate from four closest grid point values
    4279 cc
    4280 ! call la2ga_gtopo30(glob,360*120,180*120,
    4281 ! & dloin,dlain,rlon,rlat,inttyp,
    4282 ! & .true.,glob,
    4283 ! & 0,lonf,latg)
    4284 cc
    4285  return
    4286  end
    4287 
    4295  subroutine maxmin(ia,len,tile)
    4296 ccmr
    4297  implicit none
    4298 ccmr
    4299  integer*2 ia(len)
    4300  character*7 tile
    4301  integer iaamax, iaamin, len, j, m, ja, kount
    4302  integer(8) sum2,std,mean,isum
    4303  integer i_count_notset,kount_9
    4304 ! --- missing is -9999
    4305 c
    4306  isum = 0
    4307  sum2 = 0
    4308  kount = 0
    4309  kount_9 = 0
    4310  iaamax = -9999999
    4311 ccmr iaamin = 1
    4312  iaamin = 9999999
    4313  i_count_notset=0
    4314  do 10 m=1,len
    4315  ja=ia(m)
    4316 ccmr if ( ja .lt. 0 ) print *,' ja < 0:',ja
    4317 ccmr if ( ja .eq. -9999 ) goto 10
    4318  if ( ja .eq. -9999 ) then
    4319  kount_9=kount_9+1
    4320  goto 10
    4321  endif
    4322  if ( ja .eq. -12345 ) i_count_notset=i_count_notset+1
    4323 ccmr if ( ja .eq. 0 ) goto 11
    4324  iaamax = max0( iaamax, ja )
    4325  iaamin = min0( iaamin, ja )
    4326 ! iaamax = max0( iaamax, ia(m,j) )
    4327 ! iaamin = min0( iaamin, ia(m,j) )
    4328  11 continue
    4329  kount = kount + 1
    4330  isum = isum + ja
    4331 ccmr sum2 = sum2 + ifix( float(ja) * float(ja) )
    4332  sum2 = sum2 + ja*ja
    4333  10 continue
    4334 !
    4335  mean = isum/kount
    4336  std = ifix(sqrt(float((sum2/(kount))-mean**2)))
    4337  print*,tile,' max=',iaamax,' min=',iaamin,' sum=',isum,
    4338  & ' i_count_notset=',i_count_notset
    4339  print*,tile,' mean=',mean,' std.dev=',std,
    4340  & ' ko9s=',kount,kount_9,kount+kount_9
    4341  return
    4342  end
    4343 
    4353  SUBROUTINE minmaxj(IM,JM,A,title)
    4354  implicit none
    4355 
    4356  real(kind=4) A(IM,JM),rmin,rmax,undef
    4357  integer i,j,IM,JM,imax,jmax,imin,jmin,iundef
    4358  character*8 title,chara
    4359  data chara/' '/
    4360  chara=title
    4361  rmin=1.e+10
    4362  rmax=-rmin
    4363  imax=0
    4364  imin=0
    4365  jmax=0
    4366  jmin=0
    4367  iundef=0
    4368  undef=-9999.
    4369 csela....................................................
    4370 csela if(rmin.eq.1.e+10)return
    4371 csela....................................................
    4372  DO j=1,jm
    4373  DO i=1,im
    4374  if(a(i,j).ge.rmax)then
    4375  rmax=a(i,j)
    4376  imax=i
    4377  jmax=j
    4378  endif
    4379  if(a(i,j).le.rmin)then
    4380  if ( a(i,j) .eq. undef ) then
    4381  iundef = iundef + 1
    4382  else
    4383  rmin=a(i,j)
    4384  imin=i
    4385  jmin=j
    4386  endif
    4387  endif
    4388  ENDDO
    4389  ENDDO
    4390  write(6,150)chara,rmin,imin,jmin,rmax,imax,jmax,iundef
    4391 150 format(1x,a8,2x,'rmin=',e13.4,2i6,2x,'rmax=',e13.4,3i6)
    4392 C
    4393  RETURN
    4394  END
    4395 
    4405  subroutine latlon2xyz(siz,lon, lat, x, y, z)
    4406  implicit none
    4407  integer, intent(in) :: siz
    4408  real, intent(in) :: lon(siz), lat(siz)
    4409  real, intent(out) :: x(siz), y(siz), z(siz)
    4410 
    4411  integer n
    4412 
    4413  do n = 1, siz
    4414  x(n) = cos(lat(n))*cos(lon(n))
    4415  y(n) = cos(lat(n))*sin(lon(n))
    4416  z(n) = sin(lat(n))
    4417  enddo
    4418  end
    4419 
    4427  FUNCTION spherical_angle(v1, v2, v3)
    4428  implicit none
    4429  real, parameter :: epsln30 = 1.e-30
    4430  real, parameter :: pi=3.1415926535897931
    4431  real v1(3), v2(3), v3(3)
    4432  real spherical_angle
    4433 
    4434  real px, py, pz, qx, qy, qz, ddd;
    4435 
    4436  ! vector product between v1 and v2
    4437  px = v1(2)*v2(3) - v1(3)*v2(2)
    4438  py = v1(3)*v2(1) - v1(1)*v2(3)
    4439  pz = v1(1)*v2(2) - v1(2)*v2(1)
    4440  ! vector product between v1 and v3
    4441  qx = v1(2)*v3(3) - v1(3)*v3(2);
    4442  qy = v1(3)*v3(1) - v1(1)*v3(3);
    4443  qz = v1(1)*v3(2) - v1(2)*v3(1);
    4444 
    4445  ddd = (px*px+py*py+pz*pz)*(qx*qx+qy*qy+qz*qz);
    4446  if ( ddd <= 0.0 ) then
    4447  spherical_angle = 0.
    4448  else
    4449  ddd = (px*qx+py*qy+pz*qz) / sqrt(ddd);
    4450  if( abs(ddd-1) < epsln30 ) ddd = 1;
    4451  if( abs(ddd+1) < epsln30 ) ddd = -1;
    4452  if ( ddd>1. .or. ddd<-1. ) then
    4453  !FIX to correctly handle co-linear points (angle near pi or 0) */
    4454  if (ddd < 0.) then
    4455  spherical_angle = pi
    4456  else
    4457  spherical_angle = 0.
    4458  endif
    4459  else
    4460  spherical_angle = acos( ddd )
    4461  endif
    4462  endif
    4463 
    4464  return
    4465  END
    4466 
    4477  FUNCTION inside_a_polygon(lon1, lat1, npts, lon2, lat2)
    4478  implicit none
    4479  real, parameter :: epsln10 = 1.e-10
    4480  real, parameter :: epsln8 = 1.e-8
    4481  real, parameter :: pi=3.1415926535897931
    4482  real, parameter :: range_check_criteria=0.05
    4483  real :: anglesum, angle, spherical_angle
    4484  integer i, ip1
    4485  real lon1, lat1
    4486  integer npts
    4487  real lon2(npts), lat2(npts)
    4488  real x2(npts), y2(npts), z2(npts)
    4489  real lon1_1d(1), lat1_1d(1)
    4490  real x1(1), y1(1), z1(1)
    4491  real pnt0(3),pnt1(3),pnt2(3)
    4492  logical inside_a_polygon
    4493  real max_x2,min_x2,max_y2,min_y2,max_z2,min_z2
    4494  !first convert to cartesian grid */
    4495  call latlon2xyz(npts,lon2, lat2, x2, y2, z2);
    4496  lon1_1d(1) = lon1
    4497  lat1_1d(1) = lat1
    4498  call latlon2xyz(1,lon1_1d, lat1_1d, x1, y1, z1);
    4499  inside_a_polygon = .false.
    4500  max_x2 = maxval(x2)
    4501  if( x1(1) > max_x2+range_check_criteria ) return
    4502  min_x2 = minval(x2)
    4503  if( x1(1)+range_check_criteria < min_x2 ) return
    4504  max_y2 = maxval(y2)
    4505  if( y1(1) > max_y2+range_check_criteria ) return
    4506  min_y2 = minval(y2)
    4507  if( y1(1)+range_check_criteria < min_y2 ) return
    4508  max_z2 = maxval(z2)
    4509  if( z1(1) > max_z2+range_check_criteria ) return
    4510  min_z2 = minval(z2)
    4511  if( z1(1)+range_check_criteria < min_z2 ) return
    4512 
    4513  pnt0(1) = x1(1)
    4514  pnt0(2) = y1(1)
    4515  pnt0(3) = z1(1)
    4516 
    4517  anglesum = 0;
    4518  do i = 1, npts
    4519  if(abs(x1(1)-x2(i)) < epsln10 .and.
    4520  & abs(y1(1)-y2(i)) < epsln10 .and.
    4521  & abs(z1(1)-z2(i)) < epsln10 ) then ! same as the corner point
    4522  inside_a_polygon = .true.
    4523  return
    4524  endif
    4525  ip1 = i+1
    4526  if(ip1>npts) ip1 = 1
    4527  pnt1(1) = x2(i)
    4528  pnt1(2) = y2(i)
    4529  pnt1(3) = z2(i)
    4530  pnt2(1) = x2(ip1)
    4531  pnt2(2) = y2(ip1)
    4532  pnt2(3) = z2(ip1)
    4533 
    4534  angle = spherical_angle(pnt0, pnt2, pnt1);
    4535 ! anglesum = anglesum + spherical_angle(pnt0, pnt2, pnt1);
    4536  anglesum = anglesum + angle
    4537  enddo
    4538 
    4539  if(abs(anglesum-2*pi) < epsln8) then
    4540  inside_a_polygon = .true.
    4541  else
    4542  inside_a_polygon = .false.
    4543  endif
    4544 
    4545  return
    4546 
    4547  end
    4548 
    4572  function get_xnsum(lon1,lat1,lon2,lat2,IMN,JMN,
    4573  & glat,zavg,zslm,delxn)
    4574  implicit none
    4575 
    4576  real get_xnsum
    4577  logical verbose
    4578  real lon1,lat1,lon2,lat2,oro,delxn
    4579  integer imn,jmn
    4580  real glat(jmn)
    4581  integer zavg(imn,jmn),zslm(imn,jmn)
    4582  integer i, j, ist, ien, jst, jen, i1
    4583  real height
    4584  real xland,xwatr,xl1,xs1,slm,xnsum
    4585  !---figure out ist,ien,jst,jen
    4586  do j = 1, jmn
    4587  if( glat(j) .GT. lat1 ) then
    4588  jst = j
    4589  exit
    4590  endif
    4591  enddo
    4592  do j = 1, jmn
    4593  if( glat(j) .GT. lat2 ) then
    4594  jen = j
    4595  exit
    4596  endif
    4597  enddo
    4598 
    4599 
    4600  ist = lon1/delxn + 1
    4601  ien = lon2/delxn
    4602  if(ist .le.0) ist = ist + imn
    4603  if(ien < ist) ien = ien + imn
    4604 ! if(verbose) print*, "ist,ien=",ist,ien,jst,jen
    4605 
    4606  !--- compute average oro
    4607  oro = 0.0
    4608  xnsum = 0
    4609  xland = 0
    4610  xwatr = 0
    4611  xl1 = 0
    4612  xs1 = 0
    4613  do j = jst,jen
    4614  do i1 = 1, ien - ist + 1
    4615  i = ist + i1 -1
    4616  if( i .LE. 0) i = i + imn
    4617  if( i .GT. imn) i = i - imn
    4618  xland = xland + float(zslm(i,j))
    4619  xwatr = xwatr + float(1-zslm(i,j))
    4620  xnsum = xnsum + 1.
    4621  height = float(zavg(i,j))
    4622  IF(height.LT.-990.) height = 0.0
    4623  xl1 = xl1 + height * float(zslm(i,j))
    4624  xs1 = xs1 + height * float(1-zslm(i,j))
    4625  enddo
    4626  enddo
    4627  if( xnsum > 1.) THEN
    4628  slm = float(nint(xland/xnsum))
    4629  IF(slm.NE.0.) THEN
    4630  oro= xl1 / xland
    4631  ELSE
    4632  oro = xs1 / xwatr
    4633  ENDIF
    4634  ENDIF
    4635 
    4636  get_xnsum = 0
    4637  do j = jst, jen
    4638  do i1= 1, ien-ist+1
    4639  i = ist + i1 -1
    4640  if( i .LE. 0) i = i + imn
    4641  if( i .GT. imn) i = i - imn
    4642  height = float(zavg(i,j))
    4643  IF(height.LT.-990.) height = 0.0
    4644  IF ( height .gt. oro ) get_xnsum = get_xnsum + 1
    4645  enddo
    4646  enddo
    4647 ! if(verbose) print*, "get_xnsum=", get_xnsum, oro
    4648 
    4649  end function get_xnsum
    4650 
    4679  subroutine get_xnsum2(lon1,lat1,lon2,lat2,IMN,JMN,
    4680  & glat,zavg,zslm,delxn,xnsum1,xnsum2,HC)
    4681  implicit none
    4682 
    4683  real, intent(out) :: xnsum1,xnsum2,HC
    4684  logical verbose
    4685  real lon1,lat1,lon2,lat2,oro,delxn
    4686  integer IMN,JMN
    4687  real glat(JMN)
    4688  integer zavg(IMN,JMN),zslm(IMN,JMN)
    4689  integer i, j, ist, ien, jst, jen, i1
    4690  real HEIGHT, var
    4691  real XW1,XW2,slm,xnsum
    4692  !---figure out ist,ien,jst,jen
    4693  do j = 1, jmn
    4694  if( glat(j) .GT. lat1 ) then
    4695  jst = j
    4696  exit
    4697  endif
    4698  enddo
    4699  do j = 1, jmn
    4700  if( glat(j) .GT. lat2 ) then
    4701  jen = j
    4702  exit
    4703  endif
    4704  enddo
    4705 
    4706 
    4707  ist = lon1/delxn + 1
    4708  ien = lon2/delxn
    4709  if(ist .le.0) ist = ist + imn
    4710  if(ien < ist) ien = ien + imn
    4711 ! if(verbose) print*, "ist,ien=",ist,ien,jst,jen
    4712 
    4713  !--- compute average oro
    4714  xnsum = 0
    4715  xw1 = 0
    4716  xw2 = 0
    4717  do j = jst,jen
    4718  do i1 = 1, ien - ist + 1
    4719  i = ist + i1 -1
    4720  if( i .LE. 0) i = i + imn
    4721  if( i .GT. imn) i = i - imn
    4722  xnsum = xnsum + 1.
    4723  height = float(zavg(i,j))
    4724  IF(height.LT.-990.) height = 0.0
    4725  xw1 = xw1 + height
    4726  xw2 = xw2 + height ** 2
    4727  enddo
    4728  enddo
    4729  var = sqrt(max(xw2/xnsum-(xw1/xnsum)**2,0.))
    4730  hc = 1116.2 - 0.878 * var
    4731  xnsum1 = 0
    4732  xnsum2 = 0
    4733  do j = jst, jen
    4734  do i1= 1, ien-ist+1
    4735  i = ist + i1 -1
    4736  if( i .LE. 0) i = i + imn
    4737  if( i .GT. imn) i = i - imn
    4738  height = float(zavg(i,j))
    4739  IF ( height .gt. hc ) xnsum1 = xnsum1 + 1
    4740  xnsum2 = xnsum2 + 1
    4741  enddo
    4742  enddo
    4743 
    4744  end subroutine get_xnsum2
    4745 
    4775  subroutine get_xnsum3(lon1,lat1,lon2,lat2,IMN,JMN,
    4776  & glat,zavg,zslm,delxn,xnsum1,xnsum2,HC)
    4777  implicit none
    4778 
    4779  real, intent(out) :: xnsum1,xnsum2
    4780  real lon1,lat1,lon2,lat2,oro,delxn
    4781  integer IMN,JMN
    4782  real glat(JMN)
    4783  integer zavg(IMN,JMN),zslm(IMN,JMN)
    4784  integer i, j, ist, ien, jst, jen, i1
    4785  real HEIGHT, HC
    4786  real XW1,XW2,slm,xnsum
    4787  !---figure out ist,ien,jst,jen
    4788  ! if lat1 or lat 2 is 90 degree. set jst = JMN
    4789  jst = jmn
    4790  jen = jmn
    4791  do j = 1, jmn
    4792  if( glat(j) .GT. lat1 ) then
    4793  jst = j
    4794  exit
    4795  endif
    4796  enddo
    4797  do j = 1, jmn
    4798  if( glat(j) .GT. lat2 ) then
    4799  jen = j
    4800  exit
    4801  endif
    4802  enddo
    4803 
    4804 
    4805  ist = lon1/delxn + 1
    4806  ien = lon2/delxn
    4807  if(ist .le.0) ist = ist + imn
    4808  if(ien < ist) ien = ien + imn
    4809 ! if(verbose) print*, "ist,ien=",ist,ien,jst,jen
    4810 
    4811  xnsum1 = 0
    4812  xnsum2 = 0
    4813  do j = jst, jen
    4814  do i1= 1, ien-ist+1
    4815  i = ist + i1 -1
    4816  if( i .LE. 0) i = i + imn
    4817  if( i .GT. imn) i = i - imn
    4818  height = float(zavg(i,j))
    4819  IF ( height .gt. hc ) xnsum1 = xnsum1 + 1
    4820  xnsum2 = xnsum2 + 1
    4821  enddo
    4822  enddo
    4823 
    4824  end subroutine get_xnsum3
    4825 
    4839  subroutine nanc(a,l,c)
    4840  integer inan1,inan2,inan3,inan4,inaq1,inaq2,inaq3,inaq4
    4841  real word
    4842  integer itest
    4843  equivalence (itest,word)
    4844 c
    4845 c signaling NaN
    4846  data inan1/x'7F800001'/
    4847  data inan2/x'7FBFFFFF'/
    4848  data inan3/x'FF800001'/
    4849  data inan4/x'FFBFFFFF'/
    4850 c
    4851 c quiet NaN
    4852 c
    4853  data inaq1/x'7FC00000'/
    4854  data inaq2/x'7FFFFFFF'/
    4855  data inaq3/x'FFC00000'/
    4856  data inaq4/x'FFFFFFFF'/
    4857 c
    4858  real(kind=8)a(l),rtc,t1,t2
    4859  character*24 cn
    4860  character*(*) c
    4861 c t1=rtc()
    4862 cgwv print *, ' nanc call ',c
    4863  do k=1,l
    4864  word=a(k)
    4865  if( (itest .GE. inan1 .AND. itest .LE. inan2) .OR.
    4866  * (itest .GE. inan3 .AND. itest .LE. inan4) ) then
    4867  print *,' NaNs detected at word',k,' ',c
    4868  return
    4869  endif
    4870  if( (itest .GE. inaq1 .AND. itest .LE. inaq2) .OR.
    4871  * (itest .GE. inaq3 .AND. itest .LE. inaq4) ) then
    4872  print *,' NaNq detected at word',k,' ',c
    4873  return
    4874  endif
    4875 
    4876  101 format(e20.10)
    4877  end do
    4878 c t2=rtc()
    4879 cgwv print 102,l,t2-t1,c
    4880  102 format(' time to check ',i9,' words is ',f10.4,' ',a24)
    4881  return
    4882  end
    4883 
    4888  real function timef()
    4889  character(8) :: date
    4890  character(10) :: time
    4891  character(5) :: zone
    4892  integer,dimension(8) :: values
    4893  integer :: total
    4894  real :: elapsed
    4895  call date_and_time(date,time,zone,values)
    4896  total=(3600*values(5))+(60*values(6))
    4897  * +values(7)
    4898  elapsed=float(total) + (1.0e-3*float(values(8)))
    4899  timef=elapsed
    4900  return
    4901  end
    subroutine get_index(IMN, JMN, npts, lonO, latO, DELXN, jst, jen, ilist, numx)
    Determine the location of a cubed-sphere point within the high-resolution orography data...
    +
    real function timef()
    Get the date/time for the system clock.
    +
    subroutine netcdf_err(err, string)
    Check NetCDF error code and output the error message.
    Definition: netcdf_io.F90:219
    +
    real function get_lat_angle(dy, DEGRAD)
    Convert the &#39;y&#39; direction distance of a cubed-sphere grid point to the corresponding distance in lati...
    +
    subroutine mnmxja(IM, JM, A, imax, jmax, title)
    Print out the maximum and minimum values of an array.
    +
    subroutine read_g(glob, ITOPO)
    Read input global 30-arc second orography data.
    +
    real function spherical_angle(v1, v2, v3)
    Compute spherical angle.
    +
    subroutine minmaxj(IM, JM, A, title)
    Print out the maximum and minimum values of an array and their i/j location.
    +
    subroutine get_xnsum3(lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)
    Count the number of high-resolution orography points that are higher than a critical value inside a m...
    +
    subroutine get_xnsum2(lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn, xnsum1, xnsum2, HC)
    Count the number of high-resolution orography points that are higher than a critical value inside a m...
    +
    subroutine rg2gg(im, jm, numi, a)
    Convert from a reduced grid to a full grid.
    +
    subroutine write_netcdf(im, jm, slm, land_frac, oro, orf, hprime, ntiles, tile, geolon, geolat, lon, lat)
    Write out orography file in netcdf format.
    Definition: netcdf_io.F90:22
    +
    subroutine gg2rg(im, jm, numi, a)
    Convert from a full grid to a reduced grid.
    +
    logical function inside_a_polygon(lon1, lat1, npts, lon2, lat2)
    Check if a point is inside a polygon.
    +
    real function spherical_distance(theta1, phi1, theta2, phi2)
    Compute a great circle distance between two points.
    +
    subroutine nanc(a, l, c)
    Report NaNS and NaNQ within an address range for 8-byte real words.
    +
    subroutine get_mismatch_index(im_in, jm_in, geolon_in, geolat_in, bitmap_in, num_out, lon_out, lat_out, iindx, jindx)
    For unmapped land points, find the nearest land point on the input data and pass back its i/j index...
    +
    subroutine maxmin(ia, len, tile)
    Print the maximum, mininum, mean and standard deviation of an array.
    +
    subroutine interpolate_mismatch(im_in, jm_in, data_in, num_out, data_out, iindx, jindx)
    Replace unmapped model land points with the nearest land point on the input grid. ...
    +
    real function get_lon_angle(dx, lat, DEGRAD)
    Convert the &#39;x&#39; direction distance of a cubed-sphere grid point to the corresponding distance in long...
    +
    subroutine latlon2xyz(siz, lon, lat, x, y, z)
    Convert from latitude and longitude to x,y,z coordinates.
    +
    subroutine minmxj(IM, JM, A, title)
    Print out the maximum and minimum values of an array.
    +
    real function get_xnsum(lon1, lat1, lon2, lat2, IMN, JMN, glat, zavg, zslm, delxn)
    Count the number of high-resolution orography points that are higher than the model grid box average ...
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/nav_f.png b/ver-1.11.0/orog_mask_tools/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/nav_g.png b/ver-1.11.0/orog_mask_tools/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    nb.F90 File Reference
    +
    +
    + +

    This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Types

    type  cs_nb::nb_gp_idx
     Neighboring cell descriptor. More...
     
    type  cs_nb::nb_tile_idx
     Neighboring tile descriptor. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions/Subroutines

    integer function cs_nb::bndry (i, j)
     Get boundary type from indices for global grid. More...
     
    integer function cs_nb::bndry_reg (i, j)
     Get boundary type from indices for regional grid. More...
     
    subroutine cs_nb::idx_init (cres_in)
     Initialize inter-panel neighbor index for global grid. More...
     
    subroutine cs_nb::idx_init_reg (xres_in, yres_in)
     Initialize resolution module variables for regional grid. More...
     
    subroutine cs_nb::neighbors (tile, i, j, nb)
     Get neighbors of cell 'c' at (tile, i, j) for global grid. More...
     
    subroutine cs_nb::neighbors_reg (i, j, nb)
     Get neighbors of cell 'c' at (tile, i, j) for regional grid. More...
     
    + + + + + + + + + + + + + +

    +Variables

    integer cs_nb::cres
     Cubed sphere resolution. More...
     
    type(nb_tile_idx), dimension(4, 6) cs_nb::nb_tile
     Descriptor for each edge of each tile on the cubed sphere. More...
     
    integer cs_nb::xres
     x resolution of regional grid More...
     
    integer cs_nb::yres
     y resolution of regional grid More...
     
    +

    Detailed Description

    +

    This module contains the subroutines that find the adjacent neighbors of a given cell, in a cubed sphere grid.

    +

    Each neighbor is in the form of (i,j,tile).

    +
    Author
    Ning Wang
    +
    Date
    July 1, 2020
    + +

    Definition in file nb.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ bndry()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    integer function cs_nb::bndry (integer i,
    integer j 
    )
    +
    + +

    Get boundary type from indices for global grid.

    +
    Parameters
    + + + +
    [in]icell index
    [in]jcell index
    +
    +
    +
    Returns
    bndry cell boundary type
    +
    Author
    Ning Wang
    + +

    Definition at line 107 of file nb.F90.

    + +
    +
    + +

    ◆ bndry_reg()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    integer function cs_nb::bndry_reg (integer i,
    integer j 
    )
    +
    + +

    Get boundary type from indices for regional grid.

    +
    Parameters
    + + + +
    [in]icell index
    [in]jcell index
    +
    +
    +
    Returns
    cell boundary type
    +
    Author
    Ning Wang
    + +

    Definition at line 141 of file nb.F90.

    + +
    +
    + +

    ◆ idx_init()

    + +
    +
    + + + + + + + + +
    subroutine cs_nb::idx_init (integer cres_in)
    +
    + +

    Initialize inter-panel neighbor index for global grid.

    +
    Parameters
    + + +
    [in]cres_incubed sphere resolution (48, 96...)
    +
    +
    +
       _______1_______
    +  |               |       1-upper, 2-bottom, 3-left, 4-right 
    +  |               |
    +  |               |
    + 3|               |4
    +  |               |
    +  |               |
    +  |_______________|
    +          2
    +      Figure 1. Boundary numbers
    Author
    Ning Wang
    + +

    Definition at line 49 of file nb.F90.

    + +
    +
    + +

    ◆ idx_init_reg()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine cs_nb::idx_init_reg (integer, intent(in) xres_in,
    integer, intent(in) yres_in 
    )
    +
    + +

    Initialize resolution module variables for regional grid.

    +
    Parameters
    + + + +
    [in]xres_inx resolution
    [in]yres_iny resolution
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 92 of file nb.F90.

    + +
    +
    + +

    ◆ neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine cs_nb::neighbors (integer tile,
    integer i,
    integer j,
    type(nb_gp_idxnb 
    )
    +
    + +

    Get neighbors of cell 'c' at (tile, i, j) for global grid.

    +
         ______________
    +    |    |    |    |              ________
    +    | 5  | 1  | 6  |             /\ 1 \ 6 
    +    |____|____|____|            /  \___\___
    +    |    |    |    |           /\2 / c / 3 /
    +    | 2  | c  | 3  |          /  \/___/___/
    +    |____|____|____|          \7 / 4 / 8 /
    +    |    |    |    |           \/___/___/
    +    | 7  | 4  | 8  |       
    +    |____|____|____|    
    +  
    + Figure 2.  Eight neighbors of cell 'c' and special cases at upper left
    + cornner of the tile
    Parameters
    + + + + + +
    [in]tiletile face
    [in]icell index
    [in]jcell index
    [out]nbneighbors
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 193 of file nb.F90.

    + +
    +
    + +

    ◆ neighbors_reg()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine cs_nb::neighbors_reg (integer i,
    integer j,
    type(nb_gp_idxnb 
    )
    +
    + +

    Get neighbors of cell 'c' at (tile, i, j) for regional grid.

    +
    Parameters
    + + + + +
    [in]icell index
    [in]jcell index
    [out]nbneighbors
    +
    +
    +
    Author
    Ning Wang
    + +

    Definition at line 394 of file nb.F90.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ cres

    + +
    +
    + + + + +
    integer cs_nb::cres
    +
    + +

    Cubed sphere resolution.

    + +

    Definition at line 24 of file nb.F90.

    + +
    +
    + +

    ◆ nb_tile

    + +
    +
    + + + + +
    type(nb_tile_idx), dimension(4,6) cs_nb::nb_tile
    +
    + +

    Descriptor for each edge of each tile on the cubed sphere.

    + +

    Definition at line 22 of file nb.F90.

    + +
    +
    + +

    ◆ xres

    + +
    +
    + + + + +
    integer cs_nb::xres
    +
    + +

    x resolution of regional grid

    + +

    Definition at line 25 of file nb.F90.

    + +
    +
    + +

    ◆ yres

    + +
    +
    + + + + +
    integer cs_nb::yres
    +
    + +

    y resolution of regional grid

    + +

    Definition at line 26 of file nb.F90.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/nb_8F90.js b/ver-1.11.0/orog_mask_tools/nb_8F90.js new file mode 100644 index 000000000..ef4508693 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/nb_8F90.js @@ -0,0 +1,15 @@ +var nb_8F90 = +[ + [ "nb_gp_idx", "structcs__nb_1_1nb__gp__idx.html", "structcs__nb_1_1nb__gp__idx" ], + [ "nb_tile_idx", "structcs__nb_1_1nb__tile__idx.html", "structcs__nb_1_1nb__tile__idx" ], + [ "bndry", "nb_8F90.html#a7af27e607c043a485adf2649e56d66a9", null ], + [ "bndry_reg", "nb_8F90.html#a99e73c2554abae50e5ed72d37368459c", null ], + [ "idx_init", "nb_8F90.html#aaae14862ca35fcdae38da182a23a27e7", null ], + [ "idx_init_reg", "nb_8F90.html#ab9cf42e22e061e7a9061472878d87c35", null ], + [ "neighbors", "nb_8F90.html#ace6fa1f89e4876ab016e16eea286840f", null ], + [ "neighbors_reg", "nb_8F90.html#a234b842800712dc795acc1236aece069", null ], + [ "cres", "nb_8F90.html#aa93675ed7244e1cd4cd615058f99a99d", null ], + [ "nb_tile", "nb_8F90.html#aecec88fcf61e8758e7ecfaf9b20f6646", null ], + [ "xres", "nb_8F90.html#af51ba8f325f52f48251bcad67666814f", null ], + [ "yres", "nb_8F90.html#a4cd1b2f08cc1882705ca33b622801f45", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/nb_8F90_source.html b/ver-1.11.0/orog_mask_tools/nb_8F90_source.html new file mode 100644 index 000000000..f913887df --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/nb_8F90_source.html @@ -0,0 +1,107 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    nb.F90
    +
    +
    +Go to the documentation of this file.
    1 
    7 MODULE cs_nb
    8  IMPLICIT NONE
    9 
    12  INTEGER :: nb_tile_num
    13  CHARACTER (1) :: nb_tile_bndry
    14  END TYPE nb_tile_idx
    15 
    17  TYPE nb_gp_idx
    18  INTEGER :: gp_type
    19  INTEGER :: ijt(3,8)
    20  END TYPE nb_gp_idx
    21 
    22  TYPE(nb_tile_idx):: nb_tile(4,6)
    23 
    24  INTEGER :: cres
    25  integer :: xres
    26  integer :: yres
    27 
    28 CONTAINS
    29 
    48  SUBROUTINE idx_init(cres_in)
    49  INTEGER :: cres_in
    50 
    51  nb_tile(1,1)%nb_tile_num = 3; nb_tile(1,1)%nb_tile_bndry ='l'
    52  nb_tile(2,1)%nb_tile_num = 6; nb_tile(2,1)%nb_tile_bndry ='t'
    53  nb_tile(3,1)%nb_tile_num = 5; nb_tile(3,1)%nb_tile_bndry ='t'
    54  nb_tile(4,1)%nb_tile_num = 2; nb_tile(4,1)%nb_tile_bndry ='l'
    55 
    56  nb_tile(1,2)%nb_tile_num = 3; nb_tile(1,2)%nb_tile_bndry ='b'
    57  nb_tile(2,2)%nb_tile_num = 6; nb_tile(2,2)%nb_tile_bndry ='r'
    58  nb_tile(3,2)%nb_tile_num = 1; nb_tile(3,2)%nb_tile_bndry ='r'
    59  nb_tile(4,2)%nb_tile_num = 4; nb_tile(4,2)%nb_tile_bndry ='b'
    60 
    61  nb_tile(1,3)%nb_tile_num = 5; nb_tile(1,3)%nb_tile_bndry ='l'
    62  nb_tile(2,3)%nb_tile_num = 2; nb_tile(2,3)%nb_tile_bndry ='t'
    63  nb_tile(3,3)%nb_tile_num = 1; nb_tile(3,3)%nb_tile_bndry ='t'
    64  nb_tile(4,3)%nb_tile_num = 4; nb_tile(4,3)%nb_tile_bndry ='l'
    65 
    66  nb_tile(1,4)%nb_tile_num = 5; nb_tile(1,4)%nb_tile_bndry ='b'
    67  nb_tile(2,4)%nb_tile_num = 2; nb_tile(2,4)%nb_tile_bndry ='r'
    68  nb_tile(3,4)%nb_tile_num = 3; nb_tile(3,4)%nb_tile_bndry ='r'
    69  nb_tile(4,4)%nb_tile_num = 6; nb_tile(4,4)%nb_tile_bndry ='b'
    70 
    71  nb_tile(1,5)%nb_tile_num = 1; nb_tile(1,5)%nb_tile_bndry ='l'
    72  nb_tile(2,5)%nb_tile_num = 4; nb_tile(2,5)%nb_tile_bndry ='t'
    73  nb_tile(3,5)%nb_tile_num = 3; nb_tile(3,5)%nb_tile_bndry ='t'
    74  nb_tile(4,5)%nb_tile_num = 6; nb_tile(4,5)%nb_tile_bndry ='l'
    75 
    76  nb_tile(1,6)%nb_tile_num = 1; nb_tile(1,6)%nb_tile_bndry ='b'
    77  nb_tile(2,6)%nb_tile_num = 4; nb_tile(2,6)%nb_tile_bndry ='r'
    78  nb_tile(3,6)%nb_tile_num = 5; nb_tile(3,6)%nb_tile_bndry ='r'
    79  nb_tile(4,6)%nb_tile_num = 2; nb_tile(4,6)%nb_tile_bndry ='b'
    80 
    81  cres = cres_in
    82 
    83  END SUBROUTINE idx_init
    84 
    91  SUBROUTINE idx_init_reg(xres_in, yres_in)
    92  INTEGER, INTENT(IN) :: xres_in, yres_in
    93 
    94  xres = xres_in
    95  yres = yres_in
    96 
    97  END SUBROUTINE idx_init_reg
    98 
    106  INTEGER FUNCTION bndry(i, j)
    107  INTEGER :: i,j
    108 
    109  bndry = 0 ! no boundary
    110 
    111  IF (j == cres) THEN ! upper boundary
    112  bndry = 1
    113  IF (i == 1) THEN
    114  bndry = 13
    115  ELSE IF (i == cres) THEN
    116  bndry = 14
    117  ENDIF
    118  ELSE IF (j == 1) THEN ! bottom boundary
    119  bndry = 2
    120  IF (i == 1) THEN
    121  bndry = 23
    122  ELSE IF (i == cres) THEN
    123  bndry = 24
    124  ENDIF
    125  ELSE IF (i == 1) THEN ! left boundary
    126  bndry = 3
    127  ELSE IF (i == cres) THEN ! right boundary
    128  bndry = 4
    129  ENDIF
    130 
    131  END FUNCTION bndry
    132 
    140  INTEGER FUNCTION bndry_reg(i, j)
    141  INTEGER :: i,j
    142 
    143  bndry_reg = 0 ! no boundary
    144 
    145  IF (j == yres) THEN ! upper boundary
    146  bndry_reg = 1
    147  IF (i == 1) THEN
    148  bndry_reg = 13
    149  ELSE IF (i == xres) THEN
    150  bndry_reg = 14
    151  ENDIF
    152  ELSE IF (j == 1) THEN ! bottom boundary
    153  bndry_reg = 2
    154  IF (i == 1) THEN
    155  bndry_reg = 23
    156  ELSE IF (i == xres) THEN
    157  bndry_reg = 24
    158  ENDIF
    159  ELSE IF (i == 1) THEN ! left boundary
    160  bndry_reg = 3
    161  ELSE IF (i == xres) THEN ! right boundary
    162  bndry_reg = 4
    163  ENDIF
    164 
    165  END FUNCTION bndry_reg
    166 
    192  SUBROUTINE neighbors(tile, i, j, nb)
    193  INTEGER :: tile, i, j
    194  TYPE(nb_gp_idx) :: nb
    195 
    196  INTEGER :: bd, nb_t_num
    197 
    198  nb%gp_type = bndry(i,j)
    199  IF (nb%gp_type == 0) THEN ! interior (non-boundary) cell
    200  ! top, bottom, left, and right
    201  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    202  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    203  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    204  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    205  ! top left, top right, bottom left, and bottom right
    206  nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
    207  nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
    208  nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
    209  nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
    210  ELSEIF (nb%gp_type == 1) THEN ! top boundary cell
    211  bd = 1
    212  nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
    213  nb%ijt(3,1)=nb_t_num; nb%ijt(3,5)=nb_t_num; nb%ijt(3,6)=nb_t_num
    214  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    215  nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i;
    216  nb%ijt(1,5) = 1; nb%ijt(2,5) = cres+1-(i-1);
    217  nb%ijt(1,6) = 1; nb%ijt(2,6) = cres+1-(i+1);
    218  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    219  nb%ijt(1,1) = i; nb%ijt(2,1) = 1
    220  nb%ijt(1,5) = i-1; nb%ijt(2,5) = 1
    221  nb%ijt(1,6) = i+1; nb%ijt(2,6) = 1
    222  ENDIF
    223  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    224  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    225  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    226  nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
    227  nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
    228  ELSEIF (nb%gp_type == 2) THEN ! bottom boundary cell
    229  bd = 2
    230  nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
    231  nb%ijt(3,4)=nb_t_num; nb%ijt(3,7)=nb_t_num; nb%ijt(3,8)=nb_t_num
    232  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    233  nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i;
    234  nb%ijt(1,7) = cres; nb%ijt(2,7) = cres+1-(i-1);
    235  nb%ijt(1,8) = cres; nb%ijt(2,8) = cres+1-(i+1);
    236  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    237  nb%ijt(1,4) = i; nb%ijt(2,4) = cres
    238  nb%ijt(1,7) = i-1; nb%ijt(2,7) = cres
    239  nb%ijt(1,8) = i+1; nb%ijt(2,8) = cres
    240  ENDIF
    241  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    242  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    243  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    244  nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
    245  nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
    246  ELSEIF (nb%gp_type == 3) THEN ! left boundary cell
    247  bd = 3
    248  nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
    249  nb%ijt(3,2)=nb_t_num; nb%ijt(3,5)=nb_t_num; nb%ijt(3,7)=nb_t_num
    250  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    251  nb%ijt(1,2) = cres; nb%ijt(2,2) = j;
    252  nb%ijt(1,5) = cres; nb%ijt(2,5) = j+1;
    253  nb%ijt(1,7) = cres; nb%ijt(2,7) = j-1;
    254  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    255  nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
    256  nb%ijt(1,5) = cres+1-(j+1); nb%ijt(2,5) = cres
    257  nb%ijt(1,7) = cres+1-(j-1); nb%ijt(2,7) = cres
    258  ENDIF
    259  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    260  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    261  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    262  nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
    263  nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
    264  ELSEIF (nb%gp_type == 4) THEN ! right boundary cell
    265  bd = 4
    266  nb_t_num = nb_tile(nb%gp_type,tile)%nb_tile_num
    267  nb%ijt(3,3)=nb_t_num; nb%ijt(3,6)=nb_t_num; nb%ijt(3,8)=nb_t_num
    268  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    269  nb%ijt(1,3) = 1; nb%ijt(2,3) = j;
    270  nb%ijt(1,6) = 1; nb%ijt(2,6) = j+1;
    271  nb%ijt(1,8) = 1; nb%ijt(2,8) = j-1;
    272  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    273  nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
    274  nb%ijt(1,6) = cres+1-(j+1); nb%ijt(2,6) = 1
    275  nb%ijt(1,8) = cres+1-(j-1); nb%ijt(2,8) = 1
    276  ENDIF
    277  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    278  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    279  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    280  nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
    281  nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
    282  ELSEIF (nb%gp_type == 13) THEN ! upper left coner
    283  bd = 1
    284  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    285  nb%ijt(3,1)=nb_t_num; nb%ijt(3,6)=nb_t_num
    286  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    287  nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i
    288  nb%ijt(1,6) = 1; nb%ijt(2,6) = cres+1-(i+1)
    289  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    290  nb%ijt(1,1) = i; nb%ijt(2,1) = 1
    291  nb%ijt(1,6) = i+1; nb%ijt(2,6) = 1
    292  ENDIF
    293  bd = 3
    294  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    295  nb%ijt(3,2)=nb_t_num; nb%ijt(3,7)=nb_t_num
    296  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    297  nb%ijt(1,2) = cres; nb%ijt(2,2) = j
    298  nb%ijt(1,7) = cres; nb%ijt(2,7) = j-1
    299  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    300  nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
    301  nb%ijt(1,7) = cres+1-(j-1); nb%ijt(2,7) = cres
    302  ENDIF
    303  nb%ijt(3,5)=0
    304  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    305  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    306  nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = tile
    307  ELSEIF (nb%gp_type == 14) THEN ! upper right coner
    308  bd = 1
    309  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    310  nb%ijt(3,1)=nb_t_num; nb%ijt(3,5)=nb_t_num
    311  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    312  nb%ijt(1,1) = 1; nb%ijt(2,1) = cres+1-i
    313  nb%ijt(1,5) = 1; nb%ijt(2,5) = cres+1-(i-1)
    314  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    315  nb%ijt(1,1) = i; nb%ijt(2,1) = 1
    316  nb%ijt(1,5) = i-1; nb%ijt(2,5) = 1
    317  ENDIF
    318  bd = 4
    319  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    320  nb%ijt(3,3)=nb_t_num; nb%ijt(3,8)=nb_t_num
    321  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    322  nb%ijt(1,3) = 1; nb%ijt(2,3) = j
    323  nb%ijt(1,8) = 1; nb%ijt(2,8) = j-1
    324  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    325  nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
    326  nb%ijt(1,8) = cres+1-(j-1); nb%ijt(2,8) = 1
    327  ENDIF
    328  nb%ijt(3,6)=0
    329  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    330  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = tile
    331  nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = tile
    332  ELSEIF (nb%gp_type == 23) THEN ! lower left coner
    333  bd = 2
    334  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    335  nb%ijt(3,4)=nb_t_num; nb%ijt(3,8)=nb_t_num
    336  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    337  nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i
    338  nb%ijt(1,8) = cres; nb%ijt(2,8) = cres+1-(i+1)
    339  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    340  nb%ijt(1,4) = i; nb%ijt(2,4) = cres
    341  nb%ijt(1,8) = i+1; nb%ijt(2,8) = cres
    342  ENDIF
    343  bd = 3
    344  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    345  nb%ijt(3,2)=nb_t_num; nb%ijt(3,5)=nb_t_num
    346  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    347  nb%ijt(1,2) = cres; nb%ijt(2,2) = j
    348  nb%ijt(1,5) = cres; nb%ijt(2,5) = j+1
    349  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    350  nb%ijt(1,2) = cres+1-j; nb%ijt(2,2) = cres
    351  nb%ijt(1,5) = cres+1-(j+1); nb%ijt(2,5) = cres
    352  ENDIF
    353  nb%ijt(3,7)=0
    354  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    355  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = tile
    356  nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = tile
    357  ELSEIF (nb%gp_type == 24) THEN ! lower right coner
    358  bd = 2
    359  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    360  nb%ijt(3,4)=nb_t_num; nb%ijt(3,7)=nb_t_num
    361  IF (nb_tile(bd,tile)%nb_tile_bndry == 'r') THEN
    362  nb%ijt(1,4) = cres; nb%ijt(2,4) = cres+1-i
    363  nb%ijt(1,7) = cres; nb%ijt(2,7) = cres+1-(i-1)
    364  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 't') THEN
    365  nb%ijt(1,4) = i; nb%ijt(2,4) = cres
    366  nb%ijt(1,7) = i-1; nb%ijt(2,7) = cres
    367  ENDIF
    368  bd = 4
    369  nb_t_num = nb_tile(bd,tile)%nb_tile_num
    370  nb%ijt(3,3)=nb_t_num; nb%ijt(3,6)=nb_t_num
    371  IF (nb_tile(bd,tile)%nb_tile_bndry == 'l') THEN
    372  nb%ijt(1,3) = 1; nb%ijt(2,3) = j
    373  nb%ijt(1,6) = 1; nb%ijt(2,6) = j+1
    374  ELSEIF (nb_tile(bd,tile)%nb_tile_bndry == 'b') THEN
    375  nb%ijt(1,3) = cres+1-j; nb%ijt(2,3) = 1
    376  nb%ijt(1,6) = cres+1-(j+1); nb%ijt(2,6) = 1
    377  ENDIF
    378  nb%ijt(3,8)=0
    379  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = tile
    380  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = tile
    381  nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = tile
    382 
    383  ENDIF
    384  END SUBROUTINE neighbors
    385 
    393  SUBROUTINE neighbors_reg(i, j, nb)
    394  INTEGER :: i, j
    395  TYPE(nb_gp_idx) :: nb
    396 
    397 ! assign the standard interior cell neighbors as default values
    398  ! top, bottom, left, and right
    399  nb%ijt(1,1) = i; nb%ijt(2,1) = j+1; nb%ijt(3,1) = 1
    400  nb%ijt(1,2) = i-1; nb%ijt(2,2) = j; nb%ijt(3,2) = 1
    401  nb%ijt(1,3) = i+1; nb%ijt(2,3) = j; nb%ijt(3,3) = 1
    402  nb%ijt(1,4) = i; nb%ijt(2,4) = j-1; nb%ijt(3,4) = 1
    403  ! top left, top right, bottom left, and bottom right
    404  nb%ijt(1,5) = i-1; nb%ijt(2,5) = j+1; nb%ijt(3,5) = 1
    405  nb%ijt(1,6) = i+1; nb%ijt(2,6) = j+1; nb%ijt(3,6) = 1
    406  nb%ijt(1,7) = i-1; nb%ijt(2,7) = j-1; nb%ijt(3,7) = 1
    407  nb%ijt(1,8) = i+1; nb%ijt(2,8) = j-1; nb%ijt(3,8) = 1
    408 
    409  nb%gp_type = bndry_reg(i,j)
    410  IF (nb%gp_type == 1) THEN !top boundary cell
    411  nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0
    412  ELSEIF (nb%gp_type == 2) THEN !bottom boundary cell
    413  nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
    414  ELSEIF (nb%gp_type == 3) THEN !left boundary cell
    415  nb%ijt(3,2) = 0; nb%ijt(3,5) = 0; nb%ijt(3,7) = 0
    416  ELSEIF (nb%gp_type == 4) THEN !right boundary cell
    417  nb%ijt(3,3) = 0; nb%ijt(3,6) = 0; nb%ijt(3,8) = 0
    418  ELSEIF (nb%gp_type == 13) THEN ! upper left coner
    419  nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0;
    420  nb%ijt(3,2) = 0; nb%ijt(3,7) = 0
    421  ELSEIF (nb%gp_type == 14) THEN ! upper right coner
    422  nb%ijt(3,1) = 0; nb%ijt(3,5) = 0; nb%ijt(3,6) = 0;
    423  nb%ijt(3,3) = 0; nb%ijt(3,8) = 0
    424  ELSEIF (nb%gp_type == 23) THEN ! lower left coner
    425  nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
    426  nb%ijt(3,2) = 0; nb%ijt(3,5) = 0;
    427  ELSEIF (nb%gp_type == 24) THEN ! lower right coner
    428  nb%ijt(3,4) = 0; nb%ijt(3,7) = 0; nb%ijt(3,8) = 0
    429  nb%ijt(3,3) = 0; nb%ijt(3,6) = 0;
    430  ENDIF
    431 
    432  END SUBROUTINE neighbors_reg
    433 
    434 END MODULE cs_nb
    435 
    436 #ifdef TEST_CS_NB
    437 PROGRAM test_nb
    438  USE cs_nb
    439 
    440  INTEGER :: tile, i, j
    441  TYPE(nb_gp_idx) :: nbs
    442 
    443  INTEGER, PARAMETER :: res = 96
    444 
    445  CALL idx_init(res)
    446 ! tile = 1; i = 1; j = 5
    447 ! tile = 1; i = 5; j = 1
    448 ! tile = 1; i = 96; j = 10
    449  tile = 2; i = 96; j = 96
    450  CALL neighbors(tile, i, j, nbs)
    451  print*, 'tile = ', tile, ' i = ',i, ' j = ', j
    452  print*, 'nbs%type: ', nbs%gp_type
    453  print*, 'nbs%ijt: '
    454  print*, nbs%ijt
    455 END PROGRAM test_nb
    456 #endif
    Neighboring cell descriptor.
    Definition: nb.F90:17
    +
    Neighboring tile descriptor.
    Definition: nb.F90:11
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.html b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.html new file mode 100644 index 000000000..a8641620d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.html @@ -0,0 +1,291 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    netcdf_io.F90 File Reference
    +
    +
    + +

    Write out data in netcdf format. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine netcdf_err (err, string)
     Check NetCDF error code and output the error message. More...
     
    subroutine write_netcdf (im, jm, slm, land_frac, oro, orf, hprime, ntiles, tile, geolon, geolat, lon, lat)
     Write out orography file in netcdf format. More...
     
    +

    Detailed Description

    +

    Write out data in netcdf format.

    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition in file netcdf_io.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ netcdf_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine netcdf_err (integer, intent(in) err,
    character(len=*), intent(in) string 
    )
    +
    + +

    Check NetCDF error code and output the error message.

    +
    Parameters
    + + + +
    [in]errNetCDF error code
    [in]stringThe NetCDF error message
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC
    + +

    Definition at line 219 of file netcdf_io.F90.

    + +

    Referenced by __mtnlm7_oclsm.F__(), gsl_oro_data_lg_scale::calc_gsl_oro_data_lg_scale(), gsl_oro_data_sm_scale::calc_gsl_oro_data_sm_scale(), TERSUB(), and write_netcdf().

    + +
    +
    + +

    ◆ write_netcdf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine write_netcdf (integer, intent(in) im,
    integer, intent(in) jm,
    real, dimension(im,jm), intent(in) slm,
    real, dimension(im,jm), intent(in) land_frac,
    real, dimension(im,jm), intent(in) oro,
    real, dimension(im,jm), intent(in) orf,
    real, dimension(im,jm,14), intent(in) hprime,
    integer, intent(in) ntiles,
    integer, intent(in) tile,
    real, dimension(im,jm), intent(in) geolon,
    real, dimension(im,jm), intent(in) geolat,
    real, dimension(im), intent(in) lon,
    real, dimension(jm), intent(in) lat 
    )
    +
    + +

    Write out orography file in netcdf format.

    +
    Parameters
    + + + + + + + + + + + + + + +
    [in]im'i' dimension of a model grid tile.
    [in]jm'j' dimension of a model grid tile.
    [in]slmLand-sea mask.
    [in]land_fracLand fraction.
    [in]oroOrography
    [in]orfFiltered orography. Currently the same as 'oro'.
    [in]hprimeThe gravity wave drag fields on the model grid tile.
    [in]ntilesNumber of tiles to output.
    [in]tileTile number to output.
    [in]geolonLongitude on the model grid tile.
    [in]geolatLatitude on the model grid tile.
    [in]lonLongitude of the first row of the model grid tile.
    [in]latLatitude of the first column of the model grid tile.
    +
    +
    +
    Author
    Jordan Alpert NOAA/EMC GFDL Programmer
    + +

    Definition at line 22 of file netcdf_io.F90.

    + +

    References netcdf_err().

    + +

    Referenced by TERSUB().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.js b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.js new file mode 100644 index 000000000..6a13e9e86 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90.js @@ -0,0 +1,5 @@ +var netcdf__io_8F90 = +[ + [ "netcdf_err", "netcdf__io_8F90.html#a442215c3836c0cf8a853c078861ba79f", null ], + [ "write_netcdf", "netcdf__io_8F90.html#a1bd28cc07c5a0a840b7ef4d0fbb09e34", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/netcdf__io_8F90_source.html b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90_source.html new file mode 100644 index 000000000..e9c41b13b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/netcdf__io_8F90_source.html @@ -0,0 +1,107 @@ + + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/orog.fd/netcdf_io.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    netcdf_io.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    21  subroutine write_netcdf(im, jm, slm, land_frac, oro, orf, hprime, ntiles, tile, geolon, geolat, lon, lat)
    22  implicit none
    23  integer, intent(in):: im, jm, ntiles, tile
    24  real, intent(in) :: lon(im), lat(jm)
    25  real, intent(in), dimension(im,jm) :: slm, oro, orf, geolon, geolat, land_frac
    26  real, intent(in), dimension(im,jm,14):: hprime
    27  character(len=128) :: outfile
    28  integer :: error, ncid, i
    29  integer :: header_buffer_val = 16384
    30  integer :: fsize=65536, inital = 0
    31  integer :: dim1, dim2
    32  integer :: dim_lon, dim_lat
    33  integer :: id_geolon,id_geolat
    34  integer :: id_slmsk,id_orog_raw,id_orog_filt,id_land_frac
    35  integer :: id_stddev,id_convex
    36  integer :: id_oa1,id_oa2,id_oa3,id_oa4
    37  integer :: id_ol1,id_ol2,id_ol3,id_ol4
    38  integer :: id_theta,id_gamma,id_sigma,id_elvmax
    39  include "netcdf.inc"
    40 
    41  if(ntiles > 1) then
    42  write(outfile, '(a,i4.4,a)') 'out.oro.tile', tile, '.nc'
    43  else
    44  outfile = "out.oro.nc"
    45  endif
    46 
    47  dim1=size(lon,1)
    48  dim2=size(lat,1)
    49  write(6,*) ' netcdf dims are: ',dim1, dim2
    50 
    51  !--- open the file
    52  error = nf__create(outfile, ior(nf_netcdf4,nf_classic_model), inital, fsize, ncid)
    53  call netcdf_err(error, 'Creating file '//trim(outfile) )
    54  !--- define dimension
    55  error = nf_def_dim(ncid, 'lon', dim1, dim_lon)
    56  call netcdf_err(error, 'define dimension lon for file='//trim(outfile) )
    57  error = nf_def_dim(ncid, 'lat', dim2, dim_lat)
    58  call netcdf_err(error, 'define dimension lat for file='//trim(outfile) )
    59 
    60  !--- define field
    61 !---geolon
    62  error = nf_def_var(ncid, 'geolon', nf_float, 2, (/dim_lon,dim_lat/), id_geolon)
    63  call netcdf_err(error, 'define var geolon for file='//trim(outfile) )
    64  error = nf_put_att_text(ncid, id_geolon, "long_name", 9, "Longitude")
    65  call netcdf_err(error, 'define geolon name for file='//trim(outfile) )
    66  error = nf_put_att_text(ncid, id_geolon, "units", 12, "degrees_east")
    67  call netcdf_err(error, 'define geolon units for file='//trim(outfile) )
    68 !---geolat
    69  error = nf_def_var(ncid, 'geolat', nf_float, 2, (/dim_lon,dim_lat/), id_geolat)
    70  call netcdf_err(error, 'define var geolat for file='//trim(outfile) )
    71  error = nf_put_att_text(ncid, id_geolat, "long_name", 8, "Latitude")
    72  call netcdf_err(error, 'define geolat name for file='//trim(outfile) )
    73  error = nf_put_att_text(ncid, id_geolat, "units", 13, "degrees_north")
    74  call netcdf_err(error, 'define geolat units for file='//trim(outfile) )
    75 !---slmsk
    76  error = nf_def_var(ncid, 'slmsk', nf_float, 2, (/dim_lon,dim_lat/), id_slmsk)
    77  call netcdf_err(error, 'define var slmsk for file='//trim(outfile) )
    78  error = nf_put_att_text(ncid, id_slmsk, "coordinates", 13, "geolon geolat")
    79  call netcdf_err(error, 'define slmsk coordinates for file='//trim(outfile) )
    80 !--- land_frac
    81  error = nf_def_var(ncid, 'land_frac', nf_float, 2, (/dim_lon,dim_lat/), id_land_frac)
    82  call netcdf_err(error, 'define var land_frac for file='//trim(outfile) )
    83  error = nf_put_att_text(ncid, id_land_frac, "coordinates", 13, "geolon geolat")
    84  call netcdf_err(error, 'define land_frac coordinates for file='//trim(outfile) )
    85 !---orography - raw
    86  error = nf_def_var(ncid, 'orog_raw', nf_float, 2, (/dim_lon,dim_lat/), id_orog_raw)
    87  call netcdf_err(error, 'define var orog_raw for file='//trim(outfile) )
    88  error = nf_put_att_text(ncid, id_orog_raw, "coordinates", 13, "geolon geolat")
    89  call netcdf_err(error, 'define orog_raw coordinates for file='//trim(outfile) )
    90 !---orography - filtered
    91  error = nf_def_var(ncid, 'orog_filt', nf_float, 2, (/dim_lon,dim_lat/), id_orog_filt)
    92  call netcdf_err(error, 'define var orog_filt for file='//trim(outfile) )
    93  error = nf_put_att_text(ncid, id_orog_filt, "coordinates", 13, "geolon geolat")
    94  call netcdf_err(error, 'define orog_filt coordinates for file='//trim(outfile) )
    95 !---stddev
    96  error = nf_def_var(ncid, 'stddev', nf_float, 2, (/dim_lon,dim_lat/), id_stddev)
    97  call netcdf_err(error, 'define var stddev for file='//trim(outfile) )
    98  error = nf_put_att_text(ncid, id_stddev, "coordinates", 13, "geolon geolat")
    99  call netcdf_err(error, 'define stddev coordinates for file='//trim(outfile) )
    100 !---convexity
    101  error = nf_def_var(ncid, 'convexity', nf_float, 2, (/dim_lon,dim_lat/), id_convex)
    102  call netcdf_err(error, 'define var convexity for file='//trim(outfile) )
    103  error = nf_put_att_text(ncid, id_convex, "coordinates", 13, "geolon geolat")
    104  call netcdf_err(error, 'define convexity coordinates for file='//trim(outfile) )
    105 !---oa1 -> oa4
    106  error = nf_def_var(ncid, 'oa1', nf_float, 2, (/dim_lon,dim_lat/), id_oa1)
    107  call netcdf_err(error, 'define var oa1 for file='//trim(outfile) )
    108  error = nf_put_att_text(ncid, id_oa1, "coordinates", 13, "geolon geolat")
    109  call netcdf_err(error, 'define oa1 coordinates for file='//trim(outfile) )
    110  error = nf_def_var(ncid, 'oa2', nf_float, 2, (/dim_lon,dim_lat/), id_oa2)
    111  call netcdf_err(error, 'define var oa2 for file='//trim(outfile) )
    112  error = nf_put_att_text(ncid, id_oa2, "coordinates", 13, "geolon geolat")
    113  call netcdf_err(error, 'define oa2 coordinates for file='//trim(outfile) )
    114  error = nf_def_var(ncid, 'oa3', nf_float, 2, (/dim_lon,dim_lat/), id_oa3)
    115  call netcdf_err(error, 'define var oa3 for file='//trim(outfile) )
    116  error = nf_put_att_text(ncid, id_oa3, "coordinates", 13, "geolon geolat")
    117  call netcdf_err(error, 'define oa3 coordinates for file='//trim(outfile) )
    118  error = nf_def_var(ncid, 'oa4', nf_float, 2, (/dim_lon,dim_lat/), id_oa4)
    119  call netcdf_err(error, 'define var oa4 for file='//trim(outfile) )
    120  error = nf_put_att_text(ncid, id_oa4, "coordinates", 13, "geolon geolat")
    121  call netcdf_err(error, 'define oa4 coordinates for file='//trim(outfile) )
    122 !---ol1 -> ol4
    123  error = nf_def_var(ncid, 'ol1', nf_float, 2, (/dim_lon,dim_lat/), id_ol1)
    124  call netcdf_err(error, 'define var ol1 for file='//trim(outfile) )
    125  error = nf_put_att_text(ncid, id_ol1, "coordinates", 13, "geolon geolat")
    126  call netcdf_err(error, 'define ol1 coordinates for file='//trim(outfile) )
    127  error = nf_def_var(ncid, 'ol2', nf_float, 2, (/dim_lon,dim_lat/), id_ol2)
    128  call netcdf_err(error, 'define var ol2 for file='//trim(outfile) )
    129  error = nf_put_att_text(ncid, id_ol2, "coordinates", 13, "geolon geolat")
    130  call netcdf_err(error, 'define ol2 coordinates for file='//trim(outfile) )
    131  error = nf_def_var(ncid, 'ol3', nf_float, 2, (/dim_lon,dim_lat/), id_ol3)
    132  call netcdf_err(error, 'define var ol3 for file='//trim(outfile) )
    133  error = nf_put_att_text(ncid, id_ol3, "coordinates", 13, "geolon geolat")
    134  call netcdf_err(error, 'define ol3 coordinates for file='//trim(outfile) )
    135  error = nf_def_var(ncid, 'ol4', nf_float, 2, (/dim_lon,dim_lat/), id_ol4)
    136  call netcdf_err(error, 'define var ol4 for file='//trim(outfile) )
    137  error = nf_put_att_text(ncid, id_ol4, "coordinates", 13, "geolon geolat")
    138  call netcdf_err(error, 'define ol4 coordinates for file='//trim(outfile) )
    139 !---theta gamma sigma elvmax
    140  error = nf_def_var(ncid, 'theta', nf_float, 2, (/dim_lon,dim_lat/), id_theta)
    141  call netcdf_err(error, 'define var theta for file='//trim(outfile) )
    142  error = nf_put_att_text(ncid, id_theta, "coordinates", 13, "geolon geolat")
    143  call netcdf_err(error, 'define theta coordinates for file='//trim(outfile) )
    144  error = nf_def_var(ncid, 'gamma', nf_float, 2, (/dim_lon,dim_lat/), id_gamma)
    145  call netcdf_err(error, 'define var gamma for file='//trim(outfile) )
    146  error = nf_put_att_text(ncid, id_gamma, "coordinates", 13, "geolon geolat")
    147  call netcdf_err(error, 'define gamma coordinates for file='//trim(outfile) )
    148  error = nf_def_var(ncid, 'sigma', nf_float, 2, (/dim_lon,dim_lat/), id_sigma)
    149  call netcdf_err(error, 'define var sigma for file='//trim(outfile) )
    150  error = nf_put_att_text(ncid, id_sigma, "coordinates", 13, "geolon geolat")
    151  call netcdf_err(error, 'define sigma coordinates for file='//trim(outfile) )
    152  error = nf_def_var(ncid, 'elvmax', nf_float, 2, (/dim_lon,dim_lat/), id_elvmax)
    153  call netcdf_err(error, 'define var elvmax for file='//trim(outfile) )
    154  error = nf_put_att_text(ncid, id_elvmax, "coordinates", 13, "geolon geolat")
    155  call netcdf_err(error, 'define elvmax coordinates for file='//trim(outfile) )
    156 
    157  error = nf__enddef(ncid, header_buffer_val,4,0,4)
    158  call netcdf_err(error, 'end meta define for file='//trim(outfile) )
    159 
    160  !--- write out data
    161  error = nf_put_var_double( ncid, id_geolon, geolon(:dim1,:dim2))
    162  call netcdf_err(error, 'write var geolon for file='//trim(outfile) )
    163  error = nf_put_var_double( ncid, id_geolat, geolat(:dim1,:dim2))
    164  call netcdf_err(error, 'write var geolat for file='//trim(outfile) )
    165 
    166  error = nf_put_var_double( ncid, id_slmsk, slm(:dim1,:dim2))
    167  call netcdf_err(error, 'write var slmsk for file='//trim(outfile) )
    168  error = nf_put_var_double( ncid, id_land_frac, land_frac(:dim1,:dim2))
    169  call netcdf_err(error, 'write var land_frac for file='//trim(outfile) )
    170 
    171  error = nf_put_var_double( ncid, id_orog_raw, oro(:dim1,:dim2))
    172  call netcdf_err(error, 'write var orog_raw for file='//trim(outfile) )
    173  error = nf_put_var_double( ncid, id_orog_filt, orf(:dim1,:dim2))
    174  call netcdf_err(error, 'write var orog_filt for file='//trim(outfile) )
    175 
    176  error = nf_put_var_double( ncid, id_stddev, hprime(:dim1,:dim2,1))
    177  call netcdf_err(error, 'write var stddev for file='//trim(outfile) )
    178  error = nf_put_var_double( ncid, id_convex, hprime(:dim1,:dim2,2))
    179  call netcdf_err(error, 'write var convex for file='//trim(outfile) )
    180 
    181  error = nf_put_var_double( ncid, id_oa1, hprime(:dim1,:dim2,3))
    182  call netcdf_err(error, 'write var oa1 for file='//trim(outfile) )
    183  error = nf_put_var_double( ncid, id_oa2, hprime(:dim1,:dim2,4))
    184  call netcdf_err(error, 'write var oa2 for file='//trim(outfile) )
    185  error = nf_put_var_double( ncid, id_oa3, hprime(:dim1,:dim2,5))
    186  call netcdf_err(error, 'write var oa3 for file='//trim(outfile) )
    187  error = nf_put_var_double( ncid, id_oa4, hprime(:dim1,:dim2,6))
    188  call netcdf_err(error, 'write var oa4 for file='//trim(outfile) )
    189 
    190  error = nf_put_var_double( ncid, id_ol1, hprime(:dim1,:dim2,7))
    191  call netcdf_err(error, 'write var ol1 for file='//trim(outfile) )
    192  error = nf_put_var_double( ncid, id_ol2, hprime(:dim1,:dim2,8))
    193  call netcdf_err(error, 'write var ol2 for file='//trim(outfile) )
    194  error = nf_put_var_double( ncid, id_ol3, hprime(:dim1,:dim2,9))
    195  call netcdf_err(error, 'write var ol3 for file='//trim(outfile) )
    196  error = nf_put_var_double( ncid, id_ol4, hprime(:dim1,:dim2,10))
    197  call netcdf_err(error, 'write var ol4 for file='//trim(outfile) )
    198 
    199  error = nf_put_var_double( ncid, id_theta, hprime(:dim1,:dim2,11))
    200  call netcdf_err(error, 'write var theta for file='//trim(outfile) )
    201  error = nf_put_var_double( ncid, id_gamma, hprime(:dim1,:dim2,12))
    202  call netcdf_err(error, 'write var gamma for file='//trim(outfile) )
    203  error = nf_put_var_double( ncid, id_sigma, hprime(:dim1,:dim2,13))
    204  call netcdf_err(error, 'write var sigma for file='//trim(outfile) )
    205  error = nf_put_var_double( ncid, id_elvmax, hprime(:dim1,:dim2,14))
    206  call netcdf_err(error, 'write var elvmax for file='//trim(outfile) )
    207 
    208  error = nf_close(ncid)
    209  call netcdf_err(error, 'close file='//trim(outfile) )
    210 
    211  end subroutine
    212 
    218  subroutine netcdf_err( err, string )
    219  integer, intent(in) :: err
    220  character(len=*), intent(in) :: string
    221  character(len=256) :: errmsg
    222  include "netcdf.inc"
    223 
    224  if( err.EQ.nf_noerr )return
    225  errmsg = nf_strerror(err)
    226  print*, trim(string), ': ', trim(errmsg)
    227 
    228  return
    229  end subroutine netcdf_err
    subroutine netcdf_err(err, string)
    Check NetCDF error code and output the error message.
    Definition: netcdf_io.F90:219
    +
    subroutine write_netcdf(im, jm, slm, land_frac, oro, orf, hprime, ntiles, tile, geolon, geolat, lon, lat)
    Write out orography file in netcdf format.
    Definition: netcdf_io.F90:22
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/open.png b/ver-1.11.0/orog_mask_tools/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +orog_mask_tools: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/docs/orog_mask_tools.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/docs/orog_mask_tools.md
    +
    +
    +
    1 
    2 # orog_mask_tools
    3 
    4 # Introduction
    5 
    6 The orog_mask_tools include:
    7 * inland.F90 - create an inland land mask.
    8 * lakefrac.F90 - set lake fraction and depth.
    9 * mtnlm7_oclsm.f - terrain maker for global spectral model.
    10 
    11 This document is part of the <a href="../index.html">UFS_UTILS
    12 documentation</a>.
    13 
    14 The orog_mask_tools programs are part of the
    15 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/pages.html b/ver-1.11.0/orog_mask_tools/pages.html new file mode 100644 index 000000000..b52042e45 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/pages.html @@ -0,0 +1,109 @@ + + + + + + + +orog_mask_tools: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/resize.js b/ver-1.11.0/orog_mask_tools/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/orog_mask_tools/search/all_0.html b/ver-1.11.0/orog_mask_tools/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_0.js b/ver-1.11.0/orog_mask_tools/search/all_0.js new file mode 100644 index 000000000..1367f8e97 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fmtnlm7_5foclsm_2ef_5f_5f',['__mtnlm7_oclsm.F__',['../mtnlm7__oclsm_8F.html#a1ada2e10f7782dcebf9b4f1f8655f5dd',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_1.html b/ver-1.11.0/orog_mask_tools/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_1.js b/ver-1.11.0/orog_mask_tools/search/all_1.js new file mode 100644 index 000000000..0bd32ad8d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bndry',['bndry',['../nb_8F90.html#a7af27e607c043a485adf2649e56d66a9',1,'cs_nb']]], + ['bndry_5freg',['bndry_reg',['../nb_8F90.html#a99e73c2554abae50e5ed72d37368459c',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_10.html b/ver-1.11.0/orog_mask_tools/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_10.js b/ver-1.11.0/orog_mask_tools/search/all_10.js new file mode 100644 index 000000000..3706ca456 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tersub',['TERSUB',['../mtnlm7__oclsm_8F.html#af7ce95e03de8598d7973206258f49b3e',1,'mtnlm7_oclsm.F']]], + ['timef',['timef',['../mtnlm7__oclsm_8F.html#a6e5afa4168cab2cdedef3c01e086494f',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_11.html b/ver-1.11.0/orog_mask_tools/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_11.js b/ver-1.11.0/orog_mask_tools/search/all_11.js new file mode 100644 index 000000000..ff7912046 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_11.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['write_5finland',['write_inland',['../inland_8F90.html#ad288f94eea205f8bbefe728949dcd9bc',1,'inland.F90']]], + ['write_5finland_5freg',['write_inland_reg',['../inland_8F90.html#a2cda3688f47a34f75fcf47aef8c80ff5',1,'inland.F90']]], + ['write_5flakedata_5fto_5forodata',['write_lakedata_to_orodata',['../lakefrac_8F90.html#a112a771a17cd632ad6e86df6095fde92',1,'lakefrac.F90']]], + ['write_5fnetcdf',['write_netcdf',['../netcdf__io_8F90.html#a1bd28cc07c5a0a840b7ef4d0fbb09e34',1,'netcdf_io.F90']]], + ['write_5freg_5flakedata_5fto_5forodata',['write_reg_lakedata_to_orodata',['../lakefrac_8F90.html#a654cc9802a12e781ed1ef9e878ad0390',1,'lakefrac.F90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_12.html b/ver-1.11.0/orog_mask_tools/search/all_12.html new file mode 100644 index 000000000..fd265245b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_12.js b/ver-1.11.0/orog_mask_tools/search/all_12.js new file mode 100644 index 000000000..b16081bcf --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xres',['xres',['../nb_8F90.html#af51ba8f325f52f48251bcad67666814f',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_13.html b/ver-1.11.0/orog_mask_tools/search/all_13.html new file mode 100644 index 000000000..04f66e2fe --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_13.js b/ver-1.11.0/orog_mask_tools/search/all_13.js new file mode 100644 index 000000000..5856929d5 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yres',['yres',['../nb_8F90.html#a4cd1b2f08cc1882705ca33b622801f45',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_2.html b/ver-1.11.0/orog_mask_tools/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_2.js b/ver-1.11.0/orog_mask_tools/search/all_2.js new file mode 100644 index 000000000..c5b57134e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['cal_5flake_5ffrac_5fdepth',['cal_lake_frac_depth',['../lakefrac_8F90.html#a7a4e5a1364b5ca25a7e3265799710e7a',1,'lakefrac.F90']]], + ['calc_5fgsl_5foro_5fdata_5flg_5fscale',['calc_gsl_oro_data_lg_scale',['../module__gsl__oro__data__lg__scale_8f90.html#a9830b4caf14b991d636d80fc982d5051',1,'gsl_oro_data_lg_scale']]], + ['calc_5fgsl_5foro_5fdata_5fsm_5fscale',['calc_gsl_oro_data_sm_scale',['../module__gsl__oro__data__sm__scale_8f90.html#a47bccf36fd3d2c3abdd75e925b2e6d05',1,'gsl_oro_data_sm_scale']]], + ['calc_5fmean_5fhgt',['calc_mean_HGT',['../module__gsl__oro__data__lg__scale_8f90.html#a90c214b49da3bc31101edd3d3c54b5fe',1,'gsl_oro_data_lg_scale']]], + ['cres',['cres',['../nb_8F90.html#aa93675ed7244e1cd4cd615058f99a99d',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_3.html b/ver-1.11.0/orog_mask_tools/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_3.js b/ver-1.11.0/orog_mask_tools/search/all_3.js new file mode 100644 index 000000000..6b43d77a2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['dbl_5fkind',['dbl_kind',['../module__gsl__oro__data__lg__scale_8f90.html#af515441651e6330674ca8d097d54f677',1,'gsl_oro_data_lg_scale::dbl_kind()'],['../module__gsl__oro__data__sm__scale_8f90.html#ac7d6d045f24fa1cc1ffab6706431ca1f',1,'gsl_oro_data_sm_scale::dbl_kind()']]], + ['dimx_5ffine',['dimx_fine',['../module__gsl__oro__data__lg__scale_8f90.html#afd82effea9dc0b005e2087b3cec01a49',1,'gsl_oro_data_lg_scale::dimx_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#af8983b13c23372ece106c72bfbe63e90',1,'gsl_oro_data_sm_scale::dimx_fine()']]], + ['dimy_5ffine',['dimy_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a885f79645890aad41b977914275ba525',1,'gsl_oro_data_lg_scale::dimy_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#a5025b4ef045cfd7738a92fd178938d8a',1,'gsl_oro_data_sm_scale::dimy_fine()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_4.html b/ver-1.11.0/orog_mask_tools/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_4.js b/ver-1.11.0/orog_mask_tools/search/all_4.js new file mode 100644 index 000000000..4aa5d1fc7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['enclosure_5fcnvx',['enclosure_cnvx',['../enclosure__cnvx_8F90.html#a0235896a27bb16a029a62ef4561f24d8',1,'enclosure_cnvx.F90']]], + ['enclosure_5fcnvx_2ef90',['enclosure_cnvx.F90',['../enclosure__cnvx_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_5.html b/ver-1.11.0/orog_mask_tools/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_5.js b/ver-1.11.0/orog_mask_tools/search/all_5.js new file mode 100644 index 000000000..d183a6f5f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['find_5flimit',['find_limit',['../find__limit_8F90.html#a7563fb772438eebc1103f6e998ac4f8d',1,'find_limit.F90']]], + ['find_5flimit_2ef90',['find_limit.F90',['../find__limit_8F90.html',1,'']]], + ['free_5fmem',['free_mem',['../inland_8F90.html#af870fa97d145db8f6393c3b424bd9ab9',1,'inland.F90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_6.html b/ver-1.11.0/orog_mask_tools/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_6.js b/ver-1.11.0/orog_mask_tools/search/all_6.js new file mode 100644 index 000000000..3f398d429 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_6.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['get_5findex',['get_index',['../mtnlm7__oclsm_8F.html#a769428525e5b18b568caee947d3b82a9',1,'mtnlm7_oclsm.F']]], + ['get_5flat_5fangle',['get_lat_angle',['../mtnlm7__oclsm_8F.html#a78820ab0db4ba91dfe77bf7c217a5b57',1,'mtnlm7_oclsm.F']]], + ['get_5flon_5fangle',['get_lon_angle',['../mtnlm7__oclsm_8F.html#a3f1211168f9c2ab893d7fc6570b6f2d5',1,'mtnlm7_oclsm.F']]], + ['get_5fmismatch_5findex',['get_mismatch_index',['../mtnlm7__oclsm_8F.html#a705d54995150872d6ae14236173e46e8',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum',['get_xnsum',['../mtnlm7__oclsm_8F.html#ab8f4b7ec89af87c58814d6a58ac2fbb1',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum2',['get_xnsum2',['../mtnlm7__oclsm_8F.html#a18c367f7d76c7c3d586be9ce028bbb02',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum3',['get_xnsum3',['../mtnlm7__oclsm_8F.html#a6d50be662748bf70df0762927f612590',1,'mtnlm7_oclsm.F']]], + ['gg2rg',['gg2rg',['../mtnlm7__oclsm_8F.html#a6089afa6ac190f08ef375fee7c689f85',1,'mtnlm7_oclsm.F']]], + ['gp_5ftype',['gp_type',['../structcs__nb_1_1nb__gp__idx.html#af8aa3bce5f2d1f299fd265f8f3691308',1,'cs_nb::nb_gp_idx']]], + ['gsl_5foro_5fdata',['gsl_oro_data',['../gsl__oro__data_8f90.html#a06ef850c217b3e20e204be8a39edf228',1,'gsl_oro_data.f90']]], + ['gsl_5foro_5fdata_2ef90',['gsl_oro_data.f90',['../gsl__oro__data_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_7.html b/ver-1.11.0/orog_mask_tools/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_7.js b/ver-1.11.0/orog_mask_tools/search/all_7.js new file mode 100644 index 000000000..a8b203bb3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hgt_5finterpolate',['HGT_interpolate',['../module__gsl__oro__data__lg__scale_8f90.html#adbe21346d8ed23ff6d765b565c7058ff',1,'gsl_oro_data_lg_scale']]], + ['hgt_5fm_5ffine',['hgt_m_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a44e278cef37433021fe5511695e3d561',1,'gsl_oro_data_lg_scale']]], + ['hgt_5fmissing',['hgt_missing',['../module__gsl__oro__data__lg__scale_8f90.html#aeb13d7583cec4631c61eb20d09858d71',1,'gsl_oro_data_lg_scale']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_8.html b/ver-1.11.0/orog_mask_tools/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_8.js b/ver-1.11.0/orog_mask_tools/search/all_8.js new file mode 100644 index 000000000..69d9fd93f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['idx_5finit',['idx_init',['../nb_8F90.html#aaae14862ca35fcdae38da182a23a27e7',1,'cs_nb']]], + ['idx_5finit_5freg',['idx_init_reg',['../nb_8F90.html#ab9cf42e22e061e7a9061472878d87c35',1,'cs_nb']]], + ['ijt',['ijt',['../structcs__nb_1_1nb__gp__idx.html#a48f7f9040b5a941929f66ac6221015d3',1,'cs_nb::nb_gp_idx']]], + ['inland_2ef90',['inland.F90',['../inland_8F90.html',1,'']]], + ['inland_5fmask',['inland_mask',['../inland_8F90.html#a571ea8ce2ce3aa308f70c9fb2bfbfea1',1,'inland.F90']]], + ['inside_5fa_5fpolygon',['inside_a_polygon',['../mtnlm7__oclsm_8F.html#af10c3a1bba5248b6a97c15b5a3b0cb43',1,'mtnlm7_oclsm.F']]], + ['interp_5f1d',['interp_1d',['../module__gsl__oro__data__lg__scale_8f90.html#a5bb95a0f684cd2f38d45103b548e6e06',1,'gsl_oro_data_lg_scale::interp_1d()'],['../module__gsl__oro__data__sm__scale_8f90.html#ae51d541f8e6fed7a3b2bdc6de709f695',1,'gsl_oro_data_sm_scale::interp_1d()']]], + ['interpolate_5fmismatch',['interpolate_mismatch',['../mtnlm7__oclsm_8F.html#a065d9f691c8d972ccd6513e2789466ff',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_9.html b/ver-1.11.0/orog_mask_tools/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_9.js b/ver-1.11.0/orog_mask_tools/search/all_9.js new file mode 100644 index 000000000..47ed1e6bd --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['lake_5ffrac',['lake_frac',['../lakefrac_8F90.html#a563966340bfa6668f1c820c8a8c33464',1,'lakefrac.F90']]], + ['lakefrac_2ef90',['lakefrac.F90',['../lakefrac_8F90.html',1,'']]], + ['lat1d_5ffine',['lat1d_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a5afe7069f54a8e1b32f4902c998c982d',1,'gsl_oro_data_lg_scale::lat1d_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#ac960f2375dc2f5b3d62ccada02f8cb9c',1,'gsl_oro_data_sm_scale::lat1d_fine()']]], + ['latlon2xyz',['latlon2xyz',['../mtnlm7__oclsm_8F.html#a5869b044207f7ecb10fb381ece00732c',1,'mtnlm7_oclsm.F']]], + ['lon1d_5ffine',['lon1d_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a15e32bfe7c1d734a752fdce23e204ec2',1,'gsl_oro_data_lg_scale::lon1d_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#a34dc581bef8be30f67342415930dcfd9',1,'gsl_oro_data_sm_scale::lon1d_fine()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_a.html b/ver-1.11.0/orog_mask_tools/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_a.js b/ver-1.11.0/orog_mask_tools/search/all_a.js new file mode 100644 index 000000000..4bba08885 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_a.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['makemt',['MAKEMT',['../mtnlm7__oclsm_8F.html#a5c2e2a509b6e61e6b6f3f5e9f557f840',1,'mtnlm7_oclsm.F']]], + ['makemt2',['MAKEMT2',['../mtnlm7__oclsm_8F.html#a414eafe8038c2fab3946184779fde05e',1,'mtnlm7_oclsm.F']]], + ['makeoa',['MAKEOA',['../mtnlm7__oclsm_8F.html#a7e691da90c36d54272f96a2bf0af1911',1,'mtnlm7_oclsm.F']]], + ['makeoa2',['MAKEOA2',['../mtnlm7__oclsm_8F.html#aa7ab3d50b802188dfd1423400a497b3f',1,'mtnlm7_oclsm.F']]], + ['makeoa3',['MAKEOA3',['../mtnlm7__oclsm_8F.html#ae0b135a5ca65d703a8dbfbbf7f3f8f1a',1,'mtnlm7_oclsm.F']]], + ['makepc',['MAKEPC',['../mtnlm7__oclsm_8F.html#a51453de3ed7c8a88cd52cf83ef95afed',1,'mtnlm7_oclsm.F']]], + ['makepc2',['MAKEPC2',['../mtnlm7__oclsm_8F.html#a4bc2434bf006798fdc689584f325eab3',1,'mtnlm7_oclsm.F']]], + ['mark_5fglobal_5finland',['mark_global_inland',['../inland_8F90.html#a160b9961900b2d0b7b39fe58177ef3d3',1,'inland.F90']]], + ['mark_5fglobal_5finland_5frec_5fd',['mark_global_inland_rec_d',['../inland_8F90.html#a61f40758fbff460eb3f89f06bdac3e9d',1,'inland.F90']]], + ['mark_5finland_5freg',['mark_inland_reg',['../inland_8F90.html#a1f9bad82f013cdfc76b9501fc08a2ddb',1,'inland.F90']]], + ['mark_5fregional_5finland_5frec_5fd',['mark_regional_inland_rec_d',['../inland_8F90.html#a628ce4a7d56a78989ae59de5f76d0605',1,'inland.F90']]], + ['maxmin',['maxmin',['../mtnlm7__oclsm_8F.html#a8648e114af02377f94e03cc40412de58',1,'mtnlm7_oclsm.F']]], + ['middle',['middle',['../find__limit_8F90.html#a4026a55bcab89cc04ed41c2de8cefa97',1,'find_limit.F90']]], + ['minmaxj',['minmaxj',['../mtnlm7__oclsm_8F.html#a574feab9626884b79a10fdcd2d8543aa',1,'mtnlm7_oclsm.F']]], + ['minmxj',['minmxj',['../mtnlm7__oclsm_8F.html#aba287a6bf35bffc12e6abc31c13c3874',1,'mtnlm7_oclsm.F']]], + ['mnmxja',['mnmxja',['../mtnlm7__oclsm_8F.html#aa54e80b7136f9cc0d224515945c960f0',1,'mtnlm7_oclsm.F']]], + ['module_5fgsl_5foro_5fdata_5flg_5fscale_2ef90',['module_gsl_oro_data_lg_scale.f90',['../module__gsl__oro__data__lg__scale_8f90.html',1,'']]], + ['module_5fgsl_5foro_5fdata_5fsm_5fscale_2ef90',['module_gsl_oro_data_sm_scale.f90',['../module__gsl__oro__data__sm__scale_8f90.html',1,'']]], + ['mtnlm7_5foclsm_2ef',['mtnlm7_oclsm.F',['../mtnlm7__oclsm_8F.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_b.html b/ver-1.11.0/orog_mask_tools/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_b.js b/ver-1.11.0/orog_mask_tools/search/all_b.js new file mode 100644 index 000000000..3b1d011ef --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_b.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['nanc',['nanc',['../mtnlm7__oclsm_8F.html#ae8df58dcb775885e68d83118c2f449af',1,'mtnlm7_oclsm.F']]], + ['nb_2ef90',['nb.F90',['../nb_8F90.html',1,'']]], + ['nb_5fgp_5fidx',['nb_gp_idx',['../structcs__nb_1_1nb__gp__idx.html',1,'cs_nb']]], + ['nb_5ftile',['nb_tile',['../nb_8F90.html#aecec88fcf61e8758e7ecfaf9b20f6646',1,'cs_nb']]], + ['nb_5ftile_5fbndry',['nb_tile_bndry',['../structcs__nb_1_1nb__tile__idx.html#a6a3ad44e8747514cdc8d5497294d8235',1,'cs_nb::nb_tile_idx']]], + ['nb_5ftile_5fidx',['nb_tile_idx',['../structcs__nb_1_1nb__tile__idx.html',1,'cs_nb']]], + ['nb_5ftile_5fnum',['nb_tile_num',['../structcs__nb_1_1nb__tile__idx.html#a1c657bd72e795f728f24048500a5a30e',1,'cs_nb::nb_tile_idx']]], + ['nc_5fopchk',['nc_opchk',['../inland_8F90.html#a3b10845ba96fd1baced9b9bcfd827382',1,'nc_opchk(stat, opname): inland.F90'],['../lakefrac_8F90.html#a371dafc6b513e49bf8b70cdd44056a47',1,'nc_opchk(stat, opname): lakefrac.F90']]], + ['nearest_5fi_5feast',['nearest_i_east',['../module__gsl__oro__data__lg__scale_8f90.html#a705e630d560e2e06f41e5fb270536e0c',1,'gsl_oro_data_lg_scale::nearest_i_east()'],['../module__gsl__oro__data__sm__scale_8f90.html#a70eecd2214e27cc1b3a1ba9df34a0fa2',1,'gsl_oro_data_sm_scale::nearest_i_east()']]], + ['nearest_5fi_5fwest',['nearest_i_west',['../module__gsl__oro__data__lg__scale_8f90.html#a76d4b7d1141c857bbc966501c10773bb',1,'gsl_oro_data_lg_scale::nearest_i_west()'],['../module__gsl__oro__data__sm__scale_8f90.html#a5c159035e2f834234c86d03d03501721',1,'gsl_oro_data_sm_scale::nearest_i_west()']]], + ['nearest_5fj_5fnorth',['nearest_j_north',['../module__gsl__oro__data__lg__scale_8f90.html#ae0e03d1499520602a17d736865f0ba4e',1,'gsl_oro_data_lg_scale::nearest_j_north()'],['../module__gsl__oro__data__sm__scale_8f90.html#ae3419ce89b20a3f4914aae1118c9e9a1',1,'gsl_oro_data_sm_scale::nearest_j_north()']]], + ['nearest_5fj_5fsouth',['nearest_j_south',['../module__gsl__oro__data__lg__scale_8f90.html#aa5337925dccfc23e3b53d5cd227b913d',1,'gsl_oro_data_lg_scale::nearest_j_south()'],['../module__gsl__oro__data__sm__scale_8f90.html#a2c0fc49ed515bc17b7e948dfa666a4d3',1,'gsl_oro_data_sm_scale::nearest_j_south()']]], + ['neighbors',['neighbors',['../nb_8F90.html#ace6fa1f89e4876ab016e16eea286840f',1,'cs_nb']]], + ['neighbors_5freg',['neighbors_reg',['../nb_8F90.html#a234b842800712dc795acc1236aece069',1,'cs_nb']]], + ['netcdf_5ferr',['netcdf_err',['../netcdf__io_8F90.html#a442215c3836c0cf8a853c078861ba79f',1,'netcdf_err(): netcdf_io.F90'],['../module__gsl__oro__data__lg__scale_8f90.html#a3bde411a1f85506a546fa572e48ff1a5',1,'gsl_oro_data_lg_scale::netcdf_err()'],['../module__gsl__oro__data__sm__scale_8f90.html#adc21bfea4012c64cadd2ada20a011f2d',1,'gsl_oro_data_sm_scale::netcdf_err()']]], + ['netcdf_5fio_2ef90',['netcdf_io.F90',['../netcdf__io_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_c.html b/ver-1.11.0/orog_mask_tools/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_c.js b/ver-1.11.0/orog_mask_tools/search/all_c.js new file mode 100644 index 000000000..44e9a1f43 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['orog_5fmask_5ftools',['orog_mask_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_d.html b/ver-1.11.0/orog_mask_tools/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_d.js b/ver-1.11.0/orog_mask_tools/search/all_d.js new file mode 100644 index 000000000..42b7d29fa --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['p5',['p5',['../module__gsl__oro__data__lg__scale_8f90.html#acbd44de1592fc3f7a07abb060772b0ba',1,'gsl_oro_data_lg_scale::p5()'],['../module__gsl__oro__data__sm__scale_8f90.html#acd4adce684fa1f847ae10a34e97880c8',1,'gsl_oro_data_sm_scale::p5()']]], + ['pi',['pi',['../module__gsl__oro__data__lg__scale_8f90.html#a106896e2e5275627cf76876923a4a4e7',1,'gsl_oro_data_lg_scale::pi()'],['../module__gsl__oro__data__sm__scale_8f90.html#a7782391988931c3e4adb847fb77a5d1b',1,'gsl_oro_data_sm_scale::pi()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_e.html b/ver-1.11.0/orog_mask_tools/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_e.js b/ver-1.11.0/orog_mask_tools/search/all_e.js new file mode 100644 index 000000000..3a63c6a5f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html',1,'']]], + ['read_5fcubed_5fsphere_5fgrid',['read_cubed_sphere_grid',['../lakefrac_8F90.html#aa841d26daa073f2aabb69280f766116f',1,'lakefrac.F90']]], + ['read_5fcubed_5fsphere_5freg_5fgrid',['read_cubed_sphere_reg_grid',['../lakefrac_8F90.html#ab01a9f78d5379416b21c702586ceeb25',1,'lakefrac.F90']]], + ['read_5fg',['read_g',['../mtnlm7__oclsm_8F.html#a5c6879e7eac4e636da7a9ca4f45cbadf',1,'mtnlm7_oclsm.F']]], + ['read_5flakedata',['read_lakedata',['../lakefrac_8F90.html#a42212ca41cc31b8185941580e198a49c',1,'lakefrac.F90']]], + ['read_5forog',['read_orog',['../inland_8F90.html#a13256f272bbba4fb4f4763cf5ac1db03',1,'inland.F90']]], + ['read_5forog_5freg',['read_orog_reg',['../inland_8F90.html#a88b7651035e3c2abae99216ddf9e9619',1,'inland.F90']]], + ['real_5fkind',['real_kind',['../module__gsl__oro__data__lg__scale_8f90.html#abfba279932fc36445d8422b865401cce',1,'gsl_oro_data_lg_scale::real_kind()'],['../module__gsl__oro__data__sm__scale_8f90.html#aae73fa27b19ea2549289acdf058e7302',1,'gsl_oro_data_sm_scale::real_kind()']]], + ['revers',['REVERS',['../mtnlm7__oclsm_8F.html#ac9d0cb9dc1c7923d5f5e63b0bcf1998c',1,'mtnlm7_oclsm.F']]], + ['rg2gg',['rg2gg',['../mtnlm7__oclsm_8F.html#a77b3e5e25f53c7c59daa7639c0b2dc2b',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/all_f.html b/ver-1.11.0/orog_mask_tools/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/all_f.js b/ver-1.11.0/orog_mask_tools/search/all_f.js new file mode 100644 index 000000000..a5f1af7c7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['spfft1',['SPFFT1',['../mtnlm7__oclsm_8F.html#a4d7c649162dc230e994b8b9e28a20c32',1,'mtnlm7_oclsm.F']]], + ['spherical_5fangle',['spherical_angle',['../mtnlm7__oclsm_8F.html#a09845caa8530e4792b7d7dbeac0609b7',1,'mtnlm7_oclsm.F']]], + ['spherical_5fdistance',['spherical_distance',['../mtnlm7__oclsm_8F.html#af72c017d12f741c8cecd92603d4dfa0c',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/classes_0.html b/ver-1.11.0/orog_mask_tools/search/classes_0.html new file mode 100644 index 000000000..e935fdf72 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/classes_0.js b/ver-1.11.0/orog_mask_tools/search/classes_0.js new file mode 100644 index 000000000..d235b9515 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nb_5fgp_5fidx',['nb_gp_idx',['../structcs__nb_1_1nb__gp__idx.html',1,'cs_nb']]], + ['nb_5ftile_5fidx',['nb_tile_idx',['../structcs__nb_1_1nb__tile__idx.html',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/close.png b/ver-1.11.0/orog_mask_tools/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/search/files_0.html b/ver-1.11.0/orog_mask_tools/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_0.js b/ver-1.11.0/orog_mask_tools/search/files_0.js new file mode 100644 index 000000000..4c37f0a9f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enclosure_5fcnvx_2ef90',['enclosure_cnvx.F90',['../enclosure__cnvx_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_1.html b/ver-1.11.0/orog_mask_tools/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_1.js b/ver-1.11.0/orog_mask_tools/search/files_1.js new file mode 100644 index 000000000..c8a036135 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['find_5flimit_2ef90',['find_limit.F90',['../find__limit_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_2.html b/ver-1.11.0/orog_mask_tools/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_2.js b/ver-1.11.0/orog_mask_tools/search/files_2.js new file mode 100644 index 000000000..2092d4a99 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gsl_5foro_5fdata_2ef90',['gsl_oro_data.f90',['../gsl__oro__data_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_3.html b/ver-1.11.0/orog_mask_tools/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_3.js b/ver-1.11.0/orog_mask_tools/search/files_3.js new file mode 100644 index 000000000..943e1e2d6 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inland_2ef90',['inland.F90',['../inland_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_4.html b/ver-1.11.0/orog_mask_tools/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_4.js b/ver-1.11.0/orog_mask_tools/search/files_4.js new file mode 100644 index 000000000..38c8d83ea --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lakefrac_2ef90',['lakefrac.F90',['../lakefrac_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_5.html b/ver-1.11.0/orog_mask_tools/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_5.js b/ver-1.11.0/orog_mask_tools/search/files_5.js new file mode 100644 index 000000000..f0cfd48b7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['module_5fgsl_5foro_5fdata_5flg_5fscale_2ef90',['module_gsl_oro_data_lg_scale.f90',['../module__gsl__oro__data__lg__scale_8f90.html',1,'']]], + ['module_5fgsl_5foro_5fdata_5fsm_5fscale_2ef90',['module_gsl_oro_data_sm_scale.f90',['../module__gsl__oro__data__sm__scale_8f90.html',1,'']]], + ['mtnlm7_5foclsm_2ef',['mtnlm7_oclsm.F',['../mtnlm7__oclsm_8F.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/files_6.html b/ver-1.11.0/orog_mask_tools/search/files_6.html new file mode 100644 index 000000000..98fc6666c --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/files_6.js b/ver-1.11.0/orog_mask_tools/search/files_6.js new file mode 100644 index 000000000..1d110b60d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nb_2ef90',['nb.F90',['../nb_8F90.html',1,'']]], + ['netcdf_5fio_2ef90',['netcdf_io.F90',['../netcdf__io_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_0.html b/ver-1.11.0/orog_mask_tools/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_0.js b/ver-1.11.0/orog_mask_tools/search/functions_0.js new file mode 100644 index 000000000..1367f8e97 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fmtnlm7_5foclsm_2ef_5f_5f',['__mtnlm7_oclsm.F__',['../mtnlm7__oclsm_8F.html#a1ada2e10f7782dcebf9b4f1f8655f5dd',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_1.html b/ver-1.11.0/orog_mask_tools/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_1.js b/ver-1.11.0/orog_mask_tools/search/functions_1.js new file mode 100644 index 000000000..0bd32ad8d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bndry',['bndry',['../nb_8F90.html#a7af27e607c043a485adf2649e56d66a9',1,'cs_nb']]], + ['bndry_5freg',['bndry_reg',['../nb_8F90.html#a99e73c2554abae50e5ed72d37368459c',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_2.html b/ver-1.11.0/orog_mask_tools/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_2.js b/ver-1.11.0/orog_mask_tools/search/functions_2.js new file mode 100644 index 000000000..1e997c944 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['cal_5flake_5ffrac_5fdepth',['cal_lake_frac_depth',['../lakefrac_8F90.html#a7a4e5a1364b5ca25a7e3265799710e7a',1,'lakefrac.F90']]], + ['calc_5fgsl_5foro_5fdata_5flg_5fscale',['calc_gsl_oro_data_lg_scale',['../module__gsl__oro__data__lg__scale_8f90.html#a9830b4caf14b991d636d80fc982d5051',1,'gsl_oro_data_lg_scale']]], + ['calc_5fgsl_5foro_5fdata_5fsm_5fscale',['calc_gsl_oro_data_sm_scale',['../module__gsl__oro__data__sm__scale_8f90.html#a47bccf36fd3d2c3abdd75e925b2e6d05',1,'gsl_oro_data_sm_scale']]], + ['calc_5fmean_5fhgt',['calc_mean_HGT',['../module__gsl__oro__data__lg__scale_8f90.html#a90c214b49da3bc31101edd3d3c54b5fe',1,'gsl_oro_data_lg_scale']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_3.html b/ver-1.11.0/orog_mask_tools/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_3.js b/ver-1.11.0/orog_mask_tools/search/functions_3.js new file mode 100644 index 000000000..965bd92e0 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enclosure_5fcnvx',['enclosure_cnvx',['../enclosure__cnvx_8F90.html#a0235896a27bb16a029a62ef4561f24d8',1,'enclosure_cnvx.F90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_4.html b/ver-1.11.0/orog_mask_tools/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_4.js b/ver-1.11.0/orog_mask_tools/search/functions_4.js new file mode 100644 index 000000000..ebe8795dd --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['find_5flimit',['find_limit',['../find__limit_8F90.html#a7563fb772438eebc1103f6e998ac4f8d',1,'find_limit.F90']]], + ['free_5fmem',['free_mem',['../inland_8F90.html#af870fa97d145db8f6393c3b424bd9ab9',1,'inland.F90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_5.html b/ver-1.11.0/orog_mask_tools/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_5.js b/ver-1.11.0/orog_mask_tools/search/functions_5.js new file mode 100644 index 000000000..071617037 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['get_5findex',['get_index',['../mtnlm7__oclsm_8F.html#a769428525e5b18b568caee947d3b82a9',1,'mtnlm7_oclsm.F']]], + ['get_5flat_5fangle',['get_lat_angle',['../mtnlm7__oclsm_8F.html#a78820ab0db4ba91dfe77bf7c217a5b57',1,'mtnlm7_oclsm.F']]], + ['get_5flon_5fangle',['get_lon_angle',['../mtnlm7__oclsm_8F.html#a3f1211168f9c2ab893d7fc6570b6f2d5',1,'mtnlm7_oclsm.F']]], + ['get_5fmismatch_5findex',['get_mismatch_index',['../mtnlm7__oclsm_8F.html#a705d54995150872d6ae14236173e46e8',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum',['get_xnsum',['../mtnlm7__oclsm_8F.html#ab8f4b7ec89af87c58814d6a58ac2fbb1',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum2',['get_xnsum2',['../mtnlm7__oclsm_8F.html#a18c367f7d76c7c3d586be9ce028bbb02',1,'mtnlm7_oclsm.F']]], + ['get_5fxnsum3',['get_xnsum3',['../mtnlm7__oclsm_8F.html#a6d50be662748bf70df0762927f612590',1,'mtnlm7_oclsm.F']]], + ['gg2rg',['gg2rg',['../mtnlm7__oclsm_8F.html#a6089afa6ac190f08ef375fee7c689f85',1,'mtnlm7_oclsm.F']]], + ['gsl_5foro_5fdata',['gsl_oro_data',['../gsl__oro__data_8f90.html#a06ef850c217b3e20e204be8a39edf228',1,'gsl_oro_data.f90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_6.html b/ver-1.11.0/orog_mask_tools/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_6.js b/ver-1.11.0/orog_mask_tools/search/functions_6.js new file mode 100644 index 000000000..0eda12e1d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hgt_5finterpolate',['HGT_interpolate',['../module__gsl__oro__data__lg__scale_8f90.html#adbe21346d8ed23ff6d765b565c7058ff',1,'gsl_oro_data_lg_scale']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_7.html b/ver-1.11.0/orog_mask_tools/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_7.js b/ver-1.11.0/orog_mask_tools/search/functions_7.js new file mode 100644 index 000000000..84cd41f1b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['idx_5finit',['idx_init',['../nb_8F90.html#aaae14862ca35fcdae38da182a23a27e7',1,'cs_nb']]], + ['idx_5finit_5freg',['idx_init_reg',['../nb_8F90.html#ab9cf42e22e061e7a9061472878d87c35',1,'cs_nb']]], + ['inland_5fmask',['inland_mask',['../inland_8F90.html#a571ea8ce2ce3aa308f70c9fb2bfbfea1',1,'inland.F90']]], + ['inside_5fa_5fpolygon',['inside_a_polygon',['../mtnlm7__oclsm_8F.html#af10c3a1bba5248b6a97c15b5a3b0cb43',1,'mtnlm7_oclsm.F']]], + ['interp_5f1d',['interp_1d',['../module__gsl__oro__data__lg__scale_8f90.html#a5bb95a0f684cd2f38d45103b548e6e06',1,'gsl_oro_data_lg_scale::interp_1d()'],['../module__gsl__oro__data__sm__scale_8f90.html#ae51d541f8e6fed7a3b2bdc6de709f695',1,'gsl_oro_data_sm_scale::interp_1d()']]], + ['interpolate_5fmismatch',['interpolate_mismatch',['../mtnlm7__oclsm_8F.html#a065d9f691c8d972ccd6513e2789466ff',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_8.html b/ver-1.11.0/orog_mask_tools/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_8.js b/ver-1.11.0/orog_mask_tools/search/functions_8.js new file mode 100644 index 000000000..fe0965914 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lake_5ffrac',['lake_frac',['../lakefrac_8F90.html#a563966340bfa6668f1c820c8a8c33464',1,'lakefrac.F90']]], + ['latlon2xyz',['latlon2xyz',['../mtnlm7__oclsm_8F.html#a5869b044207f7ecb10fb381ece00732c',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_9.html b/ver-1.11.0/orog_mask_tools/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_9.js b/ver-1.11.0/orog_mask_tools/search/functions_9.js new file mode 100644 index 000000000..6384584a3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_9.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['makemt',['MAKEMT',['../mtnlm7__oclsm_8F.html#a5c2e2a509b6e61e6b6f3f5e9f557f840',1,'mtnlm7_oclsm.F']]], + ['makemt2',['MAKEMT2',['../mtnlm7__oclsm_8F.html#a414eafe8038c2fab3946184779fde05e',1,'mtnlm7_oclsm.F']]], + ['makeoa',['MAKEOA',['../mtnlm7__oclsm_8F.html#a7e691da90c36d54272f96a2bf0af1911',1,'mtnlm7_oclsm.F']]], + ['makeoa2',['MAKEOA2',['../mtnlm7__oclsm_8F.html#aa7ab3d50b802188dfd1423400a497b3f',1,'mtnlm7_oclsm.F']]], + ['makeoa3',['MAKEOA3',['../mtnlm7__oclsm_8F.html#ae0b135a5ca65d703a8dbfbbf7f3f8f1a',1,'mtnlm7_oclsm.F']]], + ['makepc',['MAKEPC',['../mtnlm7__oclsm_8F.html#a51453de3ed7c8a88cd52cf83ef95afed',1,'mtnlm7_oclsm.F']]], + ['makepc2',['MAKEPC2',['../mtnlm7__oclsm_8F.html#a4bc2434bf006798fdc689584f325eab3',1,'mtnlm7_oclsm.F']]], + ['mark_5fglobal_5finland',['mark_global_inland',['../inland_8F90.html#a160b9961900b2d0b7b39fe58177ef3d3',1,'inland.F90']]], + ['mark_5fglobal_5finland_5frec_5fd',['mark_global_inland_rec_d',['../inland_8F90.html#a61f40758fbff460eb3f89f06bdac3e9d',1,'inland.F90']]], + ['mark_5finland_5freg',['mark_inland_reg',['../inland_8F90.html#a1f9bad82f013cdfc76b9501fc08a2ddb',1,'inland.F90']]], + ['mark_5fregional_5finland_5frec_5fd',['mark_regional_inland_rec_d',['../inland_8F90.html#a628ce4a7d56a78989ae59de5f76d0605',1,'inland.F90']]], + ['maxmin',['maxmin',['../mtnlm7__oclsm_8F.html#a8648e114af02377f94e03cc40412de58',1,'mtnlm7_oclsm.F']]], + ['middle',['middle',['../find__limit_8F90.html#a4026a55bcab89cc04ed41c2de8cefa97',1,'find_limit.F90']]], + ['minmaxj',['minmaxj',['../mtnlm7__oclsm_8F.html#a574feab9626884b79a10fdcd2d8543aa',1,'mtnlm7_oclsm.F']]], + ['minmxj',['minmxj',['../mtnlm7__oclsm_8F.html#aba287a6bf35bffc12e6abc31c13c3874',1,'mtnlm7_oclsm.F']]], + ['mnmxja',['mnmxja',['../mtnlm7__oclsm_8F.html#aa54e80b7136f9cc0d224515945c960f0',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_a.html b/ver-1.11.0/orog_mask_tools/search/functions_a.html new file mode 100644 index 000000000..3958eb7b9 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_a.js b/ver-1.11.0/orog_mask_tools/search/functions_a.js new file mode 100644 index 000000000..f3c72a5b6 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['nanc',['nanc',['../mtnlm7__oclsm_8F.html#ae8df58dcb775885e68d83118c2f449af',1,'mtnlm7_oclsm.F']]], + ['nc_5fopchk',['nc_opchk',['../inland_8F90.html#a3b10845ba96fd1baced9b9bcfd827382',1,'nc_opchk(stat, opname): inland.F90'],['../lakefrac_8F90.html#a371dafc6b513e49bf8b70cdd44056a47',1,'nc_opchk(stat, opname): lakefrac.F90']]], + ['nearest_5fi_5feast',['nearest_i_east',['../module__gsl__oro__data__lg__scale_8f90.html#a705e630d560e2e06f41e5fb270536e0c',1,'gsl_oro_data_lg_scale::nearest_i_east()'],['../module__gsl__oro__data__sm__scale_8f90.html#a70eecd2214e27cc1b3a1ba9df34a0fa2',1,'gsl_oro_data_sm_scale::nearest_i_east()']]], + ['nearest_5fi_5fwest',['nearest_i_west',['../module__gsl__oro__data__lg__scale_8f90.html#a76d4b7d1141c857bbc966501c10773bb',1,'gsl_oro_data_lg_scale::nearest_i_west()'],['../module__gsl__oro__data__sm__scale_8f90.html#a5c159035e2f834234c86d03d03501721',1,'gsl_oro_data_sm_scale::nearest_i_west()']]], + ['nearest_5fj_5fnorth',['nearest_j_north',['../module__gsl__oro__data__lg__scale_8f90.html#ae0e03d1499520602a17d736865f0ba4e',1,'gsl_oro_data_lg_scale::nearest_j_north()'],['../module__gsl__oro__data__sm__scale_8f90.html#ae3419ce89b20a3f4914aae1118c9e9a1',1,'gsl_oro_data_sm_scale::nearest_j_north()']]], + ['nearest_5fj_5fsouth',['nearest_j_south',['../module__gsl__oro__data__lg__scale_8f90.html#aa5337925dccfc23e3b53d5cd227b913d',1,'gsl_oro_data_lg_scale::nearest_j_south()'],['../module__gsl__oro__data__sm__scale_8f90.html#a2c0fc49ed515bc17b7e948dfa666a4d3',1,'gsl_oro_data_sm_scale::nearest_j_south()']]], + ['neighbors',['neighbors',['../nb_8F90.html#ace6fa1f89e4876ab016e16eea286840f',1,'cs_nb']]], + ['neighbors_5freg',['neighbors_reg',['../nb_8F90.html#a234b842800712dc795acc1236aece069',1,'cs_nb']]], + ['netcdf_5ferr',['netcdf_err',['../netcdf__io_8F90.html#a442215c3836c0cf8a853c078861ba79f',1,'netcdf_err(): netcdf_io.F90'],['../module__gsl__oro__data__lg__scale_8f90.html#a3bde411a1f85506a546fa572e48ff1a5',1,'gsl_oro_data_lg_scale::netcdf_err()'],['../module__gsl__oro__data__sm__scale_8f90.html#adc21bfea4012c64cadd2ada20a011f2d',1,'gsl_oro_data_sm_scale::netcdf_err()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_b.html b/ver-1.11.0/orog_mask_tools/search/functions_b.html new file mode 100644 index 000000000..b99b702d2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_b.js b/ver-1.11.0/orog_mask_tools/search/functions_b.js new file mode 100644 index 000000000..e8ca56b46 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['read_5fcubed_5fsphere_5fgrid',['read_cubed_sphere_grid',['../lakefrac_8F90.html#aa841d26daa073f2aabb69280f766116f',1,'lakefrac.F90']]], + ['read_5fcubed_5fsphere_5freg_5fgrid',['read_cubed_sphere_reg_grid',['../lakefrac_8F90.html#ab01a9f78d5379416b21c702586ceeb25',1,'lakefrac.F90']]], + ['read_5fg',['read_g',['../mtnlm7__oclsm_8F.html#a5c6879e7eac4e636da7a9ca4f45cbadf',1,'mtnlm7_oclsm.F']]], + ['read_5flakedata',['read_lakedata',['../lakefrac_8F90.html#a42212ca41cc31b8185941580e198a49c',1,'lakefrac.F90']]], + ['read_5forog',['read_orog',['../inland_8F90.html#a13256f272bbba4fb4f4763cf5ac1db03',1,'inland.F90']]], + ['read_5forog_5freg',['read_orog_reg',['../inland_8F90.html#a88b7651035e3c2abae99216ddf9e9619',1,'inland.F90']]], + ['revers',['REVERS',['../mtnlm7__oclsm_8F.html#ac9d0cb9dc1c7923d5f5e63b0bcf1998c',1,'mtnlm7_oclsm.F']]], + ['rg2gg',['rg2gg',['../mtnlm7__oclsm_8F.html#a77b3e5e25f53c7c59daa7639c0b2dc2b',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_c.html b/ver-1.11.0/orog_mask_tools/search/functions_c.html new file mode 100644 index 000000000..3a33d874d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_c.js b/ver-1.11.0/orog_mask_tools/search/functions_c.js new file mode 100644 index 000000000..a5f1af7c7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['spfft1',['SPFFT1',['../mtnlm7__oclsm_8F.html#a4d7c649162dc230e994b8b9e28a20c32',1,'mtnlm7_oclsm.F']]], + ['spherical_5fangle',['spherical_angle',['../mtnlm7__oclsm_8F.html#a09845caa8530e4792b7d7dbeac0609b7',1,'mtnlm7_oclsm.F']]], + ['spherical_5fdistance',['spherical_distance',['../mtnlm7__oclsm_8F.html#af72c017d12f741c8cecd92603d4dfa0c',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_d.html b/ver-1.11.0/orog_mask_tools/search/functions_d.html new file mode 100644 index 000000000..31b75b889 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_d.js b/ver-1.11.0/orog_mask_tools/search/functions_d.js new file mode 100644 index 000000000..3706ca456 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tersub',['TERSUB',['../mtnlm7__oclsm_8F.html#af7ce95e03de8598d7973206258f49b3e',1,'mtnlm7_oclsm.F']]], + ['timef',['timef',['../mtnlm7__oclsm_8F.html#a6e5afa4168cab2cdedef3c01e086494f',1,'mtnlm7_oclsm.F']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/functions_e.html b/ver-1.11.0/orog_mask_tools/search/functions_e.html new file mode 100644 index 000000000..cddb9bb58 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/functions_e.js b/ver-1.11.0/orog_mask_tools/search/functions_e.js new file mode 100644 index 000000000..ff7912046 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/functions_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['write_5finland',['write_inland',['../inland_8F90.html#ad288f94eea205f8bbefe728949dcd9bc',1,'inland.F90']]], + ['write_5finland_5freg',['write_inland_reg',['../inland_8F90.html#a2cda3688f47a34f75fcf47aef8c80ff5',1,'inland.F90']]], + ['write_5flakedata_5fto_5forodata',['write_lakedata_to_orodata',['../lakefrac_8F90.html#a112a771a17cd632ad6e86df6095fde92',1,'lakefrac.F90']]], + ['write_5fnetcdf',['write_netcdf',['../netcdf__io_8F90.html#a1bd28cc07c5a0a840b7ef4d0fbb09e34',1,'netcdf_io.F90']]], + ['write_5freg_5flakedata_5fto_5forodata',['write_reg_lakedata_to_orodata',['../lakefrac_8F90.html#a654cc9802a12e781ed1ef9e878ad0390',1,'lakefrac.F90']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/mag_sel.png b/ver-1.11.0/orog_mask_tools/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/search/nomatches.html b/ver-1.11.0/orog_mask_tools/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/pages_0.html b/ver-1.11.0/orog_mask_tools/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/pages_0.js b/ver-1.11.0/orog_mask_tools/search/pages_0.js new file mode 100644 index 000000000..44e9a1f43 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['orog_5fmask_5ftools',['orog_mask_tools',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/pages_1.html b/ver-1.11.0/orog_mask_tools/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/pages_1.js b/ver-1.11.0/orog_mask_tools/search/pages_1.js new file mode 100644 index 000000000..565ea3eb3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_orog_mask_tools_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/search.css b/ver-1.11.0/orog_mask_tools/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/orog_mask_tools/search/search.js b/ver-1.11.0/orog_mask_tools/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/search/search_r.png b/ver-1.11.0/orog_mask_tools/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_0.js b/ver-1.11.0/orog_mask_tools/search/variables_0.js new file mode 100644 index 000000000..7794e1809 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cres',['cres',['../nb_8F90.html#aa93675ed7244e1cd4cd615058f99a99d',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_1.html b/ver-1.11.0/orog_mask_tools/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_1.js b/ver-1.11.0/orog_mask_tools/search/variables_1.js new file mode 100644 index 000000000..6b43d77a2 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['dbl_5fkind',['dbl_kind',['../module__gsl__oro__data__lg__scale_8f90.html#af515441651e6330674ca8d097d54f677',1,'gsl_oro_data_lg_scale::dbl_kind()'],['../module__gsl__oro__data__sm__scale_8f90.html#ac7d6d045f24fa1cc1ffab6706431ca1f',1,'gsl_oro_data_sm_scale::dbl_kind()']]], + ['dimx_5ffine',['dimx_fine',['../module__gsl__oro__data__lg__scale_8f90.html#afd82effea9dc0b005e2087b3cec01a49',1,'gsl_oro_data_lg_scale::dimx_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#af8983b13c23372ece106c72bfbe63e90',1,'gsl_oro_data_sm_scale::dimx_fine()']]], + ['dimy_5ffine',['dimy_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a885f79645890aad41b977914275ba525',1,'gsl_oro_data_lg_scale::dimy_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#a5025b4ef045cfd7738a92fd178938d8a',1,'gsl_oro_data_sm_scale::dimy_fine()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_2.html b/ver-1.11.0/orog_mask_tools/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_2.js b/ver-1.11.0/orog_mask_tools/search/variables_2.js new file mode 100644 index 000000000..3939f8241 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gp_5ftype',['gp_type',['../structcs__nb_1_1nb__gp__idx.html#af8aa3bce5f2d1f299fd265f8f3691308',1,'cs_nb::nb_gp_idx']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_3.html b/ver-1.11.0/orog_mask_tools/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_3.js b/ver-1.11.0/orog_mask_tools/search/variables_3.js new file mode 100644 index 000000000..10ea6edf4 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hgt_5fm_5ffine',['hgt_m_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a44e278cef37433021fe5511695e3d561',1,'gsl_oro_data_lg_scale']]], + ['hgt_5fmissing',['hgt_missing',['../module__gsl__oro__data__lg__scale_8f90.html#aeb13d7583cec4631c61eb20d09858d71',1,'gsl_oro_data_lg_scale']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_4.html b/ver-1.11.0/orog_mask_tools/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_4.js b/ver-1.11.0/orog_mask_tools/search/variables_4.js new file mode 100644 index 000000000..3d38527bc --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ijt',['ijt',['../structcs__nb_1_1nb__gp__idx.html#a48f7f9040b5a941929f66ac6221015d3',1,'cs_nb::nb_gp_idx']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_5.html b/ver-1.11.0/orog_mask_tools/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_5.js b/ver-1.11.0/orog_mask_tools/search/variables_5.js new file mode 100644 index 000000000..a6a56fa37 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lat1d_5ffine',['lat1d_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a5afe7069f54a8e1b32f4902c998c982d',1,'gsl_oro_data_lg_scale::lat1d_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#ac960f2375dc2f5b3d62ccada02f8cb9c',1,'gsl_oro_data_sm_scale::lat1d_fine()']]], + ['lon1d_5ffine',['lon1d_fine',['../module__gsl__oro__data__lg__scale_8f90.html#a15e32bfe7c1d734a752fdce23e204ec2',1,'gsl_oro_data_lg_scale::lon1d_fine()'],['../module__gsl__oro__data__sm__scale_8f90.html#a34dc581bef8be30f67342415930dcfd9',1,'gsl_oro_data_sm_scale::lon1d_fine()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_6.html b/ver-1.11.0/orog_mask_tools/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_6.js b/ver-1.11.0/orog_mask_tools/search/variables_6.js new file mode 100644 index 000000000..6847cbef3 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nb_5ftile',['nb_tile',['../nb_8F90.html#aecec88fcf61e8758e7ecfaf9b20f6646',1,'cs_nb']]], + ['nb_5ftile_5fbndry',['nb_tile_bndry',['../structcs__nb_1_1nb__tile__idx.html#a6a3ad44e8747514cdc8d5497294d8235',1,'cs_nb::nb_tile_idx']]], + ['nb_5ftile_5fnum',['nb_tile_num',['../structcs__nb_1_1nb__tile__idx.html#a1c657bd72e795f728f24048500a5a30e',1,'cs_nb::nb_tile_idx']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_7.html b/ver-1.11.0/orog_mask_tools/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_7.js b/ver-1.11.0/orog_mask_tools/search/variables_7.js new file mode 100644 index 000000000..42b7d29fa --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['p5',['p5',['../module__gsl__oro__data__lg__scale_8f90.html#acbd44de1592fc3f7a07abb060772b0ba',1,'gsl_oro_data_lg_scale::p5()'],['../module__gsl__oro__data__sm__scale_8f90.html#acd4adce684fa1f847ae10a34e97880c8',1,'gsl_oro_data_sm_scale::p5()']]], + ['pi',['pi',['../module__gsl__oro__data__lg__scale_8f90.html#a106896e2e5275627cf76876923a4a4e7',1,'gsl_oro_data_lg_scale::pi()'],['../module__gsl__oro__data__sm__scale_8f90.html#a7782391988931c3e4adb847fb77a5d1b',1,'gsl_oro_data_sm_scale::pi()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_8.html b/ver-1.11.0/orog_mask_tools/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_8.js b/ver-1.11.0/orog_mask_tools/search/variables_8.js new file mode 100644 index 000000000..deaef4083 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['real_5fkind',['real_kind',['../module__gsl__oro__data__lg__scale_8f90.html#abfba279932fc36445d8422b865401cce',1,'gsl_oro_data_lg_scale::real_kind()'],['../module__gsl__oro__data__sm__scale_8f90.html#aae73fa27b19ea2549289acdf058e7302',1,'gsl_oro_data_sm_scale::real_kind()']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_9.html b/ver-1.11.0/orog_mask_tools/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_9.js b/ver-1.11.0/orog_mask_tools/search/variables_9.js new file mode 100644 index 000000000..b16081bcf --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xres',['xres',['../nb_8F90.html#af51ba8f325f52f48251bcad67666814f',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/search/variables_a.html b/ver-1.11.0/orog_mask_tools/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/orog_mask_tools/search/variables_a.js b/ver-1.11.0/orog_mask_tools/search/variables_a.js new file mode 100644 index 000000000..5856929d5 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/search/variables_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yres',['yres',['../nb_8F90.html#a4cd1b2f08cc1882705ca33b622801f45',1,'cs_nb']]] +]; diff --git a/ver-1.11.0/orog_mask_tools/splitbar.png b/ver-1.11.0/orog_mask_tools/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.html b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.html new file mode 100644 index 000000000..b9f98d192 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.html @@ -0,0 +1,164 @@ + + + + + + + +orog_mask_tools: cs_nb::nb_gp_idx Type Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cs_nb::nb_gp_idx Type Reference
    +
    +
    + +

    Neighboring cell descriptor. + More...

    + + + + + + + + +

    +Data Fields

    integer gp_type
     Cell boundary type from bndry function. More...
     
    integer, dimension(3, 8) ijt
     Neighboring cell indices. More...
     
    +

    Detailed Description

    +

    Neighboring cell descriptor.

    + +

    Definition at line 17 of file nb.F90.

    +

    Field Documentation

    + +

    ◆ gp_type

    + +
    +
    + + + + +
    integer cs_nb::nb_gp_idx::gp_type
    +
    + +

    Cell boundary type from bndry function.

    + +

    Definition at line 18 of file nb.F90.

    + +
    +
    + +

    ◆ ijt

    + +
    +
    + + + + +
    integer, dimension(3,8) cs_nb::nb_gp_idx::ijt
    +
    + +

    Neighboring cell indices.

    + +

    Definition at line 19 of file nb.F90.

    + +
    +
    +
    The documentation for this type was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.js b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.js new file mode 100644 index 000000000..eec51dcff --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__gp__idx.js @@ -0,0 +1,5 @@ +var structcs__nb_1_1nb__gp__idx = +[ + [ "gp_type", "structcs__nb_1_1nb__gp__idx.html#af8aa3bce5f2d1f299fd265f8f3691308", null ], + [ "ijt", "structcs__nb_1_1nb__gp__idx.html#a48f7f9040b5a941929f66ac6221015d3", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.html b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.html new file mode 100644 index 000000000..0a77941b8 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.html @@ -0,0 +1,164 @@ + + + + + + + +orog_mask_tools: cs_nb::nb_tile_idx Type Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    orog_mask_tools +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cs_nb::nb_tile_idx Type Reference
    +
    +
    + +

    Neighboring tile descriptor. + More...

    + + + + + + + + +

    +Data Fields

    character(1) nb_tile_bndry
     Neighbor tile boundary (l)eft, (r)ight, (t)op, (b)ottom. More...
     
    integer nb_tile_num
     Neighbor tile number (1..6) More...
     
    +

    Detailed Description

    +

    Neighboring tile descriptor.

    + +

    Definition at line 11 of file nb.F90.

    +

    Field Documentation

    + +

    ◆ nb_tile_bndry

    + +
    +
    + + + + +
    character (1) cs_nb::nb_tile_idx::nb_tile_bndry
    +
    + +

    Neighbor tile boundary (l)eft, (r)ight, (t)op, (b)ottom.

    + +

    Definition at line 13 of file nb.F90.

    + +
    +
    + +

    ◆ nb_tile_num

    + +
    +
    + + + + +
    integer cs_nb::nb_tile_idx::nb_tile_num
    +
    + +

    Neighbor tile number (1..6)

    + +

    Definition at line 12 of file nb.F90.

    + +
    +
    +
    The documentation for this type was generated from the following file:
      +
    • /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/orog_mask_tools.fd/inland.fd/nb.F90
    • +
    +
    +
    + + + + diff --git a/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.js b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.js new file mode 100644 index 000000000..86be6bf09 --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/structcs__nb_1_1nb__tile__idx.js @@ -0,0 +1,5 @@ +var structcs__nb_1_1nb__tile__idx = +[ + [ "nb_tile_bndry", "structcs__nb_1_1nb__tile__idx.html#a6a3ad44e8747514cdc8d5497294d8235", null ], + [ "nb_tile_num", "structcs__nb_1_1nb__tile__idx.html#a1c657bd72e795f728f24048500a5a30e", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/orog_mask_tools/sync_off.png b/ver-1.11.0/orog_mask_tools/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/sync_on.png b/ver-1.11.0/orog_mask_tools/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/tab_a.png b/ver-1.11.0/orog_mask_tools/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/tab_b.png b/ver-1.11.0/orog_mask_tools/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/orog_mask_tools/tabs.css b/ver-1.11.0/orog_mask_tools/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/orog_mask_tools/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/resize.js b/ver-1.11.0/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/search/close.png b/ver-1.11.0/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/search/mag_sel.png b/ver-1.11.0/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/search/nomatches.html b/ver-1.11.0/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/search/search.css b/ver-1.11.0/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/search/search.js b/ver-1.11.0/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/search/search_r.png b/ver-1.11.0/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/docs/README.md
    +
    +
    +
    1 This program creates climatological surface fields on the model grid,
    2 such as soil type and albedo.
    3 
    4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/bc_s.png b/ver-1.11.0/sfc_climo_gen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/bdwn.png b/ver-1.11.0/sfc_climo_gen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..2b554d65c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..0569f8204 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "sfc_climo_gen.fd", "dir_fb798a7feaa65c5ad0c9ba7a62162d13.html", "dir_fb798a7feaa65c5ad0c9ba7a62162d13" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.html b/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.html new file mode 100644 index 000000000..50a518396 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.html @@ -0,0 +1,142 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sfc_climo_gen.fd Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  driver.F90 [code]
     Interpolates static surface data from lat/lon grid, to FV3 model grid.
     
    file  interp.F90 [code]
     Read the input source data and interpolate it to the model grid.
     
    file  interp_frac_cats.F90 [code]
     Read the input cateogorical source data and interpolate percent of each category to the model grid.
     
    file  model_grid.F90 [code]
     Defines the model grid.
     
    file  output.f90 [code]
     Output model data for a single tile and a single record.
     
    file  output_frac_cats.F90 [code]
     Write model categorical data for a single tile.
     
    file  program_setup.f90 [code]
     Program setup.
     
    file  search.f90 [code]
     Replace undefined values on the model grid with a valid value at a nearby neighbor.
     
    file  search_frac_cats.f90 [code]
     Replace undefined values on the model grid.
     
    file  source_grid.F90 [code]
     Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid.
     
    file  utils.f90 [code]
     Utilities.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.js b/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.js new file mode 100644 index 000000000..8c1f95fbd --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/dir_fb798a7feaa65c5ad0c9ba7a62162d13.js @@ -0,0 +1,14 @@ +var dir_fb798a7feaa65c5ad0c9ba7a62162d13 = +[ + [ "driver.F90", "driver_8F90.html", "driver_8F90" ], + [ "interp.F90", "interp_8F90.html", "interp_8F90" ], + [ "interp_frac_cats.F90", "interp__frac__cats_8F90.html", "interp__frac__cats_8F90" ], + [ "model_grid.F90", "model__grid_8F90.html", "model__grid_8F90" ], + [ "output.f90", "output_8f90.html", "output_8f90" ], + [ "output_frac_cats.F90", "output__frac__cats_8F90.html", "output__frac__cats_8F90" ], + [ "program_setup.f90", "program__setup_8f90.html", "program__setup_8f90" ], + [ "search.f90", "search_8f90.html", "search_8f90" ], + [ "search_frac_cats.f90", "search__frac__cats_8f90.html", "search__frac__cats_8f90" ], + [ "source_grid.F90", "source__grid_8F90.html", "source__grid_8F90" ], + [ "utils.f90", "utils_8f90.html", "utils_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/doc.png b/ver-1.11.0/sfc_climo_gen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/doxygen.css b/ver-1.11.0/sfc_climo_gen/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/sfc_climo_gen/doxygen.png b/ver-1.11.0/sfc_climo_gen/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/driver_8F90.html b/ver-1.11.0/sfc_climo_gen/driver_8F90.html new file mode 100644 index 000000000..4e36fe650 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/driver_8F90.html @@ -0,0 +1,153 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/driver.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    driver.F90 File Reference
    +
    +
    + +

    Interpolates static surface data from lat/lon grid, to FV3 model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program driver
     Reads static surface data on a global lat/lon grid, interpolates the data to the fv3 model grid, and outputs the result in netcdf format. More...
     
    +

    Detailed Description

    +

    Interpolates static surface data from lat/lon grid, to FV3 model grid.

    +
    Author
    George Gayno
    + +

    Definition in file driver.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ driver()

    + +
    +
    + + + + + + + +
    program driver ()
    +
    + +

    Reads static surface data on a global lat/lon grid, interpolates the data to the fv3 model grid, and outputs the result in netcdf format.

    +

    Program execution is controlled by variables defined in the program configuration namelist (see module program_setup for details).

    +

    Requires the following input files: 1) Model mosaic file (netcdf) 2) Model orography files (netcdf) 3) Model grid files (netcdf) 4) Source data file on global lat/lon grid (netcdf)

    +

    Outputs surface data on the model tiles in netcdf format.

    +
    Returns
    0 for success, error code otherwise.
    +
    Author
    George Gayno
    + +

    Definition at line 24 of file driver.F90.

    + +

    References model_grid::define_model_grid(), source_grid::define_source_grid(), utils::error_handler(), program_setup::fract_vegsoil_type, program_setup::input_facsf_file, program_setup::input_leaf_area_index_file, program_setup::input_maximum_snow_albedo_file, program_setup::input_slope_type_file, program_setup::input_snowfree_albedo_file, program_setup::input_soil_color_file, program_setup::input_soil_type_file, program_setup::input_substrate_temperature_file, program_setup::input_vegetation_greenness_file, program_setup::input_vegetation_type_file, interp(), interp_frac_cats(), program_setup::leaf_area_index_method, program_setup::maximum_snow_albedo_method, model_grid::model_grid_cleanup(), program_setup::read_setup_namelist(), program_setup::snowfree_albedo_method, source_grid::source_grid_cleanup(), and program_setup::vegetation_greenness_method.

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/driver_8F90.js b/ver-1.11.0/sfc_climo_gen/driver_8F90.js new file mode 100644 index 000000000..e30528280 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/driver_8F90.js @@ -0,0 +1,4 @@ +var driver_8F90 = +[ + [ "driver", "driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/driver_8F90_source.html b/ver-1.11.0/sfc_climo_gen/driver_8F90_source.html new file mode 100644 index 000000000..27b5c8ec3 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/driver_8F90_source.html @@ -0,0 +1,133 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/driver.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    driver.F90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    24  program driver
    25 
    26  use model_grid
    27  use source_grid
    28  use program_setup
    29  use utils
    30  use esmf
    31 
    32  implicit none
    33 
    34  integer :: rc
    35  integer :: localpet
    36  integer :: npets
    37 
    38  type(esmf_vm) :: vm
    39  type(esmf_regridmethod_flag) :: method
    40 
    41 !-------------------------------------------------------------------------
    42 ! Initialize MPI and ESMF environments.
    43 !-------------------------------------------------------------------------
    44 
    45  call mpi_init(rc)
    46 
    47  print*,"- INITIALIZE ESMF"
    48  call esmf_initialize(rc=rc)
    49  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    50  call error_handler("INITIALIZING ESMF", rc)
    51 
    52  print*,"- CALL VMGetGlobal"
    53  call esmf_vmgetglobal(vm, rc=rc)
    54  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    55  call error_handler("IN VMGetGlobal.", rc)
    56 
    57  print*,"- CALL VMGet"
    58  call esmf_vmget(vm, localpet=localpet, petcount=npets, rc=rc)
    59  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    60  call error_handler("IN VMGet.", rc)
    61 
    62  print*,'- NPETS IS ',npets
    63  print*,'- LOCAL PET ',localpet
    64 
    65 !-------------------------------------------------------------------------
    66 ! Program set up step.
    67 !-------------------------------------------------------------------------
    68 
    69  call read_setup_namelist(localpet)
    70 
    71 !-------------------------------------------------------------------------
    72 ! Define fv3 model grid.
    73 !-------------------------------------------------------------------------
    74 
    75  call define_model_grid(localpet, npets)
    76 
    77 !-------------------------------------------------------------------------
    78 ! Interpolate fields. Vegetation type must be done first as
    79 ! it defines which points are permanent land ice.
    80 !-------------------------------------------------------------------------
    81 
    82  call define_source_grid(localpet, npets, input_vegetation_type_file)
    83  if (fract_vegsoil_type) then
    84  print*,'- WILL OUTPUT VEGETATION TYPE FRACTION AND DOMINANT CATEGORY.'
    86  else
    87  print*,'- WILL OUTPUT DOMINANT VEGETATION TYPE.'
    88  method=esmf_regridmethod_nearest_stod
    89  call interp(localpet, method, input_vegetation_type_file)
    90  endif
    92 
    93 ! Snow free albedo
    94 
    95  if (trim(input_snowfree_albedo_file) /= "NULL") then
    96  call define_source_grid(localpet, npets, input_snowfree_albedo_file)
    97  method=esmf_regridmethod_bilinear
    98  if (trim(snowfree_albedo_method)=="conserve") method=esmf_regridmethod_conserve
    99  call interp(localpet, method, input_snowfree_albedo_file)
    101  endif
    102 
    103 ! Maximum snow albedo
    104 
    105  if (trim(input_maximum_snow_albedo_file) /= "NULL") then
    107  method=esmf_regridmethod_bilinear
    108  if (trim(maximum_snow_albedo_method)=="conserve") method=esmf_regridmethod_conserve
    109  call interp(localpet, method, input_maximum_snow_albedo_file)
    111  endif
    112 
    113 ! FACSF - fractional coverage for strong zenith angle
    114 ! dependant albedo.
    115 
    116  if (trim(input_facsf_file) /= "NULL") then
    117  call define_source_grid(localpet, npets, input_facsf_file)
    118  method=esmf_regridmethod_bilinear
    119  call interp(localpet, method, input_facsf_file)
    121  endif
    122 
    123 ! Soil substrate temperature
    124 
    125  if (trim(input_substrate_temperature_file) /= "NULL") then
    127  method=esmf_regridmethod_bilinear
    128  call interp(localpet, method, input_substrate_temperature_file)
    130  endif
    131 
    132 ! Slope type
    133 
    134  if (trim(input_slope_type_file) /= "NULL") then
    135  call define_source_grid(localpet, npets, input_slope_type_file)
    136  method=esmf_regridmethod_nearest_stod
    137  call interp(localpet, method, input_slope_type_file)
    139  endif
    140 
    141 ! Soil type
    142 
    143  if (trim(input_soil_type_file) /= "NULL") then
    144  call define_source_grid(localpet, npets, input_soil_type_file)
    145  if (fract_vegsoil_type) then
    146  print*,'- WILL OUTPUT SOIL TYPE FRACTION AND DOMINANT CATEGORY.'
    147  call interp_frac_cats(localpet, input_soil_type_file)
    148  else
    149  print*,'- WILL OUTPUT DOMINANT SOIL TYPE.'
    150  method=esmf_regridmethod_nearest_stod
    151  call interp(localpet, method, input_soil_type_file)
    152  endif
    154  endif
    155 
    156 ! Soil color
    157 
    158  if (trim(input_soil_color_file) /= "NULL") then
    159  call define_source_grid(localpet, npets, input_soil_color_file)
    160  method=esmf_regridmethod_nearest_stod
    161  call interp(localpet, method, input_soil_color_file)
    163  endif
    164 
    165 
    166 ! Vegetation greenness
    167 
    168  if (trim(input_vegetation_greenness_file) /= "NULL") then
    170  method=esmf_regridmethod_bilinear
    171  if (trim(vegetation_greenness_method)=="conserve") method=esmf_regridmethod_conserve
    172  call interp(localpet, method, input_vegetation_greenness_file)
    174  endif
    175 
    176 ! Leaf Area Index
    177 
    178  if (trim(input_leaf_area_index_file) /= "NULL") then
    179  call define_source_grid(localpet, npets, input_leaf_area_index_file)
    180  method=esmf_regridmethod_bilinear
    181  if (trim(leaf_area_index_method)=="conserve") method=esmf_regridmethod_conserve
    182  call interp(localpet, method, input_leaf_area_index_file)
    184  endif
    185 
    186  call model_grid_cleanup
    187 
    188  print*,"- CALL ESMF_finalize"
    189  call esmf_finalize(endflag=esmf_end_keepmpi, rc=rc)
    190 
    191  call mpi_finalize(rc)
    192 
    193  print*,'- DONE.'
    194  stop
    195 
    196  end program driver
    Set up program execution.
    +
    subroutine, public model_grid_cleanup
    Model grid cleanup.
    Definition: model_grid.F90:424
    +
    subroutine, public define_model_grid(localpet, npets)
    Define model grid.
    Definition: model_grid.F90:62
    +
    character(len=50), public snowfree_albedo_method
    Interpolation method for snowfree albedo.
    +
    character(len=500), public input_facsf_file
    File containing input fractional coverage data for strong zenith angle dependent albedo.
    +
    character(len=500), public input_soil_type_file
    File containing input soil type data.
    +
    logical, public fract_vegsoil_type
    When true, output the percentage of each soil and vegetation type category, and the dominant category...
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    character(len=500), public input_snowfree_albedo_file
    File containing input snow-free albedo data.
    +
    character(len=500), public input_maximum_snow_albedo_file
    File containing input maximum snow albedo data.
    +
    subroutine, public read_setup_namelist(localpet)
    Read program setup namelist.
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    subroutine, public define_source_grid(localpet, npets, input_file)
    Defines esmf grid object for source grid.
    Definition: source_grid.F90:52
    +
    subroutine interp_frac_cats(localpet, input_file)
    Read the input source data and interpolate it to the model grid.
    +
    subroutine, public source_grid_cleanup
    Free up memory associated with this module.
    +
    program driver
    Reads static surface data on a global lat/lon grid, interpolates the data to the fv3 model grid...
    Definition: driver.F90:24
    +
    character(len=500), public input_leaf_area_index_file
    File containing input leaf area index data.
    +
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    subroutine interp(localpet, method, input_file)
    Read the input source data and interpolate it to the model grid.
    Definition: interp.F90:14
    +
    character(len=500), public input_vegetation_greenness_file
    File containing input vegetation greenness data.
    +
    character(len=50), public leaf_area_index_method
    Interpolation method for leaf area index.
    +
    Utilities.
    Definition: utils.f90:8
    +
    character(len=500), public input_slope_type_file
    File containing input slope type data.
    +
    character(len=50), public maximum_snow_albedo_method
    Interpolation method for max snow albedo.
    +
    character(len=500), public input_soil_color_file
    File containing input soil color data.
    +
    character(len=500), public input_vegetation_type_file
    File containing input vegetation type data.
    +
    character(len=500), public input_substrate_temperature_file
    File containing input soil substrate temperature data.
    +
    character(len=50), public vegetation_greenness_method
    Interpolation method for vegetation greenness.
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/dynsections.js b/ver-1.11.0/sfc_climo_gen/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +sfc_climo_gen: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + +
      sorc
      sfc_climo_gen.fd
     driver.F90Interpolates static surface data from lat/lon grid, to FV3 model grid
     interp.F90Read the input source data and interpolate it to the model grid
     interp_frac_cats.F90Read the input cateogorical source data and interpolate percent of each category to the model grid
     model_grid.F90Defines the model grid
     output.f90Output model data for a single tile and a single record
     output_frac_cats.F90Write model categorical data for a single tile
     program_setup.f90Program setup
     search.f90Replace undefined values on the model grid with a valid value at a nearby neighbor
     search_frac_cats.f90Replace undefined values on the model grid
     source_grid.F90Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid
     utils.f90Utilities
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/files_dup.js b/ver-1.11.0/sfc_climo_gen/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/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/ver-1.11.0/sfc_climo_gen/folderclosed.png b/ver-1.11.0/sfc_climo_gen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/globals.html b/ver-1.11.0/sfc_climo_gen/globals.html new file mode 100644 index 000000000..ac427869d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/globals.html @@ -0,0 +1,123 @@ + + + + + + + +sfc_climo_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/globals_func.html b/ver-1.11.0/sfc_climo_gen/globals_func.html new file mode 100644 index 000000000..5d3fef857 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/globals_func.html @@ -0,0 +1,123 @@ + + + + + + + +sfc_climo_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/index.html b/ver-1.11.0/sfc_climo_gen/index.html new file mode 100644 index 000000000..e79421edf --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/index.html @@ -0,0 +1,109 @@ + + + + + + + +sfc_climo_gen: sfc_climo_gen + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sfc_climo_gen
    +
    +
    +

    +Introduction

    +

    The sfc_climo_gen program driver.F90 creates surface climatological fields, such as vegetation type and albedo, for an FV3 grid.

    +

    This document is part of the UFS_UTILS documentation.

    +

    This program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/interp_8F90.html b/ver-1.11.0/sfc_climo_gen/interp_8F90.html new file mode 100644 index 000000000..6397950cb --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp_8F90.html @@ -0,0 +1,245 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/interp.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    interp.F90 File Reference
    +
    +
    + +

    Read the input source data and interpolate it to the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Functions/Subroutines

    subroutine adjust_for_landice (field, vegt, idim, jdim, field_ch)
     Ensure consistent fields at land ice points. More...
     
    subroutine interp (localpet, method, input_file)
     Read the input source data and interpolate it to the model grid. More...
     
    +

    Detailed Description

    +

    Read the input source data and interpolate it to the model grid.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file interp.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ adjust_for_landice()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine adjust_for_landice (real(esmf_kind_r4), dimension(idim,jdim), intent(inout) field,
    real(esmf_kind_i4), dimension(idim,jdim), intent(in) vegt,
    integer, intent(in) idim,
    integer, intent(in) jdim,
    character(len=*), intent(in) field_ch 
    )
    +
    + +

    Ensure consistent fields at land ice points.

    +

    Land ice is vegetation type 15 (variable landice). output is Model field.

    +
    Parameters
    + + + + + + +
    [in]fieldModel field before adjustments for land ice.
    [in]vegtVegetation type on the model tile.
    [in,out]idimi dimension of model tile.
    [in,out]jdimj dimension of model tile.
    [in]field_chField name.
    +
    +
    +
    Author
    George Gayno NCEP/EMC
    + +

    Definition at line 291 of file interp.F90.

    + +

    Referenced by interp().

    + +
    +
    + +

    ◆ interp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine interp (integer localpet,
    type(esmf_regridmethod_flag), intent(in) method,
    character(len=*), intent(in) input_file 
    )
    +
    + +

    Read the input source data and interpolate it to the model grid.

    +
    Parameters
    + + + + +
    [in]localpetthis mpi task
    [in]methodinterpolation method.defined where mask=1
    [in]input_filefilename of input source data.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 14 of file interp.F90.

    + +

    References adjust_for_landice(), model_grid::data_field_mdl, utils::error_handler(), source_grid::field_names, program_setup::fract_vegsoil_type, source_grid::grid_src, model_grid::i_mdl, source_grid::i_src, model_grid::j_mdl, source_grid::j_src, model_grid::latitude_field_mdl, model_grid::longitude_field_mdl, model_grid::mask_field_mdl, model_grid::missing, utils::netcdf_err(), source_grid::num_fields, model_grid::num_tiles, source_grid::num_time_recs, output(), search(), and model_grid::vegt_field_mdl.

    + +

    Referenced by driver().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/interp_8F90.js b/ver-1.11.0/sfc_climo_gen/interp_8F90.js new file mode 100644 index 000000000..7b20ab4bc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp_8F90.js @@ -0,0 +1,5 @@ +var interp_8F90 = +[ + [ "adjust_for_landice", "interp_8F90.html#a16ec757345ad00f2004b636caeac5e72", null ], + [ "interp", "interp_8F90.html#ac237b91c4757b45946297adf2729c350", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/interp_8F90_source.html b/ver-1.11.0/sfc_climo_gen/interp_8F90_source.html new file mode 100644 index 000000000..da9d63dfc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp_8F90_source.html @@ -0,0 +1,131 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/interp.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    interp.F90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    13  subroutine interp(localpet, method, input_file)
    14 
    15  use esmf
    16  use netcdf
    17  use model_grid
    19  use source_grid
    20  use utils
    21  use mpi
    22 
    23  implicit none
    24 
    25  character(len=*), intent(in) :: input_file
    26 
    27  integer :: rc, localpet
    28  integer :: i, j, ij, tile, n, ncid, status
    29  integer :: l(1), u(1), t
    30  integer :: clb_mdl(2), cub_mdl(2)
    31  integer :: varid, record
    32  integer :: tile_num, pt_loc_this_tile
    33  integer :: isrctermprocessing
    34 
    35  integer(esmf_kind_i4), allocatable :: mask_mdl_one_tile(:,:)
    36  integer(esmf_kind_i4), pointer :: unmapped_ptr(:)
    37 
    38  real(esmf_kind_r4), pointer :: data_mdl_ptr(:,:)
    39  real(esmf_kind_r4), pointer :: data_src_ptr(:,:)
    40  real(esmf_kind_r4), allocatable :: data_src_global(:,:)
    41  real(esmf_kind_r4), allocatable :: data_mdl_one_tile(:,:)
    42  real(esmf_kind_r4), allocatable :: vegt_mdl_one_tile(:,:)
    43  real(esmf_kind_r4), allocatable :: lat_mdl_one_tile(:,:)
    44  real(esmf_kind_r4), allocatable :: lon_mdl_one_tile(:,:)
    45 
    46  type(esmf_regridmethod_flag),intent(in) :: method
    47  type(esmf_field) :: data_field_src
    48  type(esmf_routehandle) :: regrid_data
    49  type(esmf_polemethod_flag) :: pole
    50 
    51  print*,"- CALL FieldCreate FOR SOURCE GRID DATA."
    52  data_field_src = esmf_fieldcreate(grid_src, &
    53  typekind=esmf_typekind_r4, &
    54  indexflag=esmf_index_global, &
    55  staggerloc=esmf_staggerloc_center, &
    56  name="source data", &
    57  rc=rc)
    58  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    59  call error_handler("IN FieldCreate", rc)
    60 
    61  print*,"- CALL FieldGet FOR SOURCE GRID DATA."
    62  nullify(data_src_ptr)
    63  call esmf_fieldget(data_field_src, &
    64  farrayptr=data_src_ptr, &
    65  rc=rc)
    66  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    67  call error_handler("IN FieldGet", rc)
    68 
    69  print*,"- CALL FieldGet FOR MODEL GRID DATA."
    70  nullify(data_mdl_ptr)
    71  call esmf_fieldget(data_field_mdl, &
    72  farrayptr=data_mdl_ptr, &
    73  computationallbound=clb_mdl, &
    74  computationalubound=cub_mdl, &
    75  rc=rc)
    76  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    77  call error_handler("IN FieldGet", rc)
    78 
    79  if (localpet == 0) then
    80  allocate(data_src_global(i_src,j_src))
    81  else
    82  allocate(data_src_global(0,0))
    83  endif
    84 
    85  print*,'- OPEN SOURCE FILE ', trim(input_file)
    86  status = nf90_open(input_file, nf90_nowrite, ncid)
    87  call netcdf_err(status, "IN ROUTINE INTERP OPENING SOURCE FILE")
    88 
    89  if (localpet == 0) then
    90  allocate(data_mdl_one_tile(i_mdl,j_mdl))
    91  allocate(mask_mdl_one_tile(i_mdl,j_mdl))
    92  allocate(lat_mdl_one_tile(i_mdl,j_mdl))
    93  allocate(lon_mdl_one_tile(i_mdl,j_mdl))
    94  else
    95  allocate(data_mdl_one_tile(0,0))
    96  allocate(mask_mdl_one_tile(0,0))
    97  allocate(lat_mdl_one_tile(0,0))
    98  allocate(lon_mdl_one_tile(0,0))
    99  endif
    100 
    101  record = 0
    102 
    103  time_loop : do t = 1, num_time_recs ! loop over each time period
    104 
    105  field_loop : do n = 1, num_fields ! loop over each surface field.
    106 
    107  record = record + 1
    108 
    109  if (localpet == 0) then
    110  status = nf90_inq_varid(ncid, field_names(n), varid)
    111  call netcdf_err(status, "IN ROUTINE INTERP READING FIELD ID")
    112  status = nf90_get_var(ncid, varid, data_src_global, start=(/1,1,t/), count=(/i_src,j_src,1/))
    113  call netcdf_err(status, "IN ROUTINE INTERP READING FIELD")
    114  endif
    115 
    116  print*,"- CALL FieldScatter FOR SOURCE GRID DATA."
    117  call esmf_fieldscatter(data_field_src, data_src_global, rootpet=0, rc=rc)
    118  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    119  call error_handler("IN FieldScatter.", rc)
    120 
    121  isrctermprocessing = 1
    122 
    123  if (record == 1) then
    124 
    125  if (method == esmf_regridmethod_bilinear) then
    126  pole = esmf_polemethod_allavg
    127  else
    128  pole = esmf_polemethod_none
    129  endif
    130 
    131  print*,"- CALL FieldRegridStore."
    132  nullify(unmapped_ptr)
    133  call esmf_fieldregridstore(data_field_src, &
    134  data_field_mdl, &
    135  srcmaskvalues=(/0/), &
    136  dstmaskvalues=(/0/), &
    137  polemethod=pole, &
    138  unmappedaction=esmf_unmappedaction_ignore, &
    139  normtype=esmf_normtype_fracarea, &
    140  srctermprocessing=isrctermprocessing, &
    141  routehandle=regrid_data, &
    142  regridmethod=method, &
    143  unmappeddstlist=unmapped_ptr, &
    144  rc=rc)
    145  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    146  call error_handler("IN FieldRegridStore.", rc)
    147 
    148  endif
    149 
    150  print*,"- CALL Field_Regrid."
    151  call esmf_fieldregrid(data_field_src, &
    152  data_field_mdl, &
    153  routehandle=regrid_data, &
    154  termorderflag=esmf_termorder_srcseq, &
    155  rc=rc)
    156  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    157  call error_handler("IN FieldRegrid.", rc)
    158 
    159 !-----------------------------------------------------------------------
    160 ! Unmapped points are stored in "unmapped_ptr". The pointer contains
    161 ! "ij" global indices as follows:
    162 !
    163 ! tile 1: 1 thru (itile*jtile)
    164 ! tile n: (n-1)*(itile*jtile) thru n*(itile*jtile)
    165 !
    166 ! This "ij" index is converted to the tile number and i/j index of the
    167 ! field object. This logic assumes the model grid object was
    168 ! created using "GLOBAL" indices.
    169 !
    170 ! Unmapped data points are given the flag value of -9999.9, which
    171 ! will be replaced in routine "search".
    172 !-----------------------------------------------------------------------
    173 
    174  l = lbound(unmapped_ptr)
    175  u = ubound(unmapped_ptr)
    176  do ij = l(1), u(1)
    177 
    178  tile_num = ((unmapped_ptr(ij)-1) / (i_mdl*j_mdl)) ! tile number minus 1
    179  pt_loc_this_tile = unmapped_ptr(ij) - (tile_num * i_mdl * j_mdl)
    180  ! "ij" location of point within tile.
    181 
    182  j = (pt_loc_this_tile - 1) / i_mdl + 1
    183  i = mod(pt_loc_this_tile, i_mdl)
    184  if (i==0) i = i_mdl
    185  data_mdl_ptr(i,j) = -9999.9
    186 
    187  enddo
    188 
    189 ! Adjust some fields at permanent land ice points. These points are identified by the
    190 ! 'permanent ice' vegetation type category.
    191 !
    192 ! When outputting the fraction of each vegetation type, land ice points are
    193 ! not defined. So don't do this adjustment.
    194 
    195  if (.not. fract_vegsoil_type) then
    196  select case (trim(field_names(n)))
    197  case ('substrate_temperature','vegetation_greenness','leaf_area_index','slope_type','soil_type','soil_color')
    198  if (localpet == 0) then
    199  allocate(vegt_mdl_one_tile(i_mdl,j_mdl))
    200  else
    201  allocate(vegt_mdl_one_tile(0,0))
    202  endif
    203  end select
    204  endif
    205 
    206  output_loop : do tile = 1, num_tiles
    207 
    208  print*,"- CALL FieldGather FOR MODEL LATITUDE."
    209  call esmf_fieldgather(latitude_field_mdl, lat_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    210  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    211  call error_handler("IN FieldGather.", rc)
    212 
    213  print*,"- CALL FieldGather FOR MODEL LONGITUDE."
    214  call esmf_fieldgather(longitude_field_mdl, lon_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    215  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    216  call error_handler("IN FieldGather.", rc)
    217 
    218  print*,"- CALL FieldGather FOR MODEL GRID DATA."
    219  call esmf_fieldgather(data_field_mdl, data_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    220  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    221  call error_handler("IN FieldGather.", rc)
    222 
    223  print*,"- CALL FieldGather FOR MODEL GRID LAND MASK."
    224  call esmf_fieldgather(mask_field_mdl, mask_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    225  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    226  call error_handler("IN FieldGather.", rc)
    227 
    228  if (.not. fract_vegsoil_type) then
    229  select case (trim(field_names(n)))
    230  case ('substrate_temperature','vegetation_greenness','leaf_area_index','slope_type','soil_type','soil_color')
    231  print*,"- CALL FieldGather FOR MODEL GRID VEG TYPE."
    232  call esmf_fieldgather(vegt_field_mdl, vegt_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    233  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    234  call error_handler("IN FieldGather.", rc)
    235  end select
    236  endif
    237 
    238  if (localpet == 0) then
    239  print*,'- CALL SEARCH FOR TILE ',tile
    240  call search (data_mdl_one_tile, mask_mdl_one_tile, i_mdl, j_mdl, tile, field_names(n))
    241  if (.not. fract_vegsoil_type) then
    242  select case (field_names(n))
    243  case ('substrate_temperature','vegetation_greenness','leaf_area_index','slope_type','soil_type','soil_color')
    244  call adjust_for_landice (data_mdl_one_tile, vegt_mdl_one_tile, i_mdl, j_mdl, field_names(n))
    245  end select
    246  endif
    247  where(mask_mdl_one_tile == 0) data_mdl_one_tile = missing
    248  call output (data_mdl_one_tile, lat_mdl_one_tile, lon_mdl_one_tile, i_mdl, j_mdl, tile, record, t, n)
    249  endif
    250 
    251  if (.not. fract_vegsoil_type) then
    252  if (field_names(n) == 'vegetation_type') then
    253  print*,"- CALL FieldScatter FOR MODEL GRID VEGETATION TYPE."
    254  call esmf_fieldscatter(vegt_field_mdl, data_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    255  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    256  call error_handler("IN FieldScatter.", rc)
    257  endif
    258  endif
    259 
    260  enddo output_loop
    261 
    262  if (allocated(vegt_mdl_one_tile)) deallocate(vegt_mdl_one_tile)
    263 
    264  enddo field_loop
    265  enddo time_loop
    266 
    267  status=nf90_close(ncid)
    268 
    269  deallocate(data_mdl_one_tile, mask_mdl_one_tile)
    270  deallocate(data_src_global, lat_mdl_one_tile, lon_mdl_one_tile)
    271 
    272  print*,"- CALL FieldRegridRelease."
    273  call esmf_fieldregridrelease(routehandle=regrid_data, rc=rc)
    274 
    275  print*,"- CALL FieldDestroy."
    276  call esmf_fielddestroy(data_field_src, rc=rc)
    277 
    278  end subroutine interp
    279 
    290  subroutine adjust_for_landice(field, vegt, idim, jdim, field_ch)
    292  use esmf
    293  use mpi
    294 
    295  implicit none
    296 
    297  character(len=*), intent(in) :: field_ch
    298 
    299  integer, intent(in) :: idim, jdim
    300 
    301  real(esmf_kind_i4), intent(in) :: vegt(idim,jdim)
    302  real(esmf_kind_r4), intent(inout) :: field(idim,jdim)
    303 
    304  integer, parameter :: landice=15
    305 
    306  integer :: i, j, ierr
    307 
    308  real :: landice_value
    309 
    310  select case (field_ch)
    311  case ('substrate_temperature') ! soil substrate temp
    312  landice_value = 273.15
    313  do j = 1, jdim
    314  do i = 1, idim
    315  if (nint(vegt(i,j)) == landice) then
    316  field(i,j) = min(field(i,j), landice_value)
    317  endif
    318  enddo
    319  enddo
    320  case ('vegetation_greenness') ! vegetation greenness
    321  landice_value = 0.01 ! 1.0% is bare ground
    322  do j = 1, jdim
    323  do i = 1, idim
    324  if (nint(vegt(i,j)) == landice) then
    325  field(i,j) = landice_value
    326  endif
    327  enddo
    328  enddo
    329  case ('leaf_area_index') ! leaf area index
    330  landice_value = 0.0 ! bare ground
    331  do j = 1, jdim
    332  do i = 1, idim
    333  if (nint(vegt(i,j)) == landice) then
    334  field(i,j) = landice_value
    335  endif
    336  enddo
    337  enddo
    338  case ('slope_type') ! slope type
    339  landice_value = 9.0
    340  do j = 1, jdim
    341  do i = 1, idim
    342  if (nint(vegt(i,j)) == landice) then
    343  field(i,j) = landice_value
    344  else
    345  if (nint(field(i,j)) == nint(landice_value)) field(i,j) = 2.0
    346  endif
    347  enddo
    348  enddo
    349  case ('soil_type') ! soil type
    350  landice_value = 16.0
    351  do j = 1, jdim
    352  do i = 1, idim
    353  if (nint(vegt(i,j)) == landice) then
    354  field(i,j) = landice_value
    355  else
    356  if (nint(field(i,j)) == nint(landice_value)) field(i,j) = 6.0
    357  endif
    358  enddo
    359  enddo
    360  case ('soil_color') ! soil color
    361  landice_value = 10.0
    362  do j = 1, jdim
    363  do i = 1, idim
    364  if (nint(vegt(i,j)) == landice) then
    365  field(i,j) = landice_value
    366  endif
    367  enddo
    368  enddo
    369  case default
    370  print*,'- FATAL ERROR IN ROUTINE ADJUST_FOR_LANDICE. UNIDENTIFIED FIELD : ', field_ch
    371  call mpi_abort(mpi_comm_world, 57, ierr)
    372  end select
    373 
    374  end subroutine adjust_for_landice
    integer, public j_src
    j dimension of the source grid.
    Definition: source_grid.F90:25
    +
    Set up program execution.
    +
    type(esmf_field), public vegt_field_mdl
    ESMF field object that holds the vegetation type on the model grid.
    Definition: model_grid.F90:45
    +
    subroutine search(field, mask, idim, jdim, tile, field_name)
    Replace undefined values on the model grid with a valid value at a nearby neighbor.
    Definition: search.f90:24
    +
    subroutine output(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, tile, record, time, field_idx)
    Output model data for a single tile and a single record in netcdf format.
    Definition: output.f90:20
    +
    character(len=50), dimension(:), allocatable, public field_names
    Names of fields to be processed.
    Definition: source_grid.F90:21
    +
    real(kind=4), public missing
    Value assigned to undefined points (i.e., ocean points for a land field).
    Definition: model_grid.F90:25
    +
    type(esmf_field), public longitude_field_mdl
    ESMF field object that holds the model grid longitude.
    Definition: model_grid.F90:43
    +
    logical, public fract_vegsoil_type
    When true, output the percentage of each soil and vegetation type category, and the dominant category...
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    integer, public j_mdl
    j dimension of model tile.
    Definition: model_grid.F90:21
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    integer, public num_time_recs
    Number of time records.
    Definition: source_grid.F90:27
    +
    subroutine adjust_for_landice(field, vegt, idim, jdim, field_ch)
    Ensure consistent fields at land ice points.
    Definition: interp.F90:291
    +
    type(esmf_field), public latitude_field_mdl
    ESMF field object that holds the model grid latitude.
    Definition: model_grid.F90:41
    +
    integer, public i_mdl
    i dimension of model tile.
    Definition: model_grid.F90:20
    +
    type(esmf_field), public mask_field_mdl
    ESMF field object that holds the model land mask.
    Definition: model_grid.F90:37
    +
    type(esmf_field), public data_field_mdl
    ESMF field object that holds the data interpolated to model grid.
    Definition: model_grid.F90:29
    +
    integer, public num_tiles
    Total number of model grid tiles.
    Definition: model_grid.F90:23
    +
    integer, public i_src
    i dimension of the source grid.
    Definition: source_grid.F90:24
    +
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    subroutine interp(localpet, method, input_file)
    Read the input source data and interpolate it to the model grid.
    Definition: interp.F90:14
    +
    integer, public num_fields
    Number of fields in the file.
    Definition: source_grid.F90:28
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    type(esmf_grid), public grid_src
    ESMF grid object for the source grid.
    Definition: source_grid.F90:34
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.html b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.html new file mode 100644 index 000000000..3cce49db1 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.html @@ -0,0 +1,172 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/interp_frac_cats.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    interp_frac_cats.F90 File Reference
    +
    +
    + +

    Read the input cateogorical source data and interpolate percent of each category to the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine interp_frac_cats (localpet, input_file)
     Read the input source data and interpolate it to the model grid. More...
     
    +

    Detailed Description

    +

    Read the input cateogorical source data and interpolate percent of each category to the model grid.

    +
    Author
    George Gayno
    +
    Date
    2022
    + +

    Definition in file interp_frac_cats.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ interp_frac_cats()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine interp_frac_cats (integer, intent(in) localpet,
    character(len=*), intent(in) input_file 
    )
    +
    + +

    Read the input source data and interpolate it to the model grid.

    +

    Outputs the percentage of each category within a model grid box and the dominant category.

    +
    Parameters
    + + + +
    [in]localpetthis mpi task
    [in]input_filefilename of input source data.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2022
    + +

    Definition at line 15 of file interp_frac_cats.F90.

    + +

    References utils::error_handler(), source_grid::field_names, model_grid::grid_mdl, source_grid::grid_src, model_grid::i_mdl, source_grid::i_src, model_grid::j_mdl, source_grid::j_src, model_grid::land_frac_field_mdl, model_grid::latitude_field_mdl, model_grid::longitude_field_mdl, model_grid::mask_field_mdl, utils::netcdf_err(), model_grid::num_tiles, output_frac_cats::output_driver(), and search_frac_cats().

    + +

    Referenced by driver().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.js b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.js new file mode 100644 index 000000000..6694898a3 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90.js @@ -0,0 +1,4 @@ +var interp__frac__cats_8F90 = +[ + [ "interp_frac_cats", "interp__frac__cats_8F90.html#a85e03b6b02557ddaef7da4b2a86e4667", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90_source.html b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90_source.html new file mode 100644 index 000000000..fe3a7db63 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/interp__frac__cats_8F90_source.html @@ -0,0 +1,126 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/interp_frac_cats.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    interp_frac_cats.F90
    +
    +
    +Go to the documentation of this file.
    1 
    6 
    14  subroutine interp_frac_cats(localpet, input_file)
    15 
    16  use esmf
    17  use netcdf
    18  use model_grid, only : grid_mdl, i_mdl, j_mdl, &
    22  use source_grid
    24  use utils
    25  use mpi
    26 
    27  implicit none
    28 
    29  character(len=*), intent(in) :: input_file
    30 
    31  integer, intent(in) :: localpet
    32 
    33  integer :: i, j, tile, cat, ncid, status, rc
    34  integer :: varid, water_category, max_cat
    35  integer :: isrctermprocessing
    36  integer :: category, num_categories
    37 
    38  integer(esmf_kind_i4), allocatable :: mask_mdl_one_tile(:,:)
    39  integer(esmf_kind_i4), pointer :: unmapped_ptr(:)
    40 
    41  real(esmf_kind_r4), allocatable :: data_src_global(:,:)
    42  real(esmf_kind_r4), allocatable :: data_src_global2(:,:,:)
    43  real(esmf_kind_r4), allocatable :: data_mdl_one_tile(:,:,:)
    44  real(esmf_kind_r4), allocatable :: dom_cat_mdl_one_tile(:,:)
    45  real(esmf_kind_r4), allocatable :: lat_mdl_one_tile(:,:)
    46  real(esmf_kind_r4), allocatable :: sum_mdl_one_tile(:,:)
    47  real(esmf_kind_r4), allocatable :: lon_mdl_one_tile(:,:)
    48  real(esmf_kind_r4), allocatable :: land_frac_mdl_one_tile(:,:)
    49  real(esmf_kind_r4) :: max_frac
    50 
    51  type(esmf_regridmethod_flag) :: method
    52  type(esmf_field) :: data_field_src
    53  type(esmf_field) :: data_field_mdl
    54  type(esmf_routehandle) :: regrid_data
    55  type(esmf_polemethod_flag) :: pole
    56 
    57  if (localpet == 0) then
    58  allocate(data_src_global(i_src,j_src))
    59  else
    60  allocate(data_src_global(0,0))
    61  endif
    62 
    63  if (localpet == 0) then
    64  print*,'- OPEN SOURCE FILE ', trim(input_file)
    65  status = nf90_open(input_file, nf90_nowrite, ncid)
    66  call netcdf_err(status, "IN ROUTINE INTERP OPENING SOURCE FILE")
    67  status = nf90_inq_varid(ncid, field_names(1), varid)
    68  call netcdf_err(status, "IN ROUTINE INTERP READING FIELD ID")
    69  status = nf90_get_var(ncid, varid, data_src_global, start=(/1,1,1/), count=(/i_src,j_src,1/))
    70  call netcdf_err(status, "IN ROUTINE INTERP READING FIELD")
    71  print*,'number of cats ',maxval(data_src_global)
    72  num_categories = nint(maxval(data_src_global))
    73  status = nf90_get_att(ncid, varid, 'water_category', water_category)
    74  call netcdf_err(status, "IN ROUTINE INTERP READING water_category")
    75  print*,'water cat ',water_category
    76  endif
    77 
    78  call mpi_bcast(num_categories,1,mpi_integer,0,mpi_comm_world,status)
    79 
    80  print*,"- CALL FieldCreate FOR SOURCE GRID DATA."
    81  data_field_src = esmf_fieldcreate(grid_src, &
    82  typekind=esmf_typekind_r4, &
    83  indexflag=esmf_index_global, &
    84  staggerloc=esmf_staggerloc_center, &
    85  ungriddedlbound=(/1/), &
    86  ungriddedubound=(/num_categories/), &
    87  name="source data", &
    88  rc=rc)
    89  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    90  call error_handler("IN FieldCreate", rc)
    91 
    92  print*,"- CALL FieldCreate FOR model GRID veg DATA."
    93  data_field_mdl = esmf_fieldcreate(grid_mdl, &
    94  typekind=esmf_typekind_r4, &
    95  indexflag=esmf_index_global, &
    96  staggerloc=esmf_staggerloc_center, &
    97  ungriddedlbound=(/1/), &
    98  ungriddedubound=(/num_categories/), &
    99  name="mdl data", &
    100  rc=rc)
    101  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    102  call error_handler("IN FieldCreate", rc)
    103 
    104  if (localpet == 0) then
    105  allocate(data_src_global2(i_src,j_src,num_categories))
    106  allocate(data_mdl_one_tile(i_mdl,j_mdl,num_categories))
    107  allocate(dom_cat_mdl_one_tile(i_mdl,j_mdl))
    108  allocate(mask_mdl_one_tile(i_mdl,j_mdl))
    109  allocate(land_frac_mdl_one_tile(i_mdl,j_mdl))
    110  allocate(lat_mdl_one_tile(i_mdl,j_mdl))
    111  allocate(sum_mdl_one_tile(i_mdl,j_mdl))
    112  allocate(lon_mdl_one_tile(i_mdl,j_mdl))
    113  else
    114  allocate(data_src_global2(0,0,0))
    115  allocate(data_mdl_one_tile(0,0,0))
    116  allocate(dom_cat_mdl_one_tile(0,0))
    117  allocate(mask_mdl_one_tile(0,0))
    118  allocate(land_frac_mdl_one_tile(0,0))
    119  allocate(lat_mdl_one_tile(0,0))
    120  allocate(sum_mdl_one_tile(0,0))
    121  allocate(lon_mdl_one_tile(0,0))
    122  endif
    123 
    124  if (localpet == 0) then
    125  data_src_global2 = 0.0
    126  do j = 1, j_src
    127  do i = 1, i_src
    128  category = nint(data_src_global(i,j))
    129  if (category < 1) cycle
    130  data_src_global2(i,j,category) = 1.0
    131  enddo
    132  enddo
    133  endif
    134 
    135  deallocate(data_src_global)
    136 
    137  print*,"- CALL FieldScatter FOR SOURCE GRID DATA."
    138  call esmf_fieldscatter(data_field_src, data_src_global2, rootpet=0, rc=rc)
    139  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    140  call error_handler("IN FieldScatter.", rc)
    141 
    142  deallocate(data_src_global2)
    143 
    144  isrctermprocessing = 1
    145 
    146  method = esmf_regridmethod_conserve
    147  pole = esmf_polemethod_none
    148 
    149  print*,"- CALL FieldRegridStore."
    150  nullify(unmapped_ptr)
    151  call esmf_fieldregridstore(data_field_src, &
    152  data_field_mdl, &
    153  srcmaskvalues=(/0/), &
    154  dstmaskvalues=(/0/), &
    155  polemethod=pole, &
    156  unmappedaction=esmf_unmappedaction_ignore, &
    157  normtype=esmf_normtype_fracarea, &
    158  srctermprocessing=isrctermprocessing, &
    159  routehandle=regrid_data, &
    160  regridmethod=method, &
    161  unmappeddstlist=unmapped_ptr, &
    162  rc=rc)
    163  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    164  call error_handler("IN FieldRegridStore.", rc)
    165 
    166  print*,"- CALL Field_Regrid."
    167  call esmf_fieldregrid(data_field_src, &
    168  data_field_mdl, &
    169  routehandle=regrid_data, &
    170  termorderflag=esmf_termorder_srcseq, &
    171  rc=rc)
    172  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    173  call error_handler("IN FieldRegrid.", rc)
    174 
    175  print*,"- CALL FieldRegridRelease."
    176  call esmf_fieldregridrelease(routehandle=regrid_data, rc=rc)
    177 
    178  print*,"- CALL FieldDestroy."
    179  call esmf_fielddestroy(data_field_src, rc=rc)
    180 
    181  output_loop : do tile = 1, num_tiles
    182 
    183  print*,"- CALL FieldGather FOR MODEL LATITUDE."
    184  call esmf_fieldgather(latitude_field_mdl, lat_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    185  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    186  call error_handler("IN FieldGather.", rc)
    187 
    188  print*,"- CALL FieldGather FOR MODEL LONGITUDE."
    189  call esmf_fieldgather(longitude_field_mdl, lon_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    190  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    191  call error_handler("IN FieldGather.", rc)
    192 
    193  print*,"- CALL FieldGather FOR MODEL GRID DATA."
    194  call esmf_fieldgather(data_field_mdl, data_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    195  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    196  call error_handler("IN FieldGather.", rc)
    197 
    198  print*,"- CALL FieldGather FOR MODEL GRID LAND MASK."
    199  call esmf_fieldgather(mask_field_mdl, mask_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    200  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    201  call error_handler("IN FieldGather.", rc)
    202 
    203  print*,"- CALL FieldGather FOR MODEL GRID LAND FRACTION."
    204  call esmf_fieldgather(land_frac_field_mdl, land_frac_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    205  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    206  call error_handler("IN FieldGather.", rc)
    207 
    208  if (localpet == 0) then
    209  print*,'- CALL SEARCH FOR TILE ',tile
    210 
    211 ! Where sum is zero, the regridding did not find any input data for the model point
    212 ! (ex. and isolated island). Call the search routine at these points.
    213  sum_mdl_one_tile = sum(data_mdl_one_tile, dim=3)
    214  do j = 1, j_mdl
    215  do i = 1, i_mdl
    216  if (mask_mdl_one_tile(i,j) == 1 .and. sum_mdl_one_tile(i,j) == 0.0) then
    217  data_mdl_one_tile(i,j,:) = -9999.9 ! flag to tell search routine to search.
    218  endif
    219  enddo
    220  enddo
    221  call search_frac_cats (data_mdl_one_tile, mask_mdl_one_tile, i_mdl, j_mdl, num_categories, tile, field_names(1))
    222  print*,'after regrid ',data_mdl_one_tile(i_mdl/2,j_mdl/2,:)
    223 
    224 ! These points are all non-land. Set to 100% of the water category.
    225  do j = 1, j_mdl
    226  do i = 1, i_mdl
    227  if (mask_mdl_one_tile(i,j) == 0) then
    228  data_mdl_one_tile(i,j,water_category) = 1.0
    229  endif
    230  enddo
    231  enddo
    232 
    233 ! For fractional grids, need to rescale the category percentages by the
    234 ! fraction of land in the model grid cell.
    235 
    236 ! When running with fractional grids, the land_frac_mdl_one_tile array will
    237 ! contain a fraction between 0 and 1. When not running with fractional
    238 ! grids, this array will contain negative fill values.
    239 
    240  if (maxval(land_frac_mdl_one_tile) > 0.0) then
    241  print*,'before rescale ',tile,land_frac_mdl_one_tile(42,82),data_mdl_one_tile(42,82,:)
    242  do j = 1, j_mdl
    243  do i = 1, i_mdl
    244  if (mask_mdl_one_tile(i,j) == 1) then
    245  data_mdl_one_tile(i,j,:) = data_mdl_one_tile(i,j,:) * land_frac_mdl_one_tile(i,j)
    246  data_mdl_one_tile(i,j,water_category) = 1.0 - land_frac_mdl_one_tile(i,j)
    247  max_frac = 0.0
    248  max_cat = -9
    249  do cat = 1, num_categories
    250  if (cat == water_category) cycle
    251  if(data_mdl_one_tile(i,j,cat) > max_frac) then
    252  max_frac = data_mdl_one_tile(i,j,cat)
    253  max_cat = cat
    254  endif
    255  enddo
    256  dom_cat_mdl_one_tile(i,j) = max_cat
    257  else
    258  dom_cat_mdl_one_tile(i,j) = water_category
    259  endif
    260  enddo
    261  enddo
    262  else ! non-fractonal grids.
    263  dom_cat_mdl_one_tile = 0.0
    264  dom_cat_mdl_one_tile = maxloc(data_mdl_one_tile,dim=3)
    265  endif
    266  call output_driver (data_mdl_one_tile, dom_cat_mdl_one_tile, lat_mdl_one_tile, lon_mdl_one_tile, i_mdl, j_mdl, num_categories, tile)
    267  endif
    268 
    269  enddo output_loop
    270 
    271  status=nf90_close(ncid)
    272 
    273  deallocate(data_mdl_one_tile, dom_cat_mdl_one_tile, mask_mdl_one_tile)
    274  deallocate(lat_mdl_one_tile, lon_mdl_one_tile, sum_mdl_one_tile, land_frac_mdl_one_tile)
    275 
    276  print*,"- CALL FieldDestroy."
    277  call esmf_fielddestroy(data_field_mdl, rc=rc)
    278 
    279  call mpi_barrier(mpi_comm_world, rc)
    280 
    281  end subroutine interp_frac_cats
    subroutine search_frac_cats(field, mask, idim, jdim, num_categories, tile, field_name)
    Replace undefined values on the model grid with valid values at a nearby neighbor.
    +
    integer, public j_src
    j dimension of the source grid.
    Definition: source_grid.F90:25
    +
    character(len=50), dimension(:), allocatable, public field_names
    Names of fields to be processed.
    Definition: source_grid.F90:21
    +
    type(esmf_field), public longitude_field_mdl
    ESMF field object that holds the model grid longitude.
    Definition: model_grid.F90:43
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    integer, public j_mdl
    j dimension of model tile.
    Definition: model_grid.F90:21
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    subroutine interp_frac_cats(localpet, input_file)
    Read the input source data and interpolate it to the model grid.
    +
    type(esmf_field), public latitude_field_mdl
    ESMF field object that holds the model grid latitude.
    Definition: model_grid.F90:41
    +
    integer, public i_mdl
    i dimension of model tile.
    Definition: model_grid.F90:20
    +
    type(esmf_field), public mask_field_mdl
    ESMF field object that holds the model land mask.
    Definition: model_grid.F90:37
    +
    integer, public num_tiles
    Total number of model grid tiles.
    Definition: model_grid.F90:23
    +
    integer, public i_src
    i dimension of the source grid.
    Definition: source_grid.F90:24
    +
    type(esmf_grid), public grid_mdl
    ESMF grid object for the model grid.
    Definition: model_grid.F90:28
    +
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    Output categorical data such as vegetation type.
    +
    subroutine, public output_driver(data_one_tile, dom_cat_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, num_categories, tile)
    Driver routine to output model categorical data.
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    type(esmf_grid), public grid_src
    ESMF grid object for the source grid.
    Definition: source_grid.F90:34
    +
    type(esmf_field), public land_frac_field_mdl
    ESMF field object that holds the model land fraction.
    Definition: model_grid.F90:31
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/jquery.js b/ver-1.11.0/sfc_climo_gen/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    +
    +
    README
    +
    +
    +

    This program creates climatological surface fields on the model grid, such as soil type and albedo.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    + + + + + diff --git a/ver-1.11.0/sfc_climo_gen/menu.js b/ver-1.11.0/sfc_climo_gen/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/sfc_climo_gen/menudata.js b/ver-1.11.0/sfc_climo_gen/menudata.js new file mode 100644 index 000000000..87051d6e1 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/menudata.js @@ -0,0 +1,64 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"v",url:"namespacemembers.html#index_v"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html"}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"f",url:"namespacemembers_vars.html#index_f"}, +{text:"g",url:"namespacemembers_vars.html#index_g"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"o",url:"namespacemembers_vars.html#index_o"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"v",url:"namespacemembers_vars.html#index_v"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/sfc_climo_gen/model__grid_8F90.html b/ver-1.11.0/sfc_climo_gen/model__grid_8F90.html new file mode 100644 index 000000000..ebef80cd8 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/model__grid_8F90.html @@ -0,0 +1,181 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/model_grid.F90 File Reference + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    model_grid.F90 File Reference
    +
    +
    + +

    Defines the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  model_grid
     This module defines the model grid.
     
    + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public model_grid::define_model_grid (localpet, npets)
     Define model grid. More...
     
    subroutine model_grid::get_model_info (orog_file, mask, land_frac, lat2d, lon2d, idim, jdim)
     Get model information. More...
     
    subroutine, public model_grid::model_grid_cleanup
     Model grid cleanup. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    type(esmf_field), public model_grid::data_field_mdl
     ESMF field object that holds the data interpolated to model grid. More...
     
    type(esmf_grid), public model_grid::grid_mdl
     ESMF grid object for the model grid. More...
     
    character(len=5), dimension(:), allocatable, public model_grid::grid_tiles
     Array of model grid tile names. More...
     
    integer, public model_grid::i_mdl
     i dimension of model tile. More...
     
    integer, public model_grid::ij_mdl
     Total number of points on a model tile. More...
     
    integer, public model_grid::j_mdl
     j dimension of model tile. More...
     
    type(esmf_field), public model_grid::land_frac_field_mdl
     ESMF field object that holds the model land fraction. More...
     
    type(esmf_field), public model_grid::latitude_field_mdl
     ESMF field object that holds the model grid latitude. More...
     
    type(esmf_field), public model_grid::longitude_field_mdl
     ESMF field object that holds the model grid longitude. More...
     
    type(esmf_field), public model_grid::mask_field_mdl
     ESMF field object that holds the model land mask. More...
     
    real(kind=4), public model_grid::missing = -999.
     Value assigned to undefined points (i.e., ocean points for a land field). More...
     
    integer, public model_grid::num_tiles
     Total number of model grid tiles. More...
     
    type(esmf_field), public model_grid::vegt_field_mdl
     ESMF field object that holds the vegetation type on the model grid. More...
     
    +

    Detailed Description

    +

    Defines the model grid.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file model_grid.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/model__grid_8F90.js b/ver-1.11.0/sfc_climo_gen/model__grid_8F90.js new file mode 100644 index 000000000..c8bb7fcd5 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/model__grid_8F90.js @@ -0,0 +1,19 @@ +var model__grid_8F90 = +[ + [ "define_model_grid", "model__grid_8F90.html#a11dce144a9b8c63f8a84a495c6543237", null ], + [ "get_model_info", "model__grid_8F90.html#a6a77c8a8857921648c9f6955dbde1c5e", null ], + [ "model_grid_cleanup", "model__grid_8F90.html#ab82613aa1b639c003cdb59a592953d7b", null ], + [ "data_field_mdl", "model__grid_8F90.html#a15a6798f7e5b98acf417f0c15c88b299", null ], + [ "grid_mdl", "model__grid_8F90.html#a1d05b2ec20e43fb650c11d51998a78fe", null ], + [ "grid_tiles", "model__grid_8F90.html#ac0121335c0cd0a310abbb1fd9175f28c", null ], + [ "i_mdl", "model__grid_8F90.html#a1f16f9e0bd8436bd0a29043a8b6811cf", null ], + [ "ij_mdl", "model__grid_8F90.html#a30bbdbd9bce2d9818d0146182cb08e18", null ], + [ "j_mdl", "model__grid_8F90.html#aaa39c3958814b0d75c55bf1e92769c21", null ], + [ "land_frac_field_mdl", "model__grid_8F90.html#ad0a27b6ede1bf89a3c15623b8423d625", null ], + [ "latitude_field_mdl", "model__grid_8F90.html#aa2503a3f282d19f2a5c0bb1562174ee2", null ], + [ "longitude_field_mdl", "model__grid_8F90.html#aea65c25cb029f769cd660bc34b552d50", null ], + [ "mask_field_mdl", "model__grid_8F90.html#a8f1fd74a8f502706ee6f3f99610826b7", null ], + [ "missing", "model__grid_8F90.html#a9995f64cfeea506dc6be9b7d701b5066", null ], + [ "num_tiles", "model__grid_8F90.html#aa047e6e785f8ba25adc5f211b3709f29", null ], + [ "vegt_field_mdl", "model__grid_8F90.html#af8279a064242f7e34cb2af9e3daaac5b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/model__grid_8F90_source.html b/ver-1.11.0/sfc_climo_gen/model__grid_8F90_source.html new file mode 100644 index 000000000..e065a3506 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/model__grid_8F90_source.html @@ -0,0 +1,130 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/model_grid.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    model_grid.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    10  module model_grid
    11 
    12  use esmf
    13 
    14  implicit none
    15 
    16  private
    17 
    18  character(len=5), allocatable, public :: grid_tiles(:)
    19 
    20  integer, public :: i_mdl
    21  integer, public :: j_mdl
    22  integer, public :: ij_mdl
    23  integer, public :: num_tiles
    24 
    25  real(kind=4), public :: missing = -999.
    27 
    28  type(esmf_grid), public :: grid_mdl
    29  type(esmf_field), public :: data_field_mdl
    31  type(esmf_field), public :: land_frac_field_mdl
    37  type(esmf_field), public :: mask_field_mdl
    41  type(esmf_field), public :: latitude_field_mdl
    43  type(esmf_field), public :: longitude_field_mdl
    45  type(esmf_field), public :: vegt_field_mdl
    47 
    48  public :: define_model_grid
    49  public :: model_grid_cleanup
    50 
    51  contains
    52 
    61  subroutine define_model_grid(localpet, npets)
    62 
    63  use esmf
    64  use netcdf
    65  use program_setup
    66  use utils
    67  use mpi
    68 
    69  implicit none
    70 
    71  integer, intent(in) :: localpet, npets
    72 
    73  character(len=500) :: the_file
    74 
    75  integer :: error, id_dim, id_tiles, ncid
    76  integer :: id_grid_tiles, ierr
    77  integer :: extra, rc, tile
    78  integer, allocatable :: decomptile(:,:)
    79 
    80  integer(esmf_kind_i4), allocatable :: mask_mdl_one_tile(:,:)
    81  integer(esmf_kind_i4), pointer :: mask_field_mdl_ptr(:,:)
    82  integer(esmf_kind_i4), pointer :: mask_mdl_ptr(:,:)
    83 
    84  real(esmf_kind_r4), allocatable :: latitude_one_tile(:,:)
    85  real(esmf_kind_r4), allocatable :: longitude_one_tile(:,:)
    86  real(esmf_kind_r4), allocatable :: land_frac_one_tile(:,:)
    87 
    88 !-----------------------------------------------------------------------
    89 ! Get the number of tiles from the mosaic file.
    90 !-----------------------------------------------------------------------
    91 
    92  print*,'- OPEN MODEL GRID MOSAIC FILE: ',trim(mosaic_file_mdl)
    93  error=nf90_open(trim(mosaic_file_mdl),nf90_nowrite,ncid)
    94  call netcdf_err(error, "OPENING MODEL GRID MOSAIC FILE")
    95 
    96  print*,"- READ NUMBER OF TILES"
    97  error=nf90_inq_dimid(ncid, 'ntiles', id_tiles)
    98  call netcdf_err(error, "READING NTILES ID")
    99  error=nf90_inquire_dimension(ncid,id_tiles,len=num_tiles)
    100  call netcdf_err(error, "READING NTILES")
    101  error=nf90_inq_varid(ncid, 'gridtiles', id_grid_tiles)
    102  call netcdf_err(error, "READING GRIDTILES ID")
    103  allocate(grid_tiles(num_tiles))
    104  grid_tiles="NULL"
    105  print*,"- READ TILE NAMES"
    106  error=nf90_get_var(ncid, id_grid_tiles, grid_tiles)
    107  call netcdf_err(error, "READING GRIDTILES")
    108 
    109  error = nf90_close(ncid)
    110 
    111  print*,'- NUMBER OF TILES, MODEL GRID IS ', num_tiles
    112 
    113  if (mod(npets,num_tiles) /= 0) then
    114  print*,'- FATAL ERROR: MUST RUN THIS PROGRAM WITH A TASK COUNT THAT'
    115  print*,'- IS A MULTIPLE OF THE NUMBER OF TILES.'
    116  call mpi_abort(mpi_comm_world, 44, ierr)
    117  endif
    118 
    119 !-----------------------------------------------------------------------
    120 ! Get the model grid specs and land mask from the orography files.
    121 !-----------------------------------------------------------------------
    122 
    123  orog_dir_mdl = trim(orog_dir_mdl) // '/'
    124  the_file = trim(orog_dir_mdl) // trim(orog_files_mdl(1))
    125 
    126  print*,'- OPEN FIRST MODEL GRID OROGRAPHY FILE: ',trim(the_file)
    127  error=nf90_open(trim(the_file),nf90_nowrite,ncid)
    128  call netcdf_err(error, "OPENING MODEL GRID OROGRAPHY FILE")
    129  print*,"- READ GRID DIMENSIONS"
    130  error=nf90_inq_dimid(ncid, 'lon', id_dim)
    131  call netcdf_err(error, "READING MODEL LON ID")
    132  error=nf90_inquire_dimension(ncid,id_dim,len=i_mdl)
    133  call netcdf_err(error, "READING MODEL LON")
    134  error=nf90_inq_dimid(ncid, 'lat', id_dim)
    135  call netcdf_err(error, "READING MODEL LAT ID")
    136  error=nf90_inquire_dimension(ncid,id_dim,len=j_mdl)
    137  call netcdf_err(error, "READING MODEL LAT")
    138  error = nf90_close(ncid)
    139 
    140  print*,"- I/J DIMENSIONS OF THE MODEL GRID TILES ", i_mdl, j_mdl
    141 
    142  ij_mdl = i_mdl * j_mdl
    143 
    144 !-----------------------------------------------------------------------
    145 ! Create ESMF grid object for the model grid.
    146 !-----------------------------------------------------------------------
    147 
    148  extra = npets / num_tiles
    149 
    150  allocate(decomptile(2,num_tiles))
    151 
    152  do tile = 1, num_tiles
    153  decomptile(:,tile)=(/1,extra/)
    154  enddo
    155 
    156  print*,"- CALL GridCreateMosaic FOR MODEL GRID"
    157  grid_mdl = esmf_gridcreatemosaic(filename=trim(mosaic_file_mdl), &
    158  regdecompptile=decomptile, &
    159  staggerloclist=(/esmf_staggerloc_center, &
    160  esmf_staggerloc_corner/), &
    161  indexflag=esmf_index_global, &
    162  tilefilepath=trim(orog_dir_mdl), &
    163  rc=rc)
    164  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    165  call error_handler("IN GridCreateMosaic", rc)
    166 
    167  print*,"- CALL FieldCreate FOR DATA INTERPOLATED TO MODEL GRID."
    168  data_field_mdl = esmf_fieldcreate(grid_mdl, &
    169  typekind=esmf_typekind_r4, &
    170  staggerloc=esmf_staggerloc_center, &
    171  name="data on model grid", &
    172  rc=rc)
    173  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    174  call error_handler("IN FieldCreate", rc)
    175 
    176  if (.not. fract_vegsoil_type) then
    177  print*,"- CALL FieldCreate FOR VEGETATION TYPE INTERPOLATED TO MODEL GRID."
    178  vegt_field_mdl = esmf_fieldcreate(grid_mdl, &
    179  typekind=esmf_typekind_r4, &
    180  staggerloc=esmf_staggerloc_center, &
    181  name="veg type on model grid", &
    182  rc=rc)
    183  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    184  call error_handler("IN FieldCreate", rc)
    185  endif
    186 
    187  print*,"- CALL FieldCreate FOR MODEL GRID LATITUDE."
    188  latitude_field_mdl = esmf_fieldcreate(grid_mdl, &
    189  typekind=esmf_typekind_r4, &
    190  staggerloc=esmf_staggerloc_center, &
    191  name="latitude on model grid", &
    192  rc=rc)
    193  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    194  call error_handler("IN FieldCreate", rc)
    195 
    196  print*,"- CALL FieldCreate FOR MODEL GRID LONGITUDE."
    197  longitude_field_mdl = esmf_fieldcreate(grid_mdl, &
    198  typekind=esmf_typekind_r4, &
    199  staggerloc=esmf_staggerloc_center, &
    200  name="longitude on model grid", &
    201  rc=rc)
    202  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    203  call error_handler("IN FieldCreate", rc)
    204 
    205 !-----------------------------------------------------------------------
    206 ! Set model land mask.
    207 !-----------------------------------------------------------------------
    208 
    209  print*,"- CALL FieldCreate FOR MODEL GRID LANDMASK."
    210  mask_field_mdl = esmf_fieldcreate(grid_mdl, &
    211  typekind=esmf_typekind_i4, &
    212  staggerloc=esmf_staggerloc_center, &
    213  name="model grid land mask", &
    214  rc=rc)
    215  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    216  call error_handler("IN FieldCreate", rc)
    217 
    218  print*,"- CALL FieldGet FOR MODEL GRID LANDMASK."
    219  nullify(mask_field_mdl_ptr)
    220  call esmf_fieldget(mask_field_mdl, &
    221  farrayptr=mask_field_mdl_ptr, &
    222  rc=rc)
    223  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    224  call error_handler("IN FieldGet", rc)
    225 
    226  print*,"- CALL FieldCreate FOR MODEL GRID LAND FRACTION."
    227  land_frac_field_mdl = esmf_fieldcreate(grid_mdl, &
    228  typekind=esmf_typekind_r4, &
    229  staggerloc=esmf_staggerloc_center, &
    230  name="model grid land fraction", &
    231  rc=rc)
    232  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    233  call error_handler("IN FieldCreate", rc)
    234 
    235  if (localpet == 0) then
    236  allocate(mask_mdl_one_tile(i_mdl,j_mdl))
    237  allocate(land_frac_one_tile(i_mdl,j_mdl))
    238  allocate(latitude_one_tile(i_mdl,j_mdl))
    239  allocate(longitude_one_tile(i_mdl,j_mdl))
    240  else
    241  allocate(mask_mdl_one_tile(0,0))
    242  allocate(land_frac_one_tile(0,0))
    243  allocate(latitude_one_tile(0,0))
    244  allocate(longitude_one_tile(0,0))
    245  endif
    246 
    247  do tile = 1, num_tiles
    248  if (localpet == 0) then
    249  the_file = trim(orog_dir_mdl) // trim(orog_files_mdl(tile))
    250  call get_model_info(trim(the_file), mask_mdl_one_tile, land_frac_one_tile, &
    251  latitude_one_tile, longitude_one_tile, i_mdl, j_mdl)
    252  endif
    253 
    254  print*,"- CALL FieldScatter FOR MODEL GRID MASK. TILE IS: ", tile
    255  call esmf_fieldscatter(mask_field_mdl, mask_mdl_one_tile, rootpet=0, tile=tile, rc=rc)
    256  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    257  call error_handler("IN FieldScatter", rc)
    258 
    259  print*,"- CALL FieldScatter FOR MODEL GRID LAND FRACTION. TILE IS: ", tile
    260  call esmf_fieldscatter(land_frac_field_mdl, land_frac_one_tile, rootpet=0, tile=tile, rc=rc)
    261  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    262  call error_handler("IN FieldScatter", rc)
    263 
    264  print*,"- CALL FieldScatter FOR MODEL LATITUDE. TILE IS: ", tile
    265  call esmf_fieldscatter(latitude_field_mdl, latitude_one_tile, rootpet=0, tile=tile, rc=rc)
    266  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    267  call error_handler("IN FieldScatter", rc)
    268 
    269  print*,"- CALL FieldScatter FOR MODEL LONGITUDE. TILE IS: ", tile
    270  call esmf_fieldscatter(longitude_field_mdl, longitude_one_tile, rootpet=0, tile=tile, rc=rc)
    271  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    272  call error_handler("IN FieldScatter", rc)
    273 
    274  enddo
    275 
    276  deallocate(mask_mdl_one_tile, latitude_one_tile, longitude_one_tile, land_frac_one_tile)
    277 
    278  print*,"- CALL GridAddItem FOR MODEL GRID."
    279  call esmf_gridadditem(grid_mdl, &
    280  itemflag=esmf_griditem_mask, &
    281  staggerloc=esmf_staggerloc_center, &
    282  rc=rc)
    283  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    284  call error_handler("IN GridAddItem", rc)
    285 
    286  print*,"- CALL GridGetItem FOR MODEL GRID."
    287  nullify(mask_mdl_ptr)
    288  call esmf_gridgetitem(grid_mdl, &
    289  itemflag=esmf_griditem_mask, &
    290  farrayptr=mask_mdl_ptr, &
    291  rc=rc)
    292  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    293  call error_handler("IN GridGetItem", rc)
    294 
    295  mask_mdl_ptr = mask_field_mdl_ptr
    296 
    297  end subroutine define_model_grid
    298 
    311  subroutine get_model_info(orog_file, mask, land_frac, lat2d, lon2d, idim, jdim)
    313  use esmf
    314  use netcdf
    315  use utils
    316 
    317  implicit none
    318 
    319  character(len=*), intent(in) :: orog_file
    320 
    321  integer, intent(in) :: idim, jdim
    322  integer(esmf_kind_i4), intent(out) :: mask(idim,jdim)
    323 
    324  real(esmf_kind_r4), intent(out) :: lat2d(idim,jdim)
    325  real(esmf_kind_r4), intent(out) :: lon2d(idim,jdim)
    326  real(esmf_kind_r4), intent(out) :: land_frac(idim,jdim)
    327 
    328  integer :: error, lat, lon, i, j
    329  integer :: ncid, id_dim, id_var
    330 
    331  real(kind=4), allocatable :: dummy(:,:)
    332 
    333  print*,"- READ MODEL OROGRAPHY FILE"
    334 
    335  print*,'- OPEN FILE: ', orog_file
    336  error=nf90_open(orog_file,nf90_nowrite,ncid)
    337  call netcdf_err(error, "OPENING MODEL OROGRAPHY FILE")
    338 
    339  print*,"- READ I-DIMENSION"
    340  error=nf90_inq_dimid(ncid, 'lon', id_dim)
    341  call netcdf_err(error, "READING LON ID")
    342  error=nf90_inquire_dimension(ncid,id_dim,len=lon)
    343  call netcdf_err(error, "READING LON")
    344 
    345  print*,"- READ J-DIMENSION"
    346  error=nf90_inq_dimid(ncid, 'lat', id_dim)
    347  call netcdf_err(error, "READING LAT ID")
    348  error=nf90_inquire_dimension(ncid,id_dim,len=lat)
    349  call netcdf_err(error, "READING LAT")
    350 
    351  print*,"- I/J DIMENSIONS: ", lon, lat
    352 
    353  if ((lon /= idim) .or. (lat /= jdim)) then
    354  call error_handler("MISMATCH IN DIMENSIONS.")
    355  endif
    356 
    357  allocate(dummy(idim,jdim))
    358 
    359 !-----------------------------------------------------------------------
    360 ! If the lake maker was used, we are running with a fractional
    361 ! land/non-land grid and there will be a 'lake_frac' record.
    362 ! In that case, land/non-land is determined by 'land_frac'.
    363 !
    364 ! If the lake maker was not used, use 'slmsk', which is defined
    365 ! as the nint(land_frac).
    366 !
    367 ! In summary, if 'mask' is one, the point is all land or
    368 ! partial land and surface data will be mapped to it. Otherwise,
    369 ! when 'mask' is zero, then the point is all non-land and
    370 ! surface data will not be mapped to it.
    371 !-----------------------------------------------------------------------
    372 
    373  error=nf90_inq_varid(ncid, 'lake_frac', id_var)
    374  if (error /= 0) then
    375  print*,"- READ LAND MASK (SLMSK)"
    376  error=nf90_inq_varid(ncid, 'slmsk', id_var)
    377  call netcdf_err(error, "READING SLMSK ID")
    378  error=nf90_get_var(ncid, id_var, dummy)
    379  call netcdf_err(error, "READING SLMSK")
    380  mask = nint(dummy)
    381  land_frac = -999.
    382  else
    383  print*,"- READ LAND FRACTION"
    384  error=nf90_inq_varid(ncid, 'land_frac', id_var)
    385  call netcdf_err(error, "READING LAND_FRAC ID")
    386  error=nf90_get_var(ncid, id_var, land_frac)
    387  call netcdf_err(error, "READING LAND_FRAC")
    388  mask = 0
    389  do j = 1, lat
    390  do i = 1, lon
    391  if (land_frac(i,j) > 0.0) then
    392  mask(i,j) = 1
    393  endif
    394  enddo
    395  enddo
    396  endif
    397 
    398  print*,"- READ LATITUDE"
    399  error=nf90_inq_varid(ncid, 'geolat', id_var)
    400  call netcdf_err(error, "READING GEOLAT ID")
    401  error=nf90_get_var(ncid, id_var, dummy)
    402  call netcdf_err(error, "READING GEOLAT")
    403  lat2d=dummy
    404 
    405  print*,"- READ LONGITUDE"
    406  error=nf90_inq_varid(ncid, 'geolon', id_var)
    407  call netcdf_err(error, "READING GEOLON ID")
    408  error=nf90_get_var(ncid, id_var, dummy)
    409  call netcdf_err(error, "READING GEOLON")
    410  lon2d=dummy
    411 
    412  error = nf90_close(ncid)
    413 
    414  deallocate (dummy)
    415 
    416  end subroutine get_model_info
    417 
    423  subroutine model_grid_cleanup
    425  implicit none
    426 
    427  integer :: rc
    428 
    429  print*,"- CALL GridDestroy FOR MODEL GRID."
    430  call esmf_griddestroy(grid_mdl,rc=rc)
    431 
    432  print*,"- CALL FieldDestroy FOR MODEL GRID LAND MASK."
    433  call esmf_fielddestroy(mask_field_mdl,rc=rc)
    434 
    435  print*,"- CALL FieldDestroy FOR MODEL GRID LAND FRACTION."
    436  call esmf_fielddestroy(land_frac_field_mdl,rc=rc)
    437 
    438  print*,"- CALL FieldDestroy FOR MODEL GRID DATA FIELD."
    439  call esmf_fielddestroy(data_field_mdl,rc=rc)
    440 
    441  if (esmf_fieldiscreated(vegt_field_mdl)) then
    442  print*,"- CALL FieldDestroy FOR MODEL GRID VEGETATION TYPE."
    443  call esmf_fielddestroy(vegt_field_mdl,rc=rc)
    444  endif
    445 
    446  print*,"- CALL FieldDestroy FOR MODEL GRID LATITUDE."
    447  call esmf_fielddestroy(latitude_field_mdl,rc=rc)
    448 
    449  print*,"- CALL FieldDestroy FOR MODEL GRID LONGITUDE."
    450  call esmf_fielddestroy(longitude_field_mdl,rc=rc)
    451 
    452  end subroutine model_grid_cleanup
    453 
    454  end module model_grid
    Set up program execution.
    +
    type(esmf_field), public vegt_field_mdl
    ESMF field object that holds the vegetation type on the model grid.
    Definition: model_grid.F90:45
    +
    subroutine, public model_grid_cleanup
    Model grid cleanup.
    Definition: model_grid.F90:424
    +
    character(len=500), dimension(6), public orog_files_mdl
    Model grid orography filenames.
    +
    character(len=5), dimension(:), allocatable, public grid_tiles
    Array of model grid tile names.
    Definition: model_grid.F90:18
    +
    subroutine, public define_model_grid(localpet, npets)
    Define model grid.
    Definition: model_grid.F90:62
    +
    real(kind=4), public missing
    Value assigned to undefined points (i.e., ocean points for a land field).
    Definition: model_grid.F90:25
    +
    type(esmf_field), public longitude_field_mdl
    ESMF field object that holds the model grid longitude.
    Definition: model_grid.F90:43
    +
    logical, public fract_vegsoil_type
    When true, output the percentage of each soil and vegetation type category, and the dominant category...
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    integer, public j_mdl
    j dimension of model tile.
    Definition: model_grid.F90:21
    +
    subroutine get_model_info(orog_file, mask, land_frac, lat2d, lon2d, idim, jdim)
    Get model information.
    Definition: model_grid.F90:312
    +
    type(esmf_field), public latitude_field_mdl
    ESMF field object that holds the model grid latitude.
    Definition: model_grid.F90:41
    +
    integer, public i_mdl
    i dimension of model tile.
    Definition: model_grid.F90:20
    +
    type(esmf_field), public mask_field_mdl
    ESMF field object that holds the model land mask.
    Definition: model_grid.F90:37
    +
    type(esmf_field), public data_field_mdl
    ESMF field object that holds the data interpolated to model grid.
    Definition: model_grid.F90:29
    +
    integer, public num_tiles
    Total number of model grid tiles.
    Definition: model_grid.F90:23
    +
    type(esmf_grid), public grid_mdl
    ESMF grid object for the model grid.
    Definition: model_grid.F90:28
    +
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    integer, public ij_mdl
    Total number of points on a model tile.
    Definition: model_grid.F90:22
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    character(len=500), public orog_dir_mdl
    Directory containing the model grid orography files.
    +
    character(len=500), public mosaic_file_mdl
    Model grid mosaic file.
    +
    type(esmf_field), public land_frac_field_mdl
    ESMF field object that holds the model land fraction.
    Definition: model_grid.F90:31
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespacemembers.html b/ver-1.11.0/sfc_climo_gen/namespacemembers.html new file mode 100644 index 000000000..651eac4f0 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespacemembers.html @@ -0,0 +1,313 @@ + + + + + + + +sfc_climo_gen: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented module members with links to the modules they belong to:
    + +

    - d -

    + + +

    - e -

      +
    • error_handler() +: utils +
    • +
    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespacemembers_func.html b/ver-1.11.0/sfc_climo_gen/namespacemembers_func.html new file mode 100644 index 000000000..9a20395d2 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespacemembers_func.html @@ -0,0 +1,132 @@ + + + + + + + +sfc_climo_gen: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespacemembers_vars.html b/ver-1.11.0/sfc_climo_gen/namespacemembers_vars.html new file mode 100644 index 000000000..088766c0e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespacemembers_vars.html @@ -0,0 +1,271 @@ + + + + + + + +sfc_climo_gen: Module Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - s -

    + + +

    - v -

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespacemodel__grid.html b/ver-1.11.0/sfc_climo_gen/namespacemodel__grid.html new file mode 100644 index 000000000..672007392 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespacemodel__grid.html @@ -0,0 +1,592 @@ + + + + + + + +sfc_climo_gen: model_grid Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    model_grid Module Reference
    +
    +
    + +

    This module defines the model grid. +More...

    + + + + + + + + + + + +

    +Functions/Subroutines

    subroutine, public define_model_grid (localpet, npets)
     Define model grid. More...
     
    subroutine get_model_info (orog_file, mask, land_frac, lat2d, lon2d, idim, jdim)
     Get model information. More...
     
    subroutine, public model_grid_cleanup
     Model grid cleanup. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    type(esmf_field), public data_field_mdl
     ESMF field object that holds the data interpolated to model grid. More...
     
    type(esmf_grid), public grid_mdl
     ESMF grid object for the model grid. More...
     
    character(len=5), dimension(:), allocatable, public grid_tiles
     Array of model grid tile names. More...
     
    integer, public i_mdl
     i dimension of model tile. More...
     
    integer, public ij_mdl
     Total number of points on a model tile. More...
     
    integer, public j_mdl
     j dimension of model tile. More...
     
    type(esmf_field), public land_frac_field_mdl
     ESMF field object that holds the model land fraction. More...
     
    type(esmf_field), public latitude_field_mdl
     ESMF field object that holds the model grid latitude. More...
     
    type(esmf_field), public longitude_field_mdl
     ESMF field object that holds the model grid longitude. More...
     
    type(esmf_field), public mask_field_mdl
     ESMF field object that holds the model land mask. More...
     
    real(kind=4), public missing = -999.
     Value assigned to undefined points (i.e., ocean points for a land field). More...
     
    integer, public num_tiles
     Total number of model grid tiles. More...
     
    type(esmf_field), public vegt_field_mdl
     ESMF field object that holds the vegetation type on the model grid. More...
     
    +

    Detailed Description

    +

    This module defines the model grid.

    +

    Variables named with '_mdl' refer to the model grid.

    +
    Author
    George Gayno
    +
    Date
    2018
    +

    Function/Subroutine Documentation

    + +

    ◆ define_model_grid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public model_grid::define_model_grid (integer, intent(in) localpet,
    integer, intent(in) npets 
    )
    +
    + +

    Define model grid.

    +

    Define the model grid from the mosaic and orography files. Create the ESMF grid object for the model grid.

    +
    Parameters
    + + + +
    [in]localpetthis mpi task
    +
    [in]npetstotal number of mpi tasks
    +
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 62 of file model_grid.F90.

    + +

    References data_field_mdl, utils::error_handler(), program_setup::fract_vegsoil_type, get_model_info(), grid_mdl, grid_tiles, i_mdl, ij_mdl, j_mdl, land_frac_field_mdl, latitude_field_mdl, longitude_field_mdl, mask_field_mdl, program_setup::mosaic_file_mdl, utils::netcdf_err(), num_tiles, program_setup::orog_dir_mdl, program_setup::orog_files_mdl, and vegt_field_mdl.

    + +

    Referenced by driver().

    + +
    +
    + +

    ◆ get_model_info()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine model_grid::get_model_info (character(len=*), intent(in) orog_file,
    integer(esmf_kind_i4), dimension(idim,jdim), intent(out) mask,
    real(esmf_kind_r4), dimension(idim,jdim), intent(out) land_frac,
    real(esmf_kind_r4), dimension(idim,jdim), intent(out) lat2d,
    real(esmf_kind_r4), dimension(idim,jdim), intent(out) lon2d,
    integer, intent(in) idim,
    integer, intent(in) jdim 
    )
    +
    + +

    Get model information.

    +

    Read model land/sea mask, land fraction and lat/lon from the orography file.

    +
    Parameters
    + + + + + + + + +
    [in]orog_filethe orography file
    [out]maskland/sea mask 0-all non-land; 1-some land.
    [out]land_fracland fraction between 0 and 1.
    [out]lat2dlatitude
    [out]lon2dlongitude
    [in]idimi dimension of the model tile
    [in]jdimj dimension of the model tile
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 312 of file model_grid.F90.

    + +

    References utils::error_handler(), and utils::netcdf_err().

    + +

    Referenced by define_model_grid().

    + +
    +
    + +

    ◆ model_grid_cleanup()

    + +
    +
    + + + + + + + +
    subroutine, public model_grid::model_grid_cleanup ()
    +
    + +

    Model grid cleanup.

    +

    Free up memory associated with this module.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 424 of file model_grid.F90.

    + +

    References data_field_mdl, grid_mdl, land_frac_field_mdl, latitude_field_mdl, longitude_field_mdl, mask_field_mdl, and vegt_field_mdl.

    + +

    Referenced by driver().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ data_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::data_field_mdl
    +
    + +

    ESMF field object that holds the data interpolated to model grid.

    + +

    Definition at line 29 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ grid_mdl

    + +
    +
    + + + + +
    type(esmf_grid), public model_grid::grid_mdl
    +
    + +

    ESMF grid object for the model grid.

    + +

    Definition at line 28 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp_frac_cats(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ grid_tiles

    + +
    +
    + + + + +
    character(len=5), dimension(:), allocatable, public model_grid::grid_tiles
    +
    + +

    Array of model grid tile names.

    + +

    Definition at line 18 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), output(), and output_frac_cats::output_driver().

    + +
    +
    + +

    ◆ i_mdl

    + +
    +
    + + + + +
    integer, public model_grid::i_mdl
    +
    + +

    i dimension of model tile.

    + +

    Definition at line 20 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ ij_mdl

    + +
    +
    + + + + +
    integer, public model_grid::ij_mdl
    +
    + +

    Total number of points on a model tile.

    + +

    Definition at line 22 of file model_grid.F90.

    + +

    Referenced by define_model_grid().

    + +
    +
    + +

    ◆ j_mdl

    + +
    +
    + + + + +
    integer, public model_grid::j_mdl
    +
    + +

    j dimension of model tile.

    + +

    Definition at line 21 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ land_frac_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::land_frac_field_mdl
    +
    + +

    ESMF field object that holds the model land fraction.

    +

    When running with fractional grids, will be between zero and one. For non- fractional grids, will contain a fill value.

    + +

    Definition at line 31 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp_frac_cats(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ latitude_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::latitude_field_mdl
    +
    + +

    ESMF field object that holds the model grid latitude.

    + +

    Definition at line 41 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), interp_frac_cats(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ longitude_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::longitude_field_mdl
    +
    + +

    ESMF field object that holds the model grid longitude.

    + +

    Definition at line 43 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), interp_frac_cats(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ mask_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::mask_field_mdl
    +
    + +

    ESMF field object that holds the model land mask.

    +

    Equal to '1' if point is partial or all land. Equal to zero is point is all non-land.

    + +

    Definition at line 37 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), interp_frac_cats(), and model_grid_cleanup().

    + +
    +
    + +

    ◆ missing

    + +
    +
    + + + + +
    real(kind=4), public model_grid::missing = -999.
    +
    + +

    Value assigned to undefined points (i.e., ocean points for a land field).

    + +

    Definition at line 25 of file model_grid.F90.

    + +

    Referenced by interp(), and output().

    + +
    +
    + +

    ◆ num_tiles

    + +
    +
    + + + + +
    integer, public model_grid::num_tiles
    +
    + +

    Total number of model grid tiles.

    + +

    Definition at line 23 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ vegt_field_mdl

    + +
    +
    + + + + +
    type(esmf_field), public model_grid::vegt_field_mdl
    +
    + +

    ESMF field object that holds the vegetation type on the model grid.

    + +

    Definition at line 45 of file model_grid.F90.

    + +

    Referenced by define_model_grid(), interp(), and model_grid_cleanup().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespaceoutput__frac__cats.html b/ver-1.11.0/sfc_climo_gen/namespaceoutput__frac__cats.html new file mode 100644 index 000000000..abe7fc83a --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespaceoutput__frac__cats.html @@ -0,0 +1,298 @@ + + + + + + + +sfc_climo_gen: output_frac_cats Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    output_frac_cats Module Reference
    +
    +
    + +

    Output categorical data such as vegetation type. +More...

    + + + + + + + + +

    +Functions/Subroutines

    subroutine, public output_driver (data_one_tile, dom_cat_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, num_categories, tile)
     Driver routine to output model categorical data. More...
     
    subroutine writeit (out_file, iout, jout, num_categories, latitude, longitude, data_pct, dominant_cat)
     Write data to a netcdf file. More...
     
    +

    Detailed Description

    +

    Output categorical data such as vegetation type.

    +

    Include percentage of each category within a model grid box and the dominant category.

    +
    Author
    George Gayno NCEP/EMC
    +
    Date
    2022
    +

    Function/Subroutine Documentation

    + +

    ◆ output_driver()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public output_frac_cats::output_driver (real(esmf_kind_r4), dimension(i_mdl,j_mdl,num_categories), intent(in) data_one_tile,
    real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) dom_cat_one_tile,
    real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) lat_one_tile,
    real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) lon_one_tile,
    integer, intent(in) i_mdl,
    integer, intent(in) j_mdl,
    integer, intent(in) num_categories,
    integer, intent(in) tile 
    )
    +
    + +

    Driver routine to output model categorical data.

    +
    Parameters
    + + + + + + + + + +
    [in]data_one_tileThe percentage of each category within a model grid cell.
    [in]dom_cat_one_tileThe dominant category within a model grid cell.
    [in]lat_one_tileLatitude of each model grid cell.
    [in]lon_one_tileLongitude of each model grid cell.
    [in]i_mdli dimension of model grid.
    [in]j_mdlj dimension of model grid.
    [in]num_categoriesNumber of categories.
    [in]tileTile number.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2022
    + +

    Definition at line 33 of file output_frac_cats.F90.

    + +

    References source_grid::field_names, model_grid::grid_tiles, program_setup::halo, and writeit().

    + +

    Referenced by interp_frac_cats().

    + +
    +
    + +

    ◆ writeit()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine output_frac_cats::writeit (character(len=*), intent(in) out_file,
    integer, intent(in) iout,
    integer, intent(in) jout,
    integer, intent(in) num_categories,
    real(esmf_kind_r4), dimension(iout,jout), intent(in) latitude,
    real(esmf_kind_r4), dimension(iout,jout), intent(in) longitude,
    real(esmf_kind_r4), dimension(iout,jout,num_categories), intent(in) data_pct,
    real(esmf_kind_r4), dimension(iout,jout), intent(in) dominant_cat 
    )
    +
    + +

    Write data to a netcdf file.

    +
    Parameters
    + + + + + + + + + +
    [in]out_fileOutput file name.
    [in]iouti-dimension of data.
    [in]joutj-dimension of data.
    [in]num_categoriesNumber of categories.
    [in]latitudeLatitude of data.
    [in]longitudeLongitude of data.
    [in]data_pctPercentage of each category in each model grid cell.
    [in]dominant_catDominant category in each model grid cell.
    +
    +
    + +

    Definition at line 114 of file output_frac_cats.F90.

    + +

    References source_grid::day_of_rec, source_grid::field_names, utils::netcdf_err(), source_grid::num_time_recs, and source_grid::source.

    + +

    Referenced by output_driver().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespaceprogram__setup.html b/ver-1.11.0/sfc_climo_gen/namespaceprogram__setup.html new file mode 100644 index 000000000..eb16f1096 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespaceprogram__setup.html @@ -0,0 +1,606 @@ + + + + + + + +sfc_climo_gen: program_setup Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    program_setup Module Reference
    +
    +
    + +

    Set up program execution. +More...

    + + + + + +

    +Functions/Subroutines

    subroutine, public read_setup_namelist (localpet)
     Read program setup namelist. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    logical, public fract_vegsoil_type = .false.
     When true, output the percentage of each soil and vegetation type category, and the dominant category within a model grid box. More...
     
    integer, public halo = 0
     Number of row/cols defining the lateral boundary halo. More...
     
    character(len=500), public input_facsf_file = "NULL"
     File containing input fractional coverage data for strong zenith angle dependent albedo. More...
     
    character(len=500), public input_leaf_area_index_file = "NULL"
     File containing input leaf area index data. More...
     
    character(len=500), public input_maximum_snow_albedo_file = "NULL"
     File containing input maximum snow albedo data. More...
     
    character(len=500), public input_slope_type_file = "NULL"
     File containing input slope type data. More...
     
    character(len=500), public input_snowfree_albedo_file = "NULL"
     File containing input snow-free albedo data. More...
     
    character(len=500), public input_soil_color_file = "NULL"
     File containing input soil color data. More...
     
    character(len=500), public input_soil_type_file = "NULL"
     File containing input soil type data. More...
     
    character(len=500), public input_substrate_temperature_file = "NULL"
     File containing input soil substrate temperature data. More...
     
    character(len=500), public input_vegetation_greenness_file = "NULL"
     File containing input vegetation greenness data. More...
     
    character(len=500), public input_vegetation_type_file = "NULL"
     File containing input vegetation type data. More...
     
    character(len=50), public leaf_area_index_method ='bilinear'
     Interpolation method for leaf area index. More...
     
    character(len=50), public maximum_snow_albedo_method ='bilinear'
     Interpolation method for max snow albedo. More...
     
    character(len=500), public mosaic_file_mdl = "NULL"
     Model grid mosaic file. More...
     
    character(len=500), public orog_dir_mdl = "NULL"
     Directory containing the model grid orography files. More...
     
    character(len=500), dimension(6), public orog_files_mdl = "NULL"
     Model grid orography filenames. More...
     
    character(len=50), public snowfree_albedo_method ='bilinear'
     Interpolation method for snowfree albedo. More...
     
    character(len=50), public vegetation_greenness_method ='bilinear'
     Interpolation method for vegetation greenness. More...
     
    +

    Detailed Description

    +

    Set up program execution.

    +

    Public variables:

    +

    Here 'input' indicates variables associated with the input source data and 'mdl' indicates variables associated with the fv3 model grid.

    +

    To not process a surface field, set its 'input_file' variable to NULL. However, vegetation type must always be processed as it defines landice points.

    +
    Author
    George Gayno
    +
    Date
    2018
    +

    Function/Subroutine Documentation

    + +

    ◆ read_setup_namelist()

    + +
    +
    + + + + + + + + +
    subroutine, public program_setup::read_setup_namelist (integer, intent(in) localpet)
    +
    +
    +

    Variable Documentation

    + +

    ◆ fract_vegsoil_type

    + +
    +
    + + + + +
    logical, public program_setup::fract_vegsoil_type = .false.
    +
    + +

    When true, output the percentage of each soil and vegetation type category, and the dominant category within a model grid box.

    + +

    Definition at line 51 of file program_setup.f90.

    + +

    Referenced by model_grid::define_model_grid(), driver(), interp(), and read_setup_namelist().

    + +
    +
    + +

    ◆ halo

    + +
    +
    + + + + +
    integer, public program_setup::halo = 0
    +
    + +

    Number of row/cols defining the lateral boundary halo.

    +

    Used for regional nests.

    + +

    Definition at line 48 of file program_setup.f90.

    + +

    Referenced by output(), output_frac_cats::output_driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_facsf_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_facsf_file = "NULL"
    +
    + +

    File containing input fractional coverage data for strong zenith angle dependent albedo.

    + +

    Definition at line 24 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_leaf_area_index_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_leaf_area_index_file = "NULL"
    +
    + +

    File containing input leaf area index data.

    + +

    Definition at line 23 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_maximum_snow_albedo_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_maximum_snow_albedo_file = "NULL"
    +
    + +

    File containing input maximum snow albedo data.

    + +

    Definition at line 28 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_slope_type_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_slope_type_file = "NULL"
    +
    + +

    File containing input slope type data.

    + +

    Definition at line 30 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_snowfree_albedo_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_snowfree_albedo_file = "NULL"
    +
    + +

    File containing input snow-free albedo data.

    + +

    Definition at line 29 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_soil_color_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_soil_color_file = "NULL"
    +
    + +

    File containing input soil color data.

    + +

    Definition at line 32 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_soil_type_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_soil_type_file = "NULL"
    +
    + +

    File containing input soil type data.

    + +

    Definition at line 31 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_substrate_temperature_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_substrate_temperature_file = "NULL"
    +
    + +

    File containing input soil substrate temperature data.

    + +

    Definition at line 27 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_vegetation_greenness_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_vegetation_greenness_file = "NULL"
    +
    + +

    File containing input vegetation greenness data.

    + +

    Definition at line 34 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ input_vegetation_type_file

    + +
    +
    + + + + +
    character(len=500), public program_setup::input_vegetation_type_file = "NULL"
    +
    + +

    File containing input vegetation type data.

    + +

    Definition at line 33 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ leaf_area_index_method

    + +
    +
    + + + + +
    character(len=50), public program_setup::leaf_area_index_method ='bilinear'
    +
    + +

    Interpolation method for leaf area index.

    +

    Conservative or bilinear (default).

    + +

    Definition at line 39 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ maximum_snow_albedo_method

    + +
    +
    + + + + +
    character(len=50), public program_setup::maximum_snow_albedo_method ='bilinear'
    +
    + +

    Interpolation method for max snow albedo.

    +

    Conservative or bilinear (default).

    + +

    Definition at line 41 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ mosaic_file_mdl

    + +
    +
    + + + + +
    character(len=500), public program_setup::mosaic_file_mdl = "NULL"
    +
    + +

    Model grid mosaic file.

    + +

    Definition at line 35 of file program_setup.f90.

    + +

    Referenced by model_grid::define_model_grid(), and read_setup_namelist().

    + +
    +
    + +

    ◆ orog_dir_mdl

    + +
    +
    + + + + +
    character(len=500), public program_setup::orog_dir_mdl = "NULL"
    +
    + +

    Directory containing the model grid orography files.

    + +

    Definition at line 36 of file program_setup.f90.

    + +

    Referenced by model_grid::define_model_grid(), and read_setup_namelist().

    + +
    +
    + +

    ◆ orog_files_mdl

    + +
    +
    + + + + +
    character(len=500), dimension(6), public program_setup::orog_files_mdl = "NULL"
    +
    + +

    Model grid orography filenames.

    + +

    Definition at line 37 of file program_setup.f90.

    + +

    Referenced by model_grid::define_model_grid(), and read_setup_namelist().

    + +
    +
    + +

    ◆ snowfree_albedo_method

    + +
    +
    + + + + +
    character(len=50), public program_setup::snowfree_albedo_method ='bilinear'
    +
    + +

    Interpolation method for snowfree albedo.

    +

    Conservative or bilinear (default).

    + +

    Definition at line 43 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    + +

    ◆ vegetation_greenness_method

    + +
    +
    + + + + +
    character(len=50), public program_setup::vegetation_greenness_method ='bilinear'
    +
    + +

    Interpolation method for vegetation greenness.

    +

    Conservative or bilinear (default).

    + +

    Definition at line 45 of file program_setup.f90.

    + +

    Referenced by driver(), and read_setup_namelist().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespaces.html b/ver-1.11.0/sfc_climo_gen/namespaces.html new file mode 100644 index 000000000..68893c787 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespaces.html @@ -0,0 +1,113 @@ + + + + + + + +sfc_climo_gen: Modules List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules List
    +
    +
    +
    Here is a list of all documented modules with brief descriptions:
    + + + + + + +
     Nmodel_gridThis module defines the model grid
     Noutput_frac_catsOutput categorical data such as vegetation type
     Nprogram_setupSet up program execution
     Nsource_gridRead grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid
     NutilsUtilities
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespaces_dup.js b/ver-1.11.0/sfc_climo_gen/namespaces_dup.js new file mode 100644 index 000000000..e130e1aac --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespaces_dup.js @@ -0,0 +1,8 @@ +var namespaces_dup = +[ + [ "model_grid", "namespacemodel__grid.html", null ], + [ "output_frac_cats", "namespaceoutput__frac__cats.html", null ], + [ "program_setup", "namespaceprogram__setup.html", null ], + [ "source_grid", "namespacesource__grid.html", null ], + [ "utils", "namespaceutils.html", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/namespacesource__grid.html b/ver-1.11.0/sfc_climo_gen/namespacesource__grid.html new file mode 100644 index 000000000..000766664 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespacesource__grid.html @@ -0,0 +1,420 @@ + + + + + + + +sfc_climo_gen: source_grid Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    source_grid Module Reference
    +
    +
    + +

    Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid. +More...

    + + + + + + + + +

    +Functions/Subroutines

    subroutine, public define_source_grid (localpet, npets, input_file)
     Defines esmf grid object for source grid. More...
     
    subroutine, public source_grid_cleanup
     Free up memory associated with this module. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer, dimension(:), allocatable, public day_of_rec
     Day of each time record with respect to Jan 1. More...
     
    character(len=50), dimension(:), allocatable, public field_names
     Names of fields to be processed. More...
     
    type(esmf_grid), public grid_src
     ESMF grid object for the source grid. More...
     
    integer, public i_src
     i dimension of the source grid. More...
     
    integer, public j_src
     j dimension of the source grid. More...
     
    integer, public num_fields
     Number of fields in the file. More...
     
    integer, public num_records
     Number of fields times time records. More...
     
    integer, public num_time_recs
     Number of time records. More...
     
    character(len=75), public source
     Original source of the data. More...
     
    +

    Detailed Description

    +

    Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid.

    +

    Also, sets up the ESMF grid object for the source grid. Source grid is assumed to be global lat/lon.

    +
    Author
    George Gayno
    +
    Date
    2018
    +

    Function/Subroutine Documentation

    + +

    ◆ define_source_grid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine, public source_grid::define_source_grid (integer, intent(in) localpet,
    integer, intent(in) npets,
    character(len=*), intent(in) input_file 
    )
    +
    + +

    Defines esmf grid object for source grid.

    +

    Retrieves date and field information from source file.

    +

    Read date information from input source data file. Create esmf grid object for the source grid.

    +
    Parameters
    + + + + +
    [in]localpetmpi task number
    [in]npetstotal number mpi tasks
    [in]input_filefile containing the source grid data.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 52 of file source_grid.F90.

    + +

    References day_of_rec, utils::error_handler(), field_names, grid_src, i_src, j_src, utils::netcdf_err(), num_fields, num_records, num_time_recs, and source.

    + +

    Referenced by driver().

    + +
    +
    + +

    ◆ source_grid_cleanup()

    + +
    +
    + + + + + + + +
    subroutine, public source_grid::source_grid_cleanup ()
    +
    + +

    Free up memory associated with this module.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 404 of file source_grid.F90.

    + +

    References day_of_rec, field_names, and grid_src.

    + +

    Referenced by driver().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ day_of_rec

    + +
    +
    + + + + +
    integer, dimension(:), allocatable, public source_grid::day_of_rec
    +
    + +

    Day of each time record with respect to Jan 1.

    + +

    Definition at line 31 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), output(), source_grid_cleanup(), and output_frac_cats::writeit().

    + +
    +
    + +

    ◆ field_names

    + +
    +
    + + + + +
    character(len=50), dimension(:), allocatable, public source_grid::field_names
    +
    + +

    Names of fields to be processed.

    + +

    Definition at line 21 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), interp_frac_cats(), output(), output_frac_cats::output_driver(), source_grid_cleanup(), and output_frac_cats::writeit().

    + +
    +
    + +

    ◆ grid_src

    + +
    +
    + + + + +
    type(esmf_grid), public source_grid::grid_src
    +
    + +

    ESMF grid object for the source grid.

    + +

    Definition at line 34 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), interp_frac_cats(), and source_grid_cleanup().

    + +
    +
    + +

    ◆ i_src

    + +
    +
    + + + + +
    integer, public source_grid::i_src
    +
    + +

    i dimension of the source grid.

    + +

    Definition at line 24 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ j_src

    + +
    +
    + + + + +
    integer, public source_grid::j_src
    +
    + +

    j dimension of the source grid.

    + +

    Definition at line 25 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ num_fields

    + +
    +
    + + + + +
    integer, public source_grid::num_fields
    +
    + +

    Number of fields in the file.

    +

    Some files have more than one (ex: the 4-component albedo).

    + +

    Definition at line 28 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), and output().

    + +
    +
    + +

    ◆ num_records

    + +
    +
    + + + + +
    integer, public source_grid::num_records
    +
    + +

    Number of fields times time records.

    + +

    Definition at line 26 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), and output().

    + +
    +
    + +

    ◆ num_time_recs

    + +
    +
    + + + + +
    integer, public source_grid::num_time_recs
    +
    + +

    Number of time records.

    + +

    Definition at line 27 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), interp(), output(), and output_frac_cats::writeit().

    + +
    +
    + +

    ◆ source

    + +
    +
    + + + + +
    character(len=75), public source_grid::source
    +
    + +

    Original source of the data.

    + +

    Definition at line 22 of file source_grid.F90.

    + +

    Referenced by define_source_grid(), output(), and output_frac_cats::writeit().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/namespaceutils.html b/ver-1.11.0/sfc_climo_gen/namespaceutils.html new file mode 100644 index 000000000..1fb6ca3e9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/namespaceutils.html @@ -0,0 +1,211 @@ + + + + + + + +sfc_climo_gen: utils Module Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils Module Reference
    +
    +
    + +

    Utilities. +More...

    + + + + + + + + +

    +Functions/Subroutines

    subroutine, public error_handler (string, rc)
     Handle errors. More...
     
    subroutine, public netcdf_err (err, string)
     Handle netCDF error codes. More...
     
    +

    Detailed Description

    +

    Utilities.

    +
    Author
    George Gayno
    +
    Date
    2018
    +

    Function/Subroutine Documentation

    + +

    ◆ error_handler()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public utils::error_handler (character(len=*), intent(in) string,
    integer, intent(in), optional rc 
    )
    +
    + +

    Handle errors.

    +
    Parameters
    + + + +
    [in]stringError message.
    [in]rcError code.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 49 of file utils.f90.

    + +

    Referenced by model_grid::define_model_grid(), source_grid::define_source_grid(), driver(), model_grid::get_model_info(), interp(), and interp_frac_cats().

    + +
    +
    + +

    ◆ netcdf_err()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    subroutine, public utils::netcdf_err (integer, intent(in) err,
    character(len=*), intent(in) string 
    )
    +
    + +

    Handle netCDF error codes.

    +
    Parameters
    + + + +
    [in]errNetCDF return code.
    [in]stringError message.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 23 of file utils.f90.

    + +

    Referenced by model_grid::define_model_grid(), source_grid::define_source_grid(), model_grid::get_model_info(), interp(), interp_frac_cats(), output(), and output_frac_cats::writeit().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/nav_f.png b/ver-1.11.0/sfc_climo_gen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/nav_g.png b/ver-1.11.0/sfc_climo_gen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/output.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    output.f90 File Reference
    +
    +
    + +

    Output model data for a single tile and a single record. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine output (data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, tile, record, time, field_idx)
     Output model data for a single tile and a single record in netcdf format. More...
     
    +

    Detailed Description

    +

    Output model data for a single tile and a single record.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file output.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ output()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine output (real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) data_one_tile,
    real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) lat_one_tile,
    real(esmf_kind_r4), dimension(i_mdl,j_mdl), intent(in) lon_one_tile,
    integer, intent(in) i_mdl,
    integer, intent(in) j_mdl,
    integer, intent(in) tile,
    integer, intent(in) record,
    integer, intent(in) time,
    integer, intent(in) field_idx 
    )
    +
    + +

    Output model data for a single tile and a single record in netcdf format.

    +
    Parameters
    + + + + + + + + + + +
    [in]data_one_tileData to be output (single tile).
    [in]lat_one_tileLatitude of tile.
    [in]lon_one_tileLongitude of tile.
    [in]field_idxIndex of field within field name array.
    [in]i_mdli dimensions of tile.
    [in]j_mdlj dimensions of tile.
    [in]recordRecord number to be output.
    [in]tileTile number.
    [in]timeTime period to be output.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 20 of file output.f90.

    + +

    References source_grid::day_of_rec, source_grid::field_names, model_grid::grid_tiles, program_setup::halo, model_grid::missing, utils::netcdf_err(), source_grid::num_fields, source_grid::num_records, source_grid::num_time_recs, and source_grid::source.

    + +

    Referenced by interp().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/output_8f90.js b/ver-1.11.0/sfc_climo_gen/output_8f90.js new file mode 100644 index 000000000..8fa438ee0 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/output_8f90.js @@ -0,0 +1,4 @@ +var output_8f90 = +[ + [ "output", "output_8f90.html#a0fca3e229e8e1e22e7100dc90a140382", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/output_8f90_source.html b/ver-1.11.0/sfc_climo_gen/output_8f90_source.html new file mode 100644 index 000000000..5862005e8 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/output_8f90_source.html @@ -0,0 +1,120 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/output.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    output.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    18  subroutine output(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
    19  tile, record, time, field_idx)
    20 
    21  use mpi
    22  use esmf
    23  use netcdf
    24  use utils
    25  use source_grid, only : field_names, source, num_fields, &
    27  use model_grid, only : missing, grid_tiles
    28  use program_setup, only : halo
    29 
    30  implicit none
    31 
    32  integer, intent(in) :: i_mdl, j_mdl, tile
    33  integer, intent(in) :: record, time, field_idx
    34 
    35  real(esmf_kind_r4), intent(in) :: data_one_tile(i_mdl,j_mdl)
    36  real(esmf_kind_r4), intent(in) :: lat_one_tile(i_mdl,j_mdl)
    37  real(esmf_kind_r4), intent(in) :: lon_one_tile(i_mdl,j_mdl)
    38 
    39  character(len=200) :: out_file
    40  character(len=200) :: out_file_with_halo
    41 
    42  integer :: initialsiz, fsize, error, j
    43  integer :: dim_x, dim_y, id_data
    44  integer :: dim_time, id_times, ierr
    45  integer :: header_buffer_val = 16384
    46  integer :: i_out, j_out, id_lat, id_lon
    47  integer :: i_start, i_end, j_start, j_end
    48  integer, save :: ncid(6), ncid_with_halo
    49 
    50  select case (field_names(field_idx))
    51  case ('substrate_temperature')
    52  out_file = "./substrate_temperature." // grid_tiles(tile) // ".nc"
    53  out_file_with_halo = "./substrate_temperature." // grid_tiles(tile) // ".halo.nc"
    54  case ('vegetation_greenness')
    55  out_file = "./vegetation_greenness." // grid_tiles(tile) // ".nc"
    56  out_file_with_halo = "./vegetation_greenness." // grid_tiles(tile) // ".halo.nc"
    57  case ('maximum_snow_albedo')
    58  out_file = "./maximum_snow_albedo." // grid_tiles(tile) // ".nc"
    59  out_file_with_halo = "./maximum_snow_albedo." // grid_tiles(tile) // ".halo.nc"
    60  case ('leaf_area_index')
    61  out_file = "./leaf_area_index." // grid_tiles(tile) // ".nc"
    62  out_file_with_halo = "./leaf_area_index." // grid_tiles(tile) // ".halo.nc"
    63  case ('visible_black_sky_albedo', 'visible_white_sky_albedo', 'near_IR_black_sky_albedo', 'near_IR_white_sky_albedo')
    64  out_file = "./snowfree_albedo." // grid_tiles(tile) // ".nc"
    65  out_file_with_halo = "./snowfree_albedo." // grid_tiles(tile) // ".halo.nc"
    66  case ('facsf')
    67  out_file = "./facsf." // grid_tiles(tile) // ".nc"
    68  out_file_with_halo = "./facsf." // grid_tiles(tile) // ".halo.nc"
    69  case ('slope_type')
    70  out_file = "./slope_type." // grid_tiles(tile) // ".nc"
    71  out_file_with_halo = "./slope_type." // grid_tiles(tile) // ".halo.nc"
    72  case ('soil_type')
    73  out_file = "./soil_type." // grid_tiles(tile) // ".nc"
    74  out_file_with_halo = "./soil_type." // grid_tiles(tile) // ".halo.nc"
    75  case ('soil_color')
    76  out_file = "./soil_color." // grid_tiles(tile) // ".nc"
    77  out_file_with_halo = "./soil_color." // grid_tiles(tile) // ".halo.nc"
    78  case ('vegetation_type')
    79  out_file = "./vegetation_type." // grid_tiles(tile) // ".nc"
    80  out_file_with_halo = "./vegetation_type." // grid_tiles(tile) // ".halo.nc"
    81  case default
    82  print*,'- FATAL ERROR IN ROUTINE OUTPUT. UNIDENTIFIED FIELD : ', field_names(field_idx)
    83  call mpi_abort(mpi_comm_world, 67, ierr)
    84  end select
    85 
    86 !----------------------------------------------------------------------
    87 ! If user specified a halo (for running stand-alone regional grid),
    88 ! remove it.
    89 !----------------------------------------------------------------------
    90 
    91  if (halo > 0) then
    92  print*,"- WILL REMOVE HALO REGION OF ", halo, " ROWS/COLS."
    93  i_start = 1 + halo
    94  i_end = i_mdl - halo
    95  j_start = 1 + halo
    96  j_end = j_mdl - halo
    97  else
    98  i_start = 1
    99  i_end = i_mdl
    100  j_start = 1
    101  j_end = j_mdl
    102  endif
    103 
    104  i_out = i_end - i_start + 1
    105  j_out = j_end - j_start + 1
    106 
    107  if (record == 1) then
    108 
    109  initialsiz = 0
    110  fsize = 65536
    111  error = nf90_create(out_file, ior(nf90_netcdf4,nf90_classic_model), &
    112  ncid(tile), initialsize=initialsiz, chunksize=fsize)
    113  call netcdf_err(error, 'ERROR IN NF90_CREATE' )
    114  error = nf90_def_dim(ncid(tile), 'nx', i_out, dim_x)
    115  call netcdf_err(error, 'DEFINING NX DIMENSION' )
    116  error = nf90_def_dim(ncid(tile), 'ny', j_out, dim_y)
    117  call netcdf_err(error, 'DEFINING NY DIMENSION' )
    118  error = nf90_def_dim(ncid(tile), 'time', num_time_recs, dim_time)
    119  call netcdf_err(error, 'DEFINING TIME DIMENSION' )
    120  error = nf90_def_var(ncid(tile), 'time', nf90_float, dim_time, id_times)
    121  call netcdf_err(error, 'DEFINING TIME VARIABLE' )
    122  error = nf90_put_att(ncid(tile), id_times, "units", "days since 2015-1-1")
    123  call netcdf_err(error, 'DEFINING TIME ATTRIBUTE' )
    124  if (len_trim(source) > 0) then
    125  error = nf90_put_att(ncid(tile), nf90_global, 'source', source)
    126  call netcdf_err(error, 'DEFINING GLOBAL SOURCE ATTRIBUTE' )
    127  endif
    128 
    129  error = nf90_def_var(ncid(tile), 'geolat', nf90_float, (/dim_x,dim_y/), id_lat)
    130  call netcdf_err(error, 'DEFINING GEOLAT FIELD' )
    131  error = nf90_put_att(ncid(tile), id_lat, "long_name", "Latitude")
    132  call netcdf_err(error, 'DEFINING GEOLAT NAME ATTRIBUTE' )
    133  error = nf90_put_att(ncid(tile), id_lat, "units", "degrees_north")
    134  call netcdf_err(error, 'DEFINING GEOLAT UNIT ATTRIBUTE' )
    135  error = nf90_def_var(ncid(tile), 'geolon', nf90_float, (/dim_x,dim_y/), id_lon)
    136  call netcdf_err(error, 'DEFINING GEOLON FIELD' )
    137  error = nf90_put_att(ncid(tile), id_lon, "long_name", "Longitude")
    138  call netcdf_err(error, 'DEFINING GEOLON NAME ATTRIBUTE' )
    139  error = nf90_put_att(ncid(tile), id_lon, "units", "degrees_east")
    140  call netcdf_err(error, 'DEFINING GEOLON UNIT ATTRIBUTE' )
    141 
    142  do j = 1, num_fields
    143  error = nf90_def_var(ncid(tile), trim(field_names(j)), nf90_float, (/dim_x,dim_y,dim_time/), id_data)
    144  call netcdf_err(error, 'DEFINING FIELD' )
    145  error = nf90_put_att(ncid(tile), id_data, "missing_value", missing)
    146  call netcdf_err(error, 'DEFINING FIELD ATTRIBUTE' )
    147  error = nf90_put_att(ncid(tile), id_data, "coordinates", "geolon geolat")
    148  call netcdf_err(error, 'DEFINING COORD ATTRIBUTE' )
    149  enddo
    150 
    151  error = nf90_enddef(ncid(tile), header_buffer_val,4,0,4)
    152  call netcdf_err(error, 'IN NF90_ENDDEF' )
    153 
    154  error = nf90_put_var( ncid(tile), id_times, day_of_rec)
    155  call netcdf_err(error, 'WRITING TIME FIELD' )
    156 
    157  error = nf90_put_var( ncid(tile), id_lat, lat_one_tile(i_start:i_end,j_start:j_end), &
    158  start=(/1,1/), count=(/i_out,j_out/))
    159  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLAT' )
    160 
    161  error = nf90_put_var( ncid(tile), id_lon, lon_one_tile(i_start:i_end,j_start:j_end), &
    162  start=(/1,1/), count=(/i_out,j_out/))
    163  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLON' )
    164 
    165  endif
    166 
    167  print*,'- WRITE DATA FOR RECORD: ',record
    168  error = nf90_inq_varid( ncid(tile), field_names(field_idx), id_data)
    169  call netcdf_err(error, 'IN NF90_INQ_VARID' )
    170  error = nf90_put_var( ncid(tile), id_data, data_one_tile(i_start:i_end,j_start:j_end), &
    171  start=(/1,1,time/), count=(/i_out,j_out,1/))
    172  call netcdf_err(error, 'IN NF90_PUT_VAR' )
    173 
    174  if (record == num_records) then
    175  error = nf90_close(ncid(tile))
    176  endif
    177 
    178 !----------------------------------------------------------------------
    179 ! For regional nests, also output files including the halo
    180 !----------------------------------------------------------------------
    181 
    182  if (halo == 0) return
    183 
    184  print*,"- WRITE OUT FILES THAT INCLUDE HALO REGION."
    185 
    186  if (record == 1) then
    187 
    188  initialsiz = 0
    189  fsize = 65536
    190  error = nf90_create(out_file_with_halo, ior(nf90_netcdf4,nf90_classic_model), &
    191  ncid_with_halo, initialsize=initialsiz, chunksize=fsize)
    192  call netcdf_err(error, 'IN NF90_CREATE' )
    193  error = nf90_def_dim(ncid_with_halo, 'nx', i_mdl, dim_x)
    194  call netcdf_err(error, 'DEFINING NX DIMENSION' )
    195  error = nf90_def_dim(ncid_with_halo, 'ny', j_mdl, dim_y)
    196  call netcdf_err(error, 'DEFINING NY DIMENSION' )
    197  error = nf90_def_dim(ncid_with_halo, 'time', num_time_recs, dim_time)
    198  call netcdf_err(error, 'DEFINING TIME DIMENSION' )
    199  error = nf90_def_var(ncid_with_halo, 'time', nf90_float, dim_time, id_times)
    200  call netcdf_err(error, 'DEFINING TIME VARIABLE' )
    201  error = nf90_put_att(ncid_with_halo, id_times, "units", "days since 2015-1-1")
    202  call netcdf_err(error, 'DEFINING TIME ATTRIBUTE' )
    203  if (len_trim(source) > 0) then
    204  error = nf90_put_att(ncid_with_halo, nf90_global, 'source', source)
    205  call netcdf_err(error, 'DEFINING GLOBAL SOURCE ATTRIBUTE' )
    206  endif
    207 
    208  error = nf90_def_var(ncid_with_halo, 'geolat', nf90_float, (/dim_x,dim_y/), id_lat)
    209  call netcdf_err(error, 'DEFINING GEOLAT FIELD' )
    210  error = nf90_put_att(ncid_with_halo, id_lat, "long_name", "Latitude")
    211  call netcdf_err(error, 'DEFINING GEOLAT NAME ATTRIBUTE' )
    212  error = nf90_put_att(ncid_with_halo, id_lat, "units", "degrees_north")
    213  call netcdf_err(error, 'DEFINING GEOLAT UNIT ATTRIBUTE' )
    214  error = nf90_def_var(ncid_with_halo, 'geolon', nf90_float, (/dim_x,dim_y/), id_lon)
    215  call netcdf_err(error, 'DEFINING GEOLON FIELD' )
    216  error = nf90_put_att(ncid_with_halo, id_lon, "long_name", "Longitude")
    217  call netcdf_err(error, 'DEFINING GEOLON NAME ATTRIBUTE' )
    218  error = nf90_put_att(ncid_with_halo, id_lon, "units", "degrees_east")
    219  call netcdf_err(error, 'DEFINING GEOLON UNIT ATTRIBUTE' )
    220 
    221  do j = 1, num_fields
    222  error = nf90_def_var(ncid_with_halo, field_names(j), nf90_float, (/dim_x,dim_y,dim_time/), id_data)
    223  call netcdf_err(error, 'DEFINING FIELD VARIABLE' )
    224  error = nf90_put_att(ncid_with_halo, id_data, "missing_value", missing)
    225  call netcdf_err(error, 'DEFINING FIELD ATTRIBUTE' )
    226  error = nf90_put_att(ncid_with_halo, id_data, "coordinates", "geolon geolat")
    227  call netcdf_err(error, 'DEFINING COORD ATTRIBUTE' )
    228  enddo
    229 
    230  error = nf90_enddef(ncid_with_halo, header_buffer_val,4,0,4)
    231  call netcdf_err(error, 'WRITING HEADER ENDDEF' )
    232 
    233  error = nf90_put_var(ncid_with_halo, id_times, day_of_rec)
    234  call netcdf_err(error, 'WRITING TIME VARIABLE' )
    235 
    236  error = nf90_put_var( ncid_with_halo, id_lat, lat_one_tile, &
    237  start=(/1,1/), count=(/i_mdl,j_mdl/))
    238  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLAT' )
    239 
    240  error = nf90_put_var( ncid_with_halo, id_lon, lon_one_tile, &
    241  start=(/1,1/), count=(/i_mdl,j_mdl/))
    242  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLON' )
    243 
    244  endif
    245 
    246  print*,'- WRITE DATA FOR RECORD: ',record
    247  error = nf90_inq_varid(ncid_with_halo, field_names(field_idx), id_data)
    248  call netcdf_err(error, 'IN NF90_INQ_VARID' )
    249 
    250  error = nf90_put_var(ncid_with_halo, id_data, data_one_tile, &
    251  start=(/1,1,time/), count=(/i_mdl,j_mdl,1/))
    252  call netcdf_err(error, 'IN NF90_PUT_VAR' )
    253 
    254  if (record == num_records) then
    255  error = nf90_close(ncid_with_halo)
    256  endif
    257 
    258  return
    259 
    260  end subroutine output
    Set up program execution.
    +
    subroutine output(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, tile, record, time, field_idx)
    Output model data for a single tile and a single record in netcdf format.
    Definition: output.f90:20
    +
    character(len=5), dimension(:), allocatable, public grid_tiles
    Array of model grid tile names.
    Definition: model_grid.F90:18
    +
    character(len=50), dimension(:), allocatable, public field_names
    Names of fields to be processed.
    Definition: source_grid.F90:21
    +
    real(kind=4), public missing
    Value assigned to undefined points (i.e., ocean points for a land field).
    Definition: model_grid.F90:25
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    integer, public num_time_recs
    Number of time records.
    Definition: source_grid.F90:27
    +
    integer, public halo
    Number of row/cols defining the lateral boundary halo.
    +
    integer, dimension(:), allocatable, public day_of_rec
    Day of each time record with respect to Jan 1.
    Definition: source_grid.F90:31
    +
    integer, public num_records
    Number of fields times time records.
    Definition: source_grid.F90:26
    +
    integer, public num_fields
    Number of fields in the file.
    Definition: source_grid.F90:28
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    character(len=75), public source
    Original source of the data.
    Definition: source_grid.F90:22
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.html b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.html new file mode 100644 index 000000000..10575979d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.html @@ -0,0 +1,135 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/output_frac_cats.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    output_frac_cats.F90 File Reference
    +
    +
    + +

    Write model categorical data for a single tile. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  output_frac_cats
     Output categorical data such as vegetation type.
     
    + + + + + + + +

    +Functions/Subroutines

    subroutine, public output_frac_cats::output_driver (data_one_tile, dom_cat_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, num_categories, tile)
     Driver routine to output model categorical data. More...
     
    subroutine output_frac_cats::writeit (out_file, iout, jout, num_categories, latitude, longitude, data_pct, dominant_cat)
     Write data to a netcdf file. More...
     
    +

    Detailed Description

    +

    Write model categorical data for a single tile.

    +
    Author
    George Gayno NCEP/EMC
    +
    Date
    2022
    + +

    Definition in file output_frac_cats.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.js b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.js new file mode 100644 index 000000000..f340e745d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90.js @@ -0,0 +1,5 @@ +var output__frac__cats_8F90 = +[ + [ "output_driver", "output__frac__cats_8F90.html#a9a512f5dee48e19de760a127370a446e", null ], + [ "writeit", "output__frac__cats_8F90.html#afa717c64fcf0d4c83e900eab7fd0a22f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90_source.html b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90_source.html new file mode 100644 index 000000000..e7152ef9d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/output__frac__cats_8F90_source.html @@ -0,0 +1,119 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/output_frac_cats.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    output_frac_cats.F90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    11 
    12  implicit none
    13 
    14  private
    15 
    16  public :: output_driver
    17 
    18  contains
    19 
    31  subroutine output_driver(data_one_tile, dom_cat_one_tile, lat_one_tile, lon_one_tile, &
    32  i_mdl, j_mdl, num_categories, tile)
    33 
    34  use mpi
    35  use esmf
    36  use source_grid, only : field_names
    37  use model_grid, only : grid_tiles
    38  use program_setup, only : halo
    39 
    40  implicit none
    41 
    42  integer, intent(in) :: i_mdl, j_mdl, tile, num_categories
    43 
    44  real(esmf_kind_r4), intent(in) :: data_one_tile(i_mdl,j_mdl,num_categories)
    45  real(esmf_kind_r4), intent(in) :: dom_cat_one_tile(i_mdl,j_mdl)
    46  real(esmf_kind_r4), intent(in) :: lat_one_tile(i_mdl,j_mdl)
    47  real(esmf_kind_r4), intent(in) :: lon_one_tile(i_mdl,j_mdl)
    48 
    49  character(len=200) :: out_file
    50  character(len=200) :: out_file_with_halo
    51 
    52  integer :: field_idx
    53  integer :: ierr
    54  integer :: i_out, j_out
    55  integer :: i_start, i_end, j_start, j_end
    56 
    57  field_idx = 1
    58 
    59  select case (field_names(field_idx))
    60  case ('soil_type')
    61  out_file = "./soil_type." // grid_tiles(tile) // ".nc"
    62  out_file_with_halo = "./soil_type." // grid_tiles(tile) // ".halo.nc"
    63  case ('vegetation_type')
    64  out_file = "./vegetation_type." // grid_tiles(tile) // ".nc"
    65  out_file_with_halo = "./vegetation_type." // grid_tiles(tile) // ".halo.nc"
    66  case default
    67  print*,'- FATAL ERROR IN ROUTINE OUTPUT. UNIDENTIFIED FIELD : ', field_names(field_idx)
    68  call mpi_abort(mpi_comm_world, 67, ierr)
    69  end select
    70 
    71 !----------------------------------------------------------------------
    72 ! If user specified a halo (for running stand-alone regional grid),
    73 ! remove it.
    74 !----------------------------------------------------------------------
    75 
    76  if (halo > 0) then
    77  print*,"- WILL WRITE WITHOUT HALO REGION OF ", halo, " ROWS/COLS."
    78  i_start = 1 + halo
    79  i_end = i_mdl - halo
    80  j_start = 1 + halo
    81  j_end = j_mdl - halo
    82  i_out = i_end - i_start + 1
    83  j_out = j_end - j_start + 1
    84  call writeit(out_file, i_out, j_out, num_categories, &
    85  lat_one_tile(i_start:i_end,j_start:j_end), &
    86  lon_one_tile(i_start:i_end,j_start:j_end), &
    87  data_one_tile(i_start:i_end,j_start:j_end,:), &
    88  dom_cat_one_tile(i_start:i_end,j_start:j_end) )
    89  print*,"- WILL WRITE FULL DOMAIN INCLUDING HALO."
    90  call writeit(out_file_with_halo, i_mdl, j_mdl, num_categories, &
    91  lat_one_tile, lon_one_tile, data_one_tile, dom_cat_one_tile)
    92  else
    93  print*,"- WILL WRITE DATA."
    94  call writeit(out_file, i_mdl, j_mdl, num_categories, &
    95  lat_one_tile, lon_one_tile, data_one_tile, dom_cat_one_tile)
    96  endif
    97 
    98  return
    99 
    100  end subroutine output_driver
    101 
    112  subroutine writeit(out_file, iout, jout, num_categories, &
    113  latitude, longitude, data_pct, dominant_cat)
    115  use esmf
    116  use netcdf
    117  use utils
    119 
    120  implicit none
    121 
    122  character(len=*), intent(in) :: out_file
    123 
    124  integer, intent(in) :: iout, jout, num_categories
    125 
    126  real(esmf_kind_r4), intent(in) :: latitude(iout,jout)
    127  real(esmf_kind_r4), intent(in) :: longitude(iout,jout)
    128  real(esmf_kind_r4), intent(in) :: data_pct(iout,jout,num_categories)
    129  real(esmf_kind_r4), intent(in) :: dominant_cat(iout,jout)
    130 
    131  character(len=200) :: field_names_pct
    132  integer :: header_buffer_val = 16384
    133  integer :: ncid, dim_x, dim_y, dim_z, dim_time
    134  integer :: id_times, id_lat, id_lon, id_data_pct
    135  integer :: id_data_dom_cat
    136 !integer :: id_sum
    137  integer :: error
    138 
    139 !real :: sum_all(iout,jout)
    140 
    141  print*,"- OPEN AND WRITE: ",trim(out_file)
    142  error = nf90_create(out_file, nf90_netcdf4, ncid)
    143  call netcdf_err(error, 'ERROR IN NF90_CREATE' )
    144  error = nf90_def_dim(ncid, 'nx', iout, dim_x)
    145  call netcdf_err(error, 'DEFINING NX DIMENSION' )
    146  error = nf90_def_dim(ncid, 'ny', jout, dim_y)
    147  call netcdf_err(error, 'DEFINING NY DIMENSION' )
    148  error = nf90_def_dim(ncid, 'num_categories', num_categories, dim_z)
    149  call netcdf_err(error, 'DEFINING NZ DIMENSION' )
    150  error = nf90_def_dim(ncid, 'time', num_time_recs, dim_time)
    151  call netcdf_err(error, 'DEFINING TIME DIMENSION' )
    152 
    153  error = nf90_def_var(ncid, 'time', nf90_float, dim_time, id_times)
    154  call netcdf_err(error, 'DEFINING TIME VARIABLE' )
    155  error = nf90_put_att(ncid, id_times, "units", "days since 2015-1-1")
    156  call netcdf_err(error, 'DEFINING TIME ATTRIBUTE' )
    157  if (len_trim(source) > 0) then
    158  error = nf90_put_att(ncid, nf90_global, 'source', source)
    159  call netcdf_err(error, 'DEFINING GLOBAL SOURCE ATTRIBUTE' )
    160  endif
    161 
    162  error = nf90_def_var(ncid, 'geolat', nf90_float, (/dim_x,dim_y/), id_lat)
    163  call netcdf_err(error, 'DEFINING GEOLAT FIELD' )
    164  error = nf90_put_att(ncid, id_lat, "long_name", "Latitude")
    165  call netcdf_err(error, 'DEFINING GEOLAT NAME ATTRIBUTE' )
    166  error = nf90_put_att(ncid, id_lat, "units", "degrees_north")
    167  call netcdf_err(error, 'DEFINING GEOLAT UNIT ATTRIBUTE' )
    168  error = nf90_def_var(ncid, 'geolon', nf90_float, (/dim_x,dim_y/), id_lon)
    169  call netcdf_err(error, 'DEFINING GEOLON FIELD' )
    170  error = nf90_put_att(ncid, id_lon, "long_name", "Longitude")
    171  call netcdf_err(error, 'DEFINING GEOLON NAME ATTRIBUTE' )
    172  error = nf90_put_att(ncid, id_lon, "units", "degrees_east")
    173  call netcdf_err(error, 'DEFINING GEOLON UNIT ATTRIBUTE' )
    174 
    175  field_names_pct = trim(field_names(1)) // "_pct"
    176  error = nf90_def_var(ncid, trim(field_names_pct), nf90_float, (/dim_x,dim_y,dim_z,dim_time/), id_data_pct)
    177  call netcdf_err(error, 'DEFINING FIELD' )
    178  error = nf90_put_att(ncid, id_data_pct, "units", "percent coverage each category")
    179  call netcdf_err(error, 'DEFINING FIELD ATTRIBUTE' )
    180  error = nf90_put_att(ncid, id_data_pct, "coordinates", "geolon geolat")
    181  call netcdf_err(error, 'DEFINING COORD ATTRIBUTE' )
    182 
    183  error = nf90_def_var(ncid, trim(field_names(1)), nf90_float, (/dim_x,dim_y,dim_time/), id_data_dom_cat)
    184  call netcdf_err(error, 'DEFINING FIELD' )
    185  error = nf90_put_att(ncid, id_data_dom_cat, "units", "dominant category")
    186  call netcdf_err(error, 'DEFINING FIELD ATTRIBUTE' )
    187  error = nf90_put_att(ncid, id_data_dom_cat, "coordinates", "geolon geolat")
    188  call netcdf_err(error, 'DEFINING COORD ATTRIBUTE' )
    189 
    190 !error = nf90_def_var(ncid, 'sum', NF90_FLOAT, (/dim_x,dim_y,dim_time/), id_sum)
    191 !call netcdf_err(error, 'DEFINING FIELD' )
    192 
    193  error = nf90_enddef(ncid, header_buffer_val,4,0,4)
    194 
    195  error = nf90_put_var( ncid, id_times, day_of_rec)
    196  call netcdf_err(error, 'WRITING TIME FIELD' )
    197 
    198  error = nf90_put_var( ncid, id_lat, latitude)
    199  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLAT' )
    200 
    201  error = nf90_put_var( ncid, id_lon, longitude)
    202  call netcdf_err(error, 'IN NF90_PUT_VAR FOR GEOLON' )
    203 
    204  error = nf90_put_var( ncid, id_data_pct, data_pct)
    205  call netcdf_err(error, 'IN NF90_PUT_VAR' )
    206 
    207  error = nf90_put_var( ncid, id_data_dom_cat, dominant_cat)
    208  call netcdf_err(error, 'IN NF90_PUT_VAR' )
    209 
    210 ! Temporary output of sum of %.
    211 !sum_all = sum(data_pct, dim=3)
    212 !error = nf90_put_var( ncid, id_sum, sum_all)
    213 
    214  error = nf90_close(ncid)
    215 
    216  end subroutine writeit
    217 
    218  end module output_frac_cats
    Set up program execution.
    +
    character(len=5), dimension(:), allocatable, public grid_tiles
    Array of model grid tile names.
    Definition: model_grid.F90:18
    +
    character(len=50), dimension(:), allocatable, public field_names
    Names of fields to be processed.
    Definition: source_grid.F90:21
    +
    This module defines the model grid.
    Definition: model_grid.F90:10
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    integer, public num_time_recs
    Number of time records.
    Definition: source_grid.F90:27
    +
    integer, public halo
    Number of row/cols defining the lateral boundary halo.
    +
    integer, dimension(:), allocatable, public day_of_rec
    Day of each time record with respect to Jan 1.
    Definition: source_grid.F90:31
    +
    subroutine writeit(out_file, iout, jout, num_categories, latitude, longitude, data_pct, dominant_cat)
    Write data to a netcdf file.
    +
    Output categorical data such as vegetation type.
    +
    subroutine, public output_driver(data_one_tile, dom_cat_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, num_categories, tile)
    Driver routine to output model categorical data.
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    character(len=75), public source
    Original source of the data.
    Definition: source_grid.F90:22
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/pages.html b/ver-1.11.0/sfc_climo_gen/pages.html new file mode 100644 index 000000000..22d7cce6d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/pages.html @@ -0,0 +1,109 @@ + + + + + + + +sfc_climo_gen: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/program__setup_8f90.html b/ver-1.11.0/sfc_climo_gen/program__setup_8f90.html new file mode 100644 index 000000000..9d9e47dbf --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/program__setup_8f90.html @@ -0,0 +1,193 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/program_setup.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    program_setup.f90 File Reference
    +
    +
    + +

    Program setup. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  program_setup
     Set up program execution.
     
    + + + + +

    +Functions/Subroutines

    subroutine, public program_setup::read_setup_namelist (localpet)
     Read program setup namelist. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    logical, public program_setup::fract_vegsoil_type = .false.
     When true, output the percentage of each soil and vegetation type category, and the dominant category within a model grid box. More...
     
    integer, public program_setup::halo = 0
     Number of row/cols defining the lateral boundary halo. More...
     
    character(len=500), public program_setup::input_facsf_file = "NULL"
     File containing input fractional coverage data for strong zenith angle dependent albedo. More...
     
    character(len=500), public program_setup::input_leaf_area_index_file = "NULL"
     File containing input leaf area index data. More...
     
    character(len=500), public program_setup::input_maximum_snow_albedo_file = "NULL"
     File containing input maximum snow albedo data. More...
     
    character(len=500), public program_setup::input_slope_type_file = "NULL"
     File containing input slope type data. More...
     
    character(len=500), public program_setup::input_snowfree_albedo_file = "NULL"
     File containing input snow-free albedo data. More...
     
    character(len=500), public program_setup::input_soil_color_file = "NULL"
     File containing input soil color data. More...
     
    character(len=500), public program_setup::input_soil_type_file = "NULL"
     File containing input soil type data. More...
     
    character(len=500), public program_setup::input_substrate_temperature_file = "NULL"
     File containing input soil substrate temperature data. More...
     
    character(len=500), public program_setup::input_vegetation_greenness_file = "NULL"
     File containing input vegetation greenness data. More...
     
    character(len=500), public program_setup::input_vegetation_type_file = "NULL"
     File containing input vegetation type data. More...
     
    character(len=50), public program_setup::leaf_area_index_method ='bilinear'
     Interpolation method for leaf area index. More...
     
    character(len=50), public program_setup::maximum_snow_albedo_method ='bilinear'
     Interpolation method for max snow albedo. More...
     
    character(len=500), public program_setup::mosaic_file_mdl = "NULL"
     Model grid mosaic file. More...
     
    character(len=500), public program_setup::orog_dir_mdl = "NULL"
     Directory containing the model grid orography files. More...
     
    character(len=500), dimension(6), public program_setup::orog_files_mdl = "NULL"
     Model grid orography filenames. More...
     
    character(len=50), public program_setup::snowfree_albedo_method ='bilinear'
     Interpolation method for snowfree albedo. More...
     
    character(len=50), public program_setup::vegetation_greenness_method ='bilinear'
     Interpolation method for vegetation greenness. More...
     
    +

    Detailed Description

    +

    Program setup.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file program_setup.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/program__setup_8f90.js b/ver-1.11.0/sfc_climo_gen/program__setup_8f90.js new file mode 100644 index 000000000..815e4bda7 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/program__setup_8f90.js @@ -0,0 +1,23 @@ +var program__setup_8f90 = +[ + [ "read_setup_namelist", "program__setup_8f90.html#ac52f11da9f12e0cf9ff87fae136f0cde", null ], + [ "fract_vegsoil_type", "program__setup_8f90.html#a3527d76f3ac67af0a2c673d510b003a2", null ], + [ "halo", "program__setup_8f90.html#a69b3b78e03ab0ff3b84518a357f63b49", null ], + [ "input_facsf_file", "program__setup_8f90.html#aa40975450e88c9b31a0dda4831cc582b", null ], + [ "input_leaf_area_index_file", "program__setup_8f90.html#a16ba1e0dcfb41cb431fd4efeb6263af3", null ], + [ "input_maximum_snow_albedo_file", "program__setup_8f90.html#a425bbfa3819160d2c46dc38f8a0dabcf", null ], + [ "input_slope_type_file", "program__setup_8f90.html#a9d5adfcf85bd33a9c9491cf1228928f3", null ], + [ "input_snowfree_albedo_file", "program__setup_8f90.html#a9771a7e124798f3820e57bdc41091a42", null ], + [ "input_soil_color_file", "program__setup_8f90.html#ad95bb6acecc8d8a9b7c27cc9a69a9f48", null ], + [ "input_soil_type_file", "program__setup_8f90.html#ab66e25e5c1328dd8117c9534aaec6519", null ], + [ "input_substrate_temperature_file", "program__setup_8f90.html#a15e2f29dff889e5ca20bf2731637055b", null ], + [ "input_vegetation_greenness_file", "program__setup_8f90.html#a7e4bd2eac63bdd417abaf32a46c066ec", null ], + [ "input_vegetation_type_file", "program__setup_8f90.html#ad4cdf93af2258f635f5adc72fb903975", null ], + [ "leaf_area_index_method", "program__setup_8f90.html#a9af0c32bc3ae678908960765f51b62c7", null ], + [ "maximum_snow_albedo_method", "program__setup_8f90.html#a7797f5bb118a72303577c26c8d69272c", null ], + [ "mosaic_file_mdl", "program__setup_8f90.html#a0f72c873dd044a1cfeeea433a65504ab", null ], + [ "orog_dir_mdl", "program__setup_8f90.html#a3d4d4c3467360c7e4c51bd8ed834536a", null ], + [ "orog_files_mdl", "program__setup_8f90.html#ad5c84fb7a00f8eccba8720abaf3a424d", null ], + [ "snowfree_albedo_method", "program__setup_8f90.html#ad67d3b811268632d438e6f60a56c1149", null ], + [ "vegetation_greenness_method", "program__setup_8f90.html#afc0a8243ffbb5ffa0d70eb20951f807b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/program__setup_8f90_source.html b/ver-1.11.0/sfc_climo_gen/program__setup_8f90_source.html new file mode 100644 index 000000000..867c9c3e5 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/program__setup_8f90_source.html @@ -0,0 +1,126 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/program_setup.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    program_setup.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    18 
    19  implicit none
    20 
    21  private
    22 
    23  character(len=500), public :: input_leaf_area_index_file = "NULL"
    24  character(len=500), public :: input_facsf_file = "NULL"
    27  character(len=500), public :: input_substrate_temperature_file = "NULL"
    28  character(len=500), public :: input_maximum_snow_albedo_file = "NULL"
    29  character(len=500), public :: input_snowfree_albedo_file = "NULL"
    30  character(len=500), public :: input_slope_type_file = "NULL"
    31  character(len=500), public :: input_soil_type_file = "NULL"
    32  character(len=500), public :: input_soil_color_file = "NULL"
    33  character(len=500), public :: input_vegetation_type_file = "NULL"
    34  character(len=500), public :: input_vegetation_greenness_file = "NULL"
    35  character(len=500), public :: mosaic_file_mdl = "NULL"
    36  character(len=500), public :: orog_dir_mdl = "NULL"
    37  character(len=500), public :: orog_files_mdl(6) = "NULL"
    38 
    39  character(len=50), public :: leaf_area_index_method='bilinear'
    41  character(len=50), public :: maximum_snow_albedo_method='bilinear'
    43  character(len=50), public :: snowfree_albedo_method='bilinear'
    45  character(len=50), public :: vegetation_greenness_method='bilinear'
    47 
    48  integer, public :: halo = 0
    50 
    51  logical, public :: fract_vegsoil_type = .false.
    54 
    55  public :: read_setup_namelist
    56 
    57  contains
    58 
    63  subroutine read_setup_namelist(localpet)
    64 
    65  use mpi
    66 
    67  implicit none
    68 
    69  integer, intent(in) :: localpet
    70 
    71  integer :: ierr
    72 
    82 
    83  print*,"- READ SETUP NAMELIST, LOCALPET: ", localpet
    84 
    85  open(41, file="./fort.41", iostat=ierr, err=900)
    86  read(41, nml=config, iostat=ierr, err=901)
    87  close (41)
    88 
    89  return
    90 
    91  900 print*,'- FATAL ERROR OPENING CONFIG NAMELIST'
    92  print*,'- IOSTAT IS: ', ierr
    93  call mpi_abort(mpi_comm_world, 10, ierr)
    94 
    95  901 print*,'- FATAL ERROR READING CONFIG NAMELIST'
    96  print*,'- IOSTAT IS: ', ierr
    97  call mpi_abort(mpi_comm_world, 11, ierr)
    98 
    99  end subroutine read_setup_namelist
    100 
    101  end module program_setup
    Set up program execution.
    +
    character(len=500), dimension(6), public orog_files_mdl
    Model grid orography filenames.
    +
    character(len=50), public snowfree_albedo_method
    Interpolation method for snowfree albedo.
    +
    character(len=500), public input_facsf_file
    File containing input fractional coverage data for strong zenith angle dependent albedo.
    +
    character(len=500), public input_soil_type_file
    File containing input soil type data.
    +
    logical, public fract_vegsoil_type
    When true, output the percentage of each soil and vegetation type category, and the dominant category...
    +
    character(len=500), public input_snowfree_albedo_file
    File containing input snow-free albedo data.
    +
    character(len=500), public input_maximum_snow_albedo_file
    File containing input maximum snow albedo data.
    +
    subroutine, public read_setup_namelist(localpet)
    Read program setup namelist.
    +
    integer, public halo
    Number of row/cols defining the lateral boundary halo.
    +
    character(len=500), public input_leaf_area_index_file
    File containing input leaf area index data.
    +
    character(len=500), public input_vegetation_greenness_file
    File containing input vegetation greenness data.
    +
    character(len=50), public leaf_area_index_method
    Interpolation method for leaf area index.
    +
    character(len=500), public input_slope_type_file
    File containing input slope type data.
    +
    character(len=50), public maximum_snow_albedo_method
    Interpolation method for max snow albedo.
    +
    character(len=500), public orog_dir_mdl
    Directory containing the model grid orography files.
    +
    character(len=500), public input_soil_color_file
    File containing input soil color data.
    +
    character(len=500), public input_vegetation_type_file
    File containing input vegetation type data.
    +
    character(len=500), public mosaic_file_mdl
    Model grid mosaic file.
    +
    character(len=500), public input_substrate_temperature_file
    File containing input soil substrate temperature data.
    +
    character(len=50), public vegetation_greenness_method
    Interpolation method for vegetation greenness.
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/resize.js b/ver-1.11.0/sfc_climo_gen/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/sfc_climo_gen/search/all_0.html b/ver-1.11.0/sfc_climo_gen/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_0.js b/ver-1.11.0/sfc_climo_gen/search/all_0.js new file mode 100644 index 000000000..0035b0ad4 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adjust_5ffor_5flandice',['adjust_for_landice',['../interp_8F90.html#a16ec757345ad00f2004b636caeac5e72',1,'interp.F90']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_1.html b/ver-1.11.0/sfc_climo_gen/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_1.js b/ver-1.11.0/sfc_climo_gen/search/all_1.js new file mode 100644 index 000000000..aa121b5ce --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['data_5ffield_5fmdl',['data_field_mdl',['../namespacemodel__grid.html#a15a6798f7e5b98acf417f0c15c88b299',1,'model_grid']]], + ['day_5fof_5frec',['day_of_rec',['../namespacesource__grid.html#aff543ec0172d14deceb73b0b02117971',1,'source_grid']]], + ['define_5fmodel_5fgrid',['define_model_grid',['../namespacemodel__grid.html#a11dce144a9b8c63f8a84a495c6543237',1,'model_grid']]], + ['define_5fsource_5fgrid',['define_source_grid',['../namespacesource__grid.html#a702829ab745210e1bba937c613e5baf6',1,'source_grid']]], + ['driver',['driver',['../driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.F90']]], + ['driver_2ef90',['driver.F90',['../driver_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_10.html b/ver-1.11.0/sfc_climo_gen/search/all_10.html new file mode 100644 index 000000000..50bc449e1 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_10.js b/ver-1.11.0/sfc_climo_gen/search/all_10.js new file mode 100644 index 000000000..3d06fc275 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vegetation_5fgreenness_5fmethod',['vegetation_greenness_method',['../namespaceprogram__setup.html#afc0a8243ffbb5ffa0d70eb20951f807b',1,'program_setup']]], + ['vegt_5ffield_5fmdl',['vegt_field_mdl',['../namespacemodel__grid.html#af8279a064242f7e34cb2af9e3daaac5b',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_11.html b/ver-1.11.0/sfc_climo_gen/search/all_11.html new file mode 100644 index 000000000..b35c8bf0e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_11.js b/ver-1.11.0/sfc_climo_gen/search/all_11.js new file mode 100644 index 000000000..3a792b170 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeit',['writeit',['../namespaceoutput__frac__cats.html#afa717c64fcf0d4c83e900eab7fd0a22f',1,'output_frac_cats']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_2.html b/ver-1.11.0/sfc_climo_gen/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_2.js b/ver-1.11.0/sfc_climo_gen/search/all_2.js new file mode 100644 index 000000000..1e27e621f --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_5fhandler',['error_handler',['../namespaceutils.html#afcee4326c16609f3c61e647a905477f2',1,'utils']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_3.html b/ver-1.11.0/sfc_climo_gen/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_3.js b/ver-1.11.0/sfc_climo_gen/search/all_3.js new file mode 100644 index 000000000..c8277fe30 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['field_5fnames',['field_names',['../namespacesource__grid.html#aae12d6f7e531352200ed3027956855dd',1,'source_grid']]], + ['fract_5fvegsoil_5ftype',['fract_vegsoil_type',['../namespaceprogram__setup.html#a3527d76f3ac67af0a2c673d510b003a2',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_4.html b/ver-1.11.0/sfc_climo_gen/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_4.js b/ver-1.11.0/sfc_climo_gen/search/all_4.js new file mode 100644 index 000000000..1a1ef4885 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['get_5fmodel_5finfo',['get_model_info',['../namespacemodel__grid.html#a6a77c8a8857921648c9f6955dbde1c5e',1,'model_grid']]], + ['grid_5fmdl',['grid_mdl',['../namespacemodel__grid.html#a1d05b2ec20e43fb650c11d51998a78fe',1,'model_grid']]], + ['grid_5fsrc',['grid_src',['../namespacesource__grid.html#abe193723dd30b5df8700cd9807d54e64',1,'source_grid']]], + ['grid_5ftiles',['grid_tiles',['../namespacemodel__grid.html#ac0121335c0cd0a310abbb1fd9175f28c',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_5.html b/ver-1.11.0/sfc_climo_gen/search/all_5.html new file mode 100644 index 000000000..e59e1d536 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_5.js b/ver-1.11.0/sfc_climo_gen/search/all_5.js new file mode 100644 index 000000000..dab8f529d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['halo',['halo',['../namespaceprogram__setup.html#a69b3b78e03ab0ff3b84518a357f63b49',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_6.html b/ver-1.11.0/sfc_climo_gen/search/all_6.html new file mode 100644 index 000000000..f75a754e9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_6.js b/ver-1.11.0/sfc_climo_gen/search/all_6.js new file mode 100644 index 000000000..e3a47c186 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_6.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['i_5fmdl',['i_mdl',['../namespacemodel__grid.html#a1f16f9e0bd8436bd0a29043a8b6811cf',1,'model_grid']]], + ['i_5fsrc',['i_src',['../namespacesource__grid.html#af3b923bcfe67b81a2ed3883a8c28e2f5',1,'source_grid']]], + ['ij_5fmdl',['ij_mdl',['../namespacemodel__grid.html#a30bbdbd9bce2d9818d0146182cb08e18',1,'model_grid']]], + ['input_5ffacsf_5ffile',['input_facsf_file',['../namespaceprogram__setup.html#aa40975450e88c9b31a0dda4831cc582b',1,'program_setup']]], + ['input_5fleaf_5farea_5findex_5ffile',['input_leaf_area_index_file',['../namespaceprogram__setup.html#a16ba1e0dcfb41cb431fd4efeb6263af3',1,'program_setup']]], + ['input_5fmaximum_5fsnow_5falbedo_5ffile',['input_maximum_snow_albedo_file',['../namespaceprogram__setup.html#a425bbfa3819160d2c46dc38f8a0dabcf',1,'program_setup']]], + ['input_5fslope_5ftype_5ffile',['input_slope_type_file',['../namespaceprogram__setup.html#a9d5adfcf85bd33a9c9491cf1228928f3',1,'program_setup']]], + ['input_5fsnowfree_5falbedo_5ffile',['input_snowfree_albedo_file',['../namespaceprogram__setup.html#a9771a7e124798f3820e57bdc41091a42',1,'program_setup']]], + ['input_5fsoil_5fcolor_5ffile',['input_soil_color_file',['../namespaceprogram__setup.html#ad95bb6acecc8d8a9b7c27cc9a69a9f48',1,'program_setup']]], + ['input_5fsoil_5ftype_5ffile',['input_soil_type_file',['../namespaceprogram__setup.html#ab66e25e5c1328dd8117c9534aaec6519',1,'program_setup']]], + ['input_5fsubstrate_5ftemperature_5ffile',['input_substrate_temperature_file',['../namespaceprogram__setup.html#a15e2f29dff889e5ca20bf2731637055b',1,'program_setup']]], + ['input_5fvegetation_5fgreenness_5ffile',['input_vegetation_greenness_file',['../namespaceprogram__setup.html#a7e4bd2eac63bdd417abaf32a46c066ec',1,'program_setup']]], + ['input_5fvegetation_5ftype_5ffile',['input_vegetation_type_file',['../namespaceprogram__setup.html#ad4cdf93af2258f635f5adc72fb903975',1,'program_setup']]], + ['interp',['interp',['../interp_8F90.html#ac237b91c4757b45946297adf2729c350',1,'interp.F90']]], + ['interp_2ef90',['interp.F90',['../interp_8F90.html',1,'']]], + ['interp_5ffrac_5fcats',['interp_frac_cats',['../interp__frac__cats_8F90.html#a85e03b6b02557ddaef7da4b2a86e4667',1,'interp_frac_cats.F90']]], + ['interp_5ffrac_5fcats_2ef90',['interp_frac_cats.F90',['../interp__frac__cats_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_7.html b/ver-1.11.0/sfc_climo_gen/search/all_7.html new file mode 100644 index 000000000..88acd9466 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_7.js b/ver-1.11.0/sfc_climo_gen/search/all_7.js new file mode 100644 index 000000000..f48474e53 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['j_5fmdl',['j_mdl',['../namespacemodel__grid.html#aaa39c3958814b0d75c55bf1e92769c21',1,'model_grid']]], + ['j_5fsrc',['j_src',['../namespacesource__grid.html#ad86982abf8a4e8160f2961edc9ff4665',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_8.html b/ver-1.11.0/sfc_climo_gen/search/all_8.html new file mode 100644 index 000000000..b74d5fd80 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_8.js b/ver-1.11.0/sfc_climo_gen/search/all_8.js new file mode 100644 index 000000000..2474eb2fc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['land_5ffrac_5ffield_5fmdl',['land_frac_field_mdl',['../namespacemodel__grid.html#ad0a27b6ede1bf89a3c15623b8423d625',1,'model_grid']]], + ['latitude_5ffield_5fmdl',['latitude_field_mdl',['../namespacemodel__grid.html#aa2503a3f282d19f2a5c0bb1562174ee2',1,'model_grid']]], + ['leaf_5farea_5findex_5fmethod',['leaf_area_index_method',['../namespaceprogram__setup.html#a9af0c32bc3ae678908960765f51b62c7',1,'program_setup']]], + ['longitude_5ffield_5fmdl',['longitude_field_mdl',['../namespacemodel__grid.html#aea65c25cb029f769cd660bc34b552d50',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_9.html b/ver-1.11.0/sfc_climo_gen/search/all_9.html new file mode 100644 index 000000000..95e88dd25 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_9.js b/ver-1.11.0/sfc_climo_gen/search/all_9.js new file mode 100644 index 000000000..72e05a84d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['mask_5ffield_5fmdl',['mask_field_mdl',['../namespacemodel__grid.html#a8f1fd74a8f502706ee6f3f99610826b7',1,'model_grid']]], + ['maximum_5fsnow_5falbedo_5fmethod',['maximum_snow_albedo_method',['../namespaceprogram__setup.html#a7797f5bb118a72303577c26c8d69272c',1,'program_setup']]], + ['missing',['missing',['../namespacemodel__grid.html#a9995f64cfeea506dc6be9b7d701b5066',1,'model_grid']]], + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]], + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]], + ['model_5fgrid_5fcleanup',['model_grid_cleanup',['../namespacemodel__grid.html#ab82613aa1b639c003cdb59a592953d7b',1,'model_grid']]], + ['mosaic_5ffile_5fmdl',['mosaic_file_mdl',['../namespaceprogram__setup.html#a0f72c873dd044a1cfeeea433a65504ab',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_a.html b/ver-1.11.0/sfc_climo_gen/search/all_a.html new file mode 100644 index 000000000..3148a8e51 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_a.js b/ver-1.11.0/sfc_climo_gen/search/all_a.js new file mode 100644 index 000000000..0ea89663d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['netcdf_5ferr',['netcdf_err',['../namespaceutils.html#a15465c8a57dddaff7150d8ae2cde62f4',1,'utils']]], + ['num_5ffields',['num_fields',['../namespacesource__grid.html#ae03297a0d28e5dd7341d8ac146074e2d',1,'source_grid']]], + ['num_5frecords',['num_records',['../namespacesource__grid.html#a65dcbf2c564983d0dc69dff4343355fd',1,'source_grid']]], + ['num_5ftiles',['num_tiles',['../namespacemodel__grid.html#aa047e6e785f8ba25adc5f211b3709f29',1,'model_grid']]], + ['num_5ftime_5frecs',['num_time_recs',['../namespacesource__grid.html#a50a3ec53c2c7c4f94c7cb0272739c580',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_b.html b/ver-1.11.0/sfc_climo_gen/search/all_b.html new file mode 100644 index 000000000..f2a3c8d0e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_b.js b/ver-1.11.0/sfc_climo_gen/search/all_b.js new file mode 100644 index 000000000..c05a50b57 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['orog_5fdir_5fmdl',['orog_dir_mdl',['../namespaceprogram__setup.html#a3d4d4c3467360c7e4c51bd8ed834536a',1,'program_setup']]], + ['orog_5ffiles_5fmdl',['orog_files_mdl',['../namespaceprogram__setup.html#ad5c84fb7a00f8eccba8720abaf3a424d',1,'program_setup']]], + ['output',['output',['../output_8f90.html#a0fca3e229e8e1e22e7100dc90a140382',1,'output.f90']]], + ['output_2ef90',['output.f90',['../output_8f90.html',1,'']]], + ['output_5fdriver',['output_driver',['../namespaceoutput__frac__cats.html#a9a512f5dee48e19de760a127370a446e',1,'output_frac_cats']]], + ['output_5ffrac_5fcats',['output_frac_cats',['../namespaceoutput__frac__cats.html',1,'']]], + ['output_5ffrac_5fcats_2ef90',['output_frac_cats.F90',['../output__frac__cats_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_c.html b/ver-1.11.0/sfc_climo_gen/search/all_c.html new file mode 100644 index 000000000..637681075 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_c.js b/ver-1.11.0/sfc_climo_gen/search/all_c.js new file mode 100644 index 000000000..e43488c84 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]], + ['program_5fsetup_2ef90',['program_setup.f90',['../program__setup_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_d.html b/ver-1.11.0/sfc_climo_gen/search/all_d.html new file mode 100644 index 000000000..cc52c79fb --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_d.js b/ver-1.11.0/sfc_climo_gen/search/all_d.js new file mode 100644 index 000000000..992041297 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_sfc_climo_gen_8fd_docs_README.html',1,'']]], + ['read_5fsetup_5fnamelist',['read_setup_namelist',['../namespaceprogram__setup.html#ac52f11da9f12e0cf9ff87fae136f0cde',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_e.html b/ver-1.11.0/sfc_climo_gen/search/all_e.html new file mode 100644 index 000000000..85b39bd48 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_e.js b/ver-1.11.0/sfc_climo_gen/search/all_e.js new file mode 100644 index 000000000..ab8ccc8dc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['sfc_5fclimo_5fgen',['sfc_climo_gen',['../index.html',1,'']]], + ['search',['search',['../search_8f90.html#acda6493c6d4a2e9ba6e5d80d3852c93c',1,'search.f90']]], + ['search_2ef90',['search.f90',['../search_8f90.html',1,'']]], + ['search_5ffrac_5fcats',['search_frac_cats',['../search__frac__cats_8f90.html#ab897bc114a9c9cdd156f7108839232ae',1,'search_frac_cats.f90']]], + ['search_5ffrac_5fcats_2ef90',['search_frac_cats.f90',['../search__frac__cats_8f90.html',1,'']]], + ['snowfree_5falbedo_5fmethod',['snowfree_albedo_method',['../namespaceprogram__setup.html#ad67d3b811268632d438e6f60a56c1149',1,'program_setup']]], + ['source',['source',['../namespacesource__grid.html#a04135c2d1c60864436fe533121753477',1,'source_grid']]], + ['source_5fgrid',['source_grid',['../namespacesource__grid.html',1,'']]], + ['source_5fgrid_2ef90',['source_grid.F90',['../source__grid_8F90.html',1,'']]], + ['source_5fgrid_5fcleanup',['source_grid_cleanup',['../namespacesource__grid.html#a287cc73053e3f4782b495ff1a61c8ea2',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/all_f.html b/ver-1.11.0/sfc_climo_gen/search/all_f.html new file mode 100644 index 000000000..89fa15a65 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/all_f.js b/ver-1.11.0/sfc_climo_gen/search/all_f.js new file mode 100644 index 000000000..2ed5fb51d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['utils',['utils',['../namespaceutils.html',1,'']]], + ['utils_2ef90',['utils.f90',['../utils_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/close.png b/ver-1.11.0/sfc_climo_gen/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/search/files_0.html b/ver-1.11.0/sfc_climo_gen/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_0.js b/ver-1.11.0/sfc_climo_gen/search/files_0.js new file mode 100644 index 000000000..e12a59cc3 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['driver_2ef90',['driver.F90',['../driver_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_1.html b/ver-1.11.0/sfc_climo_gen/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_1.js b/ver-1.11.0/sfc_climo_gen/search/files_1.js new file mode 100644 index 000000000..80c932c36 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interp_2ef90',['interp.F90',['../interp_8F90.html',1,'']]], + ['interp_5ffrac_5fcats_2ef90',['interp_frac_cats.F90',['../interp__frac__cats_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_2.html b/ver-1.11.0/sfc_climo_gen/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_2.js b/ver-1.11.0/sfc_climo_gen/search/files_2.js new file mode 100644 index 000000000..54f982849 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid_2ef90',['model_grid.F90',['../model__grid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_3.html b/ver-1.11.0/sfc_climo_gen/search/files_3.html new file mode 100644 index 000000000..f8e543a84 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_3.js b/ver-1.11.0/sfc_climo_gen/search/files_3.js new file mode 100644 index 000000000..ac61148e0 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['output_2ef90',['output.f90',['../output_8f90.html',1,'']]], + ['output_5ffrac_5fcats_2ef90',['output_frac_cats.F90',['../output__frac__cats_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_4.html b/ver-1.11.0/sfc_climo_gen/search/files_4.html new file mode 100644 index 000000000..2ebb46c7e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_4.js b/ver-1.11.0/sfc_climo_gen/search/files_4.js new file mode 100644 index 000000000..22852a3a7 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup_2ef90',['program_setup.f90',['../program__setup_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_5.html b/ver-1.11.0/sfc_climo_gen/search/files_5.html new file mode 100644 index 000000000..268b7eb53 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_5.js b/ver-1.11.0/sfc_climo_gen/search/files_5.js new file mode 100644 index 000000000..16b3c6631 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['search_2ef90',['search.f90',['../search_8f90.html',1,'']]], + ['search_5ffrac_5fcats_2ef90',['search_frac_cats.f90',['../search__frac__cats_8f90.html',1,'']]], + ['source_5fgrid_2ef90',['source_grid.F90',['../source__grid_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/files_6.html b/ver-1.11.0/sfc_climo_gen/search/files_6.html new file mode 100644 index 000000000..98fc6666c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/files_6.js b/ver-1.11.0/sfc_climo_gen/search/files_6.js new file mode 100644 index 000000000..5eade2268 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils_2ef90',['utils.f90',['../utils_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_0.html b/ver-1.11.0/sfc_climo_gen/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_0.js b/ver-1.11.0/sfc_climo_gen/search/functions_0.js new file mode 100644 index 000000000..0035b0ad4 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adjust_5ffor_5flandice',['adjust_for_landice',['../interp_8F90.html#a16ec757345ad00f2004b636caeac5e72',1,'interp.F90']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_1.html b/ver-1.11.0/sfc_climo_gen/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_1.js b/ver-1.11.0/sfc_climo_gen/search/functions_1.js new file mode 100644 index 000000000..56cca0305 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['define_5fmodel_5fgrid',['define_model_grid',['../namespacemodel__grid.html#a11dce144a9b8c63f8a84a495c6543237',1,'model_grid']]], + ['define_5fsource_5fgrid',['define_source_grid',['../namespacesource__grid.html#a702829ab745210e1bba937c613e5baf6',1,'source_grid']]], + ['driver',['driver',['../driver_8F90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.F90']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_2.html b/ver-1.11.0/sfc_climo_gen/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_2.js b/ver-1.11.0/sfc_climo_gen/search/functions_2.js new file mode 100644 index 000000000..1e27e621f --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error_5fhandler',['error_handler',['../namespaceutils.html#afcee4326c16609f3c61e647a905477f2',1,'utils']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_3.html b/ver-1.11.0/sfc_climo_gen/search/functions_3.html new file mode 100644 index 000000000..1f0eedb33 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_3.js b/ver-1.11.0/sfc_climo_gen/search/functions_3.js new file mode 100644 index 000000000..db2fa462e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['get_5fmodel_5finfo',['get_model_info',['../namespacemodel__grid.html#a6a77c8a8857921648c9f6955dbde1c5e',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_4.html b/ver-1.11.0/sfc_climo_gen/search/functions_4.html new file mode 100644 index 000000000..c5bf87a47 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_4.js b/ver-1.11.0/sfc_climo_gen/search/functions_4.js new file mode 100644 index 000000000..a2cb31a89 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interp',['interp',['../interp_8F90.html#ac237b91c4757b45946297adf2729c350',1,'interp.F90']]], + ['interp_5ffrac_5fcats',['interp_frac_cats',['../interp__frac__cats_8F90.html#a85e03b6b02557ddaef7da4b2a86e4667',1,'interp_frac_cats.F90']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_5.html b/ver-1.11.0/sfc_climo_gen/search/functions_5.html new file mode 100644 index 000000000..a34446ce7 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_5.js b/ver-1.11.0/sfc_climo_gen/search/functions_5.js new file mode 100644 index 000000000..05a12e4f3 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid_5fcleanup',['model_grid_cleanup',['../namespacemodel__grid.html#ab82613aa1b639c003cdb59a592953d7b',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_6.html b/ver-1.11.0/sfc_climo_gen/search/functions_6.html new file mode 100644 index 000000000..6fd4b1f37 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_6.js b/ver-1.11.0/sfc_climo_gen/search/functions_6.js new file mode 100644 index 000000000..83ea65982 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['netcdf_5ferr',['netcdf_err',['../namespaceutils.html#a15465c8a57dddaff7150d8ae2cde62f4',1,'utils']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_7.html b/ver-1.11.0/sfc_climo_gen/search/functions_7.html new file mode 100644 index 000000000..6e09abf1b --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_7.js b/ver-1.11.0/sfc_climo_gen/search/functions_7.js new file mode 100644 index 000000000..f8d94415e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['output',['output',['../output_8f90.html#a0fca3e229e8e1e22e7100dc90a140382',1,'output.f90']]], + ['output_5fdriver',['output_driver',['../namespaceoutput__frac__cats.html#a9a512f5dee48e19de760a127370a446e',1,'output_frac_cats']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_8.html b/ver-1.11.0/sfc_climo_gen/search/functions_8.html new file mode 100644 index 000000000..d59ea9719 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_8.js b/ver-1.11.0/sfc_climo_gen/search/functions_8.js new file mode 100644 index 000000000..ac542040d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_5fsetup_5fnamelist',['read_setup_namelist',['../namespaceprogram__setup.html#ac52f11da9f12e0cf9ff87fae136f0cde',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_9.html b/ver-1.11.0/sfc_climo_gen/search/functions_9.html new file mode 100644 index 000000000..5ccec4291 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_9.js b/ver-1.11.0/sfc_climo_gen/search/functions_9.js new file mode 100644 index 000000000..fdbbf16de --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['search',['search',['../search_8f90.html#acda6493c6d4a2e9ba6e5d80d3852c93c',1,'search.f90']]], + ['search_5ffrac_5fcats',['search_frac_cats',['../search__frac__cats_8f90.html#ab897bc114a9c9cdd156f7108839232ae',1,'search_frac_cats.f90']]], + ['source_5fgrid_5fcleanup',['source_grid_cleanup',['../namespacesource__grid.html#a287cc73053e3f4782b495ff1a61c8ea2',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_a.html b/ver-1.11.0/sfc_climo_gen/search/functions_a.html new file mode 100644 index 000000000..3958eb7b9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/functions_a.js b/ver-1.11.0/sfc_climo_gen/search/functions_a.js new file mode 100644 index 000000000..3a792b170 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writeit',['writeit',['../namespaceoutput__frac__cats.html#afa717c64fcf0d4c83e900eab7fd0a22f',1,'output_frac_cats']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/mag_sel.png b/ver-1.11.0/sfc_climo_gen/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_0.html b/ver-1.11.0/sfc_climo_gen/search/namespaces_0.html new file mode 100644 index 000000000..f55ca63aa --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_0.js b/ver-1.11.0/sfc_climo_gen/search/namespaces_0.js new file mode 100644 index 000000000..e87d90956 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_5fgrid',['model_grid',['../namespacemodel__grid.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_1.html b/ver-1.11.0/sfc_climo_gen/search/namespaces_1.html new file mode 100644 index 000000000..37c816cc4 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_1.js b/ver-1.11.0/sfc_climo_gen/search/namespaces_1.js new file mode 100644 index 000000000..d11dc98f1 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['output_5ffrac_5fcats',['output_frac_cats',['../namespaceoutput__frac__cats.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_2.html b/ver-1.11.0/sfc_climo_gen/search/namespaces_2.html new file mode 100644 index 000000000..0a9167460 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_2.js b/ver-1.11.0/sfc_climo_gen/search/namespaces_2.js new file mode 100644 index 000000000..67e7696ea --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['program_5fsetup',['program_setup',['../namespaceprogram__setup.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_3.html b/ver-1.11.0/sfc_climo_gen/search/namespaces_3.html new file mode 100644 index 000000000..9c35eb2f9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_3.js b/ver-1.11.0/sfc_climo_gen/search/namespaces_3.js new file mode 100644 index 000000000..bfb5af32f --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['source_5fgrid',['source_grid',['../namespacesource__grid.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_4.html b/ver-1.11.0/sfc_climo_gen/search/namespaces_4.html new file mode 100644 index 000000000..381233203 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/namespaces_4.js b/ver-1.11.0/sfc_climo_gen/search/namespaces_4.js new file mode 100644 index 000000000..83b3e7052 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/namespaces_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils',['utils',['../namespaceutils.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/nomatches.html b/ver-1.11.0/sfc_climo_gen/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/pages_0.html b/ver-1.11.0/sfc_climo_gen/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/pages_0.js b/ver-1.11.0/sfc_climo_gen/search/pages_0.js new file mode 100644 index 000000000..c54914d80 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_sfc_climo_gen_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/pages_1.html b/ver-1.11.0/sfc_climo_gen/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/pages_1.js b/ver-1.11.0/sfc_climo_gen/search/pages_1.js new file mode 100644 index 000000000..0f86486fd --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sfc_5fclimo_5fgen',['sfc_climo_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/search.css b/ver-1.11.0/sfc_climo_gen/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/sfc_climo_gen/search/search.js b/ver-1.11.0/sfc_climo_gen/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/search/search_r.png b/ver-1.11.0/sfc_climo_gen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_0.js b/ver-1.11.0/sfc_climo_gen/search/variables_0.js new file mode 100644 index 000000000..5e166a167 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data_5ffield_5fmdl',['data_field_mdl',['../namespacemodel__grid.html#a15a6798f7e5b98acf417f0c15c88b299',1,'model_grid']]], + ['day_5fof_5frec',['day_of_rec',['../namespacesource__grid.html#aff543ec0172d14deceb73b0b02117971',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_1.html b/ver-1.11.0/sfc_climo_gen/search/variables_1.html new file mode 100644 index 000000000..f46154d8b --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_1.js b/ver-1.11.0/sfc_climo_gen/search/variables_1.js new file mode 100644 index 000000000..c8277fe30 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['field_5fnames',['field_names',['../namespacesource__grid.html#aae12d6f7e531352200ed3027956855dd',1,'source_grid']]], + ['fract_5fvegsoil_5ftype',['fract_vegsoil_type',['../namespaceprogram__setup.html#a3527d76f3ac67af0a2c673d510b003a2',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_2.html b/ver-1.11.0/sfc_climo_gen/search/variables_2.html new file mode 100644 index 000000000..15275b7a9 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_2.js b/ver-1.11.0/sfc_climo_gen/search/variables_2.js new file mode 100644 index 000000000..0add0bb13 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['grid_5fmdl',['grid_mdl',['../namespacemodel__grid.html#a1d05b2ec20e43fb650c11d51998a78fe',1,'model_grid']]], + ['grid_5fsrc',['grid_src',['../namespacesource__grid.html#abe193723dd30b5df8700cd9807d54e64',1,'source_grid']]], + ['grid_5ftiles',['grid_tiles',['../namespacemodel__grid.html#ac0121335c0cd0a310abbb1fd9175f28c',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_3.html b/ver-1.11.0/sfc_climo_gen/search/variables_3.html new file mode 100644 index 000000000..fbc36712f --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_3.js b/ver-1.11.0/sfc_climo_gen/search/variables_3.js new file mode 100644 index 000000000..dab8f529d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['halo',['halo',['../namespaceprogram__setup.html#a69b3b78e03ab0ff3b84518a357f63b49',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_4.html b/ver-1.11.0/sfc_climo_gen/search/variables_4.html new file mode 100644 index 000000000..8067e67f8 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_4.js b/ver-1.11.0/sfc_climo_gen/search/variables_4.js new file mode 100644 index 000000000..a88f0bbdd --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_4.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['i_5fmdl',['i_mdl',['../namespacemodel__grid.html#a1f16f9e0bd8436bd0a29043a8b6811cf',1,'model_grid']]], + ['i_5fsrc',['i_src',['../namespacesource__grid.html#af3b923bcfe67b81a2ed3883a8c28e2f5',1,'source_grid']]], + ['ij_5fmdl',['ij_mdl',['../namespacemodel__grid.html#a30bbdbd9bce2d9818d0146182cb08e18',1,'model_grid']]], + ['input_5ffacsf_5ffile',['input_facsf_file',['../namespaceprogram__setup.html#aa40975450e88c9b31a0dda4831cc582b',1,'program_setup']]], + ['input_5fleaf_5farea_5findex_5ffile',['input_leaf_area_index_file',['../namespaceprogram__setup.html#a16ba1e0dcfb41cb431fd4efeb6263af3',1,'program_setup']]], + ['input_5fmaximum_5fsnow_5falbedo_5ffile',['input_maximum_snow_albedo_file',['../namespaceprogram__setup.html#a425bbfa3819160d2c46dc38f8a0dabcf',1,'program_setup']]], + ['input_5fslope_5ftype_5ffile',['input_slope_type_file',['../namespaceprogram__setup.html#a9d5adfcf85bd33a9c9491cf1228928f3',1,'program_setup']]], + ['input_5fsnowfree_5falbedo_5ffile',['input_snowfree_albedo_file',['../namespaceprogram__setup.html#a9771a7e124798f3820e57bdc41091a42',1,'program_setup']]], + ['input_5fsoil_5fcolor_5ffile',['input_soil_color_file',['../namespaceprogram__setup.html#ad95bb6acecc8d8a9b7c27cc9a69a9f48',1,'program_setup']]], + ['input_5fsoil_5ftype_5ffile',['input_soil_type_file',['../namespaceprogram__setup.html#ab66e25e5c1328dd8117c9534aaec6519',1,'program_setup']]], + ['input_5fsubstrate_5ftemperature_5ffile',['input_substrate_temperature_file',['../namespaceprogram__setup.html#a15e2f29dff889e5ca20bf2731637055b',1,'program_setup']]], + ['input_5fvegetation_5fgreenness_5ffile',['input_vegetation_greenness_file',['../namespaceprogram__setup.html#a7e4bd2eac63bdd417abaf32a46c066ec',1,'program_setup']]], + ['input_5fvegetation_5ftype_5ffile',['input_vegetation_type_file',['../namespaceprogram__setup.html#ad4cdf93af2258f635f5adc72fb903975',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_5.html b/ver-1.11.0/sfc_climo_gen/search/variables_5.html new file mode 100644 index 000000000..7e95e946f --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_5.js b/ver-1.11.0/sfc_climo_gen/search/variables_5.js new file mode 100644 index 000000000..f48474e53 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['j_5fmdl',['j_mdl',['../namespacemodel__grid.html#aaa39c3958814b0d75c55bf1e92769c21',1,'model_grid']]], + ['j_5fsrc',['j_src',['../namespacesource__grid.html#ad86982abf8a4e8160f2961edc9ff4665',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_6.html b/ver-1.11.0/sfc_climo_gen/search/variables_6.html new file mode 100644 index 000000000..3d398e628 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_6.js b/ver-1.11.0/sfc_climo_gen/search/variables_6.js new file mode 100644 index 000000000..2474eb2fc --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['land_5ffrac_5ffield_5fmdl',['land_frac_field_mdl',['../namespacemodel__grid.html#ad0a27b6ede1bf89a3c15623b8423d625',1,'model_grid']]], + ['latitude_5ffield_5fmdl',['latitude_field_mdl',['../namespacemodel__grid.html#aa2503a3f282d19f2a5c0bb1562174ee2',1,'model_grid']]], + ['leaf_5farea_5findex_5fmethod',['leaf_area_index_method',['../namespaceprogram__setup.html#a9af0c32bc3ae678908960765f51b62c7',1,'program_setup']]], + ['longitude_5ffield_5fmdl',['longitude_field_mdl',['../namespacemodel__grid.html#aea65c25cb029f769cd660bc34b552d50',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_7.html b/ver-1.11.0/sfc_climo_gen/search/variables_7.html new file mode 100644 index 000000000..7b791460a --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_7.js b/ver-1.11.0/sfc_climo_gen/search/variables_7.js new file mode 100644 index 000000000..cc910a94c --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['mask_5ffield_5fmdl',['mask_field_mdl',['../namespacemodel__grid.html#a8f1fd74a8f502706ee6f3f99610826b7',1,'model_grid']]], + ['maximum_5fsnow_5falbedo_5fmethod',['maximum_snow_albedo_method',['../namespaceprogram__setup.html#a7797f5bb118a72303577c26c8d69272c',1,'program_setup']]], + ['missing',['missing',['../namespacemodel__grid.html#a9995f64cfeea506dc6be9b7d701b5066',1,'model_grid']]], + ['mosaic_5ffile_5fmdl',['mosaic_file_mdl',['../namespaceprogram__setup.html#a0f72c873dd044a1cfeeea433a65504ab',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_8.html b/ver-1.11.0/sfc_climo_gen/search/variables_8.html new file mode 100644 index 000000000..8ebc5f6b7 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_8.js b/ver-1.11.0/sfc_climo_gen/search/variables_8.js new file mode 100644 index 000000000..f1657da60 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['num_5ffields',['num_fields',['../namespacesource__grid.html#ae03297a0d28e5dd7341d8ac146074e2d',1,'source_grid']]], + ['num_5frecords',['num_records',['../namespacesource__grid.html#a65dcbf2c564983d0dc69dff4343355fd',1,'source_grid']]], + ['num_5ftiles',['num_tiles',['../namespacemodel__grid.html#aa047e6e785f8ba25adc5f211b3709f29',1,'model_grid']]], + ['num_5ftime_5frecs',['num_time_recs',['../namespacesource__grid.html#a50a3ec53c2c7c4f94c7cb0272739c580',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_9.html b/ver-1.11.0/sfc_climo_gen/search/variables_9.html new file mode 100644 index 000000000..12136613e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_9.js b/ver-1.11.0/sfc_climo_gen/search/variables_9.js new file mode 100644 index 000000000..bb79a3043 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['orog_5fdir_5fmdl',['orog_dir_mdl',['../namespaceprogram__setup.html#a3d4d4c3467360c7e4c51bd8ed834536a',1,'program_setup']]], + ['orog_5ffiles_5fmdl',['orog_files_mdl',['../namespaceprogram__setup.html#ad5c84fb7a00f8eccba8720abaf3a424d',1,'program_setup']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_a.html b/ver-1.11.0/sfc_climo_gen/search/variables_a.html new file mode 100644 index 000000000..24819a377 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_a.js b/ver-1.11.0/sfc_climo_gen/search/variables_a.js new file mode 100644 index 000000000..970bb3f8d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['snowfree_5falbedo_5fmethod',['snowfree_albedo_method',['../namespaceprogram__setup.html#ad67d3b811268632d438e6f60a56c1149',1,'program_setup']]], + ['source',['source',['../namespacesource__grid.html#a04135c2d1c60864436fe533121753477',1,'source_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_b.html b/ver-1.11.0/sfc_climo_gen/search/variables_b.html new file mode 100644 index 000000000..b306931e2 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/sfc_climo_gen/search/variables_b.js b/ver-1.11.0/sfc_climo_gen/search/variables_b.js new file mode 100644 index 000000000..3d06fc275 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search/variables_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vegetation_5fgreenness_5fmethod',['vegetation_greenness_method',['../namespaceprogram__setup.html#afc0a8243ffbb5ffa0d70eb20951f807b',1,'program_setup']]], + ['vegt_5ffield_5fmdl',['vegt_field_mdl',['../namespacemodel__grid.html#af8279a064242f7e34cb2af9e3daaac5b',1,'model_grid']]] +]; diff --git a/ver-1.11.0/sfc_climo_gen/search_8f90.html b/ver-1.11.0/sfc_climo_gen/search_8f90.html new file mode 100644 index 000000000..4047dd4d4 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search_8f90.html @@ -0,0 +1,201 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/search.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    search.f90 File Reference
    +
    +
    + +

    Replace undefined values on the model grid with a valid value at a nearby neighbor. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine search (field, mask, idim, jdim, tile, field_name)
     Replace undefined values on the model grid with a valid value at a nearby neighbor. More...
     
    +

    Detailed Description

    +

    Replace undefined values on the model grid with a valid value at a nearby neighbor.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file search.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ search()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine search (real(esmf_kind_r4), dimension(idim,jdim), intent(inout) field,
    integer(esmf_kind_i4), dimension(idim,jdim), intent(in) mask,
    integer, intent(in) idim,
    integer, intent(in) jdim,
    integer, intent(in) tile,
    character(len=*) field_name 
    )
    +
    + +

    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.

    +
    Parameters
    + + + + + + + +
    [in,out]field- input: field before missing values are replaced
      +
    • output: field after missing values are replaced
    • +
    +
    [in]maskfield bitmap. Field defined where mask=1
    [in,out]idimi dimension of tile
    [in,out]jdimj dimension of tile
    [in]tiletile number
    [in]field_namefield name
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition at line 24 of file search.f90.

    + +

    Referenced by interp().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/search_8f90.js b/ver-1.11.0/sfc_climo_gen/search_8f90.js new file mode 100644 index 000000000..62ef8c91e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search_8f90.js @@ -0,0 +1,4 @@ +var search_8f90 = +[ + [ "search", "search_8f90.html#acda6493c6d4a2e9ba6e5d80d3852c93c", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/search_8f90_source.html b/ver-1.11.0/sfc_climo_gen/search_8f90_source.html new file mode 100644 index 000000000..723e78ef6 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/search.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    search.f90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    23  subroutine search (field, mask, idim, jdim, tile, field_name)
    24 
    25  use mpi
    26  use esmf
    27 
    28  implicit none
    29 
    30  character(len=*) :: field_name
    31 
    32  integer, intent(in) :: idim, jdim, tile
    33  integer(esmf_kind_i4), intent(in) :: mask(idim,jdim)
    34 
    35  real(esmf_kind_r4), intent(inout) :: field(idim,jdim)
    36 
    37  integer :: i, j, krad, ii, jj
    38  integer :: istart, iend
    39  integer :: jstart, jend
    40  integer :: ierr
    41 
    42  real :: default_value
    43  real(esmf_kind_r4), allocatable :: field_save(:,:)
    44 
    45 !-----------------------------------------------------------------------
    46 ! Set default value.
    47 !-----------------------------------------------------------------------
    48 
    49  select case (field_name)
    50  case ('substrate_temperature') ! soil substrate_temperature
    51  default_value = 280.0
    52  case ('vegetation_greenness') ! vegetation greenness
    53  default_value = 0.5
    54  case ('maximum_snow_albedo') ! maximum snow albedo
    55  default_value = 0.5
    56  case ('leaf_area_index') ! leaf area index
    57  default_value = 1.0
    58  case ('visible_black_sky_albedo') ! visible black sky albedo
    59  default_value = 0.1
    60  case ('visible_white_sky_albedo') ! visible white sky albedo
    61  default_value = 0.1
    62  case ('near_IR_black_sky_albedo') ! near IR black sky albedo
    63  default_value = 0.2
    64  case ('near_IR_white_sky_albedo') ! near IR white sky albedo
    65  default_value = 0.2
    66  case ('facsf') ! facsf
    67  default_value = 0.5
    68  case ('facwf') ! facwf
    69  default_value = 0.5
    70  case ('slope_type') ! slope type
    71  default_value = float(1)
    72  case ('soil_type') ! soil type
    73  default_value = float(2)
    74  case ('soil_color') ! soil color
    75  default_value = float(4)
    76  case ('vegetation_type') ! vegetation type
    77  default_value = float(3)
    78  case default
    79  print*,'- FATAL ERROR IN ROUTINE SEARCH. UNIDENTIFIED FIELD : ', field_name
    80  call mpi_abort(mpi_comm_world, 77, ierr)
    81  end select
    82 
    83 !-----------------------------------------------------------------------
    84 ! Perform search and replace.
    85 !-----------------------------------------------------------------------
    86 
    87  allocate (field_save(idim,jdim))
    88  field_save = field
    89 
    90  j_loop : do j = 1, jdim
    91  i_loop : do i = 1, idim
    92 
    93  if (mask(i,j) == 1 .and. field_save(i,j) < -9999.0) then
    94 
    95  krad_loop : do krad = 1, 100
    96 
    97  istart = i - krad
    98  iend = i + krad
    99  jstart = j - krad
    100  jend = j + krad
    101 
    102  jj_loop : do jj = jstart, jend
    103  ii_loop : do ii = istart, iend
    104 
    105 !-----------------------------------------------------------------------
    106 ! Search only along outer square.
    107 !-----------------------------------------------------------------------
    108 
    109  if ((jj == jstart) .or. (jj == jend) .or. &
    110  (ii == istart) .or. (ii == iend)) then
    111 
    112  if (jj < 1 .or. jj > jdim) cycle jj_loop
    113  if (ii < 1 .or. ii > idim) cycle ii_loop
    114 
    115  if (mask(ii,jj) == 1 .and. field_save(ii,jj) > -9999.0) then
    116  field(i,j) = field_save(ii,jj)
    117 ! write(6,100) tile,i,j,ii,jj,field(i,j)
    118  cycle i_loop
    119  endif
    120 
    121  endif
    122 
    123  enddo ii_loop
    124  enddo jj_loop
    125 
    126  enddo krad_loop
    127 
    128  field(i,j) = default_value ! Search failed. Use default value.
    129 
    130  write(6,101) tile,i,j,field(i,j)
    131 
    132  endif
    133  enddo i_loop
    134  enddo j_loop
    135 
    136  deallocate(field_save)
    137 
    138  100 format(1x,"- MISSING POINT TILE: ",i2," I/J: ",i5,i5," SET TO VALUE AT: ",i5,i5,". NEW VALUE IS: ",f8.3)
    139  101 format(1x,"- MISSING POINT TILE: ",i2," I/J: ",i5,i5," SET TO DEFAULT VALUE OF: ",f8.3)
    140 
    141  end subroutine search
    subroutine search(field, mask, idim, jdim, tile, field_name)
    Replace undefined values on the model grid with a valid value at a nearby neighbor.
    Definition: search.f90:24
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.html b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.html new file mode 100644 index 000000000..9798a8001 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.html @@ -0,0 +1,208 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/search_frac_cats.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    search_frac_cats.f90 File Reference
    +
    +
    + +

    Replace undefined values on the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine search_frac_cats (field, mask, idim, jdim, num_categories, tile, field_name)
     Replace undefined values on the model grid with valid values at a nearby neighbor. More...
     
    +

    Detailed Description

    +

    Replace undefined values on the model grid.

    +
    Author
    George Gayno
    +
    Date
    2022
    + +

    Definition in file search_frac_cats.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ search_frac_cats()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine search_frac_cats (real(esmf_kind_r4), dimension(idim,jdim,num_categories), intent(inout) field,
    integer(esmf_kind_i4), dimension(idim,jdim), intent(in) mask,
    integer, intent(in) idim,
    integer, intent(in) jdim,
    integer, intent(in) num_categories,
    integer, intent(in) tile,
    character(len=*) field_name 
    )
    +
    + +

    Replace undefined values on the model grid with valid values 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 values are 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. This routine works for fractional categorical fields, such as soil type.

    +
    Parameters
    + + + + + + + + +
    [in,out]field- input: Field before missing values are replaced.
      +
    • output: Field after missing values are replaced.
    • +
    +
    [in]maskField bitmap. Field defined where mask=1.
    [in]idimi dimension of tile.
    [in]jdimj dimension of tile.
    [in]num_categoriesNumber of veg/soil categories.
    [in]tileTile number.
    [in]field_nameField name.
    +
    +
    +
    Author
    George Gayno
    +
    Date
    2022
    + +

    Definition at line 25 of file search_frac_cats.f90.

    + +

    Referenced by interp_frac_cats().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.js b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.js new file mode 100644 index 000000000..7b53b9c85 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90.js @@ -0,0 +1,4 @@ +var search__frac__cats_8f90 = +[ + [ "search_frac_cats", "search__frac__cats_8f90.html#ab897bc114a9c9cdd156f7108839232ae", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90_source.html b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90_source.html new file mode 100644 index 000000000..320646d87 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/search__frac__cats_8f90_source.html @@ -0,0 +1,106 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/search_frac_cats.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    search_frac_cats.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    24  subroutine search_frac_cats (field, mask, idim, jdim, num_categories, tile, field_name)
    25 
    26  use mpi
    27  use esmf
    28 
    29  implicit none
    30 
    31  integer, intent(in) :: idim, jdim, tile, num_categories
    32  integer(esmf_kind_i4), intent(in) :: mask(idim,jdim)
    33 
    34  real(esmf_kind_r4), intent(inout) :: field(idim,jdim,num_categories)
    35 
    36  character(len=*) :: field_name
    37 
    38  integer :: i, j, krad, ii, jj
    39  integer :: istart, iend
    40  integer :: jstart, jend
    41  integer :: ierr
    42  integer :: default_category
    43 
    44  real(esmf_kind_r4), allocatable :: field_save(:,:,:)
    45 
    46 !-----------------------------------------------------------------------
    47 ! Set default category.
    48 !-----------------------------------------------------------------------
    49 
    50  select case (field_name)
    51  case ('soil_type') ! soil type
    52  default_category = 3
    53  case ('vegetation_type') ! vegetation type
    54  default_category = 3
    55  case default
    56  print*,'- FATAL ERROR IN ROUTINE SEARCH. UNIDENTIFIED FIELD : ', field
    57  call mpi_abort(mpi_comm_world, 77, ierr)
    58  end select
    59 
    60 !-----------------------------------------------------------------------
    61 ! Perform search and replace.
    62 !-----------------------------------------------------------------------
    63 
    64  allocate (field_save(idim,jdim,num_categories))
    65  field_save = field
    66 
    67  j_loop : do j = 1, jdim
    68  i_loop : do i = 1, idim
    69 
    70  if (mask(i,j) == 1 .and. field_save(i,j,1) < -9999.0) then
    71 
    72  krad_loop : do krad = 1, 100
    73 
    74  istart = i - krad
    75  iend = i + krad
    76  jstart = j - krad
    77  jend = j + krad
    78 
    79  jj_loop : do jj = jstart, jend
    80  ii_loop : do ii = istart, iend
    81 
    82 !-----------------------------------------------------------------------
    83 ! Search only along outer square.
    84 !-----------------------------------------------------------------------
    85 
    86  if ((jj == jstart) .or. (jj == jend) .or. &
    87  (ii == istart) .or. (ii == iend)) then
    88 
    89  if (jj < 1 .or. jj > jdim) cycle jj_loop
    90  if (ii < 1 .or. ii > idim) cycle ii_loop
    91 
    92  if (mask(ii,jj) == 1 .and. maxval(field_save(ii,jj,:)) > 0.0) then
    93  field(i,j,:) = field_save(ii,jj,:)
    94  write(6,100) tile,i,j,ii,jj
    95  cycle i_loop
    96  endif
    97 
    98  endif
    99 
    100  enddo ii_loop
    101  enddo jj_loop
    102 
    103  enddo krad_loop
    104 
    105  field(i,j,:) = 0.0
    106  field(i,j,default_category) = 1.0 ! Search failed. Use 100% of default category.
    107 
    108  write(6,101) tile,i,j,default_category
    109 
    110  endif
    111  enddo i_loop
    112  enddo j_loop
    113 
    114  deallocate(field_save)
    115 
    116  100 format(1x,"- MISSING POINT TILE: ",i2," I/J: ",i5,i5," SET TO VALUE AT: ",i5,i5)
    117  101 format(1x,"- MISSING POINT TILE: ",i2," I/J: ",i5,i5," SET TO DEFAULT VALUE OF: ",i3)
    118 
    119  end subroutine search_frac_cats
    subroutine search_frac_cats(field, mask, idim, jdim, num_categories, tile, field_name)
    Replace undefined values on the model grid with valid values at a nearby neighbor.
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/sfc__climo__gen_8md_source.html b/ver-1.11.0/sfc_climo_gen/sfc__climo__gen_8md_source.html new file mode 100644 index 000000000..b1b0a513d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/sfc__climo__gen_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/docs/sfc_climo_gen.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/docs/sfc_climo_gen.md
    +
    +
    +
    1 
    2 # sfc_climo_gen
    3 
    4 # Introduction
    5 
    6 The sfc_climo_gen program driver.F90 creates surface climatological
    7 fields, such as vegetation type and albedo, for an FV3 grid.
    8 
    9 This document is part of the <a href="../index.html">UFS_UTILS
    10 documentation</a>.
    11 
    12 This program is part of the
    13 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/source__grid_8F90.html b/ver-1.11.0/sfc_climo_gen/source__grid_8F90.html new file mode 100644 index 000000000..4377b68b7 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/source__grid_8F90.html @@ -0,0 +1,166 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/source_grid.F90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    source_grid.F90 File Reference
    +
    +
    + +

    Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  source_grid
     Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid.
     
    + + + + + + + +

    +Functions/Subroutines

    subroutine, public source_grid::define_source_grid (localpet, npets, input_file)
     Defines esmf grid object for source grid. More...
     
    subroutine, public source_grid::source_grid_cleanup
     Free up memory associated with this module. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    integer, dimension(:), allocatable, public source_grid::day_of_rec
     Day of each time record with respect to Jan 1. More...
     
    character(len=50), dimension(:), allocatable, public source_grid::field_names
     Names of fields to be processed. More...
     
    type(esmf_grid), public source_grid::grid_src
     ESMF grid object for the source grid. More...
     
    integer, public source_grid::i_src
     i dimension of the source grid. More...
     
    integer, public source_grid::j_src
     j dimension of the source grid. More...
     
    integer, public source_grid::num_fields
     Number of fields in the file. More...
     
    integer, public source_grid::num_records
     Number of fields times time records. More...
     
    integer, public source_grid::num_time_recs
     Number of time records. More...
     
    character(len=75), public source_grid::source
     Original source of the data. More...
     
    +

    Detailed Description

    +

    Read grid specs, date information and land/sea mask for the source data that will be interpolated to the model grid.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file source_grid.F90.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/source__grid_8F90.js b/ver-1.11.0/sfc_climo_gen/source__grid_8F90.js new file mode 100644 index 000000000..c12be276d --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/source__grid_8F90.js @@ -0,0 +1,14 @@ +var source__grid_8F90 = +[ + [ "define_source_grid", "source__grid_8F90.html#a702829ab745210e1bba937c613e5baf6", null ], + [ "source_grid_cleanup", "source__grid_8F90.html#a287cc73053e3f4782b495ff1a61c8ea2", null ], + [ "day_of_rec", "source__grid_8F90.html#aff543ec0172d14deceb73b0b02117971", null ], + [ "field_names", "source__grid_8F90.html#aae12d6f7e531352200ed3027956855dd", null ], + [ "grid_src", "source__grid_8F90.html#abe193723dd30b5df8700cd9807d54e64", null ], + [ "i_src", "source__grid_8F90.html#af3b923bcfe67b81a2ed3883a8c28e2f5", null ], + [ "j_src", "source__grid_8F90.html#ad86982abf8a4e8160f2961edc9ff4665", null ], + [ "num_fields", "source__grid_8F90.html#ae03297a0d28e5dd7341d8ac146074e2d", null ], + [ "num_records", "source__grid_8F90.html#a65dcbf2c564983d0dc69dff4343355fd", null ], + [ "num_time_recs", "source__grid_8F90.html#a50a3ec53c2c7c4f94c7cb0272739c580", null ], + [ "source", "source__grid_8F90.html#a04135c2d1c60864436fe533121753477", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/source__grid_8F90_source.html b/ver-1.11.0/sfc_climo_gen/source__grid_8F90_source.html new file mode 100644 index 000000000..d1da0a885 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/source__grid_8F90_source.html @@ -0,0 +1,120 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/source_grid.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    source_grid.F90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    13 
    14  use esmf
    15  use utils
    16 
    17  implicit none
    18 
    19  private
    20 
    21  character(len=50), allocatable, public :: field_names(:)
    22  character(len=75), public :: source
    23 
    24  integer, public :: i_src
    25  integer, public :: j_src
    26  integer, public :: num_records
    27  integer, public :: num_time_recs
    28  integer, public :: num_fields
    31  integer, allocatable, public :: day_of_rec(:)
    33 
    34  type(esmf_grid), public :: grid_src
    35 
    36  public :: define_source_grid
    37  public :: source_grid_cleanup
    38 
    39  contains
    40 
    51  subroutine define_source_grid(localpet, npets, input_file)
    52 
    53  use mpi
    54  use netcdf
    55 
    56  implicit none
    57 
    58  character(len=*), intent(in) :: input_file
    59 
    60  integer, intent(in) :: localpet, npets
    61 
    62  character(len=50) :: field_names_save(100)
    63  character(len=50) :: vname
    64 
    65  integer :: dimid, dims(1), ncid, status
    66  integer :: count, num_vars, n
    67  integer :: rc, varid, i, j, i_src_corner
    68  integer(esmf_kind_i4), pointer :: mask_ptr(:,:)
    69  integer :: clb(2), cub(2)
    70  integer :: clb_corner(2), cub_corner(2)
    71 
    72  real(esmf_kind_r4), allocatable :: mask_global(:,:)
    73  real(esmf_kind_r8), allocatable :: lat_global(:)
    74  real(esmf_kind_r8), allocatable :: lon_global(:)
    75  real(esmf_kind_r8), allocatable :: lat_corner_global(:)
    76  real(esmf_kind_r8), allocatable :: lon_corner_global(:)
    77  real(esmf_kind_r4), pointer :: mask_field_ptr(:,:)
    78  real(esmf_kind_r8), pointer :: lat_ptr(:,:)
    79  real(esmf_kind_r8), pointer :: lon_ptr(:,:)
    80  real(esmf_kind_r8), pointer :: lat_corner_ptr(:,:)
    81  real(esmf_kind_r8), pointer :: lon_corner_ptr(:,:)
    82  real :: lon_extent
    83  real(esmf_kind_r4) :: missing
    84 
    85  type(esmf_field) :: mask_field
    86  type(esmf_polekind_flag) :: polekindflag(2)
    87 
    88  print*,"- OPEN FILE: ", trim(input_file)
    89  status = nf90_open(input_file, nf90_nowrite, ncid)
    90  call netcdf_err(status, "OPENING INPUT SOURCE FILE")
    91 
    92  status = nf90_get_att(ncid, nf90_global, 'source', source)
    93  if (status /= nf90_noerr) source="unknown"
    94 
    95  if(localpet == 0) print*,'- SOURCE OF DATA IS: ', trim(source)
    96 
    97  status = nf90_inq_dimid(ncid, 'idim', dimid)
    98  call netcdf_err(status, "READING I DIMENSION ID OF SOURCE DATA")
    99  status = nf90_inquire_dimension(ncid, dimid, len=i_src)
    100  call netcdf_err(status, "READING I DIMENSION OF SOURCE DATA")
    101 
    102  status = nf90_inq_dimid(ncid, 'jdim', dimid)
    103  call netcdf_err(status, "READING J DIMENSION ID OF SOURCE DATA")
    104  status = nf90_inquire_dimension(ncid, dimid, len=j_src)
    105  call netcdf_err(status, "READING J DIMENSION OF SOURCE DATA")
    106 
    107  if(localpet == 0) print*,'- I/J DIMENSION OF SOURCE DATA: ', i_src, j_src
    108 
    109  allocate(lat_global(j_src))
    110  status = nf90_inq_varid(ncid, 'lat', varid)
    111  call netcdf_err(status, "READING SOURCE DATA LATITUDE ID")
    112  status = nf90_get_var(ncid, varid, lat_global)
    113  call netcdf_err(status, "READING SOURCE DATA LATITUDES")
    114 
    115  allocate(lon_global(i_src))
    116  status = nf90_inq_varid(ncid, 'lon', varid)
    117  call netcdf_err(status, "READING SOURCE DATA LONGITUDE ID")
    118  status = nf90_get_var(ncid, varid, lon_global)
    119  call netcdf_err(status, "READING SOURCE DATA LONGITUDE")
    120 
    121  allocate(lat_corner_global(j_src+1))
    122  status = nf90_inq_varid(ncid, 'lat_corner', varid)
    123  call netcdf_err(status, "READING SOURCE DATA CORNER LATITUDE ID")
    124  status = nf90_get_var(ncid, varid, lat_corner_global)
    125  call netcdf_err(status, "READING SOURCE DATA CORNER LATITUDE")
    126 
    127 !-----------------------------------------------------------------------
    128 ! Dimension of lon_corner depends on whether input data is periodic
    129 ! (global) or regional.
    130 !-----------------------------------------------------------------------
    131 
    132  status = nf90_inq_varid(ncid, 'lon_corner', varid)
    133  call netcdf_err(status, "READING SOURCE DATA CORNER LONGITUDE ID")
    134  status = nf90_inquire_variable(ncid, varid, dimids=dims)
    135  call netcdf_err(status, "READING SOURCE DATA CORNER LONGITUDE DIMIDS")
    136  status = nf90_inquire_dimension(ncid, dims(1), len=i_src_corner)
    137  call netcdf_err(status, "READING SOURCE DATA CORNER LONGITUDE DIMS")
    138  allocate(lon_corner_global(i_src_corner))
    139  status = nf90_get_var(ncid, varid, lon_corner_global)
    140  call netcdf_err(status, "READING SOURCE DATA CORNER LONGITUDE")
    141 
    142  status = nf90_inq_dimid(ncid, 'time', dimid)
    143  call netcdf_err(status, "READING SOURCE DATA TIME ID")
    144  status = nf90_inquire_dimension(ncid, dimid, len=num_time_recs)
    145  call netcdf_err(status, "READING SOURCE DATA NUM TIME PERIODS")
    146 
    147  allocate(day_of_rec(num_time_recs))
    148  status = nf90_inq_varid(ncid, 'time', varid)
    149  call netcdf_err(status, "READING SOURCE DATA TIME VARID")
    150  status = nf90_get_var(ncid, varid, day_of_rec)
    151  call netcdf_err(status, "READING SOURCE DATA DAY OF RECORD")
    152 
    153  print*,'- SOURCE DATA DAYS OF RECORD: ', day_of_rec
    154 
    155  status = nf90_inquire(ncid, nvariables=num_vars)
    156  call netcdf_err(status, "READING NUMBER OF VARIABLES SOURCE DATA")
    157 
    158 !-----------------------------------------------------------------------
    159 ! Assumes files contain records for time, lat, lon, lat_corner,
    160 ! lon_corner. So number of fields processed will be the total
    161 ! number of variables minus 5.
    162 !-----------------------------------------------------------------------
    163 
    164 ! NOTE: the new BNU soil type data contains extra records for
    165 ! sand and clay percentages. These extra records are not need yet,
    166 ! so add logic to temporarily ignore them.
    167 
    168  count = 0
    169  do n = 1, num_vars
    170 
    171  status = nf90_inquire_variable(ncid, n, name=vname)
    172  call netcdf_err(status, "READING FIELD NAMES")
    173 
    174  if (trim(vname) == 'time') cycle
    175  if (trim(vname) == 'lon') cycle
    176  if (trim(vname) == 'lon_corner') cycle
    177  if (trim(vname) == 'lat') cycle
    178  if (trim(vname) == 'lat_corner') cycle
    179  if (trim(vname) == 'clay_lev1') cycle
    180  if (trim(vname) == 'clay_top') cycle
    181  if (trim(vname) == 'sand_lev1') cycle
    182  if (trim(vname) == 'sand_top') cycle
    183 
    184  count = count + 1
    185  field_names_save(count) = vname
    186 
    187  enddo
    188 
    189  num_fields = count
    190  num_records = num_vars * num_time_recs
    191 
    192  allocate(field_names(num_fields))
    193 
    194  field_names = field_names_save(1:num_fields)
    195 
    196  if(localpet==0) print*,'- FIELDS TO BE PROCESSED: ', field_names
    197 
    198  if (localpet == 0) then
    199  allocate(mask_global(i_src,j_src))
    200  status = nf90_inq_varid(ncid, field_names(1), varid)
    201  call netcdf_err(status, "READING FIELD ID")
    202  status = nf90_get_var(ncid, varid, mask_global)
    203  call netcdf_err(status, "READING FIELD")
    204  else
    205  allocate(mask_global(0,0))
    206  endif
    207 
    208 !--------------------------------------------------------------------------
    209 ! Read in missing value. This is used to mask out data at non-land
    210 ! points.
    211 !--------------------------------------------------------------------------
    212 
    213  status = nf90_inq_varid(ncid, field_names(1), varid)
    214  call netcdf_err(status, "READING FIELD 1 ID")
    215  status=nf90_get_att(ncid, varid, 'missing_value', missing)
    216  call netcdf_err(status, "READING MISSING VALUE")
    217 
    218  status = nf90_close(ncid)
    219 
    220 !--------------------------------------------------------------------------
    221 ! Create ESMF grid object for the source data grid. Check if
    222 ! data is periodic in the east/west direction.
    223 !
    224 ! Note: When using regional data, there is always the chance of
    225 ! the target grid being located outside the input grid. ESMF
    226 ! support recommends passing back the dstField (esmf_typekind_i4) from
    227 ! all calls to FieldRegridStore and checking for the
    228 ! ESMF_REGRIDSTATUS_OUTSIDE flag.
    229 !--------------------------------------------------------------------------
    230 
    231  lon_extent = mod((lon_global(i_src)-lon_global(1))-1+3600,360.)+1.0
    232 
    233  if (lon_extent < 350.0) then
    234 
    235  print*,"- CALL GridCreateNoPeriDim FOR SOURCE GRID"
    236  grid_src = esmf_gridcreatenoperidim(minindex=(/1,1/), &
    237  maxindex=(/i_src,j_src/), &
    238  coordsys=esmf_coordsys_sph_deg, &
    239  regdecomp=(/1,npets/), &
    240  name="source_grid", &
    241  indexflag=esmf_index_global, rc=rc)
    242  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    243  call error_handler("IN GridCreateNoPeriDim.", rc)
    244 
    245  else
    246 
    247  polekindflag(1:2) = esmf_polekind_monopole
    248 
    249  print*,"- CALL GridCreate1PeriDim FOR SOURCE GRID"
    250  grid_src = esmf_gridcreate1peridim(minindex=(/1,1/), &
    251  maxindex=(/i_src,j_src/), &
    252  polekindflag=polekindflag, &
    253  periodicdim=1, &
    254  poledim=2, &
    255  coordsys=esmf_coordsys_sph_deg, &
    256  regdecomp=(/1,npets/), &
    257  name="source_grid", &
    258  indexflag=esmf_index_global, rc=rc)
    259  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    260  call error_handler("IN GridCreate1PeriDim.", rc)
    261 
    262  endif
    263 
    264  print*,"- CALL FieldCreate FOR SOURCE GRID LANDMASK."
    265  mask_field = esmf_fieldcreate(grid_src, &
    266  typekind=esmf_typekind_r4, &
    267  staggerloc=esmf_staggerloc_center, &
    268  name="source grid land mask", &
    269  rc=rc)
    270  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    271  call error_handler("IN FieldCreate.", rc)
    272 
    273  print*,"- CALL FieldScatter FOR SOURCE GRID MASK."
    274  call esmf_fieldscatter(mask_field, mask_global, rootpet=0, rc=rc)
    275  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    276  call error_handler("IN FieldScatter.", rc)
    277 
    278  print*,"- CALL GridAddItem FOR SOURCE GRID MASK."
    279  call esmf_gridadditem(grid_src, &
    280  itemflag=esmf_griditem_mask, &
    281  staggerloc=esmf_staggerloc_center, &
    282  rc=rc)
    283  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    284  call error_handler("IN GridAddItem.", rc)
    285 
    286  print*,"- CALL GridGetItem FOR SOURCE GRID MASK."
    287  nullify(mask_ptr)
    288  call esmf_gridgetitem(grid_src, &
    289  itemflag=esmf_griditem_mask, &
    290  farrayptr=mask_ptr, &
    291  totallbound=clb, &
    292  totalubound=cub, &
    293  rc=rc)
    294  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    295  call error_handler("IN GridGetItem", rc)
    296 
    297  print*,"- CALL FieldGet FOR SOURCE GRID LANDMASK."
    298  nullify(mask_field_ptr)
    299  call esmf_fieldget(mask_field, &
    300  farrayptr=mask_field_ptr, &
    301  rc=rc)
    302  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    303  call error_handler("IN FieldGet.", rc)
    304 
    305  do j = clb(2), cub(2)
    306  do i = clb(1), cub(1)
    307  if ( abs(mask_field_ptr(i,j)-missing) < 0.001) then
    308  mask_ptr(i,j) = 0
    309  else
    310  mask_ptr(i,j) = 1
    311  endif
    312  enddo
    313  enddo
    314 
    315  deallocate(mask_global)
    316 
    317  print*,"- CALL FieldDestroy FOR SOURCE GRID LAND MASK."
    318  call esmf_fielddestroy(mask_field,rc=rc)
    319  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    320  call error_handler("IN FieldDestroy.", rc)
    321 
    322 ! Set lat/lons of grid points
    323 
    324  print*,"- CALL GridAddCoord FOR SOURCE GRID CENTER LOCATION."
    325  call esmf_gridaddcoord(grid_src, &
    326  staggerloc=esmf_staggerloc_center, rc=rc)
    327  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    328  call error_handler("IN GridAddCoord.", rc)
    329 
    330  print*,"- CALL GridGetCoord FOR SOURCE GRID CENTER LONGITUDE."
    331  nullify(lon_ptr)
    332  call esmf_gridgetcoord(grid_src, &
    333  staggerloc=esmf_staggerloc_center, &
    334  coorddim=1, &
    335  farrayptr=lon_ptr, rc=rc)
    336  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    337  call error_handler("IN GridGetCoord.", rc)
    338 
    339  print*,"- CALL GridGetCoord FOR SOURCE GRID CENTER LATITUDE."
    340  nullify(lat_ptr)
    341  call esmf_gridgetcoord(grid_src, &
    342  staggerloc=esmf_staggerloc_center, &
    343  coorddim=2, &
    344  farrayptr=lat_ptr, rc=rc)
    345  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    346  call error_handler("IN GridGetCoord.", rc)
    347 
    348  do j = clb(2), cub(2)
    349  lat_ptr(:,j) = lat_global(j)
    350  enddo
    351 
    352  do i = clb(1), cub(1)
    353  lon_ptr(i,:) = lon_global(i)
    354  enddo
    355 
    356  print*,"- CALL GridAddCoord FOR SOURCE GRID CORNER LOCATION."
    357  call esmf_gridaddcoord(grid_src, &
    358  staggerloc=esmf_staggerloc_corner, &
    359  rc=rc)
    360  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    361  call error_handler("IN GridAddCoord.", rc)
    362 
    363  print*,"- CALL GridGetCoord FOR SOURCE GRID CORNER LONGITUDE."
    364  nullify(lon_corner_ptr)
    365  call esmf_gridgetcoord(grid_src, &
    366  staggerloc=esmf_staggerloc_corner, &
    367  coorddim=1, &
    368  farrayptr=lon_corner_ptr, &
    369  rc=rc)
    370  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    371  call error_handler("IN GridGetCoord.", rc)
    372 
    373  print*,"- CALL GridGetCoord FOR SOURCE GRID CORNER LATITUDE."
    374  nullify(lat_corner_ptr)
    375  call esmf_gridgetcoord(grid_src, &
    376  staggerloc=esmf_staggerloc_corner, &
    377  coorddim=2, &
    378  computationallbound=clb_corner, &
    379  computationalubound=cub_corner, &
    380  farrayptr=lat_corner_ptr, &
    381  rc=rc)
    382  if(esmf_logfounderror(rctocheck=rc,msg=esmf_logerr_passthru,line=__line__,file=__file__)) &
    383  call error_handler("IN GridGetCoord.", rc)
    384 
    385  do j = clb_corner(2), cub_corner(2)
    386  lat_corner_ptr(:,j) = lat_corner_global(j)
    387  enddo
    388 
    389  do i = clb_corner(1), cub_corner(1)
    390  lon_corner_ptr(i,:) = lon_corner_global(i)
    391  enddo
    392 
    393  deallocate(lat_global)
    394  deallocate(lon_global)
    395  deallocate(lat_corner_global)
    396  deallocate(lon_corner_global)
    397 
    398  end subroutine define_source_grid
    399 
    403  subroutine source_grid_cleanup
    405  implicit none
    406 
    407  integer :: rc
    408 
    409  print*,"- CALL GridDestroy FOR SOURCE GRID."
    410  call esmf_griddestroy(grid_src,rc=rc)
    411 
    412  deallocate(day_of_rec)
    413  deallocate(field_names)
    414 
    415  end subroutine source_grid_cleanup
    416 
    417  end module source_grid
    integer, public j_src
    j dimension of the source grid.
    Definition: source_grid.F90:25
    +
    character(len=50), dimension(:), allocatable, public field_names
    Names of fields to be processed.
    Definition: source_grid.F90:21
    +
    Read grid specs, date information and land/sea mask for the source data that will be interpolated to ...
    Definition: source_grid.F90:12
    +
    integer, public num_time_recs
    Number of time records.
    Definition: source_grid.F90:27
    +
    subroutine, public define_source_grid(localpet, npets, input_file)
    Defines esmf grid object for source grid.
    Definition: source_grid.F90:52
    +
    subroutine, public source_grid_cleanup
    Free up memory associated with this module.
    +
    integer, dimension(:), allocatable, public day_of_rec
    Day of each time record with respect to Jan 1.
    Definition: source_grid.F90:31
    +
    integer, public i_src
    i dimension of the source grid.
    Definition: source_grid.F90:24
    +
    integer, public num_records
    Number of fields times time records.
    Definition: source_grid.F90:26
    +
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    integer, public num_fields
    Number of fields in the file.
    Definition: source_grid.F90:28
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    type(esmf_grid), public grid_src
    ESMF grid object for the source grid.
    Definition: source_grid.F90:34
    +
    character(len=75), public source
    Original source of the data.
    Definition: source_grid.F90:22
    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/splitbar.png b/ver-1.11.0/sfc_climo_gen/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/sync_off.png b/ver-1.11.0/sfc_climo_gen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/sync_on.png b/ver-1.11.0/sfc_climo_gen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/tab_a.png b/ver-1.11.0/sfc_climo_gen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/tab_b.png b/ver-1.11.0/sfc_climo_gen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sfc_climo_gen/tabs.css b/ver-1.11.0/sfc_climo_gen/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/utils_8f90.html b/ver-1.11.0/sfc_climo_gen/utils_8f90.html new file mode 100644 index 000000000..363934ca2 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/utils_8f90.html @@ -0,0 +1,135 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/utils.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utils.f90 File Reference
    +
    +
    + +

    Utilities. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Modules

    module  utils
     Utilities.
     
    + + + + + + + +

    +Functions/Subroutines

    subroutine, public utils::error_handler (string, rc)
     Handle errors. More...
     
    subroutine, public utils::netcdf_err (err, string)
     Handle netCDF error codes. More...
     
    +

    Detailed Description

    +

    Utilities.

    +
    Author
    George Gayno
    +
    Date
    2018
    + +

    Definition in file utils.f90.

    +
    +
    + + + + diff --git a/ver-1.11.0/sfc_climo_gen/utils_8f90.js b/ver-1.11.0/sfc_climo_gen/utils_8f90.js new file mode 100644 index 000000000..1a7748428 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/utils_8f90.js @@ -0,0 +1,5 @@ +var utils_8f90 = +[ + [ "error_handler", "utils_8f90.html#afcee4326c16609f3c61e647a905477f2", null ], + [ "netcdf_err", "utils_8f90.html#a15465c8a57dddaff7150d8ae2cde62f4", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/sfc_climo_gen/utils_8f90_source.html b/ver-1.11.0/sfc_climo_gen/utils_8f90_source.html new file mode 100644 index 000000000..480c013e1 --- /dev/null +++ b/ver-1.11.0/sfc_climo_gen/utils_8f90_source.html @@ -0,0 +1,108 @@ + + + + + + + +sfc_climo_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/sfc_climo_gen.fd/utils.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    sfc_climo_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utils.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    8 module utils
    9 
    10  private
    11 
    12  public :: netcdf_err
    13  public :: error_handler
    14 
    15  contains
    16 
    22  subroutine netcdf_err( err, string )
    23 
    24  use mpi
    25  use netcdf
    26 
    27  implicit none
    28  integer, intent(in) :: err
    29  character(len=*), intent(in) :: string
    30  character(len=256) :: errmsg
    31  integer :: ierr
    32 
    33  if( err.EQ.nf90_noerr )return
    34  errmsg = nf90_strerror(err)
    35  print*,''
    36  print*,'FATAL ERROR: ', trim(string), ': ', trim(errmsg)
    37  print*,'STOP.'
    38  call mpi_abort(mpi_comm_world, 999, ierr)
    39 
    40  return
    41  end subroutine netcdf_err
    42 
    48  subroutine error_handler(string, rc)
    49 
    50  use mpi
    51 
    52  implicit none
    53 
    54  character(len=*), intent(in) :: string
    55 
    56  integer, optional, intent(in) :: rc
    57 
    58  integer :: ierr
    59 
    60  print*,"- FATAL ERROR: ", string
    61  if (present(rc)) print*,"- IOSTAT IS: ", rc
    62  call mpi_abort(mpi_comm_world, 999, ierr)
    63 
    64  end subroutine error_handler
    65 
    66  end module utils
    subroutine, public error_handler(string, rc)
    Handle errors.
    Definition: utils.f90:49
    +
    subroutine, public netcdf_err(err, string)
    Handle netCDF error codes.
    Definition: utils.f90:23
    +
    Utilities.
    Definition: utils.f90:8
    +
    +
    + + + + diff --git a/ver-1.11.0/splitbar.png b/ver-1.11.0/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sync_off.png b/ver-1.11.0/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/sync_on.png b/ver-1.11.0/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/tab_a.png b/ver-1.11.0/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/tab_b.png b/ver-1.11.0/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/tabs.css b/ver-1.11.0/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/README_8md_source.html b/ver-1.11.0/vcoord_gen/README_8md_source.html new file mode 100644 index 000000000..10d57e40c --- /dev/null +++ b/ver-1.11.0/vcoord_gen/README_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/docs/README.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/docs/README.md
    +
    +
    +
    1 This program generates the parameters needed to define
    2 the forecast model's hybrid levels.
    3 
    4 Documentation may be found at https://ufs-community.github.io/UFS_UTILS
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/bc_s.png b/ver-1.11.0/vcoord_gen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/bdwn.png b/ver-1.11.0/vcoord_gen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.html b/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.html new file mode 100644 index 000000000..12cfc80be --- /dev/null +++ b/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.html @@ -0,0 +1,118 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vcoord_gen.fd Directory Reference
    +
    +
    + + + + + + + + + + + +

    +Files

    file  driver.f90 [code]
     Driver for vcoord_gen.
     
    file  matrix_utils.f90 [code]
     Lower and upper triangular decomposition.
     
    file  vcoord_gen.f90 [code]
     Generates hybrid coordinate interface profiles.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.js b/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.js new file mode 100644 index 000000000..63f206fba --- /dev/null +++ b/ver-1.11.0/vcoord_gen/dir_d1522adfe0d0f9b268f9f6ec9cea4139.js @@ -0,0 +1,6 @@ +var dir_d1522adfe0d0f9b268f9f6ec9cea4139 = +[ + [ "driver.f90", "driver_8f90.html", "driver_8f90" ], + [ "matrix_utils.f90", "matrix__utils_8f90.html", "matrix__utils_8f90" ], + [ "vcoord_gen.f90", "vcoord__gen_8f90.html", "vcoord__gen_8f90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..cd80880fa --- /dev/null +++ b/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..46865f15a --- /dev/null +++ b/ver-1.11.0/vcoord_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "vcoord_gen.fd", "dir_d1522adfe0d0f9b268f9f6ec9cea4139.html", "dir_d1522adfe0d0f9b268f9f6ec9cea4139" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/doc.png b/ver-1.11.0/vcoord_gen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/doxygen.css b/ver-1.11.0/vcoord_gen/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/vcoord_gen/doxygen.png b/ver-1.11.0/vcoord_gen/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/driver_8f90.html b/ver-1.11.0/vcoord_gen/driver_8f90.html new file mode 100644 index 000000000..49e0376d3 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/driver_8f90.html @@ -0,0 +1,153 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/driver.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    driver.f90 File Reference
    +
    +
    + +

    Driver for vcoord_gen. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    program driver
     This program generates hybrid coordinate parameters from fields such as surface pressure, model top and the number of vertical levels. More...
     
    +

    Detailed Description

    +

    Driver for vcoord_gen.

    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition in file driver.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ driver()

    + +
    +
    + + + + + + + +
    program driver ()
    +
    + +

    This program generates hybrid coordinate parameters from fields such as surface pressure, model top and the number of vertical levels.

    +

    Outputs the 'ak' and 'bk' parameters used by the forecast model to define the hybrid levels.

    +
    Returns
    0 for success, error code otherwise.
    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition at line 12 of file driver.f90.

    + +

    References vcoord_gen().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/driver_8f90.js b/ver-1.11.0/vcoord_gen/driver_8f90.js new file mode 100644 index 000000000..ad569eedc --- /dev/null +++ b/ver-1.11.0/vcoord_gen/driver_8f90.js @@ -0,0 +1,4 @@ +var driver_8f90 = +[ + [ "driver", "driver_8f90.html#a555a7c473535cbcb7b12271564bb71b8", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/driver_8f90_source.html b/ver-1.11.0/vcoord_gen/driver_8f90_source.html new file mode 100644 index 000000000..5e471f88f --- /dev/null +++ b/ver-1.11.0/vcoord_gen/driver_8f90_source.html @@ -0,0 +1,107 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/driver.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    driver.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    12 program driver
    13  implicit none
    14  integer levs,lupp,k
    15  real pbot,psig,ppre,pupp,ptop,dpbot,dpsig,dppre,dpupp,dptop,pmin
    16  real,allocatable:: ak(:),bk(:)
    17  write(0,*) 'Enter levs,lupp,pbot,psig,ppre,pupp,ptop,dpbot,dpsig,dppre,dpupp,dptop'
    18  read *,levs,lupp,pbot,psig,ppre,pupp,ptop,dpbot,dpsig,dppre,dpupp,dptop
    19  allocate(ak(0:levs),bk(0:levs))
    20  call vcoord_gen(levs,lupp,pbot,psig,ppre,pupp,ptop,dpbot,dpsig,dppre,dpupp,dptop,pmin,ak,bk)
    21  write(0,*) 'pmin=',pmin
    22  print '(2i6)',2,levs
    23  print '(f12.3,f12.8)',(ak(k),bk(k),k=0,levs)
    24 end program
    subroutine vcoord_gen(levs, lupp, pbot, psig, ppre, pupp, ptop, dpbot, dpsig, dppre, dpupp, dptop, pmin, ak, bk)
    This subprogram generates hybrid coordinate interface profiles from a few given parameters.
    Definition: vcoord_gen.f90:153
    +
    program driver
    This program generates hybrid coordinate parameters from fields such as surface pressure, model top and the number of vertical levels.
    Definition: driver.f90:12
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/dynsections.js b/ver-1.11.0/vcoord_gen/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +vcoord_gen: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + +
      sorc
      vcoord_gen.fd
     driver.f90Driver for vcoord_gen
     matrix_utils.f90Lower and upper triangular decomposition
     vcoord_gen.f90Generates hybrid coordinate interface profiles
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/files_dup.js b/ver-1.11.0/vcoord_gen/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/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/ver-1.11.0/vcoord_gen/folderclosed.png b/ver-1.11.0/vcoord_gen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/globals.html b/ver-1.11.0/vcoord_gen/globals.html new file mode 100644 index 000000000..c26d50748 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/globals.html @@ -0,0 +1,114 @@ + + + + + + + +vcoord_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/globals_func.html b/ver-1.11.0/vcoord_gen/globals_func.html new file mode 100644 index 000000000..99a847858 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/globals_func.html @@ -0,0 +1,114 @@ + + + + + + + +vcoord_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/index.html b/ver-1.11.0/vcoord_gen/index.html new file mode 100644 index 000000000..e7bb46cc8 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/index.html @@ -0,0 +1,109 @@ + + + + + + + +vcoord_gen: vcoord_gen + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vcoord_gen
    +
    +
    +

    +Introduction

    +

    The vcoord_gen program driver.f90 generates hybrid coordinate parameters from fields such as surface pressure, model top and the number of vertical levels. Outputs the 'ak' and 'bk' parameters used by the forecast model to define the hybrid levels.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The vcoord_gen programs are part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/jquery.js b/ver-1.11.0/vcoord_gen/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/vcoord_gen/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    matrix_utils.f90 File Reference
    +
    +
    + +

    Lower and upper triangular decomposition. +More...

    + +

    Go to the source code of this file.

    +
    + + + + + + + +

    +Functions/Subroutines

    subroutine lubksb (a, n, np, indx, b)
     Lower and upper triangular back substitution. More...
     
    subroutine ludcmp (a, n, np, indx, d)
     This subprogram decomposes a matrix into a product of lower and upper triangular matrices. More...
     
    +

    Detailed Description

    +

    Lower and upper triangular decomposition.

    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition in file matrix_utils.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ lubksb()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine lubksb (real, dimension(np,np), intent(in) a,
    integer, intent(in) n,
    integer, intent(in) np,
    integer, dimension(n), intent(in) indx,
    real, dimension(n), intent(inout) b 
    )
    +
    + +

    Lower and upper triangular back substitution.

    +
    Author
    Iredell
    +
    Date
    2008-08-01
    +

    This subprogram back substitutes to solve decomposed lower and upper triangular matrices as outputted by ludcmp.

    +
    Parameters
    + + + + + + +
    [in]areal(np,np) LU-decomposed matrix (from ludcmp)
    [in]ninteger order of matrix
    [in]npinteger dimension of matrix
    [in]indxinteger(n) pivot indices (from ludcmp)
    [in,out]b- input real(n) rhs vector of linear problem (will be overwritten)
      +
    • output real(n) solution of linear problem (original A times output B equals original B)
    • +
    +
    +
    +
    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition at line 101 of file matrix_utils.f90.

    + +

    Referenced by vcoord_gen().

    + +
    +
    + +

    ◆ ludcmp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine ludcmp (real, dimension(np,np), intent(inout) a,
    integer, intent(in) n,
    integer, intent(in) np,
    integer, dimension(n), intent(out) indx,
    real, intent(out) d 
    )
    +
    + +

    This subprogram decomposes a matrix into a product of lower and upper triangular matrices.

    +
    Parameters
    + + + + + + +
    [in,out]a- input: a real(np,np) matrix (will be overwritten) output:
      +
    • output real(np,np) LU-decomposed matrix (U is upper part of A, including diagonal; L is lower part of A, with 1 as diagonal; L*U equals original A after permuting)
    • +
    +
    [in]ninteger order of matrix
    [in]npinteger dimension of matrix
    [out]indxinteger(n) pivot indices (original A rows are permuted in order i with indx(i))
    [out]dreal determinant permutation (1 or -1, or 0 if singular) (determinant is output diagonal product times d)
    +
    +
    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition at line 21 of file matrix_utils.f90.

    + +

    Referenced by vcoord_gen().

    + +
    +
    + + + + + + diff --git a/ver-1.11.0/vcoord_gen/matrix__utils_8f90.js b/ver-1.11.0/vcoord_gen/matrix__utils_8f90.js new file mode 100644 index 000000000..74c325443 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/matrix__utils_8f90.js @@ -0,0 +1,5 @@ +var matrix__utils_8f90 = +[ + [ "lubksb", "matrix__utils_8f90.html#a275de2797d71a7dfccc587012ceaafad", null ], + [ "ludcmp", "matrix__utils_8f90.html#aca7b6e6ef1458720883a20b4b4184f56", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/matrix__utils_8f90_source.html b/ver-1.11.0/vcoord_gen/matrix__utils_8f90_source.html new file mode 100644 index 000000000..6f9a1adbe --- /dev/null +++ b/ver-1.11.0/vcoord_gen/matrix__utils_8f90_source.html @@ -0,0 +1,107 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/matrix_utils.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    matrix_utils.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    20 subroutine ludcmp(a,n,np,indx,d)
    21  implicit none
    22  integer,intent(in):: n,np
    23  real,intent(inout):: a(np,np)
    24  integer,intent(out):: indx(n)
    25  real,intent(out):: d
    26  integer i,j,k,imax
    27  real aamax,sum,dum
    28  real vv(n)
    29 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    30  d=1
    31  do i=1,n
    32  aamax=0
    33  do j=1,n
    34  if(abs(a(i,j))>aamax) aamax=abs(a(i,j))
    35  enddo
    36  if(aamax==0) then
    37  d=0
    38  return
    39  endif
    40  vv(i)=1/aamax
    41  enddo
    42  do j=1,n
    43  do i=1,j-1
    44  sum=a(i,j)
    45  do k=1,i-1
    46  sum=sum-a(i,k)*a(k,j)
    47  enddo
    48  a(i,j)=sum
    49  enddo
    50  aamax=0.
    51  do i=j,n
    52  sum=a(i,j)
    53  do k=1,j-1
    54  sum=sum-a(i,k)*a(k,j)
    55  enddo
    56  a(i,j)=sum
    57  dum=vv(i)*abs(sum)
    58  if(dum>=aamax) then
    59  imax=i
    60  aamax=dum
    61  endif
    62  enddo
    63  if (j/=imax)then
    64  do k=1,n
    65  dum=a(imax,k)
    66  a(imax,k)=a(j,k)
    67  a(j,k)=dum
    68  enddo
    69  d=-d
    70  vv(imax)=vv(j)
    71  endif
    72  indx(j)=imax
    73  if(a(j,j)==0) then
    74  d=0
    75  return
    76  endif
    77  if(j/=n)then
    78  dum=1/a(j,j)
    79  do i=j+1,n
    80  a(i,j)=a(i,j)*dum
    81  enddo
    82  endif
    83  enddo
    84 end subroutine
    85 
    100 subroutine lubksb(a,n,np,indx,b)
    101  implicit none
    102  integer,intent(in):: n,np
    103  real,intent(in):: a(np,np)
    104  integer,intent(in):: indx(n)
    105  real,intent(inout):: b(n)
    106  integer i,j,ii,ll
    107  real sum
    108 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    109  ii=0
    110  do i=1,n
    111  ll=indx(i)
    112  sum=b(ll)
    113  b(ll)=b(i)
    114  if (ii/=0)then
    115  do j=ii,i-1
    116  sum=sum-a(i,j)*b(j)
    117  enddo
    118  elseif(sum/=0) then
    119  ii=i
    120  endif
    121  b(i)=sum
    122  enddo
    123  do i=n,1,-1
    124  sum=b(i)
    125  do j=i+1,n
    126  sum=sum-a(i,j)*b(j)
    127  enddo
    128  b(i)=sum/a(i,i)
    129  enddo
    130 end subroutine
    subroutine ludcmp(a, n, np, indx, d)
    This subprogram decomposes a matrix into a product of lower and upper triangular matrices.
    +
    subroutine lubksb(a, n, np, indx, b)
    Lower and upper triangular back substitution.
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html b/ver-1.11.0/vcoord_gen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html new file mode 100644 index 000000000..e40182137 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html @@ -0,0 +1,106 @@ + + + + + + + +vcoord_gen: README + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    README
    +
    +
    +

    This program generates the parameters needed to define the forecast model's hybrid levels.

    +

    Documentation may be found at https://ufs-community.github.io/UFS_UTILS

    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/menu.js b/ver-1.11.0/vcoord_gen/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/ver-1.11.0/vcoord_gen/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+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/ver-1.11.0/vcoord_gen/menudata.js b/ver-1.11.0/vcoord_gen/menudata.js new file mode 100644 index 000000000..312d00e07 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/menudata.js @@ -0,0 +1,31 @@ +/* +@ @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 +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions/Subroutines",url:"globals_func.html"}]}]}]} diff --git a/ver-1.11.0/vcoord_gen/nav_f.png b/ver-1.11.0/vcoord_gen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/nav_g.png b/ver-1.11.0/vcoord_gen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +vcoord_gen: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/resize.js b/ver-1.11.0/vcoord_gen/resize.js new file mode 100644 index 000000000..6617aee8e --- /dev/null +++ b/ver-1.11.0/vcoord_gen/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/ver-1.11.0/vcoord_gen/search/all_0.html b/ver-1.11.0/vcoord_gen/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/all_0.js b/ver-1.11.0/vcoord_gen/search/all_0.js new file mode 100644 index 000000000..02884abd8 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['driver',['driver',['../driver_8f90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.f90']]], + ['driver_2ef90',['driver.f90',['../driver_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/all_1.html b/ver-1.11.0/vcoord_gen/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/all_1.js b/ver-1.11.0/vcoord_gen/search/all_1.js new file mode 100644 index 000000000..4f9fb9b22 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lubksb',['lubksb',['../matrix__utils_8f90.html#a275de2797d71a7dfccc587012ceaafad',1,'matrix_utils.f90']]], + ['ludcmp',['ludcmp',['../matrix__utils_8f90.html#aca7b6e6ef1458720883a20b4b4184f56',1,'matrix_utils.f90']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/all_2.html b/ver-1.11.0/vcoord_gen/search/all_2.html new file mode 100644 index 000000000..2f17735ef --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/all_2.js b/ver-1.11.0/vcoord_gen/search/all_2.js new file mode 100644 index 000000000..b7d77ebb8 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['matrix_5futils_2ef90',['matrix_utils.f90',['../matrix__utils_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/all_3.html b/ver-1.11.0/vcoord_gen/search/all_3.html new file mode 100644 index 000000000..a3e6f7dbb --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/all_3.js b/ver-1.11.0/vcoord_gen/search/all_3.js new file mode 100644 index 000000000..eb3768aba --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/all_4.html b/ver-1.11.0/vcoord_gen/search/all_4.html new file mode 100644 index 000000000..6452295dc --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/all_4.js b/ver-1.11.0/vcoord_gen/search/all_4.js new file mode 100644 index 000000000..2d802d7d0 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/all_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vcoord_5fgen',['vcoord_gen',['../index.html',1,'']]], + ['vcoord_5fgen',['vcoord_gen',['../vcoord__gen_8f90.html#a94f642db6845ae6ffaeae766b4c3e19f',1,'vcoord_gen.f90']]], + ['vcoord_5fgen_2ef90',['vcoord_gen.f90',['../vcoord__gen_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/close.png b/ver-1.11.0/vcoord_gen/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/search/files_0.html b/ver-1.11.0/vcoord_gen/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/files_0.js b/ver-1.11.0/vcoord_gen/search/files_0.js new file mode 100644 index 000000000..a85c454b2 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['driver_2ef90',['driver.f90',['../driver_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/files_1.html b/ver-1.11.0/vcoord_gen/search/files_1.html new file mode 100644 index 000000000..c8871748e --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/files_1.js b/ver-1.11.0/vcoord_gen/search/files_1.js new file mode 100644 index 000000000..b7d77ebb8 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['matrix_5futils_2ef90',['matrix_utils.f90',['../matrix__utils_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/files_2.html b/ver-1.11.0/vcoord_gen/search/files_2.html new file mode 100644 index 000000000..99bdf21c8 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/files_2.js b/ver-1.11.0/vcoord_gen/search/files_2.js new file mode 100644 index 000000000..3f4dcaad6 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vcoord_5fgen_2ef90',['vcoord_gen.f90',['../vcoord__gen_8f90.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/functions_0.html b/ver-1.11.0/vcoord_gen/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/functions_0.js b/ver-1.11.0/vcoord_gen/search/functions_0.js new file mode 100644 index 000000000..dbcf2b351 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['driver',['driver',['../driver_8f90.html#a555a7c473535cbcb7b12271564bb71b8',1,'driver.f90']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/functions_1.html b/ver-1.11.0/vcoord_gen/search/functions_1.html new file mode 100644 index 000000000..4878b3d12 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/functions_1.js b/ver-1.11.0/vcoord_gen/search/functions_1.js new file mode 100644 index 000000000..4f9fb9b22 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lubksb',['lubksb',['../matrix__utils_8f90.html#a275de2797d71a7dfccc587012ceaafad',1,'matrix_utils.f90']]], + ['ludcmp',['ludcmp',['../matrix__utils_8f90.html#aca7b6e6ef1458720883a20b4b4184f56',1,'matrix_utils.f90']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/functions_2.html b/ver-1.11.0/vcoord_gen/search/functions_2.html new file mode 100644 index 000000000..67d2a392c --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/functions_2.js b/ver-1.11.0/vcoord_gen/search/functions_2.js new file mode 100644 index 000000000..41d428b2e --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vcoord_5fgen',['vcoord_gen',['../vcoord__gen_8f90.html#a94f642db6845ae6ffaeae766b4c3e19f',1,'vcoord_gen.f90']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/mag_sel.png b/ver-1.11.0/vcoord_gen/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/search/nomatches.html b/ver-1.11.0/vcoord_gen/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/pages_0.html b/ver-1.11.0/vcoord_gen/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/pages_0.js b/ver-1.11.0/vcoord_gen/search/pages_0.js new file mode 100644 index 000000000..eb3768aba --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__lfs_h2_emc_global_noscrub_George_8Gayno_ufs_utils_8git_UFS_UTILS_sorc_vcoord_gen_8fd_docs_README.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/pages_1.html b/ver-1.11.0/vcoord_gen/search/pages_1.html new file mode 100644 index 000000000..924fb482e --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/vcoord_gen/search/pages_1.js b/ver-1.11.0/vcoord_gen/search/pages_1.js new file mode 100644 index 000000000..6c43bc7a0 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vcoord_5fgen',['vcoord_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/vcoord_gen/search/search.css b/ver-1.11.0/vcoord_gen/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/vcoord_gen/search/search.js b/ver-1.11.0/vcoord_gen/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/vcoord_gen/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/search/search_r.png b/ver-1.11.0/vcoord_gen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/sync_off.png b/ver-1.11.0/vcoord_gen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/sync_on.png b/ver-1.11.0/vcoord_gen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/tab_a.png b/ver-1.11.0/vcoord_gen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/tab_b.png b/ver-1.11.0/vcoord_gen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/vcoord_gen/tabs.css b/ver-1.11.0/vcoord_gen/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/vcoord_gen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.html b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.html new file mode 100644 index 000000000..b78163bb4 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.html @@ -0,0 +1,310 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/vcoord_gen.f90 File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    vcoord_gen.f90 File Reference
    +
    +
    + +

    Generates hybrid coordinate interface profiles. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Functions/Subroutines

    subroutine vcoord_gen (levs, lupp, pbot, psig, ppre, pupp, ptop, dpbot, dpsig, dppre, dpupp, dptop, pmin, ak, bk)
     This subprogram generates hybrid coordinate interface profiles from a few given parameters. More...
     
    +

    Detailed Description

    +

    Generates hybrid coordinate interface profiles.

    +
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition in file vcoord_gen.f90.

    +

    Function/Subroutine Documentation

    + +

    ◆ vcoord_gen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    subroutine vcoord_gen (integer, intent(in) levs,
    integer, intent(in) lupp,
    real, intent(in) pbot,
    real, intent(in) psig,
    real, intent(in) ppre,
    real, intent(in) pupp,
    real, intent(in) ptop,
    real, intent(in) dpbot,
    real, intent(in) dpsig,
    real, intent(in) dppre,
    real, intent(in) dpupp,
    real, intent(in) dptop,
    real, intent(out) pmin,
    real, dimension(0:levs), intent(out) ak,
    real, dimension(0:levs), intent(out) bk 
    )
    +
    + +

    This subprogram generates hybrid coordinate interface profiles from a few given parameters.

    +

    The hybrid coordinate is intended to start out at the bottom in pure sigma and end up at the top in pure pressure, with a smooth transition in between. The pressure thickness is close to quadratic in pressure, with maximum thicknesses in the middle of the domain. The coordinate pressure will have continuous second derivatives in level.

    +

    The hybrid coordinate is returned in terms of vectors AK and BK, where the interface pressure is defined as A+B*ps where ps is surface pressure Thus A=0 in regions of pure sigma and B=0 in regions of pure sigma. At the bottom, A(0)=0 and B(0)=1 so that surface pressure is the bottom boundary condition, while at the top, A(levs)=ptop and B(levs)=0 so that the constant top pressure (which can be zero) is the top boundary condition.

    +

    The procedure for the calculation is described in the remarks section below.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    [in]levsinteger number of levels
    [in]luppinteger number of levels below pupp
    [in]pbotreal nominal surface pressure (Pa)
    [in]psigreal nominal pressure where coordinate changes from pure sigma (Pa)
    [in]pprereal nominal pressure where coordinate changes to pure pressure (Pa)
    [in]puppreal nominal pressure where coordinate changes to upper atmospheric profile (Pa)
    [in]ptopreal pressure at top (Pa)
    [in]dpbotreal coordinate thickness at bottom (Pa)
    [in]dpsigreal thickness of zone within which coordinate changes to pure sigma (Pa)
    [in]dpprereal thickness of zone within which coordinate changes to pure pressure (Pa)
    [in]dpuppreal coordinate thickness at pupp (Pa)
    [in]dptopreal coordinate thickness at top (Pa)
    [out]pminreal minimum surface pressure (Pa)
    [out]akreal(0:levs) a coordinate values, bottom to top (Pa)
    [out]bkreal(0:levs) b coordinate values, bottom to top ()
    +
    +
    +

    Subprograms called:

      +
    • ludcmp lower and upper triangular decomposition
    • +
    • lubksb lower and upper triangular back substitution
    • +
    +
    +   Example: Create the operational GFS 64-level hybrid coordinate.
    +     real(8) pmin,ak(0:64),bk(0:64)
    +     call vcoord_gen(64,64,100000.,99400.,7000.,0.,0.,500.,1200.,18000.,60.,60.,&
    +                  pmin,ak,bk)
    +     print '(2i6)',2,64
    +     print '(f12.3,f12.8)',(ak(k),bk(k),k=0,64)
    +     end
       Graphical description of parameters and zones:
    +     ptop  ---  -----  ----------------------
    +           ...  dptop
    +           ---         zone U (upper atmos)
    +           ...
    +     pupp  ---  -----  ----------------------
    +           ...  dpupp
    +           ---  -----
    +           ...         zone P (pure pressure)
    +           ---
    +           ...
    +     ppre  ---  -----  ----------------------
    +           ...
    +           ---  dppre  zone T1 (transition 1)
    +           ...
    +           ---  -----  ----------------------
    +           ...
    +           ---
    +           ...         zone T2 (transition 2)
    +           ---
    +           ...
    +           ---  -----  ----------------------
    +           ...
    +           ---  dpsig  zone T3 (transition 3)
    +           ...
    +     psig  ---  -----  ----------------------
    +           ...
    +           ---  -----  zone S (pure sigma)
    +           ...  dpbot
    +     pbot  ---  -----  ----------------------
    + 

    Detailed procedure description: 1 STEP 1. The pressure profile is computed with respect to the given reference surface pressure pbot. For this surface pressure, the 'sigma' thicknesses dsig are assumed to be proportional to a quadratic polynomial in sigma sig with zero intercepts sig1 and sig2 somewhere below and above the model domain, respectively. That is, dsig ~ (sig2-sig)*(sig-sig1)*dk Integrating this differential equation gives sig = (sig1*exp(c1*k+c2)+sig2)/(exp(c1*k+c2)+1) The required boundary conditions sig(0)=1 and sig(levs)=0 fix the proportionality and integration constants c1 and c2. The two crossing parameters (sig1 and sig2) are determined by two input sigma thickness conditions dsig/dk at the bottom and top which are respectively given as dpbot/(pbot-pupp) and dpupp/(pbot-pupp). The crossing parameters are computed using Newton-Raphson iteration. This procedure fixes the pressure profile for surface pressure pbot. 2 STEP 2. The pressure profile is computed with respect to a minimum surface pressure. This minimum surface pressure pmin is yet to be determined. Divide the profile into zones: zone U (pure pressure) from pupp to ptop zone P (pure pressure) from pupp to ppre zone T1 (transition 1) from ppre to ppre+dppre zone T2 (transition 2) from ppre+dppre to psig-dpsig zone T3 (transition 3) from psig-dpsig to psig zone S (pure "sigma") from psig to pmin (here sigma=p/ps so that d(ln(p))/dk is horizontally uniform) The pressure profile in the pure pressure zone P is set from step 1. The pressure thicknesses in zone T1 is set to be quadratic in level k. The pressure thicknesses in zone T2 is set to be linear in level k. The pressure thicknesses in zone T3 is set to be quadratic in level k. The pressure profile in the pure sigma zone S is also set from step 1. Thus there are nine unknowns: the 3 polynomial coefficients in zone T1 the 2 polynomial coefficients in zone T2 the 3 polynomial coefficients in zone T3 and the 1 minimum surface pressure. The nine conditions to determine these unknowns are: the thickness and its derivative match at zone P and T1 boundary the thickness and its derivative match at zone T1 and T2 boundary the thickness and its derivative match at zone T2 and T3 boundary the thickness and its derivative match at zone T3 and S boundary the sum of the thicknesses of zones T1, T2, T3, and S is pmin-ppre The unknowns are computed using standard linear decomposition. This procedure fixes the pressure profile for surface pressure pmin. 3 STEP 3. (Step 3 skipped if lupp=levs, in which case pupp=ptop and dpupp=dptop.) The pressure in zone U is assumed to be the exponential of a cubic polynomial in level k. The function must match the pressure at pupp, as well as the thickness and its derivative there, and the pressure at ptop+dptop at the second to top level. The latter 3 conditions are determined by using standard linear decomposition. 4 STEP 4. For an arbitrary surface pressure, the pressure profile is an linear combination of the pressure profiles for surface pressures pbot and pmin

    +     p(psfc)=p(pbot)*(psfc-pmin)/(pbot-pmin)+p(pmin)*(pbot-psfc)/(pbot-pmin)
    + 

    from which the hybrid coordinate profiles ak and bk are found such that

    +     p(psfc)=ak+bk*psfc
    + 
    Author
    Mark Iredell
    +
    Date
    2008-08-01
    + +

    Definition at line 153 of file vcoord_gen.f90.

    + +

    References lubksb(), and ludcmp().

    + +

    Referenced by driver().

    + +
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.js b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.js new file mode 100644 index 000000000..48bf711bc --- /dev/null +++ b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90.js @@ -0,0 +1,4 @@ +var vcoord__gen_8f90 = +[ + [ "vcoord_gen", "vcoord__gen_8f90.html#a94f642db6845ae6ffaeae766b4c3e19f", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/vcoord_gen/vcoord__gen_8f90_source.html b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90_source.html new file mode 100644 index 000000000..2a3389fa6 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/vcoord__gen_8f90_source.html @@ -0,0 +1,108 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/vcoord_gen.f90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vcoord_gen.f90
    +
    +
    +Go to the documentation of this file.
    1 
    4 
    151 subroutine vcoord_gen(levs,lupp,pbot,psig,ppre,pupp,ptop,&
    152  dpbot,dpsig,dppre,dpupp,dptop,pmin,ak,bk)
    153  implicit none
    154  integer,intent(in):: levs,lupp
    155  real,intent(in):: pbot,psig,ppre,pupp,ptop
    156  real,intent(in):: dpbot,dpsig,dppre,dpupp,dptop
    157  real,intent(out):: pmin,ak(0:levs),bk(0:levs)
    158  integer,parameter:: lo=100,li=10 ! outer and inner N-R iterations
    159  real pdif ! thickness from pbot to pupp
    160  real delb ! delta sig at bot
    161  real delt ! delta sig at top
    162  real sig1 ! crossing parameter 1
    163  real sig2 ! crossing parameter 2
    164  real c1 ! proportionality constant
    165  real c2 ! integration constant
    166  real sig ! sig variable
    167  real dsig ! delta sig variable
    168  real delbio0 ! initial guess at delta sig at bot
    169  real deltio0 ! initial guess at delta sig at top
    170  real delbio ! guess at delta sig at bot
    171  real deltio ! guess at delta sig at top
    172  real c1sig1 ! d(c1)/d(sig1)
    173  real c1sig2 ! d(c1)/d(sig2)
    174  real p(2) ! rhs in N-R iteration
    175  real fjac(2,2) ! lhs in N-R iteration
    176  integer indx(2) ! permutations in N-R iteration
    177  real ppred ! pressure at T1-T2 boundary
    178  real spre ! sig at P-T1 boundary
    179  real spred ! sig at T1-T2 boundary
    180  real rkpre ! level at P-T1 boundary
    181  real rkpred ! level at T1-T2 boundary
    182  real pkpre ! dp/dk at P-T1 boundary
    183  real pkkpre ! d2p/dk2 at P-T1 boundary
    184  real psigd ! pressure at T2-T3 boundary
    185  real ssig ! sig at T3-S boundary
    186  real ssigd ! sig at T2-T3 boundary
    187  real rksig ! level at T3-S boundary
    188  real rksigd ! level at T2-T3 boundary
    189  real pksig ! dp/dk at T3-S boundary
    190  real pkksig ! d2p/dk2 at T3-S boundary
    191  real p2sig ! pressure at T3-S boundary for pmin surface pressure
    192  real p2sigd ! pressure at T2-T3 boundary for pmin surface pressure
    193  real p2pred ! pressure at T1-T2 boundary for pmin surface pressure
    194  real x2(9) ! rhs in linear solver
    195  real a2(9,9) ! lhs in linear solver
    196  integer indx2(9) ! permutations in linear solver
    197  real pkupp ! dp/dk at U-P boundary
    198  real pkkupp ! d2p/dk2 at U-P boundary
    199  real x3(3) ! rhs in linear solver
    200  real a3(3,3) ! lhs in linear solver
    201  integer indx3(3) ! permutations in linear solver
    202  real p1 ! pressure variable for pbot surface pressure
    203  real p2 ! pressure variable for pmin surface pressure
    204  real d ! determinant permutation
    205  integer io,ii,k
    206 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    207 ! STEP 1.
    208  pdif=pbot-pupp
    209  delb=dpbot/pdif
    210  delt=dpupp/pdif
    211  sig1=1+delb
    212  sig2=-delt
    213  c1=log(-sig2*(1-sig1)/sig1/(sig2-1))/lupp
    214  c2=log((sig2-1)/(1-sig1))
    215  sig=1
    216  dsig=(sig2-sig)*(sig-sig1)*c1/(sig1-sig2)
    217  delbio0=-dsig
    218  sig=0
    219  dsig=(sig2-sig)*(sig-sig1)*c1/(sig1-sig2)
    220  deltio0=-dsig
    221 ! Newton-Raphson iterations
    222  do io=1,lo
    223  delbio=delbio0+(delb-delbio0)*io/lo
    224  deltio=deltio0+(delt-deltio0)*io/lo
    225  do ii=1,li
    226  c1sig1=-1/(sig1*(1-sig1)*lupp)
    227  c1sig2=-1/(sig2*(sig2-1)*lupp)
    228  sig=1
    229  dsig=(sig2-sig)*(sig-sig1)*c1/(sig1-sig2)
    230  p(1)=-delbio-dsig
    231  fjac(1,1)=((-c1*(sig+sig2)+(sig-sig1)*c1sig1*(sig1+sig2)) &
    232  *(sig2-sig)/(sig1+sig2)**2)
    233  fjac(1,2)=((c1*(sig+sig1)+(sig2-sig)*c1sig2*(sig1+sig2)) &
    234  *(sig-sig1)/(sig1+sig2)**2)
    235  sig=0
    236  dsig=(sig2-sig)*(sig-sig1)*c1/(sig1-sig2)
    237  p(2)=-deltio-dsig
    238  fjac(2,1)=((-c1*(sig+sig2)+(sig-sig1)*c1sig1*(sig1+sig2)) &
    239  *(sig2-sig)/(sig1+sig2)**2)
    240  fjac(2,2)=((c1*(sig+sig1)+(sig2-sig)*c1sig2*(sig1+sig2)) &
    241  *(sig-sig1)/(sig1+sig2)**2)
    242  call ludcmp(fjac,2,2,indx,d)
    243  call lubksb(fjac,2,2,indx,p)
    244  sig1=sig1+p(1)
    245  sig2=sig2+p(2)
    246  c1=log(-sig2*(1-sig1)/sig1/(sig2-1))/lupp
    247  c2=log((sig2-1)/(1-sig1))
    248  enddo
    249  enddo
    250 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    251 ! STEP 2.
    252 ! Compute minimum surface pressure
    253  ppred=ppre+dppre
    254  spre=(ppre-pupp)/pdif
    255  spred=(ppred-pupp)/pdif
    256  rkpre=(log((spre-sig2)/(sig1-spre))-c2)/c1
    257  rkpred=(log((spred-sig2)/(sig1-spred))-c2)/c1
    258  pkpre=pdif*c1*(sig2-spre)*(spre-sig1)/(sig1-sig2)
    259  pkkpre=pkpre*c1*(sig2+sig1-2*spre)/(sig1-sig2)
    260  psigd=psig-dpsig
    261  ssig=(psig-pupp)/pdif
    262  ssigd=(psigd-pupp)/pdif
    263  rksig=(log((ssig-sig2)/(sig1-ssig))-c2)/c1
    264  rksigd=(log((ssigd-sig2)/(sig1-ssigd))-c2)/c1
    265  pksig=pdif*c1*(sig2-ssig)*(ssig-sig1)/(sig1-sig2)
    266  pkksig=pksig*c1*(sig2+sig1-2*ssig)/(sig1-sig2)
    267  x2=0
    268  a2=0
    269  x2(1)=pkpre
    270  a2(1,1)=1
    271  a2(1,2)=rkpre
    272  a2(1,3)=rkpre**2
    273  x2(2)=pkkpre
    274  a2(2,2)=1
    275  a2(2,3)=2*rkpre
    276  a2(3,1)=1
    277  a2(3,2)=rkpred
    278  a2(3,3)=rkpred**2
    279  a2(3,4)=-1
    280  a2(3,5)=-rkpred
    281  a2(4,2)=1
    282  a2(4,3)=2*rkpred
    283  a2(4,5)=-1
    284  a2(5,4)=-1
    285  a2(5,5)=-rksigd
    286  a2(5,6)=1
    287  a2(5,7)=rksigd
    288  a2(5,8)=rksigd**2
    289  a2(6,5)=-1
    290  a2(6,7)=1
    291  a2(6,8)=2*rksigd
    292  a2(7,6)=1
    293  a2(7,7)=rksig
    294  a2(7,8)=rksig**2
    295  a2(7,9)=-pksig/pbot
    296  a2(8,7)=1
    297  a2(8,8)=2*rksig
    298  a2(8,9)=-pkksig/pbot
    299  x2(9)=ppre
    300  a2(9,1)=(rkpre-rkpred)
    301  a2(9,2)=(rkpre**2-rkpred**2)/2
    302  a2(9,3)=(rkpre**3-rkpred**3)/3
    303  a2(9,4)=(rkpred-rksigd)
    304  a2(9,5)=(rkpred**2-rksigd**2)/2
    305  a2(9,6)=(rksigd-rksig)
    306  a2(9,7)=(rksigd**2-rksig**2)/2
    307  a2(9,8)=(rksigd**3-rksig**3)/3
    308  a2(9,9)=psig/pbot
    309  call ludcmp(a2,9,9,indx2,d)
    310  call lubksb(a2,9,9,indx2,x2)
    311  pmin=x2(9)
    312  p2sig=psig/pbot*pmin
    313  p2sigd=p2sig &
    314  +x2(6)*(rksigd-rksig) &
    315  +x2(7)*(rksigd**2-rksig**2)/2 &
    316  +x2(8)*(rksigd**3-rksig**3)/3
    317  p2pred=p2sigd &
    318  +x2(4)*(rkpred-rksigd) &
    319  +x2(5)*(rkpred**2-rksigd**2)/2
    320 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    321 ! STEP 3.
    322  if(lupp.lt.levs) then
    323  pkupp=pdif*c1*(sig2-0)*(0-sig1)/(sig1-sig2)
    324  pkkupp=pkupp*c1*(sig2+sig1-2*0)/(sig1-sig2)
    325  x3=0
    326  a3=0
    327  x3(1)=pkupp
    328  a3(1,1)=pupp
    329  x3(2)=pkkupp*pupp-pkupp**2
    330  a3(2,2)=pupp**2
    331  x3(3)=log((ptop+dptop)/pupp)
    332  a3(3,1)=levs-1-lupp
    333  a3(3,2)=(levs-1-lupp)**2/2
    334  a3(3,3)=(levs-1-lupp)**3/3
    335  call ludcmp(a3,3,3,indx3,d)
    336  call lubksb(a3,3,3,indx3,x3)
    337  endif
    338 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    339 ! STEP 4.
    340 ! Compute hybrid interface values
    341  ak(0)=0
    342  bk(0)=1
    343  do k=1,levs-1
    344  if(k.ge.lupp) then
    345  p1=pupp*exp(x3(1)*(k-lupp)+x3(2)*(k-lupp)**2/2+x3(3)*(k-lupp)**3/3)
    346  else
    347  p1=(sig1*exp(c1*k+c2)+sig2)/(exp(c1*k+c2)+1)*pdif+pupp
    348  endif
    349  if(k.ge.rkpre) then
    350  p2=p1
    351  elseif(k.ge.rkpred) then
    352  p2=p2pred+x2(1)*(k-rkpred) &
    353  +x2(2)*(k**2-rkpred**2)/2 &
    354  +x2(3)*(k**3-rkpred**3)/3
    355  elseif(k.ge.rksigd) then
    356  p2=p2sigd+x2(4)*(k-rksigd) &
    357  +x2(5)*(k**2-rksigd**2)/2
    358  elseif(k.ge.rksig) then
    359  p2=p2sig+x2(6)*(k-rksig) &
    360  +x2(7)*(k**2-rksig**2)/2 &
    361  +x2(8)*(k**3-rksig**3)/3
    362  else
    363  p2=p1/pbot*pmin
    364  endif
    365  ak(k)=(p2*pbot-p1*pmin)/(pbot-pmin)
    366  bk(k)=(p1-p2)/(pbot-pmin)
    367  enddo
    368  ak(levs)=ptop
    369  bk(levs)=0
    370 end subroutine
    subroutine ludcmp(a, n, np, indx, d)
    This subprogram decomposes a matrix into a product of lower and upper triangular matrices.
    +
    subroutine vcoord_gen(levs, lupp, pbot, psig, ppre, pupp, ptop, dpbot, dpsig, dppre, dpupp, dptop, pmin, ak, bk)
    This subprogram generates hybrid coordinate interface profiles from a few given parameters.
    Definition: vcoord_gen.f90:153
    +
    subroutine lubksb(a, n, np, indx, b)
    Lower and upper triangular back substitution.
    +
    +
    + + + + diff --git a/ver-1.11.0/vcoord_gen/vcoord__gen_8md_source.html b/ver-1.11.0/vcoord_gen/vcoord__gen_8md_source.html new file mode 100644 index 000000000..9fe6e2911 --- /dev/null +++ b/ver-1.11.0/vcoord_gen/vcoord__gen_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +vcoord_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/docs/vcoord_gen.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    vcoord_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/vcoord_gen.fd/docs/vcoord_gen.md
    +
    +
    +
    1 
    2 # vcoord_gen
    3 
    4 # Introduction
    5 
    6 The vcoord_gen program driver.f90 generates hybrid coordinate
    7 parameters from fields such as surface pressure, model top and the
    8 number of vertical levels. Outputs the 'ak' and 'bk' parameters used
    9 by the forecast model to define the hybrid levels.
    10 
    11 This document is part of the <a href="../index.html">UFS_UTILS
    12 documentation</a>.
    13 
    14 The vcoord_gen programs are part of the
    15 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/bc_s.png b/ver-1.11.0/weight_gen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/bdwn.png b/ver-1.11.0/weight_gen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.html b/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.html new file mode 100644 index 000000000..f2e540277 --- /dev/null +++ b/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.html @@ -0,0 +1,112 @@ + + + + + + + +weight_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/weight_gen.fd Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    weight_gen.fd Directory Reference
    +
    +
    + + + + + +

    +Files

    file  scrip.F90 [code]
     Create ESMF "scrip" files for a gaussian grid.
     
    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.js b/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.js new file mode 100644 index 000000000..21ba27458 --- /dev/null +++ b/ver-1.11.0/weight_gen/dir_8d3ced11db02b59b76a5ffdd933c2db9.js @@ -0,0 +1,4 @@ +var dir_8d3ced11db02b59b76a5ffdd933c2db9 = +[ + [ "scrip.F90", "scrip_8F90.html", "scrip_8F90" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html b/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html new file mode 100644 index 000000000..9bfe56187 --- /dev/null +++ b/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.html @@ -0,0 +1,109 @@ + + + + + + + +weight_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc Directory Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sorc Directory Reference
    +
    +
    + + +

    +Directories

    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js b/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js new file mode 100644 index 000000000..714951429 --- /dev/null +++ b/ver-1.11.0/weight_gen/dir_d8b772108138bf796aaa3f7fe4e09294.js @@ -0,0 +1,4 @@ +var dir_d8b772108138bf796aaa3f7fe4e09294 = +[ + [ "weight_gen.fd", "dir_8d3ced11db02b59b76a5ffdd933c2db9.html", "dir_8d3ced11db02b59b76a5ffdd933c2db9" ] +]; \ No newline at end of file diff --git a/ver-1.11.0/weight_gen/doc.png b/ver-1.11.0/weight_gen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/doxygen.css b/ver-1.11.0/weight_gen/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/ver-1.11.0/weight_gen/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/ver-1.11.0/weight_gen/doxygen.png b/ver-1.11.0/weight_gen/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/dynsections.js b/ver-1.11.0/weight_gen/dynsections.js new file mode 100644 index 000000000..537e3e498 --- /dev/null +++ b/ver-1.11.0/weight_gen/dynsections.js @@ -0,0 +1,127 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +weight_gen: File List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + +
      sorc
      weight_gen.fd
     scrip.F90Create ESMF "scrip" files for a gaussian grid
    +
    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/files_dup.js b/ver-1.11.0/weight_gen/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/ver-1.11.0/weight_gen/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/ver-1.11.0/weight_gen/folderclosed.png b/ver-1.11.0/weight_gen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/globals.html b/ver-1.11.0/weight_gen/globals.html new file mode 100644 index 000000000..20b431240 --- /dev/null +++ b/ver-1.11.0/weight_gen/globals.html @@ -0,0 +1,105 @@ + + + + + + + +weight_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/globals_func.html b/ver-1.11.0/weight_gen/globals_func.html new file mode 100644 index 000000000..2125eda1b --- /dev/null +++ b/ver-1.11.0/weight_gen/globals_func.html @@ -0,0 +1,105 @@ + + + + + + + +weight_gen: Globals + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/index.html b/ver-1.11.0/weight_gen/index.html new file mode 100644 index 000000000..537f1fbb4 --- /dev/null +++ b/ver-1.11.0/weight_gen/index.html @@ -0,0 +1,109 @@ + + + + + + + +weight_gen: weight_gen + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    weight_gen
    +
    +
    +

    +Introduction

    +

    Creates ESMF 'scrip' files for gaussian grids. These files may then be used to create ESMF interpolation weight files.

    +

    This document is part of the UFS_UTILS documentation.

    +

    The weight_gen program is part of the UFS_UTILS project.

    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/jquery.js b/ver-1.11.0/weight_gen/jquery.js new file mode 100644 index 000000000..2771c749a --- /dev/null +++ b/ver-1.11.0/weight_gen/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    scrip.F90 File Reference
    +
    +
    + +

    Create ESMF "scrip" files for a gaussian grid. +More...

    + +

    Go to the source code of this file.

    +
    + + + + +

    +Functions/Subroutines

    program scrip
     Create "scrip" files that describes a gaussian grid. More...
     
    +

    Detailed Description

    +

    Create ESMF "scrip" files for a gaussian grid.

    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition in file scrip.F90.

    +

    Function/Subroutine Documentation

    + +

    ◆ scrip()

    + +
    +
    + + + + + + + +
    program scrip ()
    +
    + +

    Create "scrip" files that describes a gaussian grid.

    +

    These files are used to create ESMF weight files for interpolating from global FV3 grids to gaussian grids.

    +

    The program expects one argument - the resolution of the FV3 grid. It then selects a gaussian grid of comparable resolution.

    +

    Two files are created: the normal gaussian grid, and one with two extra rows for the N/S poles. Both files are NetCDF.

    +
    Returns
    0 for success.
    +
    Author
    George Gayno NOAA/EMC
    + +

    Definition at line 19 of file scrip.F90.

    + +
    +
    + + + + + + diff --git a/ver-1.11.0/weight_gen/scrip_8F90.js b/ver-1.11.0/weight_gen/scrip_8F90.js new file mode 100644 index 000000000..fa4adb9d8 --- /dev/null +++ b/ver-1.11.0/weight_gen/scrip_8F90.js @@ -0,0 +1,4 @@ +var scrip_8F90 = +[ + [ "scrip", "scrip_8F90.html#a26500c5e5742c8e64e7d75931ef1bb9b", null ] +]; \ No newline at end of file diff --git a/ver-1.11.0/weight_gen/scrip_8F90_source.html b/ver-1.11.0/weight_gen/scrip_8F90_source.html new file mode 100644 index 000000000..8f2c45cff --- /dev/null +++ b/ver-1.11.0/weight_gen/scrip_8F90_source.html @@ -0,0 +1,106 @@ + + + + + + + +weight_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/weight_gen.fd/scrip.F90 Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    scrip.F90
    +
    +
    +Go to the documentation of this file.
    1 
    5 
    19  program scrip
    20 
    21  implicit none
    22 
    23  character(len=128) :: outfile
    24  character(len=20) :: title
    25  character(len=5) :: idim_ch, jdim_ch, jdimp_ch
    26  character(len=6) :: cres
    27 
    28  integer :: header_buffer_val = 16384
    29  integer :: fsize=65536, inital = 0
    30  integer :: error, ncid
    31  integer :: i, j, idim, jdim, ijdim
    32  integer :: jdimp, num_ch
    33  integer :: dim_size, dim_corners, dim_rank
    34  integer :: id_dims, id_center_lat, id_center_lon
    35  integer :: id_imask, id_corner_lat, id_corner_lon
    36  integer :: num_corners = 4
    37  integer :: rank = 2
    38  integer(kind=4), allocatable :: mask(:)
    39 
    40  real(kind=8) :: corner_lon_src
    41  real(kind=8) :: dx_src, lat_edge
    42  real(kind=8), allocatable :: lats(:,:), lons(:,:), dum1d(:)
    43  real(kind=8), allocatable :: dum2d(:,:), latsp(:,:), lonsp(:,:)
    44  real(kind=8), allocatable :: lats_corner(:,:,:), lons_corner(:,:,:)
    45  real(kind=8), allocatable :: latsp_corner(:,:,:), lonsp_corner(:,:,:)
    46  real(kind=8), allocatable :: slat(:), wlat(:)
    47 
    48  include "netcdf.inc"
    49 
    50  call getarg(1, cres)
    51 
    52  select case (trim(cres))
    53  case ("c48","C48")
    54  idim = 192 ! cres * 4
    55  jdim = 94 ! cres * 2
    56  jdimp = 96 ! include two rows for the poles
    57  idim_ch = "192"
    58  jdim_ch = "94"
    59  jdimp_ch = "96"
    60  case ("c96","C96")
    61  idim = 384 ! cres * 4
    62  jdim = 192 ! cres * 2
    63  jdimp = 194 ! include two rows for the poles
    64  idim_ch = "384"
    65  jdim_ch = "192"
    66  jdimp_ch = "194"
    67  case ("c128","C128")
    68  idim = 512 ! cres * 4
    69  jdim = 256 ! cres * 2
    70  jdimp = 258 ! include two rows for the poles
    71  idim_ch = "512"
    72  jdim_ch = "256"
    73  jdimp_ch = "258"
    74  case ("c192","C192")
    75  idim = 768 ! cres * 4
    76  jdim = 384 ! cres * 2
    77  jdimp = 386 ! include two rows for the poles
    78  idim_ch = "768"
    79  jdim_ch = "384"
    80  jdimp_ch = "386"
    81  case ("c384","C384")
    82  idim = 1536 ! cres * 4
    83  jdim = 768 ! cres * 2
    84  jdimp = 770 ! include two rows for the poles
    85  idim_ch = "1536"
    86  jdim_ch = "768"
    87  jdimp_ch = "770"
    88  case ("c768","C768")
    89  idim = 3072 ! cres * 4
    90  jdim = 1536 ! cres * 2
    91  jdimp = 1538 ! include two rows for the poles
    92  idim_ch = "3072"
    93  jdim_ch = "1536"
    94  jdimp_ch = "1538"
    95  case ("c1152","C1152")
    96  idim = 4608 ! cres * 4
    97  jdim = 2304 ! cres * 2
    98  jdimp = 2306 ! include two rows for the poles
    99  idim_ch = "4608"
    100  jdim_ch = "2304"
    101  jdimp_ch = "2306"
    102  case ("c3072","C3072")
    103  idim = 12288 ! cres * 4
    104  jdim = 6144 ! cres * 2
    105  jdimp = 6146 ! include two rows for the poles
    106  idim_ch = "12288"
    107  jdim_ch = "6144"
    108  jdimp_ch = "6146"
    109  case default
    110  print*,'- Resolution not supported ', trim(cres)
    111  stop 3
    112  end select
    113 
    114  corner_lon_src = 0.0
    115  dx_src = 360.0 / float(idim)
    116  ijdim = idim*jdim
    117 
    118  allocate(slat(jdim))
    119  allocate(wlat(jdim))
    120 
    121  call splat(4, jdim, slat, wlat)
    122 
    123  allocate(lats(idim,jdim))
    124  allocate(lats_corner(num_corners,idim,jdim))
    125  allocate(lons(idim,jdim))
    126  allocate(lons_corner(num_corners,idim,jdim))
    127 
    128  do j = 1, jdim
    129  lats(:,j) = 90.0 - (acos(slat(j))* 180.0 / (4.*atan(1.)))
    130  enddo
    131 
    132  deallocate(slat, wlat)
    133 
    134 !----------------------------------------------------------------
    135 ! First, output file without poles.
    136 !----------------------------------------------------------------
    137 
    138 !----------------------------------------------------------------
    139 ! Set corners in counter-clockwise order
    140 !
    141 ! 2 1
    142 !
    143 ! C
    144 !
    145 ! 3 4
    146 !----------------------------------------------------------------
    147 
    148  lats_corner(1,:,1) = 90.0
    149  lats_corner(2,:,1) = 90.0
    150 
    151  lats_corner(3,:,jdim) = -90.0
    152  lats_corner(4,:,jdim) = -90.0
    153 
    154  do j = 1, jdim - 1
    155  lat_edge = (lats(1,j) + lats(1,j+1)) / 2.0
    156  lats_corner(3,:,j) = lat_edge
    157  lats_corner(4,:,j) = lat_edge
    158  lats_corner(1,:,j+1) = lat_edge
    159  lats_corner(2,:,j+1) = lat_edge
    160  enddo
    161 
    162  do i = 1, idim
    163  lons(i,:) = corner_lon_src + float(i-1)*dx_src
    164  lons_corner(1,i,:) = lons(i,:) + (dx_src*0.5)
    165  lons_corner(2,i,:) = lons(i,:) - (dx_src*0.5)
    166  lons_corner(3,i,:) = lons(i,:) - (dx_src*0.5)
    167  lons_corner(4,i,:) = lons(i,:) + (dx_src*0.5)
    168  enddo
    169 
    170  i = 1
    171  j = 1
    172  print*,'center ',lats(i,j),lons(i,j)
    173  print*,'corner 1 ',lats_corner(1,i,j),lons_corner(1,i,j)
    174  print*,'corner 2 ',lats_corner(2,i,j),lons_corner(2,i,j)
    175  print*,'corner 3 ',lats_corner(3,i,j),lons_corner(3,i,j)
    176  print*,'corner 4 ',lats_corner(4,i,j),lons_corner(4,i,j)
    177 
    178  i = 1
    179  j = 2
    180  print*,'center ',lats(i,j),lons(i,j)
    181  print*,'corner 1 ',lats_corner(1,i,j),lons_corner(1,i,j)
    182  print*,'corner 2 ',lats_corner(2,i,j),lons_corner(2,i,j)
    183  print*,'corner 3 ',lats_corner(3,i,j),lons_corner(3,i,j)
    184  print*,'corner 4 ',lats_corner(4,i,j),lons_corner(4,i,j)
    185 
    186  i = 1
    187  j = jdim
    188  print*,'center ',lats(i,j),lons(i,j)
    189  print*,'corner 1 ',lats_corner(1,i,j),lons_corner(1,i,j)
    190  print*,'corner 2 ',lats_corner(2,i,j),lons_corner(2,i,j)
    191  print*,'corner 3 ',lats_corner(3,i,j),lons_corner(3,i,j)
    192  print*,'corner 4 ',lats_corner(4,i,j),lons_corner(4,i,j)
    193 
    194  i = 1
    195  j = jdim-1
    196  print*,'center ',lats(i,j),lons(i,j)
    197  print*,'corner 1 ',lats_corner(1,i,j),lons_corner(1,i,j)
    198  print*,'corner 2 ',lats_corner(2,i,j),lons_corner(2,i,j)
    199  print*,'corner 3 ',lats_corner(3,i,j),lons_corner(3,i,j)
    200  print*,'corner 4 ',lats_corner(4,i,j),lons_corner(4,i,j)
    201 
    202  allocate(mask(ijdim))
    203  mask = 1
    204 
    205 ! output file without pole.
    206 
    207  outfile = " "
    208  outfile = "./gaussian." // trim(idim_ch) // "." // trim(jdim_ch) // ".nc"
    209  title = " "
    210  title = "gaussian." // trim(idim_ch) // "." // trim(jdim_ch)
    211 
    212 !--- open the file
    213  error = nf__create(outfile, ior(nf_netcdf4,nf_classic_model), inital, fsize, ncid)
    214  print*, 'error after open ', error
    215 
    216 !--- define dimension
    217  error = nf_def_dim(ncid, 'grid_size', ijdim, dim_size)
    218  error = nf_def_dim(ncid, 'grid_corners', num_corners, dim_corners)
    219  error = nf_def_dim(ncid, 'grid_rank', rank, dim_rank)
    220 
    221 !--- define field
    222  error = nf_def_var(ncid, 'grid_dims', nf_int, 1, (/dim_rank/), id_dims)
    223  error = nf_def_var(ncid, 'grid_center_lat', nf_double, 1, (/dim_size/), id_center_lat)
    224  error = nf_put_att_text(ncid, id_center_lat, "units", 7, "degrees")
    225  error = nf_def_var(ncid, 'grid_center_lon', nf_double, 1, (/dim_size/), id_center_lon)
    226  error = nf_put_att_text(ncid, id_center_lon, "units", 7, "degrees")
    227  error = nf_def_var(ncid, 'grid_imask', nf_int, 1, (/dim_size/), id_imask)
    228  error = nf_put_att_text(ncid, id_imask, "units", 8, "unitless")
    229  error = nf_def_var(ncid, 'grid_corner_lat', nf_double, 2, (/dim_corners,dim_size/), id_corner_lat)
    230  error = nf_put_att_text(ncid, id_corner_lat, "units", 7, "degrees")
    231  error = nf_def_var(ncid, 'grid_corner_lon', nf_double, 2, (/dim_corners,dim_size/), id_corner_lon)
    232  error = nf_put_att_text(ncid, id_corner_lon, "units", 7, "degrees")
    233  num_ch = len_trim(title)
    234  error = nf_put_att_text(ncid, nf_global, "title", num_ch, trim(title))
    235  error = nf__enddef(ncid, header_buffer_val,4,0,4)
    236 
    237 !--- set fields
    238  error = nf_put_var_int( ncid, id_dims, (/idim,jdim/))
    239 
    240  allocate(dum1d(ijdim))
    241  dum1d = reshape(lats, (/ijdim/))
    242  error = nf_put_var_double( ncid, id_center_lat, dum1d)
    243  dum1d = reshape(lons, (/ijdim/))
    244  error = nf_put_var_double( ncid, id_center_lon, dum1d)
    245  deallocate(dum1d)
    246 
    247  error = nf_put_var_int( ncid, id_imask, mask)
    248  deallocate(mask)
    249 
    250  allocate(dum2d(num_corners,ijdim))
    251  dum2d = reshape(lats_corner, (/num_corners,ijdim/))
    252  error = nf_put_var_double( ncid, id_corner_lat, dum2d)
    253 
    254  dum2d = reshape(lons_corner, (/num_corners,ijdim/))
    255  error = nf_put_var_double( ncid, id_corner_lon, dum2d)
    256  deallocate(dum2d)
    257 
    258  error = nf_close(ncid)
    259 
    260 !----------------------------------------------------------------
    261 ! output file with poles.
    262 !----------------------------------------------------------------
    263 
    264  outfile = " "
    265  outfile = "./gaussian." // trim(idim_ch) // "." // trim(jdimp_ch) // ".nc"
    266  title = " "
    267  title = "gaussian." // trim(idim_ch) // "." // trim(jdimp_ch)
    268 
    269  ijdim = idim*jdimp
    270 
    271  allocate(latsp(idim,jdimp))
    272  allocate(lonsp(idim,jdimp))
    273 
    274  do j = 2, jdim+1
    275  latsp(:,j) = lats(:,j-1)
    276  lonsp(:,j) = lons(:,j-1)
    277  enddo
    278 
    279  latsp(:,1) = 90.0_8
    280  lonsp(:,1) = 0.0_8
    281 
    282  latsp(:,jdimp) = -90.0_8
    283  lonsp(:,jdimp) = 0.0_8
    284 
    285  deallocate(lats, lons)
    286 
    287  allocate(latsp_corner(num_corners,idim,jdimp))
    288  allocate(lonsp_corner(num_corners,idim,jdimp))
    289 
    290  latsp_corner(:,:,1) = 89.5_8
    291  latsp_corner(:,:,jdimp) = -89.5_8
    292 
    293  lonsp_corner(1,:,1) = 0.0_8
    294  lonsp_corner(2,:,1) = 90.0_8
    295  lonsp_corner(3,:,1) = 180.0_8
    296  lonsp_corner(4,:,1) = 270.0_8
    297 
    298  lonsp_corner(1,:,jdimp) = 0.0_8
    299  lonsp_corner(2,:,jdimp) = 90.0_8
    300  lonsp_corner(3,:,jdimp) = 180.0_8
    301  lonsp_corner(4,:,jdimp) = 270.0_8
    302 
    303  do j = 2, jdim+1
    304  latsp_corner(:,:,j) = lats_corner(:,:,j-1)
    305  lonsp_corner(:,:,j) = lons_corner(:,:,j-1)
    306  enddo
    307 
    308  deallocate(lats_corner, lons_corner)
    309 
    310 !--- open the file
    311  error = nf__create(outfile, ior(nf_netcdf4,nf_classic_model), inital, fsize, ncid)
    312  print*, 'error after open ', error
    313 
    314 !--- define dimension
    315  error = nf_def_dim(ncid, 'grid_size', ijdim, dim_size)
    316  error = nf_def_dim(ncid, 'grid_corners', num_corners, dim_corners)
    317  error = nf_def_dim(ncid, 'grid_rank', rank, dim_rank)
    318 
    319 !--- define field
    320  error = nf_def_var(ncid, 'grid_dims', nf_int, 1, (/dim_rank/), id_dims)
    321  error = nf_def_var(ncid, 'grid_center_lat', nf_double, 1, (/dim_size/), id_center_lat)
    322  error = nf_put_att_text(ncid, id_center_lat, "units", 7, "degrees")
    323  error = nf_def_var(ncid, 'grid_center_lon', nf_double, 1, (/dim_size/), id_center_lon)
    324  error = nf_put_att_text(ncid, id_center_lon, "units", 7, "degrees")
    325  error = nf_def_var(ncid, 'grid_imask', nf_int, 1, (/dim_size/), id_imask)
    326  error = nf_put_att_text(ncid, id_imask, "units", 8, "unitless")
    327  error = nf_def_var(ncid, 'grid_corner_lat', nf_double, 2, (/dim_corners,dim_size/), id_corner_lat)
    328  error = nf_put_att_text(ncid, id_corner_lat, "units", 7, "degrees")
    329  error = nf_def_var(ncid, 'grid_corner_lon', nf_double, 2, (/dim_corners,dim_size/), id_corner_lon)
    330  error = nf_put_att_text(ncid, id_corner_lon, "units", 7, "degrees")
    331  num_ch = len_trim(title)
    332  error = nf_put_att_text(ncid, nf_global, "title", num_ch, trim(title))
    333  error = nf__enddef(ncid, header_buffer_val,4,0,4)
    334 
    335 !--- set fields
    336  error = nf_put_var_int( ncid, id_dims, (/idim,jdimp/))
    337 
    338  allocate(dum1d(ijdim))
    339  dum1d = reshape(latsp, (/ijdim/))
    340  error = nf_put_var_double( ncid, id_center_lat, dum1d)
    341  dum1d = reshape(lonsp, (/ijdim/))
    342  error = nf_put_var_double( ncid, id_center_lon, dum1d)
    343  deallocate(dum1d)
    344 
    345  allocate(mask(ijdim))
    346  mask = 1
    347  error = nf_put_var_int( ncid, id_imask, mask)
    348  deallocate(mask)
    349 
    350  allocate(dum2d(num_corners,ijdim))
    351  dum2d = reshape(latsp_corner, (/num_corners,ijdim/))
    352  print*,'lat corner check ',maxval(dum2d),minval(dum2d)
    353  error = nf_put_var_double( ncid, id_corner_lat, dum2d)
    354  deallocate(latsp_corner)
    355 
    356  dum2d = reshape(lonsp_corner, (/num_corners,ijdim/))
    357  error = nf_put_var_double( ncid, id_corner_lon, dum2d)
    358  deallocate(dum2d, lonsp_corner)
    359 
    360  error = nf_close(ncid)
    361 
    362  print*,'- DONE.'
    363 
    364  end program scrip
    program scrip
    Create "scrip" files that describes a gaussian grid.
    Definition: scrip.F90:19
    +
    +
    + + + + diff --git a/ver-1.11.0/weight_gen/search/all_0.html b/ver-1.11.0/weight_gen/search/all_0.html new file mode 100644 index 000000000..5125b9400 --- /dev/null +++ b/ver-1.11.0/weight_gen/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/weight_gen/search/all_0.js b/ver-1.11.0/weight_gen/search/all_0.js new file mode 100644 index 000000000..3e121951d --- /dev/null +++ b/ver-1.11.0/weight_gen/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scrip',['scrip',['../scrip_8F90.html#a26500c5e5742c8e64e7d75931ef1bb9b',1,'scrip.F90']]], + ['scrip_2ef90',['scrip.F90',['../scrip_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/weight_gen/search/all_1.html b/ver-1.11.0/weight_gen/search/all_1.html new file mode 100644 index 000000000..b8ff87111 --- /dev/null +++ b/ver-1.11.0/weight_gen/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/weight_gen/search/all_1.js b/ver-1.11.0/weight_gen/search/all_1.js new file mode 100644 index 000000000..094f26cff --- /dev/null +++ b/ver-1.11.0/weight_gen/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['weight_5fgen',['weight_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/weight_gen/search/close.png b/ver-1.11.0/weight_gen/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/search/files_0.html b/ver-1.11.0/weight_gen/search/files_0.html new file mode 100644 index 000000000..49606c82c --- /dev/null +++ b/ver-1.11.0/weight_gen/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/weight_gen/search/files_0.js b/ver-1.11.0/weight_gen/search/files_0.js new file mode 100644 index 000000000..6c5c825f5 --- /dev/null +++ b/ver-1.11.0/weight_gen/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scrip_2ef90',['scrip.F90',['../scrip_8F90.html',1,'']]] +]; diff --git a/ver-1.11.0/weight_gen/search/functions_0.html b/ver-1.11.0/weight_gen/search/functions_0.html new file mode 100644 index 000000000..0539c8ced --- /dev/null +++ b/ver-1.11.0/weight_gen/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/weight_gen/search/functions_0.js b/ver-1.11.0/weight_gen/search/functions_0.js new file mode 100644 index 000000000..2c518631c --- /dev/null +++ b/ver-1.11.0/weight_gen/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scrip',['scrip',['../scrip_8F90.html#a26500c5e5742c8e64e7d75931ef1bb9b',1,'scrip.F90']]] +]; diff --git a/ver-1.11.0/weight_gen/search/mag_sel.png b/ver-1.11.0/weight_gen/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/search/nomatches.html b/ver-1.11.0/weight_gen/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/ver-1.11.0/weight_gen/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/ver-1.11.0/weight_gen/search/pages_0.html b/ver-1.11.0/weight_gen/search/pages_0.html new file mode 100644 index 000000000..d7528582d --- /dev/null +++ b/ver-1.11.0/weight_gen/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/ver-1.11.0/weight_gen/search/pages_0.js b/ver-1.11.0/weight_gen/search/pages_0.js new file mode 100644 index 000000000..094f26cff --- /dev/null +++ b/ver-1.11.0/weight_gen/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['weight_5fgen',['weight_gen',['../index.html',1,'']]] +]; diff --git a/ver-1.11.0/weight_gen/search/search.css b/ver-1.11.0/weight_gen/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/ver-1.11.0/weight_gen/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/ver-1.11.0/weight_gen/search/search.js b/ver-1.11.0/weight_gen/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/ver-1.11.0/weight_gen/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/search/search_r.png b/ver-1.11.0/weight_gen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/sync_off.png b/ver-1.11.0/weight_gen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/sync_on.png b/ver-1.11.0/weight_gen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/tab_a.png b/ver-1.11.0/weight_gen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/tab_b.png b/ver-1.11.0/weight_gen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/ver-1.11.0/weight_gen/tabs.css b/ver-1.11.0/weight_gen/tabs.css new file mode 100644 index 000000000..a28614b8e --- /dev/null +++ b/ver-1.11.0/weight_gen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/ver-1.11.0/weight_gen/user__guide_8md_source.html b/ver-1.11.0/weight_gen/user__guide_8md_source.html new file mode 100644 index 000000000..4c4d24e8b --- /dev/null +++ b/ver-1.11.0/weight_gen/user__guide_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +weight_gen: /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/weight_gen.fd/docs/user_guide.md Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    weight_gen +  1.11.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    /lfs/h2/emc/global/noscrub/George.Gayno/ufs_utils.git/UFS_UTILS/sorc/weight_gen.fd/docs/user_guide.md
    +
    +
    +
    1 
    2 # weight_gen
    3 
    4 # Introduction
    5 
    6 Creates ESMF 'scrip' files for gaussian grids. These files
    7 may then be used to create ESMF interpolation weight files.
    8 
    9 This document is part of the <a href="../index.html">UFS_UTILS
    10 documentation</a>.
    11 
    12 The weight_gen program is part of the
    13 [UFS_UTILS](https://github.com/ufs-community/UFS_UTILS) project.
    +
    + + + +